====== Configuration Initiale ====== Quelques informations sur la configuration initiale. ===== srv / firewall ===== Les serveurs srv1 et srv2 ont un firewall minimal permettant de faire du SNAT (masquerading en fait) vers "le net". La configuration sur les deux machines est similaire. Une interface réseau pour le NET (eth0), et une interface réseau pour le LAN (eth1). Voici le script de firewall complet présent sur les deux machines dans /etc/init.d/firewall. #! /bin/sh ### BEGIN INIT INFO # Provides: firewall # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: # Short-Description: Load firewall at boot # Description: Load the firewall rules at boot (or later manualy) ### END INIT INFO set -e iptables() { die "Hey, you should not use iptables, but \$iptables" } iptables=/sbin/iptables ip6tables=/sbin/ip6tables iptablessave=/sbin/iptables-save ip6tablessave=/sbin/ip6tables-save usage() { cat <&2 $@ EOF exit 1 } checkbin() { for bin ; do file=$(eval "echo \"\$$bin\"") [ -x "${file}" ] || die "$file missing" done } checkbin iptables iptablessave checkbin ip6tables ip6tablessave case "$1" in start) echo "Loading firewall" ;; # only real reason to be here stop) die "A firewall doesn't just stop" ;; reload) echo "Ok, we will pretend to reload ourself..." ;; *) usage ;; esac # if we want to run the same command in both, ip4 and ip6 both() { case "$1" in iptables) shift $iptables "$@" $ip6tables "$@" ;; *) "$@" ( iptables="${ip6tables}" iptablessave="${ip6tablessave}" "$@" ) ;; esac } # set policies to ACCEPT, but filters to DROP policies() { table= chain= $iptablessave | grep '^[:*]' | while read a b c ; do case "$a" in # table change "*"*) table="${a#\*}" ;; # chain policy ":"*) [ "$b" = - ] && continue ; # user-chain [ "$table" = filter ] && continue ; # filter is always set to drop # make sure built-in non-filter chains have an accept policy chain="${a#:}" $iptables -t "$table" -P "$chain" ACCEPT ; ;; # rules, nothing to do *) : ;; esac done for chain in INPUT OUTPUT FORWARD ; do $iptables -t filter -P "$chain" DROP done } flush() { $iptablessave | grep '^*' | while read table unused ; do table="${table#\*}" $iptables -t "$table" -F $iptables -t "$table" -X done } both policies both flush load() { # let us talk to ourself via loopback both iptables -t filter -A OUTPUT -o lo -j ACCEPT both iptables -t filter -A INPUT -i lo -j ACCEPT # let established/related be for chain in INPUT OUTPUT FORWARD ; do both iptables -A "$chain" -m state --state ESTABLISHED,RELATED -j ACCEPT done load_local echo "Firewall loaded" } load_local() { : ######################################################################## # local rules # eth0 = net, we should masquerade what gets out $iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # very low level security - we don't care yet # accept everything $iptables -P INPUT ACCEPT $iptables -P OUTPUT ACCEPT $iptables -P FORWARD ACCEPT } load Utilisant le mode de dépendance pour les scripts d'init, il m'a suffit de lancer la commande suivante pour qu'il créé le lien qui va bien : update-rc.d firewall start 42 Il ajoute le runlevel, et réajuste automatiquement le numéro de démarrage.