Configurazione VPN RouterOS: differenze tra le versioni
Nessun oggetto della modifica |
|||
(13 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
La VPN per l'accesso alla rete AMPR in | = La VPN di Accesso AMPR ARI= | ||
La VPN per l'accesso alla rete AMPR in subnet 44 (nella porzione di rete 44.32.32.0/21 a noi delegata) utilizza il protocollo WireGuard. In fase di attivazione viene consegnato all'utenza un file di configurazione in formato INI WireGuard: esso contiene tutte le informazioni necessarie alla configurazione della VPN per il client nativo che implementa le funzionalità ( https://www.wireguard.com ). | |||
== Requisiti e Tools == | |||
L'installazione in RouterOS può presentare dei passaggi dipendenti dalla configurazione attuale del router, e richiede comunque una discreta padronanza dell' infrastruttura che si andrà ad integrare. | L'installazione in RouterOS può presentare dei passaggi dipendenti dalla configurazione attuale del router, e richiede comunque una discreta padronanza dell' infrastruttura che si andrà ad integrare. | ||
< | ARI ha predisposto uno strumento di traduzione delle proprietà descritte nel file INI, in comandi di configurazione compatibili con RouterOS (a partire dalla versione 7, se non si disponesse di un sistema con a bordo RouterOS di versione compatibile, il produttore mette a disposizione molte risorse per la transizione: https://help.mikrotik.com/docs/display/ROS/Moving+from+ROSv6+to+v7+with+examples ). | ||
<br> | |||
Il tool di conversione è consultabile all'indirizzo: https://ipam.ampr.ari.it/wgtomt.html | |||
== Traduzione del file INI in formato RouterOS == | |||
Consigliamo, per la configurazione della VPN, di inserire il contenuto del file INI nel form del tool messo a disposizione, ad esempio se avessimo ricevuto il seguente file (nell'esempio sono contenuti dati non reali, a solo scopo esemplificativo): | Consigliamo, per la configurazione della VPN, di inserire il contenuto del file INI nel form del tool messo a disposizione, ad esempio se avessimo ricevuto il seguente file (nell'esempio sono contenuti dati non reali, a solo scopo esemplificativo): | ||
<pre>[Interface] | <pre> | ||
[Interface] | |||
ListenPort = 51820 | ListenPort = 51820 | ||
PrivateKey = PRIVATEKEY1234567890PRIVATEKEY= | PrivateKey = PRIVATEKEY1234567890PRIVATEKEY= | ||
Riga 21: | Riga 26: | ||
Otterremmo la seguente configurazione compatibile con RouterOS dopo averlo inserito e fatto processare dal tool indicato:<br> | Otterremmo la seguente configurazione compatibile con RouterOS dopo averlo inserito e fatto processare dal tool indicato:<br> | ||
<code> | <code>/interface/wireguard/add name="wg_ampr_ari" listen-port=51820 private-key="PRIVATEKEY1234567890PRIVATEKEY="<br> | ||
/interface/wireguard/add name="wg_ampr_ari" listen-port=51820 private-key="PRIVATEKEY1234567890PRIVATEKEY="<br> | |||
/ip/address/add address="44.32.32.255/21" interface="wg_ampr_ari"<br> | /ip/address/add address="44.32.32.255/21" interface="wg_ampr_ari"<br> | ||
/interface/wireguard/peers/add interface="wg_ampr_ari" endpoint-address="5.144.187.34" endpoint-port="1323X" public-key="PUBLICKEY1234567890PUBLICKEY=" preshared-key="PRESHAREDKEY1234567890=" allowed-address="44.0.0.0/9, 44.128.0.0/10" | /interface/wireguard/peers/add interface="wg_ampr_ari" endpoint-address="5.144.187.34" endpoint-port="1323X" public-key="PUBLICKEY1234567890PUBLICKEY=" preshared-key="PRESHAREDKEY1234567890=" allowed-address="44.0.0.0/9, 44.128.0.0/10"</code> | ||
</code> | |||
Arrivati a questo punto sarà necessario solamente aprire una finestra terminale di configurazione del router (come ad esempio entrando in SSH, Telnet o aprendo una finestra 'Terminal' accedendo con WinBox) ed incollare il contenuto proposto. | Arrivati a questo punto sarà necessario solamente aprire una finestra terminale di configurazione del router (come ad esempio entrando in SSH, Telnet o aprendo una finestra 'Terminal' accedendo con WinBox) ed incollare il contenuto proposto. | ||
Riga 31: | Riga 34: | ||
Questa configurazione farà si che il nostro EndPoint VPN possa parlare con la rete AMPR attraverso il terminatore VPN fornito da ARI - Ovviamente la configurazione proposta sarà funzionante al netto di configurazioni specifiche di Packet Filtering e NA(P)T specifiche in funzione delle esigenze del singolo utente. | Questa configurazione farà si che il nostro EndPoint VPN possa parlare con la rete AMPR attraverso il terminatore VPN fornito da ARI - Ovviamente la configurazione proposta sarà funzionante al netto di configurazioni specifiche di Packet Filtering e NA(P)T specifiche in funzione delle esigenze del singolo utente. | ||
Comunemente, un router configurato con una interfaccia ad uso locale (con associato un indirizzamento IPv4 locale, per la propria LAN) avrà bisogno di una regola di NAT per poter mascherare gli indirizzi privati dietro l' endpoint pubblico afferente alla rete AMPR appena configurato, nel nostro caso vorremo che il solo accesso per la destinazione alla rete AMPR passi per la VPN, pertanto dovremo assicurarci che il traffico venga correttamente marcato a tale scopo e soprattutto che il traffico entrante nella interfaccia VPN (che ricordiamo essere a tutti gli effetti una interfaccia pubblica, da proteggere con opporture regole di firewall) torni indietro con il corretto mittente e attraverso la corretta interfaccia. | == Routing e NAT di base == | ||
Comunemente, un router configurato con una interfaccia ad uso locale (con associato un indirizzamento IPv4 locale, per la propria LAN) avrà bisogno di una regola di NAT per poter mascherare gli indirizzi privati dietro l'endpoint pubblico afferente alla rete AMPR appena configurato, nel nostro caso vorremo che il solo accesso per la destinazione alla rete AMPR passi per la VPN, pertanto dovremo assicurarci che il traffico venga correttamente marcato a tale scopo e soprattutto che il traffico entrante nella interfaccia VPN (che ricordiamo essere a tutti gli effetti una interfaccia pubblica, da proteggere con opporture regole di firewall) torni indietro con il corretto mittente e attraverso la corretta interfaccia. | |||
Un esempio (non esaustivo, che ogni utente deve necessariamente completare ed adattare alla propria infrastruttura e topologia di rete) per la configurazione di uno scenario simile sarà il seguente; | Un esempio (non esaustivo, che ogni utente deve necessariamente completare ed adattare alla propria infrastruttura e topologia di rete) per la configurazione di uno scenario simile sarà il seguente; | ||
1. Si definisce una address-list per le destinazioni dell' intero dominio AMPR:<br> | 1. Si definisce una address-list per le destinazioni dell'intero dominio AMPR:<br> | ||
<code> | <code>/ip/firewall/address-list/add address=44.0.0.0/9 comment="AMPR Network #1" list=AMPR<br> | ||
/ip/firewall/address-list/add address=44.0.0.0/9 comment="AMPR Network #1" list=AMPR<br> | /ip/firewall/address-list/add address=44.128.0.0/10 comment="AMPR Network #2" list=AMPR<br></code> | ||
/ip/firewall/address-list/add address=44.128.0.0/10 comment="AMPR Network #2" list=AMPR<br> | |||
</code> | |||
2. Si definisce una Routing-Table dedicata e le corrispondenti regole di instradamento:<br> | 2. Si definisce una Routing-Table dedicata e le corrispondenti regole di instradamento:<br> | ||
<code> | <code>/routing/table/add disabled=no fib name=ARI-AMPR<br> | ||
/routing/table/add disabled=no fib name=ARI-AMPR<br> | |||
/ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.0.0.0/9 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no<br> | /ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.0.0.0/9 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no<br> | ||
/ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.128.0.0/10 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no<br> | /ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.128.0.0/10 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no<br></code> | ||
</code> | |||
3. Si definiscono le regole di mangle / packet-marking considerando la routing-table separata appena creata:<br> | 3. Si definiscono le regole di mangle / packet-marking considerando la routing-table separata appena creata:<br> | ||
<code> | <code>/ip/firewall/mangle/add action=mark-routing chain=prerouting src-address-list=!AMPR dst-address-list=AMPR new-routing-mark=ARI-AMPR passthrough=no<br> | ||
/ip/firewall/mangle/add action=mark-routing chain=prerouting dst-address-list=AMPR new-routing-mark=ARI-AMPR passthrough=no<br> | |||
/ip/firewall/mangle/add action=mark-connection chain=input in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes<br> | /ip/firewall/mangle/add action=mark-connection chain=input in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes<br> | ||
/ip/firewall/mangle/add action=mark-connection chain=forward in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes<br> | /ip/firewall/mangle/add action=mark-connection chain=forward in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes<br> | ||
Riga 56: | Riga 56: | ||
/ip/firewall/mangle/add action=mark-routing chain=output connection-mark=AMPR-CONNECTION new-routing-mark=ARI-AMPR passthrough=no<br> | /ip/firewall/mangle/add action=mark-routing chain=output connection-mark=AMPR-CONNECTION new-routing-mark=ARI-AMPR passthrough=no<br> | ||
</code> | </code> | ||
<i>Note importanti: La prima regola di mangle così definita nell' esempio è generica, si consiglia di ottimizzarla specificando come src-address il prefisso locale permesso per l' accesso alla rete AMPR (esempio 192.168.0.0/24) eliminando di conseguenza src-address-list=!AMPR.</i> | |||
4. Si definisce la regola di NAT (IP Masquerade) per la traslazione IP privato / pubblico dedicata alla sola destinazione AMPR:<br> | 4. Si definisce la regola di NAT (IP Masquerade) per la traslazione IP privato / pubblico dedicata alla sola destinazione AMPR:<br> | ||
<code> | <code>/ip/firewall/nat/add action=masquerade chain=srcnat comment="AMPR VPN NAT" dst-address-list=AMPR out-interface=wg_ampr_ari<br> | ||
/ip/firewall/nat/add action=masquerade chain=srcnat comment="AMPR VPN NAT" dst-address-list=AMPR out-interface=wg_ampr_ari<br> | |||
</code> | </code> | ||
<i>Note importanti: La regola di NAT così definita è generica, si consiglia di ottimizzarla specificando come src-address il prefisso locale permesso per l'accesso alla rete AMPR (esempio 192.168.0.0/24). Controllare l' ordine delle regole inserite, potrebbe essere necessario spostare la regola (più selettiva) appena creata in posizione di priorità rispetto ad altre già attive nel proprio router.</i> | |||
<br><br> | |||
Se tutto ha funzionato correttamente (e se il contesto personale del router/firewall è stato modificato a dovere, adattando quanto necessario) la rete locale dovrebbe essere mascherata dietro l'indirizzo IP AMPR (appartenente alla 44.32.32.0/21) comunicato in fase di attiazione. Un semplice traceroute verso 44.32.32.1 dovrebbe confermare la configurazione mostrando l'IP raggiungibile ad un solo HOP di distanza. | |||
== Pubblicazione di un servizio su rete AMPR == | |||
In aggiunta, sarà anche possibile ora pubblicare un servizio (ad esempio un WebServer) accessibile dalla rete AMPR, semplicemente configurando un NA(P)T (nell'esempio seguente si utilizza l'IP AMPR configurato nell'esempio sopra, ovvero il 44.32.32.255 e l' IP privato del server 192.168.0.10 che risponde in porta 80/TCP: | |||
In aggiunta, sarà anche possibile ora pubblicare un servizio (ad esempio un WebServer) accessibile dalla rete AMPR, semplicemente configurando un NA(P)T (nell' esempio seguente si utilizza l' IP AMPR configurato nell'esempio sopra, ovvero il 44.32.32.255 e l' IP privato del server 192.168.0.10 che risponde in porta 80/TCP: | |||
<code> | <code>/ip/firewall/nat add action=dst-nat chain=dstnat comment="AMPR WebServer NAT" dst-address=44.32.32.255 dst-port=80 in-interface=wg_ampr_ari protocol=tcp to-addresses=192.168.0.10 to-ports=80 | ||
/ip/firewall/nat add action=dst-nat chain=dstnat comment="AMPR WebServer NAT" dst-address=44.32.32.255 dst-port=80 in-interface=wg_ampr_ari protocol=tcp to-addresses=192.168.0.10 to-ports=80 | |||
</code> | </code> | ||
Anche in questo caso sarà necessario adattare opportune regole di restrizione e/o packet-filtering in modo da garantire la sicurezza di accesso necessaria all' applicativo esposto. | Anche in questo caso sarà necessario adattare opportune regole di restrizione e/o packet-filtering in modo da garantire la sicurezza di accesso necessaria all'applicativo esposto. |
Versione attuale delle 14:00, 18 mar 2024
La VPN di Accesso AMPR ARI
La VPN per l'accesso alla rete AMPR in subnet 44 (nella porzione di rete 44.32.32.0/21 a noi delegata) utilizza il protocollo WireGuard. In fase di attivazione viene consegnato all'utenza un file di configurazione in formato INI WireGuard: esso contiene tutte le informazioni necessarie alla configurazione della VPN per il client nativo che implementa le funzionalità ( https://www.wireguard.com ).
Requisiti e Tools
L'installazione in RouterOS può presentare dei passaggi dipendenti dalla configurazione attuale del router, e richiede comunque una discreta padronanza dell' infrastruttura che si andrà ad integrare.
ARI ha predisposto uno strumento di traduzione delle proprietà descritte nel file INI, in comandi di configurazione compatibili con RouterOS (a partire dalla versione 7, se non si disponesse di un sistema con a bordo RouterOS di versione compatibile, il produttore mette a disposizione molte risorse per la transizione: https://help.mikrotik.com/docs/display/ROS/Moving+from+ROSv6+to+v7+with+examples ).
Il tool di conversione è consultabile all'indirizzo: https://ipam.ampr.ari.it/wgtomt.html
Traduzione del file INI in formato RouterOS
Consigliamo, per la configurazione della VPN, di inserire il contenuto del file INI nel form del tool messo a disposizione, ad esempio se avessimo ricevuto il seguente file (nell'esempio sono contenuti dati non reali, a solo scopo esemplificativo):
[Interface] ListenPort = 51820 PrivateKey = PRIVATEKEY1234567890PRIVATEKEY= Address = 44.32.32.255/21 DNS = 44.32.32.2, 44.60.44.3 [Peer] PublicKey = PUBLICKEY1234567890PUBLICKEY= AllowedIPs = 44.0.0.0/9, 44.128.0.0/10 Endpoint = 5.144.187.34:12345 PresharedKey = PRESHAREDKEY1234567890
Otterremmo la seguente configurazione compatibile con RouterOS dopo averlo inserito e fatto processare dal tool indicato:
/interface/wireguard/add name="wg_ampr_ari" listen-port=51820 private-key="PRIVATEKEY1234567890PRIVATEKEY="
/ip/address/add address="44.32.32.255/21" interface="wg_ampr_ari"
/interface/wireguard/peers/add interface="wg_ampr_ari" endpoint-address="5.144.187.34" endpoint-port="1323X" public-key="PUBLICKEY1234567890PUBLICKEY=" preshared-key="PRESHAREDKEY1234567890=" allowed-address="44.0.0.0/9, 44.128.0.0/10"
Arrivati a questo punto sarà necessario solamente aprire una finestra terminale di configurazione del router (come ad esempio entrando in SSH, Telnet o aprendo una finestra 'Terminal' accedendo con WinBox) ed incollare il contenuto proposto.
Questa configurazione farà si che il nostro EndPoint VPN possa parlare con la rete AMPR attraverso il terminatore VPN fornito da ARI - Ovviamente la configurazione proposta sarà funzionante al netto di configurazioni specifiche di Packet Filtering e NA(P)T specifiche in funzione delle esigenze del singolo utente.
Routing e NAT di base
Comunemente, un router configurato con una interfaccia ad uso locale (con associato un indirizzamento IPv4 locale, per la propria LAN) avrà bisogno di una regola di NAT per poter mascherare gli indirizzi privati dietro l'endpoint pubblico afferente alla rete AMPR appena configurato, nel nostro caso vorremo che il solo accesso per la destinazione alla rete AMPR passi per la VPN, pertanto dovremo assicurarci che il traffico venga correttamente marcato a tale scopo e soprattutto che il traffico entrante nella interfaccia VPN (che ricordiamo essere a tutti gli effetti una interfaccia pubblica, da proteggere con opporture regole di firewall) torni indietro con il corretto mittente e attraverso la corretta interfaccia.
Un esempio (non esaustivo, che ogni utente deve necessariamente completare ed adattare alla propria infrastruttura e topologia di rete) per la configurazione di uno scenario simile sarà il seguente;
1. Si definisce una address-list per le destinazioni dell'intero dominio AMPR:
/ip/firewall/address-list/add address=44.0.0.0/9 comment="AMPR Network #1" list=AMPR
/ip/firewall/address-list/add address=44.128.0.0/10 comment="AMPR Network #2" list=AMPR
2. Si definisce una Routing-Table dedicata e le corrispondenti regole di instradamento:
/routing/table/add disabled=no fib name=ARI-AMPR
/ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.0.0.0/9 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no
/ip/route/add check-gateway=ping comment="AMPR" disabled=no distance=1 dst-address=44.128.0.0/10 gateway=44.32.32.1%wg_ampr_ari routing-table=ARI-AMPR scope=30 suppress-hw-offload=no
3. Si definiscono le regole di mangle / packet-marking considerando la routing-table separata appena creata:
/ip/firewall/mangle/add action=mark-routing chain=prerouting src-address-list=!AMPR dst-address-list=AMPR new-routing-mark=ARI-AMPR passthrough=no
Note importanti: La prima regola di mangle così definita nell' esempio è generica, si consiglia di ottimizzarla specificando come src-address il prefisso locale permesso per l' accesso alla rete AMPR (esempio 192.168.0.0/24) eliminando di conseguenza src-address-list=!AMPR.
/ip/firewall/mangle/add action=mark-connection chain=input in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes
/ip/firewall/mangle/add action=mark-connection chain=forward in-interface=wg_ampr_ari new-connection-mark=AMPR-CONNECTION passthrough=yes
/ip/firewall/mangle/add action=mark-routing chain=prerouting connection-mark=AMPR-CONNECTION in-interface=!wg_ampr_ari new-routing-mark=ARI-AMPR passthrough=no
/ip/firewall/mangle/add action=mark-routing chain=output connection-mark=AMPR-CONNECTION new-routing-mark=ARI-AMPR passthrough=no
4. Si definisce la regola di NAT (IP Masquerade) per la traslazione IP privato / pubblico dedicata alla sola destinazione AMPR:
/ip/firewall/nat/add action=masquerade chain=srcnat comment="AMPR VPN NAT" dst-address-list=AMPR out-interface=wg_ampr_ari
Note importanti: La regola di NAT così definita è generica, si consiglia di ottimizzarla specificando come src-address il prefisso locale permesso per l'accesso alla rete AMPR (esempio 192.168.0.0/24). Controllare l' ordine delle regole inserite, potrebbe essere necessario spostare la regola (più selettiva) appena creata in posizione di priorità rispetto ad altre già attive nel proprio router.
Se tutto ha funzionato correttamente (e se il contesto personale del router/firewall è stato modificato a dovere, adattando quanto necessario) la rete locale dovrebbe essere mascherata dietro l'indirizzo IP AMPR (appartenente alla 44.32.32.0/21) comunicato in fase di attiazione. Un semplice traceroute verso 44.32.32.1 dovrebbe confermare la configurazione mostrando l'IP raggiungibile ad un solo HOP di distanza.
Pubblicazione di un servizio su rete AMPR
In aggiunta, sarà anche possibile ora pubblicare un servizio (ad esempio un WebServer) accessibile dalla rete AMPR, semplicemente configurando un NA(P)T (nell'esempio seguente si utilizza l'IP AMPR configurato nell'esempio sopra, ovvero il 44.32.32.255 e l' IP privato del server 192.168.0.10 che risponde in porta 80/TCP:
/ip/firewall/nat add action=dst-nat chain=dstnat comment="AMPR WebServer NAT" dst-address=44.32.32.255 dst-port=80 in-interface=wg_ampr_ari protocol=tcp to-addresses=192.168.0.10 to-ports=80
Anche in questo caso sarà necessario adattare opportune regole di restrizione e/o packet-filtering in modo da garantire la sicurezza di accesso necessaria all'applicativo esposto.