Firewall - 16

# Aggiungiamo il NAT al router con tre zone - lo script

- Per realizzare questo firewall si può usare il seguente script:

      #!/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
      # Per finire abilita il routing
      echo 1 > /proc/sys/net/ipv4/ip_forward
      # Svuota tutte le catene di "filter"
      iptables -F
      # Svuota tutte le catene di "nat"
      iptables -t nat -F
      ## 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 i pacchetti delle connessioni gia' aperte (ESTABLISHED)
      iptables -A INPUT --protocol udp -m state --state 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
      ## Accetto i pacchetti delle connessioni gia' aperte (ESTABLISHED)
      iptables -A FORWARD --protocol udp -m state --state 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 -j ACCEPT
      iptables -A FORWARD -d 172.16.0.2 --protocol tcp --destination-port 21 -j ACCEPT
      #Aggiungo una regola per fare il reject dei paccheti TCP ed una per l'UDP
      iptables -A FORWARD --protocol tcp -j REJECT
      iptables -A FORWARD --protocol udp -j REJECT
      ##Adesso mi occupo della tabella NAT
      ## Eseguo il NAT dalla rete interna verso l'esterno
      iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 10.0.155.155
      ## Eseguo il NAT dalla DMZ verso l'esterno
      iptables -t nat -A POSTROUTING -s 172.16.0.0/255.255.0.0 -o eth0 -j SNAT --to-source 10.0.155.155
      ## Eseguo il NAT inverso per il server WEB ed FTP
      iptables -t nat -A PREROUTING -d 10.0.155.155 --protocol tcp --destination-port 80 -j DNAT --to-destination 172.16.0.2
      iptables -t nat -A PREROUTING -d 10.0.155.155 --protocol tcp --destination-port 21 -j DNAT --to-destination 172.16.0.2

© Ing. Stefano Salvi - released under FDL licence