Debian e iptables: differenze tra le versioni

Riga 118: Riga 118:
====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 casalinga ===
Script bash per inserire tutte le regole del caso. <code>ppp0</code> è l'interfaccia di collegamento al modem ADSL, mentre br0 è il bridge tra eth0 e wlan0 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
# ------------
#PATH=/usr/sbin:/sbin:/bin:/usr/bin
# 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 tutti i tipi di connessione, purché HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Accetta anche le nuove connessioni per le porte 4662 e 4672
iptables -A INPUT -p tcp -m state --state NEW --dport 4662 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --dport 4672 -j ACCEPT
# Accetta tutte le nuove connessioni SSH
iptables -A INPUT -p tcp -m state --state NEW --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
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW -p tcp --dport 443 -j ACCEPT
# COD4
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW --dport 20800 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW --dport 20810 -j ACCEPT
iptables -A FORWARD -i ppp0 -o br0 -m state --state NEW --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 (quindi entrante e uscente
# da br0)
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
# ---------
# NAT table
# ---------
# PREROUTING chain
# ----------------
# COD4
iptables -t nat -A PREROUTING -i ppp0 --dport 20800 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 --dport 20810 -j DNAT --to-destination 192.168.1.172
iptables -t nat -A PREROUTING -i ppp0 --dport 28960 -j DNAT --to-destination 192.168.1.172
# POSTROUTING chain
# -----------------
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
</pre>


== Approfondimenti ==
== Approfondimenti ==
3 155

contributi