[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Cybercable, SN3200, et dhcpcd



On Tuesday 30 March 1999, at 11 h 5, the keyboard of Christian Perrier 
<perrier@onera.fr> 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





Reply to: