Debian e iptables: differenze tra le versioni

nessun oggetto della modifica
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 225: Riga 225:
# ----------------
# ----------------


# COD4
# 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 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 udp --dport 20800 -j DNAT --to-destination 192.168.1.172
Riga 241: Riga 241:


==== Uso di una VPN commerciale ====
==== 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).
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).
{{Suggerimento|Prima di procedere si consiglia la lettura della corrispondente sezione presente nella guida dedicata a [[Openvpn]].}}
{{Box|Nota|La seguente configurazione farà si che tutte le connessioni provenienti da internet non transitanti per il tunnel VPN saranno rifiutate.}}
{{Box|Nota|La seguente configurazione farà si che tutte le connessioni provenienti da internet non transitanti per il tunnel VPN saranno rifiutate.}}


Riga 318: Riga 321:


iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
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>
</pre>


3 155

contributi