6 999
contributi
(revisionata, corretti alcuni errori, modificata gerarchia titoli) |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 35: | Riga 35: | ||
</pre> | </pre> | ||
==Configurazione - I Modo== | ==Configurazione - I Modo== | ||
La prima configurazione proposta prevede l'utilizzo del pacchetto < | La prima configurazione proposta prevede l'utilizzo del pacchetto <code>ipmasq</code>, presente nei repository di Debian. Ipmasq è una collezione di script molto ben congegnata, che facilita la configurazione di un IP Masquerade su Debian GNU/Linux. L'IP Masquerade è una funzionalità del kernel di Linux che permette a un'intera rete di computer di essere connessa ad un'altra rete (quasi sempre internet) utilizzando l'indirizzo IP pubblico del gateway.<br> | ||
Di default, ipmasq configura il sistema sul quale è installato con le seguenti funzionalità: | Di default, ipmasq configura il sistema sul quale è installato con le seguenti funzionalità: | ||
* protezione da IP spoofing | * protezione da IP spoofing | ||
Riga 49: | Riga 49: | ||
==Configurazione - II Modo== | ==Configurazione - II Modo== | ||
Tuttavia, se volessimo addentrarci in configurazioni particolari, ipmasq potrebbe starci un po' stretto. In questo capitolo vedremo pertanto come effettuare una semplice configurazione manuale di iptables.<br> | Tuttavia, se volessimo addentrarci in configurazioni particolari, ipmasq potrebbe starci un po' stretto. In questo capitolo vedremo pertanto come effettuare una semplice configurazione manuale di iptables.<br> | ||
Generalmente iptables viene configurato da linea di comando e non prevede | Generalmente iptables viene configurato da linea di comando e non prevede file di configurazione; il modo migliore per rendere definitive le modifiche alla configurazione e mantenerle anche dopo un riavvio del server è utilizzare uno script.<br> | ||
Il seguente script configura iptables per un servizio di routing DNAT and SNAT ( | Il seguente script configura iptables per un servizio di routing DNAT and SNAT (Destination/Source Network Address Translation) e in più imposta una regola per accettare le connessioni entranti sulla porta 22 (SSH), dirottandole verso la macchina locale di indirizzo IP 192.168.1.200: | ||
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
Riga 85: | Riga 85: | ||
exit 0 | exit 0 | ||
</pre> | </pre> | ||
Modificate gli indirizzi IP secondo le vostre esigenze e salvate il file come < | Modificate gli indirizzi IP secondo le vostre esigenze e salvate il file come <code>//etc/init.d/firewall</code>. | ||
A questo punto rendiamolo eseguibile con il comando: | A questo punto rendiamolo eseguibile con il comando: | ||
<pre> | <pre> | ||
Riga 95: | Riga 95: | ||
</pre> | </pre> | ||
===Iptables in profondità=== | ===Iptables in profondità=== | ||
Lo script precedente utilizza delle variabili impostate all'inizio dello script stesso, ma possono essere specificati dei valori anche direttamente all'interno dei comandi < | Lo script precedente utilizza delle variabili impostate all'inizio dello script stesso, ma possono essere specificati dei valori anche direttamente all'interno dei comandi <code>iptables</code>.<br> | ||
Il primo comando iptables che troviamo nello script è: | Il primo comando iptables che troviamo nello script è: | ||
<pre> | <pre> | ||
Riga 102: | Riga 102: | ||
Il comando imposta il SNAT, cioè indirizza verso internet i pacchetti generati dalle macchine della LAN.<br> | Il comando imposta il SNAT, cioè indirizza verso internet i pacchetti generati dalle macchine della LAN.<br> | ||
Vediamo di capirci qualcosa di più: | Vediamo di capirci qualcosa di più: | ||
* < | * <code>-t nat</code> specifica che il tipo di regola è network address translation (NAT), cioè IP masquerading | ||
* < | * <code>-A POSTROUTING</code> appende una regola alla catena <code>POSTROUTING</code>: la regola sarà processata dopo tutte le altre regole esistenti | ||
* < | * <code>-d ! ${LOCALNET}</code> indica ogni pacchetto destinato a un indirizzo IP non facente parte di <code>${LOCALNET}</code> | ||
* < | * <code>-j SNAT</code> indica di saltare alla regola <code>SNAT</code> | ||
* < | * <code>--to ${EXTERNIP}</code> specifica che ogni pacchetto che lascia la rete deve avere indirizzo IP <code>${EXTERNIP}</code> | ||
Tradotta in italiano, la regola suona più o meno così: prendi ogni pacchetto la cui destinazione è esterna alla LAN e sparalo su internet, dopo aver cambiato il suo indirizzo IP di provenienza con l'indirizzo IP del firewall Debian.<br><br> | Tradotta in italiano, la regola suona più o meno così: prendi ogni pacchetto la cui destinazione è esterna alla LAN e sparalo su internet, dopo aver cambiato il suo indirizzo IP di provenienza con l'indirizzo IP del firewall Debian.<br><br> | ||
Il secondo comando iptables fa esattamente la cosa opposta: prende i pacchetti SSH che arrivano da internet, bloccando invece tutti gli altri, e li indirizza ad una macchina interna: | Il secondo comando iptables fa esattamente la cosa opposta: prende i pacchetti SSH che arrivano da internet, bloccando invece tutti gli altri, e li indirizza ad una macchina interna: | ||
Riga 112: | Riga 112: | ||
iptables -t nat -A PREROUTING --dst ${EXTERNIP} -p tcp --dport 22 -j DNAT --to-destination ${SSHHOST} | iptables -t nat -A PREROUTING --dst ${EXTERNIP} -p tcp --dport 22 -j DNAT --to-destination ${SSHHOST} | ||
</pre> | </pre> | ||
* < | * <code>-t nat</code> specifica che il tipo di regola è network address translation (NAT), cioè IP masquerading | ||
* < | * <code>-A PREROUTING</code> appende una regola alla catena <code>PREROUTING</code>: la regola sarà processata prima di tutte le altre regole esistenti | ||
* < | * <code>--dst ${EXTERNIP}</code> specifica il destinatario originale del pacchetto (il firewall) | ||
* < | * <code>-p tcp</code> indica che verrà utilizzato il protocollo TCP | ||
* < | * <code>--dport 22</code> specifica la porta di destinazione del pacchetto | ||
* < | * <code>-j DNAT</code> indica di saltare alla regola <code>DNAT</code> per effettuare la destination network address translation | ||
Tradotta in italiano, la regola suona più o meno così: prendi ogni pacchetto TCP che arriva alla porta 22 del firewall, cambiagli l'indirizzo di destinazione e giralo all'interno della rete LAN.<br> | Tradotta in italiano, la regola suona più o meno così: prendi ogni pacchetto TCP che arriva alla porta 22 del firewall, cambiagli l'indirizzo di destinazione e giralo all'interno della rete LAN.<br> | ||
Se, oltre all'accesso SSH, desideriamo fornire altri servizi su altre porte, dovremo scrivere una regola simile per ogni servizio che debba essere raggiunto dall'esterno.<br><br> | Se, oltre all'accesso SSH, desideriamo fornire altri servizi su altre porte, dovremo scrivere una regola simile per ogni servizio che debba essere raggiunto dall'esterno.<br><br> |
contributi