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: