Newsgroup: it.comp.os.linux.sys
Titolo: Regole IPTABLES su webserver

# cat /etc/sysconfig/iptables
----------------------------------------------------------------------------
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m unclean -j DROP
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport 23
-j ACCEPT
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport 80
-j ACCEPT
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport
137 -j ACCEPT
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport
138 -j ACCEPT
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport
139 -j ACCEPT
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth1 -j REJECT
-A INPUT -s 0/0 -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -d 
172.16.16.0/255.255.240.0
 -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth1 -d 0/0 -m state --state RELATED,ESTABLISHED -j
ACCEPT
COMMIT
----------------------------------------------------------------------------
I problemi che riscontro sono sostanzialmente due:
 - una sessione di Telnet ci mette oltre 20 secondi ad aprirsi (mentre
senza firewall è questione di un attimo)
 - samba (impostato con "security=server", e che autentica gli utenti
collegandosi ad un server Windows 2000) non mi fa più accedere alle
condivisioni
Il collegamento alle pagine web, invece, funziona senza problemi (per
lo meno in locale, visto che non ho ancora messo il server su
Internet).
Dove sbaglio?
	Daniele

Penso di aver risolto entrambi i problemi, aggiungendo un paio di
regole (che spero non siano troppo permissvie).
Per il primo problema - quello della lentezza del telnet - ho
aggiunto:
-A INPUT -s 
172.16.16.0/255.255.240.0
 -m state --state
RELATED,ESTABLISHED -j ACCEPT
Per il secondo (mancata risposta da samba) ho aperto anche la porta
445:
-A INPUT -s 
172.16.16.0/255.255.240.0
 -i eth0 -p tcp -m tcp --dport
445 -j ACCEPT
Ora dalla LAN funziona tutto.
Secondo voi posso considerarmi sufficientemente protetto anche da
eventuali attacchi da Internet?
	Daniele


 e, ovviamente, con un browser.
Piccolo suggerimento, in generale: evita telnet e sostituiscilo con ssh, che
puoi abilitare tranquillamente anche sull'interfaccia esterna, così in caso
di necessità puoi amministrare anche da casa a patto di farla abilitare sul
firewall.
Inoltre abilita ICMP, magari non tutto ma solo quello che è necessario.
Poi io preferisco lasciare la policy ad ACCEPT, prima o poi ti scappa un
        iptables -F
che cancella tutte le regole ma *non* cambia la policy di default, con il
risultato che se questa è DROP o REJECT tutto viene rifiutato. Se hai il
server sotto mano si risolve andando in console, che è comunque una
seccatura, ma se ce l'hai in housing da qualche parte ti tocca telefonare
per richiedere un intervento da parte loro...
Io farei così, minimizzando il numero di regole:
-A INPUT -p tcp --dport ssh -j ACCEPT
-A INPUT -p tcp --dport http -j ACCEPT
-A INPUT -p tcp --dport netbios-ns -i eth0 -j ACCEPT
-A INPUT -p tcp --dport netbios-dgm -i eth0 -j ACCEPT
-A INPUT -p tcp --dport netbios-ssn -i eth0 -j ACCEPT
-A INPUT -p tcp --dport microsoft-ds -i eth0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT
-- 
Ciao da Villo    -    GPG public key available
                      Ferrara LUG 
http://ferrara.linux.it
                      Remove "+settanta" for email replies
Protect your Freedom: 
http://www.againsttcpa.com/index.shtml

 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Sposterei questa regola in testa; aggiungerei un reject/drop per le
invalid. in questo modo le seguenti sono solo matchate per connessioni
in stato NEW. Diversamente, matchano anche per pacchetti invalid e non
related/established: non si sa mai.
-- 
*    HappyCactus - Linux User #209744 - BOFH Certified Engineer    *
*                         
http://www.google.com
                    *
*                                                                  *
*                           ET IN ARCADIA EGO                      *

 senza firewall è questione di un attimo)
Probabilmente e' un problema di risoluzione dei nomi.
Come ti sei accorto, ti mancava di accettare in INPUT
il traffico ESTABLISHED. Il dns e' in LAN, immagino.
Considera che con la tua configurazione non accedi ad
internet dall'host che ospita il server web.
Considera pure che la tua configurazione non e' molto
sicura, in quanto dal server web, se violato, sarebbe
immediato accedere alla LAN.
Fabio

 -A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT
Se gia' accetti traffico ESTABLISHED e RELATED queste 
direttive sono tutte superflue.
Fabio

 e, ovviamente, con un browser.
il firewall non ti serve. Per samba usa il parametro bind interface, per 
telnet (sicuro di non voler usare ssh?) basta che configuri i tcpwrapper.
Basta che dici ai servizi non pubblici di ascoltare solo 
sull'interfaccia privata.

 direttive sono tutte superflue.
Hai ragione.


 -p tcp -m tcp sono ridondanti (basta il primo).
iptables-save le salva in questo modo.


 Dipende, sulle mie lan sono tutte tcp.
Perdonami, ma dubito fortemente :-)
Fabio

 iptables-save le salva in questo modo.
Si. Cio' non toglie che...
Fabio

immediato accedere alla LAN.
Già, l'alternativa sarebbe quella di mettere un server su una DMZ (o,
in ogni caso, fisicamente staccato dalla LAN), e lavorare su un mirror
server interno (che periodicamente aggiorna il server su Internet).
Immagino comunque che questo rischio sia inevitabile in una
configurazione come la mia, giusto?
	Daniele