routage avec iptables MessagePublié: 21 Avr 2010 11:58

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

routage avec iptables MessagePublié: 21 Avr 2010 11:58

Messagepar inesenis » 21 Avr 2010 13:08

Bonjour,
j'ai installé un serveur proxy squid sur mon pc et mnt je veux configurer iptables pour partger la connexion entre mes deux cartes réseaux wlan0 lié à internet(192.168.3.26) et eth0(192.168.0.6) lié au local et rédiriger toutes les requetes venant des utilisateurs(local) vers mon serveur squid
c'est pour cela j'ai crée un script nommé firewall que je l'ai mis sous /etc/init.d
Code: Tout sélectionner
#!/bin/sh
IPT="/sbin/iptables"
MODPROBE="/sbin/modprobe"
IFACE_EXT="wlan0"
#"ppp0"
IFACE_INT="eth0"
PRIVATE_ADDR="192.168.0.6"
PRIVATE_NET="192.168.0.0/255.255.255.0"
test -f $IPT || exit 0
test -f $MODPROBE || exit 0
case "$1" in
start)
     echo -n "Loading firwall’s rules: "
        ############################
        # FLUSH TABLES
        ############################
        $IPT -t filter -F
        $IPT -t nat -F
        $IPT -t mangle -F
        ############################
        # MASQUERADING
        ############################
        $IPT -t nat -A POSTROUTING -s $PRIVATE_NET -j MASQUERADE
        ############################
        # FORWARDING RULES
        ############################
        $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # ESTABLISHED
        #$IPT -A FORWARD -p UDP -i $IFACE_INT --dport 53 -j ACCEPT # DOMAIN
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 21 -j ACCEPT # FTP
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 22 -j ACCEPT # SSH
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 25 -j ACCEPT # SMTP
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 80 -j ACCEPT # HTTP
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 110 -j ACCEPT # POP3
        #$IPT -A FORWARD -p TCP -i $IFACE_INT --dport 443 -j ACCEPT # HTTPS
        $IPT -A FORWARD -p TCP -i $IFACE_EXT --dport 8080 -j ACCEPT # REMOTE DESKTOP
        $IPT -A FORWARD -i $IFACE_INT -s $PRIVATE_NET -j ACCEPT
        $IPT -A FORWARD -j LOG --log-prefix "Forwarding table : "
        $IPT -A FORWARD -j DROP
        ############################
        # INPUT LOOPBACK
        ############################
        $IPT -A INPUT -i lo -j ACCEPT
    ############################
    # INPUT INTRANET
    ############################
    $IPT -A INPUT -p UDP -i $IFACE_INT --dport 53 -j ACCEPT  # DNS
    $IPT -A INPUT -p UDP -i $IFACE_INT --dport 123 -j ACCEPT # NTP
    $IPT -A INPUT -p UDP -i $IFACE_INT --dport 137 -j ACCEPT # NETBIOS-NS
    $IPT -A INPUT -p UDP -i $IFACE_INT --dport 138 -j ACCEPT # NETBIOS-DGM
    $IPT -A INPUT -p TCP -i $IFACE_INT --dport 139 -j ACCEPT # NETBIOS-SSN
    ############################
    # INPUT INTERNET
    ############################
    ############################
    # INPUT GENERAL
    ############################
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ESTABLISHED
    $IPT -A INPUT -p ICMP -j ACCEPT                              # ICMP
    $IPT -A INPUT -p TCP --dport 21 -j ACCEPT                    # FTP
    $IPT -A INPUT -p TCP --dport 22 -j ACCEPT                    # SSH
    $IPT -A INPUT -p TCP --dport 80 -j ACCEPT                    # HTTP
    $IPT -A INPUT -p TCP --dport 113 -j ACCEPT                   # AUTH
    $IPT -A INPUT -p TCP --dport 443 -j ACCEPT                   # HTTPS
    $IPT -A INPUT -p TCP --dport 3000 -j ACCEPT                  # NTOP
    #$IPT -A INPUT -i $IFACE_EXT -j LOG --log-prefix "Input ppp0 : " # LOG..
    #$IPT -A INPUT -i $IFACE_INT -j LOG --log-prefix "Input eth0 : " # LOG..
    $IPT -A INPUT -j DROP                          # DENY ALL
    # DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
    $IPT -t nat -A PREROUTING -i $IFACE_INT -p tcp --dport 80 -j DNAT --to 192.168.3.26:8080
    # if it is same system
    $IPT -t nat -A PREROUTING -i $IFACE_EXT -p tcp --dport 80 -j REDIRECT --to-port 8080
    echo "Done."
    ;;
stop)
    echo -n "Flushing firwall’s rules: "
    ###########################
    # FLUSH TABLES
    ###########################
    $IPT -t filter -F
    $IPT -t nat -F
    $IPT -t mangle -F
    echo "Done."
    ;;
restart)
    /etc/init.d/firewall stop
    /etc/init.d/firewall start
    ;;
status)
    # List tables
       echo
       echo "---------- FILTER TABLE -----------"
       echo
       $IPT -t filter -L -v
       echo
       echo "----------  NAT TABLE -----------"
       echo
       $IPT -t nat -L -v
       echo
       ;;
    *)
       echo "Usage: /etc/init.d/firewall {start|stop|status}"
       exit 1
       ;;
esac
exit 0

et j'ai édité le fichier /etc/sysctl.conf :
Code: Tout sélectionner
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

puis
Code: Tout sélectionner
sysctl -p

puis à l’aide de la commande update-rc.d, j'ai crée automatiquement les liens dans les repertoires /etc/rcX.d/ puisque j'ai pas iptables dans /etc/init.d:
puis à l’aide de la commande update-rc.d, j'ai crée automatiquement les liens dans les repertoires /etc/rcX.d/ puisque j'ai pas iptables dans /etc/init.d:
Code: Tout sélectionner
                                         
update-rc.d firewall start 20 2 3 4 5 . stop 20 0 1 6 .

puis j'ai demarré mon script
Code: Tout sélectionner
/etc/init.d/firewall start

j'ai fait un test avec une machine avec l'@ ip 192.168.0.9 et même passerelle que eth0 lié au local(192.168.0.0) mais le résulat est "Address Not Found" sachant que si je met une passerelle différente pour eth0(sur le serveur) le navigateur de la machine de test m'affiche la page web demandé
que dois je faire?y'a t'il qqe chose qui manque?merci d'avance.
inesenis
Matelot
Matelot
 
Messages: 9
Inscrit le: 16 Jan 2010 12:10

Messagepar jdh » 21 Avr 2010 15:44

Ce poste ressemble ETRANGEMENT à celui-ci http://forums.ixus.fr/viewtopic.php?t=43343 lancé par une autre utilisateur !

Ma réponse, pratique et efficace, reste valable !
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar inesenis » 21 Avr 2010 16:09

et si je ne veux pas travailler avec Shorwall?
inesenis
Matelot
Matelot
 
Messages: 9
Inscrit le: 16 Jan 2010 12:10

Messagepar jdh » 21 Avr 2010 16:57

Tout est possible ...

Moi, je décris une technique simple et efficace, et qui fonctionne ... vite !
Dans mon cas personnel, déjà écrit ici, j'ai pu travailler avec un mainteneur de paquet Debian qui m'a expliqué "l'essentiel" d'iptables, et j'ai écrit des scripts iptables sur cette base.

Mais une fois que j'ai vu Shorewall (qui s'appelait à l'époque Seattle firewall), j'ai très très vite compris l'intérêt et l'efficacité de travailler avec ce système.

Si je veux résumer assez objectivement : un script iptables se configure en 1 jour, le paramétrage de Shorewall se réalise en 30' !

Bref, sous Debian, je n'ai pas fait de script iptables depuis 2004 peut-être ...

Et on est en 2010 !

Pour info, Shorewall avec 2 interfaces, c'est 5 fichiers à configurer dont 4 avec 1 ou 2 lignes et 1 dernier avec entre 10 et 20 lignes (plus 1 fichier général à modifier avec 1 paramètre de Keep à On).



---------------------------------------

Il faudrait un peu parler de ce doublon de pseudo (qui n'est pas conforme à la charte) et de ce double fil (qui devrait valoir verrouillage) ...


Dans ce script, il y a des lignes insecure, d'autres inutiles, plus quelques erreurs (d'inadaptation d'un script tout fait) ...

Exemple :
ligne insecure :
$IPT -A FORWARD -i $IFACE_INT -s $PRIVATE_NET -j ACCEPT

ligne inutile :
$IPT -A INPUT -p TCP --dport 113 -j ACCEPT # AUTH

erreurs :
#$IPT -A INPUT -i $IFACE_EXT -j LOG --log-prefix "Input ppp0 : " # LOG.. (Ok c'est en commentaire mais ça devrait aider ...)



(Voyez je n'ai rien perdu ...)
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar tomtom » 30 Avr 2010 10:27

[Mode pub=on]
Si on n'aime pas shorewall, je conseille nufirewall, distribution complète de firewall pret à l'emploi avec interface de configuration extrêmement agréable !
Par ailleurs, l'ensemble du projet nufirewall mérite un coup d'oeil, permettant l'authentification des flux au niveau 3 !
http://www.nufw.org/projects/nufirewall/wiki/
[/pub]

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris


Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité