#!/bin/sh
# Version: 20060731
#
# Script pour une seule machine connectee a internet
# par defaut on authorise tout de l'interieur vers l'exterieur
# et rien de l'exterieur vers l'interieur
# (voir plus bas pour plus de détails)
# 
# Installation:
#	cp simple_firewall.sh /etc/init.d
#	chmod +x /etc/init.d/simple_firewall.sh
#	pour le lancement automatique au demarrage sous Debian: 
#		update-rc.d simple_firewall.sh defaults
# Note: pour enlever le lancement automatique
#	update-rc.d -f simple_firewall.sh remove
#
# Doc complete en FR:
#	http://olivieraj.free.fr/fr/linux/information/firewall/
#

# on ignore les pings sur l'adresse de reseau
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# désactive ExplicitCongestionNotification 
# (trop de routeurs les ignorent encore)
echo 0 > /proc/sys/net/ipv4/tcp_ecn

# Drop source routed packets
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

# Enable TCP SYN cookie protection from SYN floods
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Don't accept ICMP redirect messages
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# Don't send ICMP redirect messages
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# Enable source address spoofing protection
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Log packets with impossible source addresses
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Flush all chains
/sbin/iptables -F
# on efface les chaines que l'on a cree
/sbin/iptables -X

# Set default policies
/sbin/iptables --policy INPUT DROP
/sbin/iptables --policy OUTPUT DROP
/sbin/iptables --policy FORWARD DROP

# Allow unlimited traffic on the loopback interface
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# Previously initiated and accepted exchanges bypass rule checking
# Allow unlimited outbound traffic
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

###
# Sens exterieur (internet) vers interieur (votre machine)
#
# on limite le ping
/sbin/iptables -A INPUT -p icmp -m state \
        --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m state \
        --state NEW -m limit --limit 10/min -j ACCEPT
#
# on authorise le SSH
/sbin/iptables -A INPUT -p tcp --dport 22 \
       -m state --state NEW -j ACCEPT
#
# on authorise l'utilisation de Wengo
/sbin/iptables -A INPUT -p udp --dport 5060 \
       -m state --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 10600 \
       -m state --state NEW -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 10601 \
       -m state --state NEW -j ACCEPT
#
# MSN transfert de fichier
/sbin/iptables -A INPUT -p tcp --dport 6891:6900 \
       -m state --state NEW -j ACCEPT
# MSN video
/sbin/iptables -A INPUT -p tcp --dport 6901 \
       -m state --state NEW -j ACCEPT
#
# Freeplayer
# http://www.commentcamarche.net/forum/affich-2034713-freebox-freeplayer-vlc-media-player
# ping vers mafreebox.freebox.fr 
#freeplayer utilise le port tcp 8080 pour la liaison pc <=> freebox
#- Tu vas sur le site de free pour activer le routeur de la freebox
#- Eteindre puis rallumer la freebox pour qu'il charge les nouveaux paramètres
#- Redémarrer le pc puis aller sur un site quelconque puis fermer internet
#- Cliquer sur Démarrer puis sur Exécuter puis taper ipconfig /all (faire Entrée)
#- Une page va s'ouvrir et tu notes les paramètres (ip, masque, passerelle, dns)
#- Fermer cette page
#- Aller dans Démarrer puis Paramètres puis Connexions réseau et accès à distance
#- Faire un clic droit sur ta connexion puis sur Propriétés
#- Une page va s'ouvrir et tu double-cliques sur TCP/IP
#- Renseigner dedans les paramètres que tu as notés tout à l'heure en manuel
#- Sauvegarder les paramètres
#- Maintenant tu reviens sur la page d'activation du routeur de la freebox
#- Activer le freeplayer dans cette page puis indiquer l'ip de ton pc
#- En dessous tu as plusieurs lignes pour ouvrir des ports
#- Entrer 8080 en TCP sur une ligne et indiquer l'ip de ton pc
#- Sauvegarder tout
#- Redémarrer la freebox puis redémarrer le pc 
#
# QTorrent
#allow bittorent incomming client request
/sbin/iptables -A INPUT -p tcp --destination-port 6881:6999 -j ACCEPT
###

# les traces du systemes pour les paquets refuses
/sbin/iptables -N LOG_DROP
/sbin/iptables -A LOG_DROP -j LOG --log-prefix "[FW] "
/sbin/iptables -A LOG_DROP -j DROP

# Drop all other traffic
/sbin/iptables -A FORWARD -j LOG_DROP
/sbin/iptables -A INPUT -j LOG_DROP

