#!/bin/bash #Un simple script permettant de spécifier des règles de filtrage #Il doit bien sûr être adapté aux besoins spécifiques. #En le lançant avec le paramètre stop, les règles sont supprimées. #Sans paramètre les règles sont crées. HIGH_PORTS="1024:65535" FTP_PORTS="20:21" SSH_PORTS=80 POP_IN_PORT=8080 POP_OUT_PORT=110 POP_OUT_IP=62.39.122.15 SMTP_IN_PORT=8181 SMTP_OUT_PORT=25 SMTP_OUT_IP=62.39.122.19 HTTP_PORTS=119 export PATH="/bin:/sbin:/usr/sbin" #Modules necessaires modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp #Vide les regles iptables -t filter -F iptables -t filter -X iptables -t nat -F iptables -t nat -X if [ "$1" = "stop" ] then echo "Firewall stopped" exit fi echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses for interface in /proc/sys/net/ipv4/conf/*/rp_filter do echo "1" > ${interface} done echo "1" > /proc/sys/net/ipv4/conf/all/log_martians #NAT echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE #Autorise les connexions de l'interieur iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Chaine pour le blacklistage d'IP iptables -N blacklist #Cible pour le blacklistage iptables -N bllogdeny iptables -t filter -A bllogdeny -j LOG --log-prefix "blacklisted: " iptables -t filter -A bllogdeny -j DROP #Tout faire passer ce qui entre par cette chaine iptables -t filter -A INPUT -j blacklist #autorise la connexion FTP iptables -t filter -A INPUT -p tcp --destination-port $FTP_PORTS -j ACCEPT #FTP passif iptables -t filter -A OUTPUT -p tcp --source-port $FTP_PORTS -j ACCEPT #FTP actif iptables -A INPUT -i ppp0 -p tcp --sport $HIGH_PORTS --dport $HIGH_PORTS -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o ppp0 -p tcp --sport $HIGH_PORTS --dport $HIGH_PORTS -m state --state ESTABLISHED,RELATED -j ACCEPT #Autorise SSH iptables -t filter -A INPUT -p tcp --destination-port $SSH_PORTS -j ACCEPT #Autorise HTTPD iptables -t filter -A INPUT -p tcp --destination-port $HTTP_PORTS -j ACCEPT #interdire et loger tout le reste iptables -N logdeny iptables -t filter -A logdeny -j LOG --log-prefix "iptables: " iptables -t filter -A logdeny -j DROP #autoriser tout ce qui vient de l'interface de boucle locale iptables -t filter -A INPUT -i lo -j ACCEPT #autoriser tout ce qui vient de l'interface vmware iptables -t filter -A INPUT -i vmnet1 -j ACCEPT #interdire le reste iptables -t filter -A INPUT -m state --state NEW,INVALID -j logdeny echo "Firewall started"