#!/bin/sh
#
###############################################################################
# NOM: iptable-conntrack-1.sh
#
# COMMENTAIRE : Exemple d'utilisation du suivi de connexion
# 
# 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/02                     Dernière modification le : 2003/07/06
###############################################################################

# Chargement des modules du suivi de connexion
modprobe ip_conntrack        ; # Module principal du suivi de connexion
modprobe ip_conntrack_ftp    ; # Module du suivi de connexion FTP
modprobe ip_conntrack_irc    ; # Module du suivi de connexion IRC

# Suppression de toutes les chaînes pré-définies de la table FILTER
iptables -t filter -F

# Suppression de toutes les chaînes utilisateur de la table FILTER
iptables -t filter -X

# Par defaut, toute les paquets sont détruits
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

# Autorise le port 6000 sur Phoenix (phoenix0 et phoenix1), afin de supporter
# le export display pour les besoins de la conférence
# En temps normal, ces lignes DOIVENT êtres supprimées!!!
iptables -t filter -A OUTPUT -p 6   --sport 6000 -j ACCEPT  ; # -p 6   <=> protocole X11
iptables -t filter -A OUTPUT -p tcp --sport 6000 -j ACCEPT  ; # -p tcp <=> protocole TCP
iptables -t filter -A INPUT  -p 6   --dport 6000 -j ACCEPT
iptables -t filter -A INPUT  -p tcp --dport 6000 -j ACCEPT

# Autorise l'interface loopback à dialoguer avec elle-même
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT  -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

# Autorise les connexions avec le réseau 192.168.0.0/24 connecté à l'interface eth0
iptables -t filter -A OUTPUT -o eth0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -t filter -A INPUT  -i eth0 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT

# Autorise les connexions avec internet uniquement si elles sont initialisées par
# les process locaux
iptables -t filter -A OUTPUT -o eth1 -s 10.0.0.1  -d 0.0.0.0/0 -p all -m state --state ! INVALID           -j ACCEPT
iptables -t filter -A INPUT  -i eth1 -s 0.0.0.0/0 -d 10.0.0.1  -p all -m state --state RELATED,ESTABLISHED -j ACCEPT
