On Tuesday 30 March 1999, at 11 h 5, the keyboard of Christian Perrier 
<[EMAIL PROTECTED]> wrote:

> Il est � mon sens tr�s judicieux, quand on met sa machine sur Cyberc�ble
> (surtout si c'est 24/24), de d�sactiver tous les demons....puis les
> r�activer un par un. Cela en utilisant �galement les filtres IP et toute
> cette sorte de choses (� propos desquelles je dois avouer mon ignorance
> incomp�tente).

Attention au passage en noyau 2.2 : le code du coupe-feu a compl�tement chang� 
et, malheureusement, l'interface utilisateur aussi. Fini, ipfwadm, maintenant 
on fait tout avec ipchains qui n'a pas du tout les m�mes options.

Je joins mon fichier de d�marrage, qui a les deux, comme POINT DE D�PART 
(recopier une liste d'ACL sans comprendre serait vraiment b�te). Il fonctionne 
sur la base de "on interdit tout d'abord, puis on autorise un par un".

Autrement, il faut suivre le conseil de Christian. Un coup de 'netstat --all 
--inet' vous donnera une bonne id�e de tous les d�mons qui vous restent.


#!/bin/sh

# Filtres IP pour MA MACHINE
# NE L'UTILISEZ PAS SANS COMPRENDRE !!!

# Variables utiles

LOCALHOST=127.0.0.0/8
MOI=`hostname -i`
ANY=0.0.0.0/0
NETCAST=x.y.z.255/32
BROADCAST=255.255.255.255/32
LOCAL=10.1.1.1/16

X11=6000

filteripchainsprotect () {

    # Par d�faut, on bloque tout
    ipchains -P input REJECT
    ipchains -F input
    ipchains -Z input

    # Ce qui vient vraiment de localhost (par l'interface lo) est autoris�.
    ipchains -A input -s $LOCALHOST -i lo -j ACCEPT
    
    # Ce qui vient de l'ext�rieur et a mon adresse ou bien une adresse locale
    # est forc�ment un faux
    ipchains -A input -l -s $LOCALHOST -i eth0 -j DENY
    ipchains -A input -l -s $MOI -i eth0 -j DENY

    # De moi � moi, �a va
    ipchains -A input -s $MOI -d $MOI -i lo -j ACCEPT
    
    # Accepter les r�ponses DNS
    ipchains -A input -p TCP -d $MOI -s $ANY domain -j ACCEPT
    ipchains -A input -p UDP -d $MOI -s $ANY domain -j ACCEPT
    
    # Accepter NTP
    ipchains -A input -p TCP -d $MOI -s $ANY ntp -j ACCEPT
    ipchains -A input -p UDP -d $MOI -s $ANY ntp -j ACCEPT
    ipchains -A input -p UDP -d $NETCAST -s $ANY ntp -j ACCEPT

    # Accepter ICP
    ipchains -A input -p UDP -d $MOI -s $ANY icp -j ACCEPT

    # Accepter les r�ponses ICMP
    ipchains -A input -p ICMP -d $MOI -s $ANY -j ACCEPT
    
    # Accepter les r�ponses TCP
    # On part de 1000 et pas 1024 � cause de SSH
    ipchains -A input -p TCP -d $MOI 1000:36000 -s $ANY ! -y -j ACCEPT
    # Cas particulier lpr, qui semble causer sous 1024
    ipchains -A input -p TCP -d $MOI -s $ANY printer ! -y -j ACCEPT
    # RSH. Curieux et pas bien expliqu�.
    ipchains -A input -p TCP -d $MOI 980:1024 -s $LOCAL 980:1024  -j ACCEPT

    # Accepter X (SSH n'en a pas besoin, ce n'est que pour les machines 
    # RSH)
    ipchains -A input -p TCP -d $MOI $X11 -s $LOCAL -j ACCEPT

    # Accepter HTTP
    ipchains -A input -p TCP -d $MOI http -s $LOCAL -j ACCEPT

    # Accepter les r�ponses FTP
    ipchains -A input -p TCP -d $MOI -s $ANY ftp-data -j ACCEPT 
    
    # Accepter les connexions SSH entrantes
    ipchains -A input -p TCP -d $MOI ssh -s $ANY -j ACCEPT
    
    # Ident entrantes, pour calmer sendmail
    ipchains -A input -p TCP -d $MOI ident -s $ANY -j ACCEPT
    
    # Accepter les connexions FTP entrantes depuis le r�seau local
    ipchains -A input -p TCP -d $MOI ftp -s $LOCAL -j ACCEPT
    ipchains -A input -p TCP -d $MOI ftp-data -s $LOCAL -j ACCEPT

    # Bloquer les diffusions mais sans loguer
    ipchains -A input -d $NETCAST -j DENY
    # bootp
    ipchains -A input -p UDP -d $BROADCAST bootps -j DENY
    ipchains -A input -p UDP -d $BROADCAST bootpc -j DENY
    # Quelqu'un sait ce qu'est 4296 ?
    ipchains -A input -p UDP -d $BROADCAST 4296 -j DENY
    # Et pourquoi certains diffusent en ICMP ?
    ipchains -A input -p ICMP -d $BROADCAST  -j DENY

    # Bloquer le reste et le loguer
    ipchains -A input -l -j REJECT

    }

filteripfwadmprotect () {

    echo ""
    echo "***********"
    echo "WARNING: the list of filters for kernels <= 2.0 is"
    echo "no longer up to date."
    # Par d�faut, on bloque tout
    ipfwadm -I -p reject
    ipfwadm -I -f
    ipfwadm -I -z
    
    # Ce qui vient vraiment de localhost (par l'interface lo) est autoris�.
    ipfwadm -I -a accept -S $LOCALHOST -W lo
    
    # Ce qui vient de l'ext�rieur et a mon adresse ou bien une adresse locale
    # est forc�ment un faux
    ipfwadm -I -o -a deny -S $LOCALHOST -W eth0 
    ipfwadm -I -o -a deny -S $MOI -W eth0
    
    # De moi � moi, �a va
    ipfwadm -I -a accept -S $MOI -D $MOI -W lo
    
    # Accepter les r�ponses DNS
    ipfwadm -I -a accept -P tcp -D $MOI -S $ANY domain
    ipfwadm -I -a accept -P udp -D $MOI -S $ANY domain
    
    # Accepter NTP
    ipfwadm -I -a accept -P tcp -D $MOI -S $ANY ntp
    ipfwadm -I -a accept -P udp -D $MOI -S $ANY ntp
    ipfwadm -I -a accept -P udp -D $NETCAST -S $ANY ntp

    # Accepter ICP
    ipfwadm -I -a accept -P udp -D $MOI -S $ANY icp

    # Accepter les r�ponses ICMP
    ipfwadm -I -a accept -P icmp -D $MOI -S $ANY
    
    # Accepter les r�ponses TCP
    # On part de 1000 et pas 1024 � cause de SSH
    ipfwadm -I -a accept -P tcp -k -D $MOI 1000:36000 -S $ANY 
    # Cas particulier lpr, qui semble causer sous 1024
    ipfwadm -I -a accept -P tcp -k -D $MOI -S $ANY printer
    # RSH. Curieux et pas bien expliqu�.
    ipfwadm -I -a accept -P tcp -D $MOI 980:1024 -S $LOCAL 980:1024

    # Accepter X (SSH n'en a pas besoin, ce n'est que pour les machines 
    # RSH)
    ipfwadm -I -a accept -P tcp -D $MOI $X11 -S $LOCAL

    # Accepter les r�ponses FTP
    ipfwadm -I -a accept -P tcp -D $MOI -S $ANY ftp-data    
    
    # Accepter les connexions SSH entrantes
    ipfwadm -I -a accept -P tcp -D $MOI ssh -S $ANY
    
    # Ident entrantes, pour calmer sendmail
    ipfwadm -I -a accept -P tcp -D $MOI ident -S $ANY
    
    # Accepter les connexions FTP entrantes depuis le r�seau local
    ipfwadm -I -a accept -P tcp -D $MOI ftp -S $LOCAL
    ipfwadm -I -a accept -P tcp -D $MOI ftp-data -S $LOCAL

    # Bloquer les diffusions mais sans loguer
    ipfwadm -I -a deny  -D $NETCAST
    # bootp
    ipfwadm -I -a deny -P udp -D $BROADCAST bootps
    ipfwadm -I -a deny -P udp -D $BROADCAST bootpc
    # Quelqu'un sait ce qu'est 4296 ?
    ipfwadm -I -a deny -P udp -D $BROADCAST 4296
    # Et pourquoi certains diffusent en ICMP ?
    ipfwadm -I -a deny -P icmp -D $BROADCAST 

    # Bloquer le reste et le loguer
    ipfwadm -I -o -a deny 
    
}

    


case "$1" in
        start)
            echo -n "Filtering IP..."
            if [ -e /proc/net/ip_input ]; then
                filteripfwadmprotect
            elif [ -e /proc/net/ip_fwchains ]; then
                filteripchainsprotect
            fi
            echo ""
            ;;
        stop)
            ;;
    *)
            echo "Usage: /etc/init.d/filters {start|stop}"
            exit 1
        ;;
esac




Répondre à