PDA

View Full Version : Iptables...AIUTOO!!!!!


Skenks
12-10-2006, 10:03
salve ragazzi aiutatemi sono in crisi!!! :rolleyes:
devo presentare una spece di tesina su una rete così strutturata: RETE (http://img169.imageshack.us/my.php?image=retesi9.jpg)

io ho scritto delle regole ma vorrei avedere delle conferme perchè forse avrò sbagliato qualche cosa o è da aggiungere qualche cosa.
Vi spiego il grafico: i due PC della ZonaCED possono accedere a tutte le zone l'altro pc è un server Nagios che non fa altro che fare aspettare le risposte dai due client presenti sulla ZonaLAN e ZonaCED
I Pc della zonaLAN possono accedere alla ZonaCED ed Internet.


Vi prego se potete aiutarmi anche in privato (messenger o qualche alto modo) mi fareste un grandissimo piacere.


Le regole che io ho scritto sono:

# Carichiamo 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

# Azzeriamo tutte le catene precedentemente definite
iptables –F
iptables –X
iptables –Z
iptables –t nat –F
iptables –t nat –X
iptables –t nat –Z

# TABELLA FILTER
# Abilito l’interfaccia Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Definiamo le politiche predefinite
iptables –P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP

# Creiamo le nuove catene che verranno utilizzate per la gestione del firewall
iptables –N mac_to_lan
iptables –N lan_to_dmz
iptables –N dmz_to_lan
iptables –N lan_to_out
iptables –N out_to_lan
iptables –N ced_to_all
iptables –N all_to_ced

# Definiamo le chain
iptables –A FORWARD –i eth2 –j mac_to_lan
iptables –A FORWARD –i eth2 –o eth0 –j lan_to_out
iptables –A FORWARD –i eth0 –o eth2 –j out_to_lan
iptables –A FORWARD –i eth2 –o eth1 –j lan_to_dmz
iptables –A FORWARD –i eth2 –o eth1 –j dmz_to_lan
iptables –A FORWARD –i eth3 –j ced_to_all
iptables –A FORWARD –i eth3 –j all_to_ced

# Regole per la LAN per inviare pacchetti verso l’esterno
iptables –A lan_to_out –p tcp –-dport 80 –j ACCEPT
iptables –A lan_to_out –p tcp –-dport 443 –j ACCEPT
iptables –A lan_to_out –p tcp –-dport 22 –j ACCEPT
iptables –A lan_to_out –p tcp –-dport 53 –j ACCEPT
iptables –A lan_to_out –p udp –-dport 53 –j ACCEPT


# Regole per la LAN per ricevere i pacchetti dall’esterno
iptables –A out_to_lan –m state –-state ESTABILISHED, RELATED –j ACCEPT

# Regole per la LAN per richieste alla zona DMZ
iptables –A lan_to_dmz –p tcp –-dport imap –d 10.10.0.5 –j ACCEPT
iptables –A lan_to_dmz –p tcp –-dport 80 –d 10.10.0.3 –j ACCEPT
iptables –A lan_to_dmz –p tcp –m multiport –dports 20,21 –d 10.10.0.4 –j ACCEPT
iptables –A lan_to_dmz –p tcp –dport 53 -d 10.10.0.2 –j ACCEPT


# Regole per la LAN per ricevere pacchetti di risposta dalla DMZ
iptables –A dmz_to_lan –m state –-state ESTABILISHED, RELATED –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport 80 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –m multiport –dports 20,21 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport 53 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport imap –d 10.10.10.0/24 –j ACCEPT


# Regole per la sede CED per accedere alla zona DMZ, alla LAN delle sede centrale ed Internet
iptables –A ced_to_all –s 10.10.20.3 –m mac –mac 08:00:69:02:01:FC –j ACCEPT
iptables –A ced_to_all –s 10.10.20.4 –m mac –mac 00-E0-18-98-56-35 –j ACCEPT


# Regole per la sede CED per ricevere i pacchetti provenienti dalla Zona DMZ, LAN, Internet
iptables –A all_to_ced –p tcp –s 10.10.10.0/24 –d 10.10.20.3 –j ACCEPT
iptables –A all_to_ced –p tcp –s 10.10.10.0/24 –d 10.10.20.4 –j ACCEPT
iptables –A all_to_ced –p tcp –s 10.10.0.0/24 –d 10.10.20.3 –j ACCEPT
iptables –A all_to_ced –p tcp –s 10.10.0.0/24 –d 10.10.20.4 –j ACCEPT
iptables –A all_to_ced –p tcp –-dport 5666 –s 10.10.0.6 -d 10.10.20.2 –j ACCEPT


# Catena per il controllo del mac address
iptables –A mac_to_lan –s 10.10.10.15 –m mac –mac 00:00:00:00 –j RETURN
iptables –A mac_to_lan –s 10.10.10.16 –m mac –mac 00:00:00:00 –j RETURN
iptables –A mac_to_lan –s 10.10.10.17 –m mac –mac 00:00:00:00 –j RETURN
………..tutte le workstation che fanno parte della LAN……
iptables –A mac_to_lan –s 10.10.10.33 -m mac –mac 00:00:00:00 –j RETURN
iptables –A mac_to_lan –s 10.10.10.34 -m mac –mac 00:00:00:00 –j RETURN
iptables –A mac_to_lan –s 10.10.10.35 -m mac –mac 00:00:00:00 –j RETURN

# Regola per droppare
iptables –A FORWARD –j DROP


# TABELLA NAT
# Tutto ciò che passa in uscita dalla eth0 viene mascherato con l'ip pubblico assegnato dal proprio ISP
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

# Regola per Prerouting per la zona DMZ
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.253 –j DNAT –to-destination 10.10.0.5:143
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.252 –j DNAT –to-destination 10.10.0.4:21
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.251 –j DNAT –to-destination 10.10.0.3:80
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.254 –j DNAT –to-destination 10.10.0.2:53

Psycotic
12-10-2006, 13:45
non e' semplicissimo perche' in genere ci si dimentica sempre qualcosa..
Quello che mi risalta subito agli occhi potrebbe essere questo:
iptables –A FORWARD –i eth2 –o eth0 –j out_to_lan (dovrebbe essere -i eth0 -o eth2 sempre se ho capito bene)
iptables –A lan_to_out –p tcp –-dport 53 –j ACCEPT (dovresti includere anche UDP.. mi sembra che un nslookup dovrebbe usare protocollo UDP)

iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.253 –j DNAT –to-destination 10.10.0.5:143
nn hai elencato una zona con questo range di ip nel tuo schema..

Skenks
12-10-2006, 17:25
ciao,
grazie per la risposta.
Ho sistemato i primi due errori che mi hai fatto notare (come puoi vedere adesso è corretto!)
Per la seconda segnalazione ho dovuto creare una nuova regola per la porta udp giusto?

Per la terza regola si c'è un errore perchè pensavo di usare il doppio indirizzamento ma poi ho cambiato.
quello che non ho capito è se utilizzare una regola di PREROUTING o meno?!

spero in una tua risposta.....grazie in anticipo.
p.s. oltre a queste regole c'è da aggiungere qualche altra regola?



non e' semplicissimo perche' in genere ci si dimentica sempre qualcosa..
Quello che mi risalta subito agli occhi potrebbe essere questo:
iptables –A FORWARD –i eth2 –o eth0 –j out_to_lan (dovrebbe essere -i eth0 -o eth2 sempre se ho capito bene)
iptables –A lan_to_out –p tcp –-dport 53 –j ACCEPT (dovresti includere anche UDP.. mi sembra che un nslookup dovrebbe usare protocollo UDP)

iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 –d 20.5.10.253 –j DNAT –to-destination 10.10.0.5:143
nn hai elencato una zona con questo range di ip nel tuo schema..

Skenks
13-10-2006, 18:07
qualche altro aiuto please?!

Psycotic
16-10-2006, 16:50
Il prerouting va usato se x esempio da internet vuoi che i tuoi servizi (web,ftp,dns) siano raggiungibili..

oppure se vuoi bloccare il traffico delle tue reti verso la rete dei servizi ma far rispondere cmq i servizi usando l'ip del gateway..(forse neanche io ho capito cosa ho scritto :D)
Cioe':
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 -d (indirizzo GW(che tu hai chiamato FW)) –dport 80 –j DNAT –to-destination 10.10.0.3:80
Con questa regola il gateway cambiera l'indirizzo di destinazione alle chiamate alla propria porta 80 con l'indirizzo del server WEB
E' un po' come la tua regola, anche se cmq dovresti mettere le porte seno' tutte le richieste tcp ad ogni porta verra' ridiretta alla porta del server WEB.

Cmq riguardando mi risalta altra roba all'occhio..
iptables –A FORWARD –i eth2 –o eth1 –j dmz_to_lan ( -i eth1 -o eth2)

# Regole per la LAN per ricevere pacchetti di risposta dalla DMZ
iptables –A dmz_to_lan –m state –-state ESTABILISHED, RELATED –d 10.10.10.0/24 –j ACCEPT

iptables –A dmz_to_lan –p tcp –-dport 80 –d 10.10.10.0/24 –j ACCEPT
(questa significa che dalla dmz si puo' accedere ad un web sulla LAN, nn ti dovrebbe servire perche' nn hai servizi sulla lan)

iptables –A dmz_to_lan –p tcp –m multiport –dports 20,21 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport 53 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport imap –d 10.10.10.0/24 –j ACCEPT
(Idem x queste altre)

Ma devi fare tutte le regole senza poter provare se funziona tutto? mi pare ardua.. io nn sono molto fresco di iptables, era meglio se c'era piu' gente che partecipava alla discussione.. Non vorrei magari farti sbagliare

Skenks
17-10-2006, 11:25
Psycotic grazie ancora per una risposta.
Si ho sistema un po' le regolucce e sto imparando un po' purtroppo è impossibile provare realmente come funziona il tutto....spero veramente che qualcuno possa aiutarmi un po' anche perchè ho un'altra domanda da fare: :D

se ho una determinata rete:



LAN ------------ [eth1]Firewall(con Proxy Squid)[eth0]------------Router




per poter permettere agli utenti della LAN di accedere ad internet tramite Proxy(che sta sempre sulla macchina che fa da firewall) autenticandosi, devo inserire solo la regola di PREROUTING:

iptables -t nat -A PREROUTING -p tcp -i eth1 -dport 80 -j DNAT -to-destination 192.168.151.20:8080

dove 192.168.151.20 è l'indirizzo della macchina che fa da firewall e proxy.
va bene così? devo mettere anche regola di INPUT? come devo scriverla?

Help me! :muro:




Il prerouting va usato se x esempio da internet vuoi che i tuoi servizi (web,ftp,dns) siano raggiungibili..

oppure se vuoi bloccare il traffico delle tue reti verso la rete dei servizi ma far rispondere cmq i servizi usando l'ip del gateway..(forse neanche io ho capito cosa ho scritto :D)
Cioe':
iptables –t nat –A PREROUTING –i eth2 –p tcp –s 10.10.10.0/24 -d (indirizzo GW(che tu hai chiamato FW)) –dport 80 –j DNAT –to-destination 10.10.0.3:80
Con questa regola il gateway cambiera l'indirizzo di destinazione alle chiamate alla propria porta 80 con l'indirizzo del server WEB
E' un po' come la tua regola, anche se cmq dovresti mettere le porte seno' tutte le richieste tcp ad ogni porta verra' ridiretta alla porta del server WEB.

Cmq riguardando mi risalta altra roba all'occhio..
iptables –A FORWARD –i eth2 –o eth1 –j dmz_to_lan ( -i eth1 -o eth2)

# Regole per la LAN per ricevere pacchetti di risposta dalla DMZ
iptables –A dmz_to_lan –m state –-state ESTABILISHED, RELATED –d 10.10.10.0/24 –j ACCEPT

iptables –A dmz_to_lan –p tcp –-dport 80 –d 10.10.10.0/24 –j ACCEPT
(questa significa che dalla dmz si puo' accedere ad un web sulla LAN, nn ti dovrebbe servire perche' nn hai servizi sulla lan)

iptables –A dmz_to_lan –p tcp –m multiport –dports 20,21 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport 53 –d 10.10.10.0/24 –j ACCEPT
iptables –A dmz_to_lan –p tcp –-dport imap –d 10.10.10.0/24 –j ACCEPT
(Idem x queste altre)

Ma devi fare tutte le regole senza poter provare se funziona tutto? mi pare ardua.. io nn sono molto fresco di iptables, era meglio se c'era piu' gente che partecipava alla discussione.. Non vorrei magari farti sbagliare

Psycotic
17-10-2006, 17:04
Sul proxy sono un bel po' ignorante a dir il vero.. :boh:

Provo a risponderti.. :gluglu:

Credo che se tu cambi l'indirizzo di destinazione in quel modo.. quando il pacchetto arriva al proxy si ferma perche' la sua destinazione e' il proxy e nn piu' il sito internet..
Infatti in ogni S.O. ci sono delle variabili di sistema come http_proxy dove va messo l'indirizzo del proxy.. che poi nessuno usa in genere qelle variabili perche' le applicazioni che usano protocolli http,ftp... hanno la propria configurazione dove poter mettere l'impostazioni proxy...
Cacchio quando bevo mi vien difficile esprimermi su ste cose..

Ma sai che ci vorrebbe? un bel tool di simulazione x iptables.. Chissa' se esiste..
O se qualcuno sa che esiste posti il link a caratteri cubitali.. Sarebbe molto interessante!!!