Newsgroup: it.comp.os.linux.sys
Titolo: aiuto firewall

Salve , allora il problema che ho è il seguente:
Ho una lan collegata ad internet per ora con una linea analogica (a giorni
con adsl ). Ora essendo una quindicina di macchine in rete per facilitare
alcuni servzi come messaggistica interna e posta , ho configurato su una
macchina linux rh 6.1 un name server locale (ip 192.168.1.2) , che mi
risolve gli indirizzi e che nel caso di indirizzi esterni si appoggia al
server dns del provider .
la rete privata ha ip 192.168.1.0
la macchian linux ha ip 192.168.1.2.
ora dovendo passare come già detto ad adsl sul server locale (192.168.1.2)
vorrei installare un firewall con il masq che sono già riuscito a far
funzionare .
A tal proposito ho creato uno script che mi automatizza all'avvio
l'esecuione del firewall .
Nello sciprt ho abilitato ip forward con il comando echo > 1 /proc/...
Ho impostato delle regole per la rete interna e in ingresso sul firewall .
Fra queste ho impostato:
#!/bin/bash
PRIVATENET=
192.168.1.0/24
PUBLIC=ppp0
PRIVATE=eth0
DNS1=195.31.192.54 (dell ISP)
#DNS1=127.0.0.1
DNS2=194.243.154.62 (dell'IPS )
ANY=
0.0.0.0/0
ALLONES=255.255.255.255
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ ${NETWORKING} = "no" ] && exit 0
case "$1" in
    start)
 action "Attivazione firewall: " /bin/true
 /sbin/ipchains -F input
 /sbin/ipchains -F output
 /sbin/ipchains -F forward
# Impedisce il ping in ingresso
 /sbin/ipchains -I input 1 -j DENY
# Imposta la politica di ingresso su deny
 /sbin/ipchains -P input  DENY
 /sbin/ipchains -P output  ACCEPT
 /sbin/ipchains -P forward  ACCEPT
# Attiva il forwarding dei pacchetti
 echo 1 > /proc/sys/net/ipv4/ip_forward
# Installazione dei moduli
 if ! ( /sbin/insmod  /bin/grep masq_ftp > /dev/null ); then
     /sbin/insmod ip_masq_ftp
 fi
 if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
     for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
      echo 1 > $f
     done
 else
     echo
     echo " Problemi nel settare la protezione IP SPOOLING"
     echo
 fi
# Proibisce il broadcast (chiamate circolari)
 /sbin/ipchains -A input -s 0.0.0.0 -j DENY
 /sbin/ipchains -A input -d 255.255.255.255 -j DENY
# Proibisce alcuni servizi senza log
 /sbin/ipchains -A input -p udp -d $ANY 137 -j DENY
 /sbin/ipchains -A input -p tcp -d $ANY 137 -j DENY
 /sbin/ipchains -A input -p udp -d $ANY 138 -j DENY
 /sbin/ipchains -A input -p tcp -d $ANY 138 -j DENY
 /sbin/ipchains -A input -p udp -d $ANY 67 -j DENY
 /sbin/ipchains -A input -p udp -d $ANY 68 -j DENY
 /sbin/ipchains -A input -s 
224.0.0.0/8
 -j DENY
# In queste righe si proibisce netbios , bootip e multicast
# Permette l'ingresso sull'interfaccia di loopbak
 /sbin/ipchains -A input -i lo -j ACCEPT
# Accetta i pacchetti dalla rete interna verso internet
 /sbin/ipchains -A input -i $PRIVATE -s $PRIVATENET -d $ANY -j ACCEPT
 /sbin/ipchains -A input -i $PRIVATE -d $ALLONES -j ACCEPT
# Permette ICMP
 /sbin/ipchains -A input -p icmp -j ACCEPT
# Permette TCP
        /sbin/ipchains -A input -p tcp ! -y -j ACCEPT
# Permette dns sul firewall
#    /sbin/ipchains -A input -p udp -s $DNS1 53 -d $ANY 1023: -j ACCEPT
#     /sbin/ipchains -A input -p udp -s $DNS2 53 -d $ANY 1023: -j ACCEPT
# Nel caso di un dns locale che c'e'
         /sbin/ipchains -A input -p udp -s $DNS1 domain -d $ANY domain -j
ACCEPT
        /sbin/ipchains -A input -p tcp -s $DNS1 domain -d $ANY domain -j
ACCEPT
#        /sbin/ipchains -A input -p udp -s $PRIVATENET domain -d $ANY
domain -j ACCEPT
# /sbin/ipchains -A input -p tcp -s $PRIVATENET domain -d $ANY domain -j
ACCEPT
# /sbin/ipchains -A input -p tcp -s $PRIVATENET domain -d $ANY domain -j
ACCEPT
# /sbin/ipchains -A input -p udp -s $DNS2 domain -d $ANY domain -j ACCEPT
#Permetti ssh
#   /sbin/ipchains -A input -p tcp -d $ANY 22 -j ACCEPT
# Permetti telnet non consigliabile
# /sbin/ipcahins -A input -d -p tcp $ANY telnet -j ACCEPT
# Permetti posta
#       /sbin/ipchains -A input -p tcp -d $ANY smtp -j ACCEPT
        /sbin/ipchains -A forward -p tcp -s $PRIVATENET -d $ANY smtp -j
ACCEPT
# Permetti posta POP3
#       /sbin/ipchains -A input -p tcp -d $ANY 110 -j ACCEPT
        /sbin/ipchains -A forward -p tcp -s $PRIVATENET -d $ANY 110 -j
ACCEPT
# Permetti auth per invio mail e ftp
 /sbin/ipchains -A input -p tcp -d $ANY auth -j ACCEPT
# Se ho un web server
#       /sbin/ipchains -A input -p tcp -d $ANY http -j ACCEPT
        /sbin/ipchains -A input -p tcp -s $PRIVATENET -d $ANY http -j ACCEPT
# Se voglio permettere ftp
       /sbin/ipchains -A input -p tcp -d $ANY ftp -j ACCEPT
# Attiva il maschermento IP
# /sbin/ipchains -A forward -s $PRIVATENET -d ! $PRIVATENET -j MASQ
 /sbin/ipchains -A forward -s $PRIVATENET -d $ANY -j MASQ
# Permette samba dalla lan locale
 /sbin/ipchains -A input -p tcp -s $PRIVATENET -d $PRIVATENET 137:139 -j
ACCEPT
        /sbin/ipchains -A input -p udp -s $PRIVATENET -d $PRIVATENET
137:139 -j ACCEPT
# Proibisce tutti gli altri servizi
 /sbin/ipchains -A input -l -j DENY
# Toglie il flag di protezione
        /sbin/ipchains -D input 1
        ;;
    stop)
 action "Sto fermando il firewall: " /bin/true
 echo 0 > /proc/sys/net/ipv4/ip_forward
 /sbin/ipchains -F input
 /sbin/ipchains -P input ACCEPT
 /sbin/ipchains -F forward
 /sbin/ipchains -F output
 echo
 ;;
    restart)
 action "Riavvio firewall:" /bin/true
 $0 stop
 $1 start
 echo
 ;;
    status)
 /sbin/ipchains -L
 ;;
    *)
 echo " USO: $0 (start|stop|restart|status) "
        exit 1
esac
Il problema che io ho è che quando cerco di collegarmi ad un indirizzo
esterno da un'altra macchian
esso mi dice servizio non disponibile quindi da ciò penso che sto sbagliando
le regole per permettere il dns .
NB ho messo la direttiva forwards con ip dell'ips nel file named.boot  .
Dove sbaglio ?
Grazie per l'aiuto
Giuseppe

 /sbin/ipchains -I input 1 -j DENY
...
Cosi' blocchi tutto il traffico in ingresso.
ipchains -A input -p 1 -s 0/0 -d tuoip -j DENY
Codardamente mi rifiuto di leggere tutto il resto del papiro :-)
--
        Giuseppe "Cowo" Corbelli  -->>  Riding on Linux-2.2.18
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
The primary purpose of the DATA statement is to give names to constants;
instead of referring to pi as 3.141592653589793 at every appearance,
the variable PI can be given that value with a DATA statement and
used instead of the longer form of the constant.  This also
simplifies modifying the program, should the value of pi change.
                        -- FORTRAN manual for Xerox computers