Re: [HS] iptable comment insérer une règle?
Merci, je vais étudier celà à tête reposé.
Gaëtan
Le Fri, 24 Oct 2008 20:05:19 +0200
Franck Joncourt <franck.mail@dthconnex.com> a écrit:
> mouss wrote:
> > Gaëtan PERRIER a écrit :
> >> C'est ce que je fais par défaut mais là je voulais ajouter dynamiquement
> >> des règles en fonction de l'apparition de connections vpn par ex. mais
> >> finalement je me dis que ce n'est peut-être pas problématique de les
> >> ajouter en premier avec un iptables -I ?
> >>
> >
> >
> > La méthode usuelle est de créer une chaîne et d'insérer les règles
> > dynamiques dans cette chaîne.
> >
> > si l'anglais ne te fait pas peur, tu peux jeter un coup d'oeil sur:
> >
> > http://dave.thehorners.com/tech-talk/unix-linux-bsd-osx-etc/76-information-about-the-linuxunix-os-and-friends/86-iptables-a-real-mans-firewall
> >
>
> Voila ce que cela donne chez moi :p!
>
> [code]
> # ifup eth3
> Chargement du fichier : fw_config.sh
> dthfw v0.2
> Chargement du fichier : fw_modules.sh
> Chargement du fichier : fw_proc.sh
> Chargement du fichier : fw_rules.sh
> Chargement du fichier : eth3.sh
> [+] Loading iptables rules for eth3 interface ... Done.
>
> # iptables -L -v | grep eth3
> 0 0 eth3_in_new all -- eth3 any anywhere
> anywhere
> 17 3006 eth3_out_new all -- any eth3 anywhere
> anywhere
> Chain eth3_in_new (1 references)
> Chain eth3_out_new (1 references)
>
> # ifdown eth3
> Chargement du fichier : fw_config.sh
> dthfw v0.2
> Chargement du fichier : fw_modules.sh
> Chargement du fichier : fw_proc.sh
> Chargement du fichier : fw_rules.sh
> Chargement du fichier : eth3.sh
> [+] Unloading rules for eth3 interface ... Done.
>
> # iptables -L -v | grep eth3
>
> [/code]
>
> Avec un simple script bash présent dans:
>
> - /etc/network/if-pre-up.d/
> - /etc/network/if-post-down.d
>
> Un petit exemple:
> [code]
> #!/bin/bash
>
> DTHFW="dthfw"
>
> if [ "$MODE" = "start" ]; then
> MODE=load
> else
> MODE=unload
> fi
>
> invoke-rc.d $DTHFW $MODE $IFACE
>
> exit 0
> [/code]
>
> Ensuite, c'est le script firewall qui prend le relais et fait les
> vérifications d'usage:
> - firewall démarré,
> - recherche des règles associées à l'interface ...
>
> Aujourd'hui j'ai un fichier de règles par interface.
>
> Chaque fichier est renseigné de la même façon:
>
> [code]
> #!/bin/sh
>
> METHOD=$1
> IFACE=$2
>
> IPTABLES='/sbin/iptables'
>
> IN_CHAIN=$IFACE'_in_new'
> OUT_CHAIN=$IFACE'_out_new'
>
> =============================================================================
> # Unload iptables rules for this specific interface
> #
> # This function removes all specific rules linked to this interface.
> # Therefore, the user defined chains are unlinked from the dynamic
> # chain, then flushed and by the end removed
> #
> # syntax : unload
> #
> # return : nothing
> unload ()
> {
> $IPTABLES -D dyn_in_new -i $IFACE -j $IN_CHAIN
> $IPTABLES -F $IN_CHAIN
> $IPTABLES -X $IN_CHAIN
>
> $IPTABLES -D dyn_out_new -o $IFACE -j $OUT_CHAIN
> $IPTABLES -F $OUT_CHAIN
> $IPTABLES -X $OUT_CHAIN
> }
>
> #
> =============================================================================
> # Load iptables rules for this specific interface
> #
> # This function adds all specific rules linked to this interface.
> # Therefore, the user defined chains are created and linked to the
> # dynamic chains, then the ruleset is applied
> #
> # syntax : load
> #
> # return : nothing
> load ()
> {
> ...
> }
> [/code]
>
> On remarquera les chaines utilisateurs dyn_in_new et dyn_out_new dans
> lesquelles sont ajoutées une chaine utilisateur par interface.
>
> L'avantage est grand, car:
> - Le firewall n'est jamais redémarré à moins d'une modification de la
> politique par défaut.
> - Chaque ruleset associé à une interface peut-être chargé/déchargé de
> façon simple.
> - Une mise à jour de mon ruleset pour mon interface de test peut
> échouer sans impacter tout le firewall et verrouiller ainsi tous les accès.
> - Toutes les interfaces bénéficient de la politique par défaut bien
> qu'ajouter plus tard.
>
> --
> Franck Joncourt
> http://debian.org - http://smhteam.info/wiki/
> Fingerprint : C10E D1D0 EF70 0A2A CACF 9A3C C490 534E 75C0 89FE
>
>
Reply to: