Precedente Indice

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

Valid XHTML 1.0! Valid CSS!