Lo script per realizzare questo firewall è il seguente:
#!/bin/bash
## RETE:
## 10.0.155.0 -> esterna (10.0.155.155)
## 192.168.1.0 -> interna (192.168.1.251)
## 172.16.0.0 -> DMZ (172.16.0.1)
## 172.16.0.2 -> Server (web/ftp)
## Sulla macchina locale, nulla
##iptables -P OUTPUT ACCEPT
# Inizio con politica "aperta" (pericolosetto nel reale)
iptables -P INPUT ACCEPT
## disabilito il routing
iptables -P FORWARD DROP# Per finire abilita il routing
echo 1 > /proc/sys/net/ipv4/ip_forward
## Comincio il lavoro vero
## Accetto i pacchetti delle connessioni secondarie (RELATED)
## e gia' aperte (ESTABLISHED)
iptables -A INPUT --protocol tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
## Accetto tutto il traffico per localhost
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
## Accetto tutti i pacchetti ICMP
iptables -A INPUT --protocol icmp -j ACCEPT
#Aggiungo una regola per fare il reject dei paccheti TCP ed una per l'UDP
iptables -A INPUT --protocol tcp -j REJECT
iptables -A INPUT --protocol udp -j REJECT
## Tutto il resto lo scarto
iptables -P INPUT DROP
## Adesso gestisco il routing:
## Accetto i pacchetti delle connessioni secondarie (RELATED)
## e gia' aperte (ESTABLISHED)
iptables -A FORWARD --protocol tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
## Faccio passare tutti gli ICMP
iptables -A FORWARD --protocol icmp -j ACCEPT
## Da interna ad esterna, tutto
iptables -A FORWARD -s 192.168.1.0/255.255.255.0 -o eth0 -j ACCEPT
## Da interna a DMZ, tutto
iptables -A FORWARD -s 192.168.1.0/255.255.255.0 -o eth1 -j ACCEPT
## Da dmz ad esterna, tutto
iptables -A FORWARD -s 172.16.0.0/255.255.0.0 -o eth0 -j ACCEPT
## Accetto i pacchetti destinati alle porte 80 e 21, protocollo TCP
iptables -A FORWARD -d 172.16.0.2 --protocol tcp --destination-port 80 -jACCEPT
iptables-AFORWARD -d 172.16.0.2 --protocol tcp --destination-port 21 -j ACCEPT
#Aggiungo una regola perfare il reject dei paccheti TCP ed una per l'UDP
iptables -A FORWARD --protocol tcp -j REJECT
iptables -A FORWARD --protocol udp -j REJECT