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