PDA

Visualizza la versione completa : Problemi con iptables


globalace
13-11-2007, 13:46
Sto cercando di configurare iptables ora prima d'eseguire lo scipt seguente la macchina firewall e quelle nella lan navigavano, subito dopo ne il firewall ne i pc della lan riuscivano a navigare come mai?
--------------------------------------------------------------------------------------
#!/bin/sh

# Definizione delle variabili necessarie allo script
INTERFACCIA_LAN="eth1" # interfaccia per la rete privata
INTERFACCIA_DMZ="eth2" # interfaccia per la rete pubblica (DMZ)
INTERFACCIA_INTERNET="eth0" # interfaccia per il collegamento a internet
LAN_IP="10.0.0.1" # ip della scheda di rete per la rete privata
LAN_IP_RANGE="10.0.0.1/10.255.255.255" # range degli indirizzi ip della lan
DMZ_IP="192.168.0.1" # ip della scheda di rete per la DMZ
INTERNET_IP="x.x.x.X" # ip assegnatoci dal provider

# Ora carichiamo i moduli del kernel necessari per il corretto funzionamento del firewall
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_tftp
modprobe ip_conntrack_amanda
modprobe ip_conntrack_irc
modprobe ip_tables
modprobe ip_queue
modprobe ipt_multiport
modprobe ipt_mac
modprobe ipt_unclean
modprobe ipt_REJECT
modprobe ipt_state
modprobe ipt_owner
modprobe ipt_limit
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_tftp
modprobe ip_nat_irc
modprobe ip_nat_snmp_basic
modprobe ip_nat_amanda
modprobe ipt_MASQUERADE
modprobe ipt_LOG

# Abilitiamo l'IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Azzera tutte le catene precedentemente definite
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

# Definisce le politiche predefinite
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Crea le nuove catene che verranno utilizzate per la gestione del firewall
iptables -N filter_bad_packets
iptables -N from_outside
iptables -N from_inside
iptables -N filter_lan_reserved
iptables -N dmz_to_outside
iptables -N dmz_to_inside
iptables -N outside_to_dmz
iptables -N inside_to_dmz

# Da qui inizia la gestione vera e propria del firewall
iptables -t nat -A POSTROUTING -o $INTERFACCIA_INTERNET -j SNAT --to-source $INTERNET_IP
# maschera gli indirizzi ip in modo che i computer della rete possano accedere a internet

##### Servizio: HTTP (Porta tcp/80) #####
# Da decommentare nel caso nella DMZ sia presente un web server
#WEBSERVER_IP="192.168.0.5" # ip del web server all'interno della DMZ
#iptables -t nat -A PREROUTING -p tcp -i $INTERFACCIA_INTERNET -d $INTERNET_IP --dport 80 -j DNAT --to-destination $WEBSERVER_IP
# manda tutti i pacchetti per la porta tcp/80 al web server
## Attenzione: per l'attivazione del web server ci saranno da decommentare altre linee pił avanti
##### Fine servizio: HTTP #####

# Catene per la gestione del firewall:
# Catena FILTER_LAN_RESERVED: filtra i pacchetti relativi alla LAN
iptables -A filter_lan_reserved -s $LAN_IP -j DROP

# Catena FROM_INSIDE: filtra i pacchetti in arrivo dalla LAN
iptables -A from_inside -j filter_lan_reserved
iptables -A from_inside -s $LAN_IP_RANGE -j ACCEPT
# accetta tutti i pacchetti provenienti dalla LAN e diretti a internet o alla DMZ

# Catena FILTER_BAD_PACKETS: filtra i pacchetti alla ricerca di qualche pacchetto non valido
iptables -A filter_bad_packets -p tcp ! --syn -m state --state NEW -j DROP
# elimina tutti i pacchetti nuovi senza il syn flag
iptables -A filter_bad_packets -p all -m state --state INVALID -j DROP
# elimina tutti i pacchetti non validi

# Catena FROM_OUTSIDE: filtra i pacchetti provenienti da internet
iptables -A from_outside -p all -j filter_bad_packets
# fa un controllo per i pacchetti non validi
iptables -A from_outside -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# fa passare verso la LAN solo i pacchetti relativi a connessioni gią avvenute

# Catena OUTSIDE_TO_DMZ: regole per la gestione della DMZ
##### Servizio: HTTP (porta tcp/80) #####
# decommentare le seguenti linee nel caso ci sia un web server nella DMZ
#iptables -A outside_to_dmz -p tcp -d $WEBSERVER_IP --dport 80 --syn -m state --state NEW -j ACCEPT
#iptables -A outside_to_dmz -p tcp -d $WEBSERVER_IP --dport 80 --syn -m state --state ESTABLISHED,RELATED -j ACCEPT
##### Fine servizio: HTTP #####
iptables -A outside_to_dmz -j DROP
#invia alla DMZ solo i pacchetti per i servizi conosciuti, elimina gli altri

# Catena DMZ_TO_OUTSIDE
iptables -A dmz_to_outside -j ACCEPT
# fa uscire in internet tutti i pacchetti provenienti dalla DMZ

# Catena INSIDE_TO_DMZ
iptables -A inside_to_dmz -j from_inside
# per l'invio di pacchetti dalla LAN alla DMZ rimanda alla catena from_inside
iptables -A inside_to_dmz -j DROP

# Catena DMZ_TO_INSIDE
iptables -A dmz_to_inside -j from_outside
# per l'invio di pacchetti dalla DMZ alla LAN rimanda alla catena from_outside
iptables -A dmz_to_inside -j DROP

# Ora verificando le interfacce sorgente e destinazione inviamo i pacchetti verso le catene preposte per la loro analisi
iptables -A FORWARD -i $INTERFACCIA_INTERNET -o $INTERFACCIA_DMZ -j outside_to_dmz
iptables -A FORWARD -i $INTERFACCIA_DMZ -o $INTERFACCIA_INTERNER -j dmz_to_outside
iptables -A FORWARD -i $INTERFACCIA_LAN -o $INTERFACCIA_DMZ -j inside_to_dmz
iptables -A FORWARD -i $INTERFACCIA_DMZ -o $INTERFACCIA_LAN -j dmz_to_inside
iptables -A FORWARD -i $INTERFACCIA_INTERNET -o $INTERFACCIA_LAN -j from_outside
iptables -A FORWARD -i $INTERFACCIA_LAN -o $INTERFACCIA_INTERNET -j from_inside


Per farlo eseugire ho dovuto commentare le righe: modprobe ipt_unclean perchč mi diceva che il modulo non era installato e iptables -A FORWARD -i $INTERFACCIA_DMZ -o $INTERFACCIA_INTERNER -j dmz_to_outside perchč mi diceva che c'era un errore in -j.

Loading