Debian e iptables: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
Nessun oggetto della modifica
 
(31 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}{{Gateway-Router}}
==Introduzione a IPTables/Netfilter==
==Introduzione a IPTables/Netfilter==
Questo semplice HOW-TO è rivolto a tutti coloro che usano iptables (molti, credo) con Debian GNU/Linux.
Questo semplice HOW-TO è rivolto a tutti coloro che usano iptables (molti, credo) con Debian GNU/Linux.
Riga 15: Riga 15:
# tabella cui attribuire la regola, ad esempio ''filter'';
# tabella cui attribuire la regola, ad esempio ''filter'';
# catena cui attribuire la regola, ad esempio ''input'';
# catena cui attribuire la regola, ad esempio ''input'';
# condizioni che fanno applicare la regola al pacchetto in esame, ad esempio tutti i pacchetti provenienti da fuori LAN, basati su protocollo TCP e diretti alla porta numero X;
# condizioni che fanno applicare la regola al pacchetto in esame, ad esempio proveniente da fuori LAN, basato su protocollo TCP e diretto alla porta numero X;
# azione da intraprendere, ad esempio accettare o scartare il pacchetto.
# azione da intraprendere, ad esempio accettare o scartare il pacchetto.
Ci sono cinque tabelle indipendenti predefinite, ma all'utente comune normalmente ne interessano solo due:
Ci sono cinque tabelle indipendenti predefinite, ma all'utente comune normalmente ne interessano solo due:
* '''filter''', la tabella usata per decidere il destino dei pacchetti, ovvero accettarli o scartarli. È, usando un'espressione impropria, la tabella delle regole del firewall;
* '''filter''', la tabella usata per decidere il destino dei pacchetti, ovvero accettarli o scartarli. È, usando un'espressione impropria, la tabella delle regole del firewall;
* '''nat''', la tabella usata per alterare e instradare i pacchetti. Questa tabella viene usata per esempio per sostituire l'ip sorgente di un pacchetto in uscita dalla LAN (masquerading) o per reindirizzare ad una certa macchina della LAN tutti i pacchetti provenienti da internet e diretti verso una certa porta.
* '''nat''', la tabella usata per alterare e instradare i pacchetti. Questa tabella viene usata per esempio per sostituire l'ip sorgente di un pacchetto in uscita dalla LAN (masquerading) o per reindirizzare ad una certa macchina della LAN tutti i pacchetti provenienti da internet e diretti verso una certa porta.
{{Box|Nota|Omettere la dichiarazione della tabella di riferimento equivale a dichiarare implicitamente ''filter'' come tabella di riferimento.}}
Le catene possono essere pensate come le colonne che compongono le tabelle.
Le catene possono essere pensate come le colonne che compongono le tabelle.
* ''filter''
* ''filter''
Riga 29: Riga 32:
** '''OUTPUT''', raggruppa tutte le regole che modificano i pacchetti generati dalla macchina prima di transitare attraverso la catena ''output'' della tabella ''filter'';
** '''OUTPUT''', raggruppa tutte le regole che modificano i pacchetti generati dalla macchina prima di transitare attraverso la catena ''output'' della tabella ''filter'';
** '''POSTROUTING''', raggruppa tutte le regole che modificano i pacchetti in uscita da una delle interfacce della macchina, dopo che hanno già oltrepassato la tabella ''filter'', catena ''output'' o catena ''forwarding'' a seconda della provenienza del pacchetto;
** '''POSTROUTING''', raggruppa tutte le regole che modificano i pacchetti in uscita da una delle interfacce della macchina, dopo che hanno già oltrepassato la tabella ''filter'', catena ''output'' o catena ''forwarding'' a seconda della provenienza del pacchetto;
Se si considerano le sole due tabelle qui descritte l'ordine di transito delle diverse catene è il seguente:
Se si considerano le sole due tabelle qui descritte l'ordine di transito dei pacchetti attraverso le diverse catene è il seguente:
# '''nat PREROUTING'''
# '''nat PREROUTING'''
# instradamento del pacchetto:
# instradamento del pacchetto:
Riga 41: Riga 44:
# '''nat POSTROUTING'''
# '''nat POSTROUTING'''


===Risorse in rete===
{{Suggerimento|Un bel diagramma di flusso completo è quello realizzato da [https://stuffphilwrites.com/2014/09/iptables-processing-flowchart/ Phil Hagens].}}
 
Per chi avesse la necessità di approfondire gli argomenti quivi trattati evidenzio da subito i seguenti link contenenti preziosa documentazione:
* [http://a2.pluto.it/a2445.htm#almltitle3062 sez. "Comunicare 5" di Appunti di informatica libera];
* [http://www.netfilter.org/ homepage degli sviluppatori di netfilter]: sono presenti una ottima mailinglist (consigliata) e ricca documentazione.


==Iniziamo==
==Iniziamo==
Riga 58: Riga 57:
Per esempio, se inseriamo le seguente regola:
Per esempio, se inseriamo le seguente regola:
<pre># iptables -I OUTPUT -d 127.0.0.1 -j DROP</pre>
<pre># iptables -I OUTPUT -d 127.0.0.1 -j DROP</pre>
indichiamo a iptables di inserire [-I] nelle regole di uscita [OUTPUT] per tutti i pacchetti indirizzati all'interfaccia di loop back [-d 127.0.0.1] la regola [-j] di bloccarli [DROP]. Pertanto non sarà più possibile pingarsi (ping 127.0.0.1). Potete vedere le regole appena inserite con <pre>iptables -L [-n --> per avere i dati in formato numerico]</pre>
indichiamo a iptables di inserire [-I] alla posizione 1 della catena d'uscita [OUTPUT] questa direttiva: ogni pacchetto indirizzato all'interfaccia di loop back [-d 127.0.0.1] deve essere [-j] scartato [DROP]. Pertanto non sarà più possibile pingarsi (ping 127.0.0.1). È possibile visualizzare tutte le regole attive con: <pre>iptables -L</pre>
Fatta la prova possiamo ripristinare la situazione iniziale cancellando tutte le regole:
Per visualizzare anche il numero corrispondente ad ogni regola è sufficiente aggiungere al precedente comando l'opzione <code>--line-numbers</code>. Fatta la prova è possibile eliminare tutte le regole presenti in tutte le tabelle e catene (predefinite) digitando:
<pre>iptables -F</pre>
<pre>iptables -F</pre>
{{Box|Nota|Poiché il comportamento predefinito di iptables in debian è accettare (policy ACCEPT) e visto che nessuna regola è definita durante l'installazione del sistema operativo, allora tutto il traffico risulta permesso in ogni direzione a meno che l'utente non definisca esplicitamente regole che lo blocchino.}}
Per cambiare il comportamento predefinito di <code>iptables</code>, cioè la sua ''policy'', è possibile usare l'opzione '''<code>-P</code>'''. Ad esempio per imporre di scartare ogni pacchetto transitante attraverso la catena INPUT della tabella filter, fatta salva la definizione di regole specifiche che ne prevedano l'accettazione, basterebbe digitare:
<pre>iptables -P INPUT DROP</pre>


====NAT e FORWARD====
====NAT e FORWARD====
Riga 67: Riga 69:
<br/>
<br/>
<br/>
<br/>
La policy FORWARD permette ad un amministratore di controllare dove vengono diretti i pacchetti all'interno di una LAN. Per esempio, per abilitare il forwarding per l'intero LAN (assumendo che il firewall/gateway ha un indirizzo IP interno su eth1), possono essere impostate le seguenti regole:  
La catena FORWARD permette ad un amministratore di controllare dove vengono diretti i pacchetti all'interno di una LAN. Per esempio, per abilitare il forwarding per l'intero LAN (assumendo che il firewall/gateway ha un indirizzo IP interno su eth1), possono essere impostate le seguenti regole:  
<pre>
<pre>
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
Riga 84: Riga 86:
La regola utilizza il NAT packet matching table (-t nat), e specifica la catena POSTROUTING interna per NAT (-A POSTROUTING), sul dispositivo networking esterno del firewall (-o eth0). POSTROUTING permette ai pacchetti di essere modificati quando gli stessi abbandonano il dispositivo esterno del firewall. Il target -j MASQUERADE viene specificato in modo da poter mascherare l'indirizzo IP privato di un nodo, con l'indirizzo IP esterno del firewall/gateway. Pertanto, il masquerading è permette ad una rete interna con IP statico e quindi non routabile all’esterno, di uscire su internet con il solo IP pubblico del dispositivo(router, firewall) sul quale è in funzione un’implementazione di questa tecnica.
La regola utilizza il NAT packet matching table (-t nat), e specifica la catena POSTROUTING interna per NAT (-A POSTROUTING), sul dispositivo networking esterno del firewall (-o eth0). POSTROUTING permette ai pacchetti di essere modificati quando gli stessi abbandonano il dispositivo esterno del firewall. Il target -j MASQUERADE viene specificato in modo da poter mascherare l'indirizzo IP privato di un nodo, con l'indirizzo IP esterno del firewall/gateway. Pertanto, il masquerading è permette ad una rete interna con IP statico e quindi non routabile all’esterno, di uscire su internet con il solo IP pubblico del dispositivo(router, firewall) sul quale è in funzione un’implementazione di questa tecnica.
<br/>
<br/>
Concludiamo il discorso sul NAT, parlando del REDIRECT che consente di mutare la porta di destinazione di un pacchetto. Anche questa operazione si svolge nella chain di PREROUTING.
Concludiamo il discorso sul NAT, parlando del REDIRECT che consente di cambiare la destinazione del pacchetto forzandolo verso la macchina stessa e volendo di modificare contestualmente anche la sua porta di destinazione. Anche questa operazione si svolge nella chain di PREROUTING.
La sintassi è la seguente:
La sintassi è la seguente:
<pre>
<pre>
Riga 116: Riga 118:
In alternativa si può utilizzare il pacchetto '''iptables-persistent''':
In alternativa si può utilizzare il pacchetto '''iptables-persistent''':
<pre># apt-get install iptables-persistent</pre>
<pre># apt-get install iptables-persistent</pre>
che si occupa di salvare e ripristinare automaticamente le regole.
che permette di salvare le regole attualmente in uso in un apposito file che sarà poi automaticamente caricato ad ogni avvio. Nel caso di IPv4:
<pre># iptables-save > /etc/iptables/rules.v4</pre>


====Script di Bash====
====Script di Bash====
Questo metodo consente, secondo personale parere, un maggiore ordine delle regole. Infatti l'idea è di creare uno script di Bash che, eseguendolo, imposti tutte le regole del firewall.
Questo metodo consente, secondo personale parere, un maggiore ordine delle regole. Infatti l'idea è di creare uno script di Bash che, eseguendolo, imposti tutte le regole del firewall.
== Esempi ==
=== LAN domestica ===
==== Wireless access point ====
Nel caso più semplice non è necessario configurare iptables poiché per comportamento predefinito questo permette il passaggio di tutti i dati. L'unica modifica necessaria è a livello di kernel per abilitare il ''forwarding'', ovvero è necessario modificare il file <code>/etc/sysctl.conf</code> impostando a ''1'' il valore del parametro <code>net.ipv4.ip_forward</code>.
Questo non esclude naturalmente che l'utente debba saper configurare correttamente le interfacce di rete necessarie (nel caso dare uno sguardo all'esempio ''Wireless access point e ADSL'' in cui vengono elencate alcune guide di debianizzati).
==== Wireless access point e ADSL ====
Macchina dedicata al ruolo di router/gateway/firewall. È dato per scontato quanto segue:
* configurazione corretta dell'interfaccia wireless in modalità master ([[Wireless Access Point (WAP) personalizzato]])
* configurazione corretta di un bridge di rete per le interfacce cablate e senza fili ([[Ethernet Bridging]])
* configurazione corretta di una connessione ADSL ([[Pppoeconf]])
* configurazione corretta di server DNS e DHCP qualora tali servizi non fossero già disponibili ([[Un server DNS e DHCP su Debian]])
Di seguito un esempio di script bash per inserire tutte le regole del caso.
* <code>ppp0</code> è l'interfaccia di collegamento al modem ADSL
* <code>br0</code> è il bridge tra <code>eth0</code> e <code>wlan0</code> che consente il collegamento ad internet di tutti gli altri dispositivi della LAN.
<pre>
#!/bin/bash
#
# INTERFACCE: br0 è l'interfaccia LAN, mentre ppp0 quella ADSL
# ------------
# FILTER TABLE
# ------------
# INPUT chain
# -----------
# Politica del negare in modo .predefinito quando non esplicitamente permesso
iptables -P INPUT DROP
# Permette tutto il traffico su loopback (lo0) ed elimina tutto il traffico che non usa lo0 verso 127/8
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accetta tutte le nuove connessioni che NON provengono da internet (ppp0)
iptables -A INPUT -m state --state NEW ! -i ppp0 -j ACCEPT
# Accetta tutte le connessioni già stabilite
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accetta anche le nuove connessioni per le porte 4662 e 4672
iptables -A INPUT -m state --state NEW -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 4672 -j ACCEPT
# Accetta tutte le nuove connessioni SSH
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
# Permettere ping
# notare che bloccare altri tipi di pacchetti icmp è considerata da alcuni una cattiva idea
# rimuovere -m icmp --icmp-type 8 da questa riga per permettere tutti i tipi di icmp:
# https://security.stackexchange.com/questions/22711
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Registrare le sole chiamate negate (accesso via il comando 'dmesg')
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Respingere tutto il resto del traffico in entrata: politica del negare
# in modo predefinito quando non esplicitamente permesso
iptables -A INPUT -j REJECT
# OUTPUT chain
# ------------
# Imposta il comportamento predefinito (accetta tutto)
iptables -P OUTPUT ACCEPT
# FORWARD chain
# -------------
# Imposta il comportamento predefinito (scarta tutto)
iptables -P FORWARD DROP
# Accetta tutto il traffico entrante diretto alla lan (br0),
# purché veicolato da connessioni già stabilite o ad esse riconducibile
iptables -A FORWARD -i ppp0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Programmi specifici, ad esempio un server di COD4
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 20800 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 20800 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 20810 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 20810 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 28960 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 28960 -j ACCEPT
# Non inoltrare il restante traffico in entrata
iptables -A FORWARD -i ppp0 -o br0 -j REJECT
# Inoltra tutto il traffico uscente proveniente dalla LAN
iptables -A FORWARD -i br0 -o ppp0 -j ACCEPT
# Inoltra tutto il traffico proveniente da wlan0 a eth0 e viceversa (quindi entrante e uscente
# da br0)
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
# ---------
# NAT table
# ---------
# PREROUTING chain
# ----------------
# Programmi specifici, ad esempio un server di COD4
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 20800 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 20800 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 20810 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 20810 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 28960 -j DNAT --to-destination 192.168.1.172
# POSTROUTING chain
# -----------------
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
</pre>
==== Uso di una VPN commerciale ====
{{Suggerimento|Prima di procedere si consiglia la lettura della corrispondente sezione presente nella guida dedicata a [[Openvpn]].}}
===== Caso 1 =====
Questo esempio si basa sulla precedente configurazione (''Wireless access point e ADSL'') per adattarla al caso in cui si decida di configurare il proprio gateway per far transitare tutto il traffico della propria LAN attraverso un tunnel VPN. Si ipotizza inoltre che sul computer che agisce come gateway sia in funzione un servizio che richiede di accettare nuove connessioni dall'esterno attraverso la porta 6666 e che il proprio fornitore di VPN permetta di reindirizzare una sola porta, la 6666 appunto (motivo per cui è stato eliminata la parte di configurazione relativa al forwording delle nuove connessioni come quelle basate sulla porta 20800).
{{Box|Nota|La seguente configurazione farà si che tutte le connessioni provenienti da internet non transitanti per il tunnel VPN saranno rifiutate.}}
<pre>
#!/bin/bash
#
# INTERFACCE: br0 è l'interfaccia LAN, mentre ppp0 quella ADSL
# ------------
# FILTER TABLE
# ------------
# INPUT chain
# -----------
# Politica del negare in modo .predefinito quando non esplicitamente permesso
iptables -P INPUT DROP
# Permette tutto il traffico su loopback (lo0) ed elimina tutto il traffico che non usa lo0 verso 127/8
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accetta tutte le nuove connessioni che NON provengono da internet
iptables -A INPUT -m state --state NEW -i br0 -j ACCEPT
# Accetta tutte le connessioni già stabilite
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accetta anche le nuove connessioni per la porta 6666
iptables -A INPUT -i tun0 -m state --state NEW -p tcp --dport 6666 -j ACCEPT
# Permettere ping
# notare che bloccare altri tipi di pacchetti icmp è considerata da alcuni una cattiva idea
# rimuovere -m icmp --icmp-type 8 da questa riga per permettere tutti i tipi di icmp:
# https://security.stackexchange.com/questions/22711
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Registrare le sole chiamate negate (accesso via il comando 'dmesg')
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Respingere tutto il resto del traffico in entrata: politica del negare
# in modo predefinito quando non esplicitamente permesso
iptables -A INPUT -j REJECT
# OUTPUT chain
# ------------
# Imposta il comportamento predefinito (accetta tutto)
iptables -P OUTPUT ACCEPT
# FORWARD chain
# -------------
# Imposta il comportamento predefinito (scarta tutto)
iptables -P FORWARD DROP
# Accetta tutto il traffico entrante diretto alla lan (br0),
# purché veicolato da connessioni già stabilite o ad esse riconducibile
iptables -A FORWARD -i ppp0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Non inoltrare il restante traffico in entrata
iptables -A FORWARD -i tun0 -o br0 -j REJECT
# Inoltra tutto il traffico uscente proveniente dalla LAN
iptables -A FORWARD -i br0 -o tun0 -j ACCEPT
# Inoltra tutto il traffico proveniente da wlan0 a eth0 e viceversa (quindi entrante e uscente
# da br0)
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
# ---------
# NAT table
# ---------
# POSTROUTING chain
# -----------------
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
</pre>
===== Caso 2 =====
Anche questo esempio si basa sulla precedente configurazione (''Wireless access point e ADSL''), ma diversamente dal caso precedente qui si presenta la situazione in cui parte del traffico internet non venga dirottato verso il tunnel VPN. In particolare si suppone come prima di avere un servizio sulla porta 6666 accessibile da internet solo attraverso il tunnel VPN ed altri applicativi accessibili sulle porte 22, 4662 e 4672, ma solo dalla normale interfaccia adsl.
In tale situazione, onde evitare il rischio che qualcuno possa correlare l'IP di uscita della VPN a quello pubblico proprio, si impostano delle regole anche nella catena di output, in modo che sia impossibile per un servizio rispondere sia attraverso l'interfaccia ADSL che il tunnel VPN.
{{Box|Nota|Per permettere il traffico internet in ingresso sull'interfaccia ppp0 è necessario creare e configurare un'apposita tabella di routing aggiuntiva a quella predefinita.}}
<pre>
#!/bin/bash
#
# INTERFACCE: br0 è l'interfaccia LAN, mentre ppp0 quella ADSL
# ------------
# FILTER TABLE
# ------------
# INPUT chain
# -----------
# Politica del negare in modo .predefinito quando non esplicitamente permesso
iptables -P INPUT DROP
# Permette tutto il traffico su loopback (lo0) ed elimina tutto il traffico che non usa lo0 verso 127/8
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accetta tutte le nuove connessioni che NON provengono da internet (ppp0)
iptables -A INPUT -m state --state NEW -i br0 -j ACCEPT
# Accetta tutte le connessioni già stabilite
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accetta tutte le nuove connessioni SSH
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
# Accetta anche le nuove connessioni per le seguenti porte
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 4672 -j ACCEPT
iptables -A INPUT -i tun0 -m state --state NEW -p tcp --dport 6666 -j ACCEPT
# Permettere ping
# notare che bloccare altri tipi di pacchetti icmp è considerata da alcuni una cattiva idea
# rimuovere -m icmp --icmp-type 8 da questa riga per permettere tutti i tipi di icmp:
# https://security.stackexchange.com/questions/22711
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# Registrare le sole chiamate negate (accesso via il comando 'dmesg')
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Respingere tutto il resto del traffico in entrata: politica del negare
# in modo predefinito quando non esplicitamente permesso
iptables -A INPUT -j REJECT
# OUTPUT chain
# ------------
# Imposta il comportamento predefinito (accetta tutto)
iptables -P OUTPUT ACCEPT
# Blocca le connessioni in uscita sulle interfacce "errate".
iptables -A OUTPUT -o tun0 -p tcp --dport 22 -j REJECT
iptables -A OUTPUT -o tun0 -p tcp --dport 4662 -j REJECT
iptables -A OUTPUT -o tun0 -p udp --dport 4672 -j REJECT
iptables -A OUTPUT -o ppp0 -p tcp --dport 6666 -j REJECT
# FORWARD chain
# -------------
# Imposta il comportamento predefinito (scarta tutto)
iptables -P FORWARD DROP
# Inoltra tutto il traffico proveniente dalla LAN
iptables -A FORWARD -i br0 -j ACCEPT
# Accetta tutto il traffico entrante diretto alla lan (br0),
# purché veicolato da connessioni già stabilite o ad esse riconducibile
iptables -A FORWARD ! -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Programmi specifici, ad esempio un server di COD4
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 20800 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 20800 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 20810 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 20810 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 28960 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p udp --dport 28960 -j ACCEPT
# Non inoltrare il restante traffico in entrata proveniente da internet, a prescindere
# che arrivi da tun0 o ppp0
iptables -A FORWARD ! -i br0 -j REJECT
# ---------
# NAT table
# ---------
# PREROUTING chain
# ----------------
# Programmi specifici, ad esempio un server di COD4
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 20800 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 20800 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 20810 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 20810 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 28960 -j DNAT --to-destination 192.168.1.172
# POSTROUTING chain
# -----------------
iptables -t nat -A POSTROUTING ! -o br0 -j MASQUERADE
</pre>
== Approfondimenti ==
=== Manpages ===
* <code>man iptables</code>
* <code>man iptables-extensions</code>
=== Sitografia ===
* [http://a2.pluto.it/a2/a258.htm#almlindex4169 sez. "IPTables per l'amministrazione del firewall" di Appunti di informatica libera];
* [http://www.netfilter.org/ homepage degli sviluppatori di netfilter]: sono presenti una ottima mailinglist (consigliata) e ricca documentazione.
* [https://wiki.debian.org/it/iptables iptables] su wiki.debian.org
* [https://help.ubuntu.com/community/IptablesHowTo iptables howto], su help.ubuntu.com
* [https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#IPFILTERING Oskar Andreasson tutorial], su frozentux.net


{{Autori
{{Autori
Riga 126: Riga 453:
|Verificata_da =  
|Verificata_da =  
:[[Utente:Gigipin| Gigipin]]
:[[Utente:Gigipin| Gigipin]]
: [[Utente:Wtf|Wtf]] 22:05, 16 set 2015 (CEST)
|Estesa_da =
|Estesa_da =
:[[Utente:Gigipin| Gigipin]]
:[[Utente:Gigipin| Gigipin]]
|Numero_revisori=1
: [[Utente:Wtf|Wtf]] 22:05, 16 set 2015 (CEST)
|Numero_revisori=2
}}
}}


[[Categoria:Firewall]]
[[Categoria:Firewall]]
2 853

contributi

Menu di navigazione