3 155
contributi
Wtf (discussione | contributi) |
Wtf (discussione | contributi) |
||
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 == |
contributi