logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 17-06-2010 14:40:15

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

[resolu]pb script iptables

Bonjour suite au crash total et complet de mon dd système (RIP) je doit me retaper pas mal de chose, notamment mon script iptables, même si globalement je connaissais mes règles et que je ne suis plus débutant en script j'ai remarquer que iptables me posait pas mal de soucis notamment niveau variables, voici le scripts


#!/bin/bash


IP_LAN=192.168.1.0/24
IP_SERV=192.168.1.10/24
SSH=2230
DNS=192.168.1.1/24

fw_start()
{
### sécurité de base ###
# Active la protection broadcast echo
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
                                               
# Active la protection TCP syn cookie
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
     
# Enregistre les paquets avec des adresses impossibles
# (cela inclut les paquets usurpés (spoofed), les paquets routés
# source, les paquets redirigés), mais faites attention à ceci
# sur les serveurs web très chargés
echo 1 >/proc/sys/net/ipv4/conf/all/log_martians
     
#Active la protection sur les mauvais messages d'erreur
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
     
# Maintenant la protection ip spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
     
# Désactive l'acceptation Redirect ICMP
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
     
# Désactive Source Routed
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route



########### Régle ###################


#on efface tous
iptables -F INPUT;
iptables -F OUTPUT;
iptables -F FORWARD;
iptables -X;
echo "Drop de input, output et forward [ok]";

#on garde les connexion existante
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT;


# on ferme tous
iptables -P INPUT DROP;
iptables -P OUTPUT DROP;
iptables -P FORWARD DROP;
echo "fermeture des entrées, sorties et traffics transitoires [ok]";


#on autorise la boucle local
iptables -I INPUT  -i lo -j ACCEPT;
iptables -A OUTPUT -o lo -j ACCEPT;
echo "autorisation boucle local [ok]";


#on interdit le scan de port (enfin on essai)
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT;
echo "interdiction des scans de ports [ok]";

#on autorise le ping
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
echo "autorisation du ping"

#on autorise le web
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0 --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --dport 8443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
echo "autorisations du oueb [ok]"

#on autorise le DNS
iptables -A INPUT  -p tcp -i eth0 -s $DNS -d $IP_SERV --sport 53 -j ACCEPT
iptables -A INPUT  -p udp -i eth0 -s $DNS -d $IP_SERV --sport 53 -j ACCEPT
iptables -A INPUT  -p tcp -i eth0 -s $IP_SERV -d $DNS --dport 53 -j ACCEPT
iptables -A INPUT  -p udp -i eth0 -s $IP_SERV -d $DNS --dport 53 -j ACCEPT
echo "autorisation DNS [ok]"

#on autorise ssh
iptables -A INPUT -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --sport $SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0 --dport $SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
echo "autotisation ssh [ok]"

#on autorise samba
iptables -A INPUT -p udp -i eth0 -s $IP_LAN -d $IP_SERV  --dport 137 -j ACCEPT;
iptables -A INPUT -p udp -i eth0 -s $IP_LAN -d $IP_SERV  --dport 138 -j ACCEPT;
iptables -A INPUT -p tcp -i eth0 -s $IP_LAN -d $IP_SERV  --dport 139 -j ACCEPT;
iptables -A INPUT -p tcp -i eth0 -s $IP_LAN -d $IP_SERV  --dport 445 -j ACCEPT;
iptables -A INPUT -p udp -i eth0 -s $IP_LAN -d $IP_SERV  --dport 445 -j ACCEPT;
iptables -A OUTPUT -p udp -o eth0 -s $IP_SERV -d $IP_LAN --sport 137 -j ACCEPT;
iptables -A OUTPUT -p udp -o eth0 -s $IP_SERV -d $IP_LAN  --sport 138 -j ACCEPT;
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d $IP_LAN  --sport 139 -j ACCEPT;
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d $IP_LAN  --sport 445 -j ACCEPT;
iptables -A OUTPUT -p udp -o eth0 -s $IP_SERV -d $IP_LAN  --sport 445 -j ACCEPT;
echo "autorisation samba [ok]";

#on autorise netatalk
iptables -A INPUT  -p tcp -i eth0 -s $IP_LAN -d $IP_SERV --dport 548 -j ACCEPT;
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d $IP_LAN --sport 548 -j ACCEPT;
echo "autorisation AFP [ok]"

#on autorise avahi
iptables -A INPUT  -p udp -i eth0 -s $IP_LAN -d $IP_SERV --dport  5353 -j ACCEPT;
iptables -A OUTPUT -p udp -o eth0 -s $IP_LAN -d $IP_SERV --sport  5353 -j ACCEPT;
echo "autorisation avahi [ok]"

#on autorise torrentflux
iptables -A INPUT -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --dport 30000:60000 -j ACCEPT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0  --sport 30000:60000 -j ACCEPT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
echo "autorisations torrents [ok]"

}


fw_clear()
{

iptables -F
iptables -t nat -F
iptables -t mangle -F
echo "vidage des tables [ok]"
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "acceptation du traffic entrants/sortant et suivant [ok]"

}

case "$1" in start|restart)
  echo "mise en place des r√©gles..."
  fw_start
  echo "fini!"
;;
clear)
  echo "remise √† 0 des tables (sauf fail2ban)"
  fw_clear
  echo "fini"
;;
*)
  echo "tu t'es plant√©n c'est comme sa : $0 {start|restart|clear}"
exit 1
;;
esac


et les superbes message d'erreur

mise en place des régles...
Drop de input, output et forward [ok]
fermeture des entrées, sorties et traffics transitoires [ok]
autorisation boucle local [ok]
interdiction des scans de ports [ok]
autorisation du ping
autorisations du oueb [ok]
Bad argument '192.168.1.10/24'
try iptables....
autorisation DNS [ok]
autotisation ssh [ok]
autorisation samba [ok]
autorisation AFP [ok]
autorisation avahi [ok]
multiple -j flags not allowed
try iptables.....
multiple -j flags not allowed
try iptables.....
autorisations torrents [ok]
fini!


et le résultat de iptables -L

Chain INPUT (policy DROP)
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             192.168.1.0/24      tcp dpt:www state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             192.168.1.0/24      tcp dpt:https state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             192.168.1.0/24      tcp dpt:8443 state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp spt:domain
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp dpt:domain
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp dpt:domain
ACCEPT     tcp  --  anywhere             192.168.1.0/24      tcp spt:2230 state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp dpt:netbios-ns
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp dpt:netbios-dgm
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp dpt:netbios-ssn
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp dpt:microsoft-ds
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp dpt:microsoft-ds
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp dpt:afpovertcp
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp dpt:mdns

Chain FORWARD (policy DROP)
target     prot opt source               destination        
ACCEPT     tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5

Chain OUTPUT (policy DROP)
target     prot opt source               destination        
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     tcp  --  192.168.1.0/24       anywhere            tcp dpt:www state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  192.168.1.0/24       anywhere            tcp dpt:https state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  192.168.1.0/24       anywhere            tcp dpt:2230 state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp spt:netbios-ns
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp spt:netbios-dgm
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp spt:netbios-ssn
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp spt:microsoft-ds
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp spt:microsoft-ds
ACCEPT     tcp  --  192.168.1.0/24       192.168.1.0/24      tcp spt:afpovertcp
ACCEPT     udp  --  192.168.1.0/24       192.168.1.0/24      udp spt:mdns


et quelque chose que je comprend pas, mais alors pas du tous (peux être la colère, bref passons), c'est d'une par le 192.168.1.0/24 qui se promène un peux partout en lieux et place d'un 192.168.1.10/24 et que lorsque j'applique mon script en ssh, ma connexion est coupé, le script s'exécute bien, mais ensuite je suis obliger de vider tous mes tables si je veux accéder a mon serveur...

tous fonctionnait à merveille avant sad


merci

Dernière modification par Pollux (19-06-2010 09:55:34)

Hors ligne

#2 17-06-2010 15:17:20

anonyme
Invité

Re : [resolu]pb script iptables

Bonjour,

A vue de nez, tu ne sembles pas avoir déclaré la var "DNS" utilisée dans la ligne suivante de ta section DNS

iptables -A INPUT  -p udp -i eth0 -s $DNS -d $IP_SERV --sport 53 -j ACCEPT


Edit: Pour l'autre message (multiple -j ) il semble en effet qu'il y ait deux fois -j dans tes lignes torrentflux

iptables -A INPUT -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --dport 30000:60000 -j ACCEPT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0  --sport 30000:60000 -j ACCEPT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


@+

Dernière modification par anonyme (17-06-2010 21:24:33)

#3 17-06-2010 21:25:03

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

Re : [resolu]pb script iptables

a oui !!!, enfin cela règles pas tous mes problèmes, mais allons y par étape...

Hors ligne

#4 19-06-2010 00:08:28

anonyme
Invité

Re : [resolu]pb script iptables

Bonjour,

Oui, la première étape serait d'avoir des règles qui fonctionnent, car celles contenant des erreurs n'étant pas prises en compte, ça peut expliquer qu'ensuite ça ne fonctionne pas comme souhaité.

Donc, avec les remarques précédentes tu ne devrais plus avoir maintenant d'erreurs dans les règles. Si ça ne fonctionne toujours pas, c'est que tes règles ne sont pas adaptées.


le 192.168.1.0/24 qui se promène un peux partout en lieux et place d'un 192.168.1.10/24


Oui, en /24 on parle du réseau 192.168.1.0/24. Si tu veux spécifier une machine, c'est 192.168.1.10/32, le /32 étant facultatif (mais significatif pour le fonctionnement).


Edit: Après lecture plus attentive, je pense que tu as mal interprété le fonctionnement de --state et des NEW, ESTABLISHED, et RELATED. Ce qui me fait penser ça, c'est ceci:

règle1 a écrit :

#on garde les connexion existante
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT;


et ceci:

règles 2 et 3 a écrit :

#on autorise ssh
iptables -A INPUT -p tcp -i eth0 -s 0.0.0.0/0 -d $IP_SERV --sport $SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s $IP_SERV -d 0.0.0.0/0 --dport $SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


En effet, la règle1 ne permet pas de conserver ouvertes des connexions initiées antérieurement au lancement du script, mais de laisser passer tous les paquets qui sont marqués (dans Netfilter par le module state - conntrack en fait) comme faisant partie d'une connexion établie (précédemment par le module conntrack de Netfilter) ou connexe à celle-ci.
Deux conséquences;
- Toute connexion antérieure à la mise en place par le script des modules contrack/state est perdue.
- Il n'est pas utile de notifier RELATED,ESTABLISHED dans les règles 2 et 3. L'init de connexion se fera par R2 ou R3, et une fois établie le reste passe par R1. C'est valable aussi pour toutes les autres lignes du même type.

Ensuite, et sauf erreur de ma part, (je crois comprendre que ce script équipe les hôtes du réseau, pas le serveur), il restera à inverser les --sport et --dport dans les règles 2 et 3.

@+

Dernière modification par anonyme (19-06-2010 01:57:25)

#5 19-06-2010 09:37:53

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

Re : [resolu]pb script iptables

non le script est dédié au serveur, merci pour c'est éclaircissement, en fait je m'étais trompé sur ssh, j'avais mis en règles d'input un sport et non un dport, et l'inverse pour ssh, il me reste juste l'erreur des "multiples flags"


je ne veut pas un /32 je veut que tous les paquet donc la destination ou la source suivant les cas ne soit pas 192.168.1.10/24 soit bloquer, si je met 192.168.1.10/32 il va tous me bloqué !! un masque /32 et totalement inutile !! tu n'a aucune adresse disponible... il te faut comme dans tous sous-réseau; une diffusion et un broadcast.

il me reste quelque règle à établir notamment pour l'accès web du serveur.

edit: le pb des flags est réglé... j'avais deux -j ACCEPT dans une règle, sujet est donc clos, merci a tous de m'avoir bien aider, encore une lary geure est aller boire un verre au lieux de venir m'aider...

Dernière modification par Pollux (19-06-2010 09:55:15)

Hors ligne

Pied de page des forums