Newsgroup: it.comp.sicurezza.unix
Titolo: Firewall - regole di sicurezza

Ciao a tutti,
ho provato ad eseguire uno script shell per impostare delle regole di
firewalling su linux Redhat 9. Ho avviato tutto, le porte sono aperte, ho
impostato inoltre le seguenti regole per l'accesso a SSH:
/sbin/iptables -A INPUT -i eth0 -p TCP --dport 22  -s $GW1 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p TCP --dport 22  -s $GW2 -j ACCEPT
dove $GW1 e $GW2 sono i due hosts fidati ai quali è permessa la
comunicazione.
Ho provato ad accedere via ssh da un altro computer, con indirizzo IP non
rientrante nei due sopra e... RIESCO AD ACCEDERE!!! Perché?
Vi ringrazio.

 /sbin/iptables -A INPUT -i eth0 -p TCP --dport 22  -s $GW2 -j ACCEPT
Naturalmente hai dato anche un deny all alla 22, si?



non so come sia configurato a default il tuo firewall, 
ma in genere dovrebbe bloccare tutto.
io, ad esempio do una regola del genere per permettere 
al remote host, di raggiungere una macchina risolta all'inteno
 del firewall.
 $IPTABLES -A INPUT -p tcp -s $remotehost -d $homehost --dport 22 -j ACCEPT
prova del 9:
flusha il tuo firewall script e prova a vedere cosa succede
senza iserire le nuove regole di accesso ssh.
ciao :)

 ha scritto nel messaggio
news:pan.2003.09.11....@despammed.com...

Emh.. no... ma, mi chiedo, host.deny e hosts.allow vanno sulla rh9?
Per ora sono completamente vuoti. Se devo negare l'accesso sulla 22 come
faccio?
Grazie.

 faccio?
e restino vuoti. se stai usando un fw continua con quello.
non so come lavori iptables ma suppongo che, come gli altri, la soluzione
"migliore" sia di specificare cosa puo' passare e poi bloccare tutto il
resto.



host.deny ecc. non centrano nulla con iptables :)
se non hai bisogno di filtrare ed altro puoi anche utilizzare 
solamente le direttive host.deny e host.allow.

 ha scritto nel messaggio
news:pan.2003.09.11....@despammed.com...

Bene. All'inizio dello script metto i seguenti comandi:
### FLUSHING CHAIN ###
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
### DEFAULT CHAIN ###
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
Poi metto quegli altri. In alternativa come dovrei fare?
Grazie!

 
Questo dice ben poco, 
infatti cosi' non fai altro che 
crearti le policies:
da man iptables:
-P, --policy
              Set the policy for the chain to the given target.  See the section TARGETS for the legal targets.   Only
              non-user-defined  chains  can  have policies, and neither built-in nor user-defined chains can be policy
              targets.
poi proverei a bloccare un po di roba:
ad es tutto quello che viene dall'esterno
iptables -A INPUT p tcp -j DROP .......ad esempio :)
....fondamentalmente 
prima ti crei le policies, come hai giustamente fatto, 
poi ti devi creare le chains per i vari protocolli con i relativi rules, 
poi configuri i rules delle varie chains che hai INPUT, FORWARD, OUTPUT
questa e' una spiegazione brutta e incompleta, lo so :)
su
http://www.netfilter.org/
trovi molta documentazione a riguardo e interessanti esempi.
Questa macchina e' un GW di rete?
Se si ci sono client che usano questo gw per accedere all'esterno?
da quello che hai scritto sembrerebbe che non devi filtrare, o redirigere o fare nat.
ma semplicemente bloccare gli accessi a questa macchina.
allora, secondo me non ti serve un firewall.
ti basta proteggere la macchina in questione, lasciando aperte solo le porte che ti servono, 
e permettendo gli accessi solo dagli host che vuoi tu per i servizi che vuoi tu. :)
se invece questa macchina fa da GW, allora il FW e' ok.
ciao, 
f.

 poi configuri i rules delle varie chains che hai INPUT, FORWARD, OUTPUT
Si, ma se lasci la policy a drop (come anche a me piace fare) nelle
catene metti solo quello che accetti; quindi in un'ambiente
default-deny non c'e' bisogno (in teoria e lasciando perdere le
prestazioni del firewall) di droppare con regole esplicite, ci pensa
la policy di default.
Probabilmente c'e' anche qualche altra regola che non ci ha mostrato,
se no mi viene l'unico dubbio che il firewall non sia in esecuzione.
-- 
Sono un servitore del Fuoco Segreto, e reggo la fiamma di Anor.
A nulla ti servira' il fuoco oscuro, fiamma di Udun.
Torna nell'Ombra! Non puoi passare.


mhhh....allora dopo aver lanciato lo script, 
da shell esegui:
iptables -L 
che cosa ti dice ?

 che cosa ti dice ?
----------------------------------------------------------------------------
--------------
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Lokkit-0-50-INPUT  all  --  anywhere             anywhere
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Lokkit-0-50-INPUT  all  --  anywhere             anywhere
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain RH-Lokkit-0-50-INPUT (2 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:http
flags:SYN,RST,ACK/SYN
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp
flags:SYN,RST,ACK/SYN
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ssh
flags:SYN,RST,ACK/SYN
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:smtp
flags:SYN,RST,ACK/SYN
ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:telnet
flags:SYN,RST,ACK/SYN
ACCEPT     udp  --  anywhere             anywhere           udp
spts:bootps:bootpc dpts:bootps:bootpc
ACCEPT     udp  --  anywhere             anywhere           udp
spts:bootps:bootpc dpts:bootps:bootpc
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
REJECT     tcp  --  anywhere             anywhere           tcp dpts:0:1023
flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere           tcp dpt:nfs
flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable
REJECT     udp  --  anywhere             anywhere           udp dpts:0:1023
reject-with icmp-port-unreachable
REJECT     udp  --  anywhere             anywhere           udp dpt:nfs
reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere           tcp
dpts:x11:6009 flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere           tcp dpt:xfs
flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable
----------------------------------------------------------------------------
-----------------------------------------------------------------

 set -x
Anche se fai set -x ma non lo lanci dalla linea di comando il debug e'
perso.
Lancia quindi lo script del firewall da linea di comando e controlla
che non ci siano errori prima di tutto.


 che non ci siano errori prima di tutto.
Non ce ne sono.
Ciao!



iptables -A INPUT -i eth0 -p tcp -s 0/0 --dport 22 -s $GW-m state --state NEW,ESTABLIS
HED -j ACCEPT

 Vi ringrazio.
Devi impostare la "default policy" per bloccare tutto
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Se no per default il firewall rimane aperto e le regole che tu aggiungi
vengono ignorate.
Comunque invece di fare uno script apposta in RH9 puoi inserire le tue
regole in /etc/sysconfig/iptables e chiamarle con
/etc/init.d/iptables <start|stop|restart>
Per creare il file con la sintassi giusta, una volta che hai abilitato le
regole manualmente (o con il tuo script) basta usare:
iptables-save > /etc/sysconfig/iptables
Massimo

 
Hai tutte le policy aperte (ACCEPT)! Praticamente non hai alcun firewall.
Vedi mio post in risposta al post originale per la soluzione.
Massimo

 Hai tutte le policy aperte (ACCEPT)! Praticamente non hai alcun firewall.
Ma come, per tutto il thread ha postato le policy a drop!?!


 iptables-save > /etc/sysconfig/iptables
Perfetto. Ti ringrazio. Ora il comando "iptables -L" mi restituisce le
policy giuste. Immagino che avendo salvato il tutto su file, all'avvio del
sistema mi ritrovo tutte le impostazioni salvate, giusto?
Ora farò alcune prove.

 sistema mi ritrovo tutte le impostazioni salvate, giusto?
No, all'avvio il sistema parte con le chain vuote e le policy di
default ad accept.  Se usi il metodo di iptables-save poi all'avvio
devi richiamare iptables-restore, se invece scrivi tutte le regole in
uno script basta che lanci lo script all'avvio, dopo aver ``tirato
su'' le interfacce di rete.


 come faccio?
Tanto per iniziare....
man hosts.allow
man hosts.deny
IMHO utilizzare il TCPWrapper in alcuni casi puo' essere una scelta 
intelligente.
Ciao

 man hosts.deny
Per la porta 22 è tempo perso, dato che (anche se in teoria è possibile
ma deprecato) la porta 22 è usata dal servizio ssh, che NON è gestito da
inetd...
Per bloccare la porta 22 agli utenti che non sono localhost, devi usare
il firewall. Con ipchains sarebbe una cosa di questo tipo:
ipchains -A input -p tcp --dport 22 -s !127.0.0.1 -j REJECT
-- 
Massimo Bacilieri AKA Crononauta 
ICQ:4005815

inetd...
Che guardacaso però usa libwrap per controllarne l'accesso...
-- 
ciao, | The Internet is full. Go away.  -- Joel Furr      | #156856496
Marco | (Ri)scoprire fidonet: 
http://bbs.bofh.it/
         | 
m...@jabber.linux.it

 è gestito da inetd...
Diamine!
Non si finisce mai di imparare...........:-)))
Dunque........., anche se sono "molto", ma dico molto ignorante in 
materia e la materia non e' "stregoneria" e a supporto di questo vi 
sono diversi libri e manuali....posso solo dirti che devi impegnarti 
decisamente di piu', studiare, applicarti, leggere, studiare, 
applicarti e leggere ancora. Puoi iniziare da qui...anche in lingua 
italiana...
http://www.europe.redhat.com/documentation/rhl9/rhl-cg-it-9/s1-services-tcp-wrappers.php3
Per tua conoscenza sappi che sono moltissimi i demoni che vengono 
compilati con la libwrap (quindi possono essere controllati con il 
TCPWrapper del buon Venema).
la sicurezza si faceva anche quando non c'erano i "firewall" :-) e ti 
diro' di piu'...se configuri bene il tuo sistema il "firewall" non 
serve a nulla. 
Plonk

 Che guardacaso però usa libwrap per controllarne l'accesso...
Ma non c'entra niente con la gestione degli accessi.
Se hai sshd in stand alone, ciò che puoi mettere in hosts.* relativo a
sshd viene bellamente ignorato.


 Plonk
Non ho capito chi plonki e perché?


 Non ho capito chi plonki e perché?
Onestamente neanche io, cmq...
-- 
Emanuele Balla  aka Skull -  Public Key #661E5CBF on 
www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)

sshd viene bellamente ignorato.
Ancora non hai capito. sshd usa libwrap e quindi hosts.*, punto.
Indipendentemente da come lo usi.


 qui (debian sarge) ssh è compilato con libwrap.
Approfitto per chiedere una cosa.  So che ssh solitamente (da quel che
ho  visto io sempre)  e' controllato  da hosts.allow  e deny  anche se
parte come  demone stand  alone.  Solo che  non ho capito  il discorso
delle libwrap, guarda qui:
[2258][root@damun:/]$ ldd `which sshd`
        libutil.so.1 => /lib/libutil.so.1 (0x44c5e000)
        libz.so.1 => /usr/lib/libz.so.1 (0x44c62000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x44c6f000)
        libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x44c84000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x44d81000)
        libc.so.6 => /lib/libc.so.6 (0x44dae000)
        libdl.so.2 => /lib/libdl.so.2 (0x44ee1000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x44c39000)
[2301][root@damun:/]$
Nulla riguardo alle libwrap (e'  una Slackware 9.0) eppure si comporta
esattamente come il tuo. :-/
TIA


esattamente come il tuo. :-/
Solo le distribuzioni migliori <g> hanno una versione dinamica di
libwrap.
