Newsgroup: it.comp.os.linux.iniziare
Titolo: Problemissimo con IPTABLES aziendale

Ciao a tutti, purtroppo non sono un grande esperto di Linux e vi chiedo
un piccolo aiuto per risolvere un problema con il firewall aziendale.
Quando attivo il firewall, non si riescono più ad inviare e-mail
all'esterno. Il mailserver (IMAP) con Fedora Linux ha un IP pubblico e
non è nella LAN.
Ecco le regole che uso in /etc/sysconfig/iptables (la porta 25 mi
sembra aperta!!!):
:INPUT ACCEPT [0:0]
-A INPUT -s [mailserver] -d [dns1address] -p udp -m udp --dport 53 -j
ACCEPT
-A INPUT -s [dns1address] -d [mailserver] -p udp -m udp --sport 53
--dport 1024:65535 -j ACCEPT
-A INPUT -s [mailserver] -d [dns2address] -p udp -m udp --dport 53 -j
ACCEPT
-A INPUT -s [dns2address] -d [mailserver] -p udp -m udp --sport 53
--dport 1024:65535 -j ACCEPT
-A INPUT -d [mailserver] -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s [LAN public IP] -d [mailserver] -p tcp -m tcp --dport 21 -j
ACCEPT
-A INPUT -s [LAN public IP] -d [mailserver] -p tcp -m tcp --dport 22 -j
ACCEPT
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -p udp -j ACCEPT
-A INPUT -d [mailserver] -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -d [mailserver] -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -d [mailserver] -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -d [mailserver] -p tcp -m tcp --dport 25 --syn -j ACCEPT
-A INPUT -s [LAN public IP] -d [mailserver] -p tcp -m tcp --dport 5900
-j ACCEPT
-A INPUT -s [LAN public IP] -d [mailserver] -p tcp -m tcp --dport
1024:65535 -j ACCEPT
-A INPUT -s [mailserver] -p tcp -j ACCEPT
-A INPUT -p tcp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
Qualcuno può dirmi dove sbaglio? Grazie!!! ;-)

 non è nella LAN.
Facci capire.
La configurazione di iptables che hai postato e` quella del mailserver o e`
di una linuxbox tra la lan e il mailserver ?
Posta l'output di iptables -L, che e` preferibile. Da quello che hai mandato
sembra tutto aperto. Non vedo nessun drop.

 sembra tutto aperto. Non vedo nessun drop.
La configurazione di iptables è quella del mailserver, per il "drop"
ho usato le due regole con il "REJECT" in fondo alla lista.
Ecco il risultato dell'Iptables -L:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  [mailserver]        [dns1address] udp dpt:domain
ACCEPT     udp  --  [dns1address]  [mailserver]       udp spt:domain
dpts:1024:65535
ACCEPT     udp  --  [mailserver]        [dns2address] udp dpt:domain
ACCEPT     udp  --  [dns2address]  [mailserver]       udp spt:domain
dpts:1024:65535
ACCEPT     tcp  --  anywhere             [mailserver]       tcp
dpt:http
ACCEPT     tcp  --  [LAN public IP]  [mailserver]       tcp dpt:ftp
ACCEPT     tcp  --  [LAN public IP]  [mailserver]       tcp dpt:ssh
ACCEPT     tcp  --  localhost            localhost
ACCEPT     udp  --  localhost            localhost
ACCEPT     tcp  --  anywhere             [mailserver]       tcp
dpt:pop3
ACCEPT     tcp  --  anywhere             [mailserver]       tcp
dpt:imap
ACCEPT     tcp  --  anywhere             [mailserver]       tcp
dpt:smtp
ACCEPT     tcp  --  anywhere             [mailserver]       tcp
dpt:smtp flags:FIN,SYN,RST,ACK/SYN
ACCEPT     tcp  --  [LAN public IP]  [mailserver]       tcp dpt:5900
ACCEPT     tcp  --  [LAN public IP]  [mailserver]       tcp
dpts:1024:65535
ACCEPT     tcp  --  [mailserver]        anywhere
REJECT     tcp  --  anywhere             anywhere
reject-with icmp-port-unreachable
REJECT     udp  --  anywhere             anywhere
reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Grazie! ;-)

 ho usato le due regole con il "REJECT" in fondo alla lista.
Prova ad aggiungere questo.
$IPTABLES -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Cmq io farei uno script diverso.
Specificando esattamente le interfacce di rete (immagino siano due), e
iniziando con un bel DROP di default sulle tre catene. Poi apri solo quello
che effettivamente serve.
Eppoi aggiungendo qualcosa di simile, in modo da loggare cosa accade e
prendere provvedimenti. 
echo -n "Create logndrop chain ... "
$IPTABLES -N LOGNDROP
$IPTABLES -A LOGNDROP -p tcp  -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-prefix '[Firewall] Denied tcp: '
$IPTABLES -A LOGNDROP -p udp  -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-prefix '[Firewall] Denied udp: '
$IPTABLES -A LOGNDROP -p icmp -m limit --limit 3/minute --limit-burst 3 -j
LOG --log-prefix '[Firewall] Denied icmp: '
$IPTABLES -A LOGNDROP -j DROP
echo "done"
Ovviamente i pacchetti da eliminare vanno mandati alla catena LOGNDROP.

 $IPTABLES -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Ho provato ad aggiungere la regola che mi hai detto..... e sembra
funzionare! Grazie!
Il problema è che non ho trovato da nessuna parte istruzioni che
dicevano di inserire questa linea.... anche perché con il vecchio
ipchains non ce n'era bisogno, funzionava tutto perfettamente (in
realtà c'era un --syn ma con iptables non funzionava lo stesso).
Ho letto la documentazione di iptables ma non è che ho capito molto
come funziona questa regola. Praticamente usa il modulo state (-m
state) e poi accetta i pacchetti che transitano a connessione avvenuta
(ESTABLISHED) e quelli che iniziano una nuova connessione ma sono
associati ad una connessione già esistente (RELATED).
Ma come potevo immaginarlo? Di pagine con questa regola ne ho trovata 1
sola con Google! Non capisco perché non ne parla nessuno, neanche
negli esempi di configurazione specifici dei mailserver... tu dove
l'hai pescata??? ;-)
Ora farò altri test per vedere se è tutto ok.... grazie di tutto e
ciao!

 funzionare! Grazie!
[cut]
Di nulla. Buon lavoro. ;-)