Dominique Informatique

 

Recherche

Newsletter

Inscription à la newsletter
 

Jeudi 23 février 2006
Les internautes américains sont victimes de nouveaux virus qui se jouent des sécurités mises en oeuvre par les banques.
Les pirates doivent réagir face aux défenses mises en place par les banques pour protéger les accès de leurs clientèles.

Les chevaux de troie de dernière génération infecte le navigateur Internet (une barre d'outils indésirable ?), puis il attends que l'internaute se connecte et s'authentifie sur le site de sa banque. A ce moment-la, le virus se déclenche et profite de la connexion ouverte pour vider les comptes bancaires de sa victime.

En Europe, les pirates préférent les vieilles méthodes. En france, ce sont 200 000 € qui ont été piraté sur les comptes bancaires d'internautes mal protégé. En Italie, la police a arrêté 70 personnes soupconnées de piraterie informatique.

Il y a de fortes chances pour que ces nouveaux chevaux de troie traversent l'atlantique d'ici la fin de l'année.
par Dominique Chambelant publié dans : Techniques
Vendredi 15 juillet 2005
Iptables / Netfilter

0) Introduction

Cette page a pour but d'expliquer la structure d'une règle Iptables.
Une bonne connaissance de TCP/IP est requise pour comprendre la suite de ce document.
Ce document n'explique pas toutes les fonctions d'Iptables, il ne donne que les principales nescessaires à la mise en place
d'un parefeu (firewall) avec la translation d'adresse IP (NAT)

1) Fonctions de Netfilter.

D'après le manuel, Iptable permet de mettre en place, maintenir et inspecter des règles de filtrage de paquet dans le noyau Linux.
Iptables nous permet de controler les paquets IP transitant par une machine Linux. On peut décider si un paquet IP peut passer ou pas
en fonction de critères paramétrables (les règles de filtrage). Ce controle permet aussi de rediriger les paquets vers une autre destination,
de suivre les connexions TCP/IP et bien d'autre choses.

2) Commandes iptables.

iptables -A chaine règle  : ajoute une règle à la chaine
iptables -D chaine règle  : efface la règle dans la chaine
iptables -F chaine  : efface toutes les règles de la chaine

3) Structure des régles Iptables.

iptables  ( table )  ( chaine )  ( Parametres de correspondance )  ( cible )

La règle ci-dessus présente les éléments typiques. La table indique les actions possibles avec le paquet IP.
La chaine indique a quel moment l'on controle le paquet. Les paramètres de correspondance sont testés
contre le paquet IP pour déterminer si la règle doit lui être appliqué ou pas, exemple : teste de l'adresse
source du paquet IP. La cible indique l'action a effectuer sur le paquet si les paramètres de correspondances
sont vérifiés.

4) Elements d'Iptables.

les chaines :  
  • INPUT  : le paquet entre dans la machine.
  • PREROUTING  : le paquet est entré, et il va être routé.
  • FORWARD  : le paquet est routé.
  • POSTROUTING  : le paquet a été routé mais n'est pas encore sorti.
  • OUTPUT  : le paquet sort de la machine.
les tables :  
  • filter : (table par defaut) Cette table est utilisé pour filtrer les paquets, il est possible d'utiliser les chaines INPUT, FORWARD, OUTPUT
  • nat : Cette table est utilisé lorsque un paquet crée un nouvelle connexion, il est possible d'utiliser les chaines PREROUTING, POSTROUTING, OUTPUT
Les paramètres de correspondances :

[!] signifie qu'il est possible d'inverser le test en ajoutant le caractère ! dans la ligne de paramètre.

  • -s [!] source (adresse IP)  : teste l'adresse source du paquet IP
  • -d [!] destination (adresse IP)  : teste l'adresse destination du paquet IP
  • -i [!] interface  (nom d'interface)  : teste l'interface d'entrée du paquet, valable pour les chaines INPUT, PREROUTING, FORWARD.
  • -o [!] interface (nom d'interface)  : teste l'interface de sortie du paquet, valable pour les chaines FORWARD, POSTROUTING, OUTPUT

Extentions de correspondance

Les extentions sont des modules additionnels d'iptables. Ils sont chargés implicitement ou avec l'option -m.

  • -m --state état-de-connexion  : Ce module permet de tester l'état de la connexion TCP/IP
  • -p tcp  : Ce module permet de tester les indicateurs du protocole TCP.
-p tcp --sport [!] port[:port]  : teste le ou un interval de port source du paquet IP.
-p tcp --dport [!] port[:port] : teste le ou un interval de port destination du paquet IP
  • -p udp  : Ce module permet de tester les indicateurs du protocol UDP
-p udp --sport [!] port[:port]  : teste le ou un interval de port source du paquet IP.
-p udp --dport [!] port[:port]  : teste le ou un interval de port destination du paquet IP


Les Cibles

La cible indique l'action a effectuer sur le paquet si les paramètres de correspondances sont vérifiés.

-j ACCEPT  : signifie que le paquet est autorisé à passer.
-j DROP  : signifie que le paquet est détruit.

Extentions de cible

-j DNAT --to-destination adresse-IP:port  : Cette cible modifie l'adresse de destination:port du paquet IP par celle fourni. Cette cible permet de rendre accessible depuis Internet, un serveur dans un réseau privé.

ex : iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80  -> cette règle redirige les paquets à destination du port 80 (http) entrant sur l'interface ppp0 (modem connecté a internet), vers le serveur web à l'adresse 192.168.0.1

-j SNAT --to-source adresse-IP  : Cette cible modifie l'adresse IP source du paquet IP par celle fourni. Cette cible permet de camoufler un réseau derrière une adresse IP. Si vous connectez votre réseau privé à Internet, assurez vous d'avoir une adresse IP fixe pour utiliser la cible SNAT.

ex  : iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 162.230.10.25  

-j MASQUERADE  : Cette cible est utilisé pour connecter un réseau privé à Internet. A utiliser dans le cadre où votre adresse IP vous est fourni dynamiquement par votre FAI.

ex : iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

5)  Divers autres

Activation du routage par le noyau Linux :
Permet au noyau Linux de faire transiter les paquets entres ses interfaces réseaux.
echo 1 > /proc/sys/net/ipv4/ip_forward

par Dominique Chambelant publié dans : Techniques
Jeudi 7 juillet 2005

#!/bin/sh

# script /etc/firewall.sh

# Firewall NAT du TP réseau hétérogène
# Réseau Internet / DMZ / routeur
# Dominique Chambelant
# dchambelant@free.fr

# Definition des élèments du reseau

# Interface connectée au reseau interne
INTINF=eth0
# Interface connectée au reseau DMZ
DMZINF=eth1
# Interface connectée au reseau Internet
EXTINF=eth2
# Adresse IP du routeur connecté au reseau interne
ROUTEUR=192.168.20.1
# Adresse IP du routeur connecté au réseau externe
GATEWAY=192.168.0.3
# Adresse IP du reseau LAN
ip_LAN=192.168.30.0
netmask_LAN=255.255.255.0
# Adresse IP du reseau DMZ
ip_DMZ=192.168.10.0
netmask_DMZ=255.255.255.0
ip_WEBSVR=192.168.10.2
ip_SMTP=192.168.10.2
ip_PROXY=192.168.20.1
ip_DNS1=192.168.0.3
ip_DNS2=192.168.0.3

# Adresse IP publique des serveurs
# Ces adresses sont affectés à l'interface WAN du firewall
ipw_WEBSERV=192.168.0.250
# Interface Internet et boucle locale
# WAN=`/usr/local/sbin/eaglectrl -i` # Utilisé avec un modem Sagem 800
LOOP=127.0.0.1

-------------- Ne rien modifier au-dela de cette ligne ---------------------
------------------------------------------------------------------------
start() {

        echo "Démarrage du firewall..."


# Définition de la table de routage
route add -net $ip_LAN netmask $netmask_LAN gw $ROUTEUR dev $INTINF
route add -net $ip_DMZ netmask $netmask_DMZ dev $DMZINF
route add default gw $GATEWAY

# Control du traffic avec l'algorythme Token Bucket Filter
tc qdisc add dev $INTINF root tbf rate 100mbit latency 0.1ms burst 1540
tc qdisc add dev $DMZINF root tbf rate 100mbit latency 0.1ms burst 1540
tc qdisc add dev $DMZINF root tbf rate 100mbit latency 0.1ms burst 1540

# Activation du forwarding dans le noyau
# Obligatoire pour que le noyau transmette les paquets
echo 1 > /proc/sys/net/ipv4/ip_forward

# Activation de l'IP dynamique
# Obligatoire dans le cas d'IP attribué dynamiquement
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

# Activation de l'anti-spoofing

# Alors la, on va travailler avec le routage
# pour empêcher les attaques de type spoofing
# l'activation de la vérification de l'adresse source
# à chaque lancement est une bonne solution.

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
  echo -n "Activation de la protection contre l'IP spoofing..."    
  for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
  do
    echo 1 > $filtre
  done
  echo "Activation terminée"
else
  echo "Probléme lors de l'activation de la protection IP spoofing, faites attention."
  echo "CONTROL-D pour quitter le shell et continuer le lancement du système"
  echo
  # Démarrage d'un shell root pour maintenance
  /sbin/sulogin $CONSOLE
fi

# pas de icmp
# le firewall doit rester discret
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# On va utiliser iptables. Si on l'a compilé en module
# dans le kernel, il faut charger le module ip_tables.

modprobe ip_tables

# on va charger les modules supplémentaires pour
# gérer la translation d'adresse, l'IRC et le FTP

modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe iptable_filter
modprobe iptable_nat

# On va vider toutes les règles, avant d'appliquer les nouvelles règles de firewall

iptables -F
iptables -X

# On va rajouter 2 nouvelles chaînes.
# Ceci permettra d'ajouter des nouvelles cibles qui
# auront la possibilité de loguer ce qui se passe.

# On logue et on refuse le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[Parefeu IPTABLES DROP] : '
iptables -A LOG_DROP -j DROP

# ici, on logue et on accepte le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[Parefeu IPTABLES ACCEPT] : '
iptables -A LOG_ACCEPT -j ACCEPT

# On veut faire un firewall efficace,
# donc la politique a appliquer est de tout refuser par défaut
# et rajouter une a une les règles que l'on autorise.
# l'option -P permet de définir la cible par défaut

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Pour éviter les problèmes, on va tout accepter sur
# la machine en local (interface lo).
# Je déconseille de retirer cette règle car
# ça pose pas mal de problèmes et ça peut
# faire perdre la main sur la machine

iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Bon, la partie initialisation et préparation est
# terminée, passons aux choses sérieuses

# Transfer des connexions http entrantes vers le serveur Web public
iptables -t nat -A PREROUTING -d $ipw_WEBSVR -p tcp --dport 80 -j DNAT --to-destination $ip_WEBSVR:80

# Configuration des filtres
# ---
# Autorise la connection au serveur DNS1 et DNS2
# serveur DNS1 LAN / DNS1
iptables -A INPUT -i $INTINF -d $ip_DNS1 -p udp --dport 53 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -s $ip_DNS1 -p udp --dport 53 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $EXTINF -d $ip_DNS1 -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -i $EXTINF -s $ip_DNS1 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -i $INTINF -s $ip_DNS1 -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -d $ip_DNS1 -p udp --sport 53 -j ACCEPT
echo "DNS1        [OK]"
# serveur DNS2
iptables -A INPUT -i $INTINF -d $ip_DNS2 -m state --state NEW,ESTABLISHED -p tcp --dport 53 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -s $ip_DNS2 -m state --state ESTABLISHED -p tcp --dport 53 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $EXTINF -d $ip_DNS2 -m state --state NEW,ESTABLISHED -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -i $EXTINF -s $ip_DNS2 -m state --state ESTABLISHED -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -i $INTINF -s $ip_DNS2 -m state --state ESTABLISHED -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -d $ip_DNS2 -m state --state NEW,ESTABLISHED -p tcp --sport 53 -j ACCEPT
echo "DNS2        [OK]"

# ---
# Autorise le proxy a se connecter sur le Web (http)
iptables -A INPUT -i $INTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $INTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
echo "http  PROXY/Internet        [OK]"

# ---
# Autorise le proxy a ce connecter sur la DMZ (http)
iptables -A INPUT -i $INTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A INPUT -i $DMZINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $DMZINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i $DMZINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $INTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
echo "http  PROXY/DMZ        [OK]"

# ---
# Autorise le proxy a se connecter sur les serveurs FTP
# Connexion de Controle
iptables -A INPUT -i $INTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --dport 21 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --dport 21 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 21 -j ACCEPT
iptables -A FORWARD -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -i $INTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 21 -j ACCEPT
echo "FTP    (21)    [OK]"
# Connexion de Données
iptables -A INPUT -i $INTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --dport 20 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --dport 20 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -i $EXTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 20 -j ACCEPT
iptables -A OUTPUT -i $INTINF -d $ip_PROXY -m state --state ESTABLISHED -p tcp --sport 20 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -s $ip_PROXY -m state --state NEW,ESTABLISHED -p tcp --sport 20 -j ACCEPT
echo "FTP    (20)    [OK]"

# ---
# Autorise le SSH sur l'interface interne, la DMZ,
# le transfert LAN - DMZ   et enregistre
# l'établissement de connexion
iptables -A INPUT -i $INTINF -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT
iptables -A INPUT -i $DMZINF -m state --state ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $DMZINF -m state --state NEW,ESTABLISHED -p tcp --sport 22 -j ACCEPT
iptables -A FORWARD -d $INTINF -i $DMZINF -m state --state ESTABLISHED -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -i $INTINF -m state --state ESTABLISHED -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -m state --state NEW,ESTABLISHED -p tcp --sport 22 -j ACCEPT
echo "SSH            [ OK ]"

# ---
#  Autorise le SMTP entre le LAN et la DMZ
iptables -A INPUT -i $INTINF -m state --state NEW,ESTABLISHED -p tcp --dport 25 -j LOG_ACCEPT
iptables -A INPUT -i $DMZINF -d $ip_SMTP -m state --state ESTABLISHED -p tcp --dport 25 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $DMZINF -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -d $INTINF -i $DMZINF -s $ip_SMTP -m state --state ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -i $INTINF -m state --state ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -s $ip_SMTP -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
echo "SMTP    Lan/DMZ    [OK]"

# ---
# Autorise le SMTP entre la DMZ et l'Internet
iptables -A INPUT -i $DMZINF -m state --state NEW,ESTABLISHED -p tcp --dport 25 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -d $ip_SMTP -m state --state NEW,ESTABLISHED -p tcp --dport 25 -j LOG_ACCEPT
iptables -A FORWARD -i $DMZINF -d $EXTINF -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -d $EXTINF -i $DMZINF -s $ip_SMTP -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -s $ip_SMTP -m state --state NEW,ESTABLISHED -p tcp --sport 25 -j ACCEPT
echo "SMTP    DMZ/INTERNET    [OK]"

# ---
# Autorise le POP3 en le LAN et la DMZ
iptables -A INPUT -i $INTINF -m state --state NEW,ESTABLISHED -p tcp --dport 110 -j LOG_ACCEPT
iptables -A INPUT -i $DMZINF -d $ip_SMTP -m state --state ESTABLISHED -p tcp --dport 110 -j LOG_ACCEPT
iptables -A FORWARD -i $INTINF -d $DMZINF -m state --state NEW,ESTABLISHED -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -d $INTINF -i $DMZINF -s $ip_SMTP -m state --state ESTABLISHED -p tcp --sport 110 -j ACCEPT
iptables -A OUTPUT -i $INTINF -m state --state ESTABLISHED -p tcp --sport 110 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -s $ip_SMTP -m state --state NEW,ESTABLISHED -p tcp --sport 110 -j ACCEPT
echo "POP3    Lan/DMZ    [OK]"

# ---
# Autorise les connexions entrantes vers la DMZ (http)
iptables -A INPUT -i $DMZINF -m state --state ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A INPUT -i $EXTINF -d $ip_WEBSVR -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j LOG_ACCEPT
iptables -A FORWARD -i $DMZINF -d $EXTINF -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -d $EXTINF -i $DMZINF -s $ip_WEBSVR -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $EXTINF -s $ip_WEBSVR -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -i $DMZINF -d $ip_WEBSVR -m state --state NEW,ESTABLISHED -p tcp --sport 80 -j ACCEPT
echo "http    DMZ/INTERNET    [OK]"

#
echo "Tunnels VPN        [ OK ]"
#$IPT -A INPUT -i $WAN -p udp --dport 5000 -j ACCEPT
#
#
#
echo "Mauvais paquets        [ Rejet ]"
iptables -A INPUT -i $EXTINF -s $LOOP -j DROP
iptables -A FORWARD -i $EXTINF -s $LOOP -j DROP
iptables -A INPUT -i $EXTINF -d $LOOP -j DROP
iptables -A FORWARD -i $EXTINF -d $LOOP -j DROP
iptables -A INPUT -i $INTINF -s $LOOP -j DROP
iptables -A INPUT -i $INTINF -d $LOOP -j DROP
iptables -A INPUT -i $EXTINF -j DROP
iptables -A FORWARD -i $INTINF -d $LOOP -j DROP
#
#
iptables -A FORWARD -i $EXTINF -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $EXTINF -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i $EXTINF -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i $EXTINF -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i $EXTINF -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i $EXTINF -s 10.0.0.0/8 -j DROP
#

# Maintenant il ne reste plus grand chose à faire !

# Il faut permettre à l'ensemble du LAN de dialoguer sur internet
# avec la même adresse IP sinon, bien évidemment ça ne marchera pas
# Une petite règle de NAT avec un -j MASQUERADE suffira
# (masquerade = dialoguer avec l'adresse IP publique sur firewall)

iptables -t nat -A POSTROUTING -s $ip_LAN -j MASQUERADE

# Il faut également que le serveur web de la DMZ soit masqueradé
# sinon, le serveur dialoguera sur internet avec son IP privée

iptables -t nat -A POSTROUTING -s $ip_DMZ -j MASQUERADE

# Toutes les règles qui n'ont pas passé les
# règles du firewall seront refusées et loguées...

iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

# Fin de la configuration du parefeu
echo " [Termine]"
echo " Le parefeu est prêt"

}

stop() {

        iptables -F
        iptables -X
        iptables -P INPUT ACCEPT
        iptables -P FORWARD ACCEPT
        iptables -P OUTPUT ACCEPT

        iptables -t nat -F
        iptables -t nat -X
        iptables -t nat -P PREROUTING ACCEPT
        iptables -t nat -P POSTROUTING ACCEPT
        iptables -t nat -P OUTPUT ACCEPT

        echo "Firewall désactivé!"
}

restart() {
        stop
        sleep 2
        start
}

case "$1" in
        'start')
                start
        ;;
        'stop')
                stop
        ;;
        'restart')
                restart
        ;;
        'status')
                iptables -L -n -v
                iptables -t -n -v nat -L
        ;;
        *)
                echo "Usage: /etc/init.d/firewall {start|stop|restart|status}"
esac
par Dominique publié dans : Techniques
 
 
cree son blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus