Le Thu, 01 Feb 2007 19:53:29 +0100 franck <[EMAIL PROTECTED]> a écrit:
> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > [EMAIL PROTECTED] wrote: > > Bonjours, > > > > voilà, j'aimerai savoir si une personne avait fait un script > > iptables pas mal? (parfait même) > > qui bloque ce qu'il faut bloqué (SYN FLOOD, SCAN NULL....) > > un peut comme iplog (qui enregistre les types d'attaque connues) > > mais sans iplog... > > > > je vous remerci d'avance > > > > > > Bonsoir, > > tu peux jeter un coup d'oeil sur : > > http://smhteam.info/upload_wiki/firewall.tar.gz > > tu y trouveras peut etre ton bonheur. Je l'ai mis au point avec > l'aide de la liste. Il ne correspondra pas forcement a tes besoins, > mais tu peux surement reprendre des idees. J'utilise le script en pièce jointe. Si vous pouviez donner votre avis dessus, ça m'intéresse... Merci. Gaëtan
#!/bin/sh -norc ############################################################################### # NOM: iptable-final-1.sh # # COMMENTAIRE : Synthèse d'utilisation de ce qui a été vu dans le document # (chapitre III-10-3) # # Ce script fait partie du document : # "Firewall et sécurité d'un réseau personnel sous Linux" # http://olivieraj.free.fr/fr/linux/information/firewall/ # # Auteur: Olivier ALLARD-JACQUIN (http://olivieraj.free.fr/) # Créé le : 2003/07/09 Dernière modification le : 2003/07/09 ############################################################################### # Adapté par Gaëtan PERRIER le 04/02/2004 ############################################################################### ############################################################################### # Variables globales ############################################################################### # Paramètrage du réseau local (LAN = Local Area Network) LAN_INTERFACE=lan ; # Interface réseau interne LAN_IP=192.168.10.1 ; # Adresse réseau interne LAN_NETWORK=192.168.10.0/24 ; # Réseau interne LAN_BROADCAST=192.168.10.255 ; # Adresse de broadcast interne # Paramètrage de la connexion Internet (WAN = Wild Area Network = Réseau Large) WAN_INTERFACE=adsl ; # Interface réseau externe (Internet) if [ -z "$@" ]; then WAN_IP=`/sbin/ifconfig $WAN_INTERFACE | grep "inet adr" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"` ; # Récupère l'adresse réseau externe (Internet) elif [ "$@" == "boot" ]; then WAN_IP=$new_ip_address fi WAN_NETWORK=0.0.0.0/0 #WAN_IP=10.0.0.1 ; # Adresse réseau externe (Internet) #WAN_NETWORK=10.0.0.0/8 ; # Réseau externe (Internet) # REMARQUE: # Si vous utiliser une connexion par modem (RTC/RNIS/ADSL) pour vous connecter à Internet # utilisez les variables ci-dessous. Elle permettrons à ce script de détecter # automatiquement votre adresse IP Internet #WAN_INTERFACE=ppp0 ; # Interface modem #WAN_IP=`/sbin/ifconfig | grep "P-t-P" | sed "s/^[: a-z]*\([.0-9]*\).*/\1/g"` ; # Récupère l'adresse réseau externe (Internet) #WAN_NETWORK=0.0.0.0/0 # Paramètrage de l'IP masquerading # NAT=0 <=> Le NAT N'est PAS autorisé # NAT=1 <=> Le NAT est autorisé NAT=1 # Paramètrage du port forwarding # PF=0 <=> Le port forwarding N'est PAS autorisé # PF=1 <=> Le port forwarding est autorisé PF=0 PF_PROTO=tcp ; # Type de frame PF_PORT=80 ; # Port ouvert sur le WAN PF_IP=192.168.0.2 ; # Adresse IP du serveur sur le LAN # Autoriser XMULE? # XMULE=0 <=> XMULE N'est PAS autorisé # XMULE=1 <=> XMULE est autorisé XMULE=0 XMULE_TCP_PORT=4662 XMULE_UDP_PORT=4672 # Autoriser Jabber? # JABBER=0 <=> JABBER N'est PAS autorisé # JABBER=1 <=> JABBER est autorisé JABBER=1 JABBER_TCP_PORT=5222 JABBER_SSL_TCP_PORT=5223 # Autoriser Msn? # MSN=0 <=> MSN N'est PAS autorisé # MSN=1 <=> MSN est autorisé MSN=1 MSN_TCP_PORT=1863 MSN_UDP_PORT=1863 MSN_TRANSFERT_TCP_PORT=6891:6900 MSN_TRANSFERT_UDP_PORT=6891:6900 MSN_VOIX_TCP_PORT=6901 MSN_VOIX_UDP_PORT=6901 # Autoriser MP9? # MP9=0 <=> MP9 N'est PAS autorisé # MP9=1 <=> MP9 est autorisé MP9=1 MP9_TCP_CMD_PORT=26180 MP9_TCP_SMB_PORTS=137:139,445 MP9_TCP_FLUX_PORT=26134 MP9_IP=172.16.255.253 # Paramétrage du LOG # LOG=LOG_IN <=> On log toutes les tentatives d'intrusions non autorisées # LOG=LOG_OUT <=> On log toutes les tentatives de sortie non autorisées # LOG=LOG_IN-OUT <=> On log toutes les tentatives d'entrées et sorties non autorisées # LOG=ULOG_IN <=> On log (avec ULOG) toutes les tentatives d'intrusions non autorisée # LOG=ULOG_OUT <=> On log (avec ULOG) toutes les tentatives de sorties non autorisées # LOG=ULOG_IN-OUT <=> On log (avec ULOG) toutes les tentatives d'entrées et sorties non autorisées # LOG=NONE <=> On ne log RIEN du tout LOG=ULOG_IN-OUT LOG_PREFIX=Netfilter ############################################################################### ############################################################################### # A PARTIR DE CE POINT, VOUS N'AVEZ PLUS BESOIN DE CONFIGURER CE SCRIPT!!! ############################################################################### ############################################################################### ############################################################################### # Initialisation de Netfilter ############################################################################### # Initialise la table Filter (par défaut tout les échanges sont refusés) echo "+ Initialisation de la table Filter" iptables -t filter -F iptables -t filter -X iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP # Initialise la table NAT (par défaut tout les échanges sont activés) echo "+ Initialisation de la table NAT" iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -P POSTROUTING ACCEPT # Initialise la table Mangle (par défaut tout les échanges sont activés) echo "+ Initialisation de la table Mangle" iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P POSTROUTING ACCEPT echo "+ Desactivation du NAT" echo 0 > /proc/sys/net/ipv4/ip_forward ############################################################################### # Règles du localhost # On NE fait PAS de restriction aux adresses IP source / destination 127.0.0.0 ############################################################################### echo "+ Règles du localhost" iptables -t filter -A OUTPUT -o lo -p all -j ACCEPT iptables -t filter -A INPUT -i lo -p all -j ACCEPT ############################################################################### # Règles de conexion au reseau local # Tout est autorisé ############################################################################### echo "+ Règles du réseau local ($LAN_INTERFACE - $LAN_IP - $LAN_NETWORK)" # Connexions firewall <-> réseau iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_NETWORK -p all -j ACCEPT iptables -t filter -A INPUT -i $LAN_INTERFACE -s $LAN_NETWORK -d $LAN_IP -p all -j ACCEPT # Connexions firewall <-> broadcast réseau iptables -t filter -A OUTPUT -o $LAN_INTERFACE -s $LAN_IP -d $LAN_BROADCAST -p all -j ACCEPT iptables -t filter -A INPUT -i $LAN_INTERFACE -s $LAN_BROADCAST -d $LAN_IP -p all -j ACCEPT ############################################################################### # Règles de connexion à Internet # Seul les connexions initialisés par la machine sont autorisées # C'est le suivit de connexion ############################################################################### # Chargement des modules pour le suivit de connexion modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc echo "+ Règles pour Internet ($WAN_INTERFACE - $WAN_IP - $WAN_NETWORK)" iptables -t filter -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d $WAN_NETWORK -p all -m state --state ! INVALID -j ACCEPT iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --tcp-flags ! ALL SYN -m state --state NEW,RELATED -j DROP #06/05/2006 iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p all -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t filter -A INPUT -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p tcp --destination-port auth -j REJECT --reject-with tcp-reset #06/05/2006 ############################################################################### # Règles pour le port forwarding # Pour que le port forwarding soit activé, il faut la variable "$PF" soit à "1" ############################################################################### if [ "$PF" == "1" ]; then # Chargement des modules pour le port forwarding modprobe iptable_nat echo "+ Autorise le port forwardong de $WAN_IP:$PF_PORT -> $PF_IP:$PF_PORT" iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p $PF_PROTO --dport $PF_PORT -m state --state ! INVALID -j ACCEPT iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p $PF_PROTO --sport $PF_PORT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s $WAN_NETWORK -d $WAN_IP -p $PF_PROTO --dport $PF_PORT -j DNAT --to-destination $PF_IP iptables -t nat -A POSTROUTING -o $LAN_INTERFACE -s $WAN_NETWORK -d $PF_IP -p $PF_PROTO --dport $PF_PORT -j SNAT --to-source $LAN_IP echo 1 > /proc/sys/net/ipv4/ip_forward else echo "+ Le port forwarding N'est PAS autorisé" if [ "$NAT" == "0" ]; then echo 0 > /proc/sys/net/ipv4/ip_forward fi fi ############################################################################### # Règles pour l'IP masquerading # Pour que le IP masquerading soit activé, il faut la variable "$NAT" soit à "1" ############################################################################### if [ "$NAT" == "1" ]; then # Chargement des modules pour l'IP masquerading modprobe iptable_nat modprobe ip_nat_ftp modprobe ip_nat_irc echo "+ Autorise l'IP masquerading de $LAN_NETWORK -> $WAN_NETWORK" iptables -t filter -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -m state --state ! INVALID -j ACCEPT iptables -t filter -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -s $WAN_NETWORK -d $LAN_NETWORK -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -s $LAN_NETWORK -d $WAN_NETWORK -p all -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward else echo "+ L'IP masquerading N'est PAS autorisé" echo 0 > /proc/sys/net/ipv4/ip_forward fi ############################################################################### # Règles pour XMULE ############################################################################### if [ "$XMULE" == "1" ]; then echo "+ Règles pour XMULE" iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $XMULE_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $XMULE_UDP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $XMULE_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p udp --sport $XMULE_UDP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT fi ############################################################################### # Règles pour JABBER ############################################################################### if [ "$JABBER" == "1" ]; then echo "+ Règles pour JABBER" iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $JABBER_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $JABBER_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $JABBER_SSL_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $JABBER_SSL_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT fi ############################################################################### # Règles pour MSN ############################################################################### if [ "$MSN" == "1" ]; then echo "+ Règles pour MSN" iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $MSN_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $MSN_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $MSN_UDP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p udp --sport $MSN_UDP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $MSN_TRANSFERT_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $MSN_TRANSFERT_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $MSN_TRANSFERT_UDP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p udp --sport $MSN_TRANSFERT_UDP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p tcp --dport $MSN_VOIX_TCP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p tcp --sport $MSN_VOIX_TCP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -d $WAN_IP -p udp --dport $MSN_VOIX_UDP_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -d $WAN_IP -p udp --sport $MSN_VOIX_UDP_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT fi ############################################################################### # Règles pour MP9 ############################################################################### if [ "$MP9" == "1" ]; then echo "+ Règles pour MP9" iptables -A INPUT -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p tcp --dport $MP9_TCP_CMD_PORT -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d $MP9_IP -p tcp --sport $MP9_TCP_CMD_PORT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p tcp -m multiport --dports $MP9_TCP_SMB_PORTS -m state --state ! INVALID -j ACCEPT iptables -A OUTPUT -o $WAN_INTERFACE -s $WAN_IP -d $MP9_IP -p tcp -m multiport --sports $MP9_TCP_SMB_PORTS -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i $WAN_INTERFACE -s $MP9_IP -d $WAN_IP -p icmp -m state --state ! INVALID -j ACCEPT fi ############################################################################### # Règles pour le log ############################################################################### echo "+ Definition des logs ($LOG)" case "$LOG" in LOG_IN) iptables -t filter -A INPUT -p all -j LOG --log-prefix $LOG_PREFIX ;; LOG_OUT) iptables -t filter -A OUTPUT -p all -j LOG --log-prefix $LOG_PREFIX ;; LOG_IN-OUT) iptables -t filter -A INPUT -p all -j LOG --log-prefix $LOG_PREFIX iptables -t filter -A OUTPUT -p all -j LOG --log-prefix $LOG_PREFIX ;; ULOG_IN) iptables -t filter -A INPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX ;; ULOG_OUT) iptables -t filter -A OUTPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX ;; ULOG_IN-OUT) iptables -t filter -A INPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX iptables -t filter -A OUTPUT -p all -j ULOG --ulog-prefix $LOG_PREFIX ;; esac echo "+ ------====== SCRIPT TERMINE! ======------" echo "+ Pour afficher votre configuration Netfilter, lancez:" echo " - 'iptables -L -n -v' pour la table 'Filter'" echo " - 'iptables -L -n -v -t nat' pour la table 'NAT'" echo " - 'iptables -L -n -v -t mangle' pour la table 'Mangle'"

