Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2982 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [gentoo] problème script iptable (open)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[gentoo] problème script iptable (open)

n°561980
matthias
Posté le 25-09-2004 à 21:00:55  profilanswer
 

bonjour,
 
je suis en train d'écrire un script iptable pour faire un firewall sur ma gentoo (une adaptation du script présenté dans la doc gentoo pour mon portable), ce script fonctionne mais il subsiste un détail ennuyeux, en effet quand j'ajoute le script au runlevel default et bien y a rien qui passe ... bizarrement il suffit de stopper le firewall, de lancer Firefox par exemple et de relancer le firewall et c'est bon ... par contre un arrêt relance du firewall ne suffit pas, il faut initialiser une connexion pour que cela passe ... en fait j'ai l'impression que mon script gère mal l'initialisation des connexions :(  ci-joint mon script ...
 
si qq à une idée je suis preneur, merci :)
 

Code :
  1. #!/sbin/runscript
  2. IPTABLES=/sbin/iptables
  3. IPTABLESSAVE=/sbin/iptables-save
  4. IPTABLESRESTORE=/sbin/iptables-restore
  5. FIREWALL=/etc/firewall.rules
  6. #interfaces
  7. ETH_RJ45=eth0
  8. ETH_WIFI=eth1
  9. opts="${opts} showstatus panic save restore showoptions rules"
  10. depend() {
  11.   need net
  12. }
  13. rules() {
  14.   stop
  15.   ebegin "Paramétrer les règles internes"
  16.   einfo "On ignore tout par défaut"
  17.   $IPTABLES -P FORWARD DROP
  18.   $IPTABLES -P INPUT   DROP
  19.   $IPTABLES -P OUTPUT  DROP
  20.   # Règles par default
  21.   einfo "Créer les chaînes d'état"
  22.   $IPTABLES -N allowed-connection-eth
  23.   $IPTABLES -F allowed-connection-eth
  24.   $IPTABLES -A allowed-connection-eth -m state --state ESTABLISHED,RELATED -j ACCEPT
  25.   $IPTABLES -A allowed-connection-eth -i $ETH_RJ45 -m limit -j LOG --log-prefix \
  26.       "Bad packet from ${ETH_RJ45}:"
  27.   $IPTABLES -A allowed-connection-eth -j DROP
  28.  
  29.   $IPTABLES -N allowed-connection-wifi
  30.   $IPTABLES -F allowed-connection-wifi
  31.   $IPTABLES -A allowed-connection-wifi -m state --state ESTABLISHED,RELATED -j ACCEPT
  32.   $IPTABLES -A allowed-connection-wifi -i $ETH_WIFI -m limit -j LOG --log-prefix \
  33.       "Bad packet from ${ETH_WIFI}:"
  34.   $IPTABLES -A allowed-connection-wifi -j DROP
  35.   # Trafic ICMP
  36.   einfo "Créer la chaîne icmp"
  37.   $IPTABLES -N icmp_allowed
  38.   $IPTABLES -F icmp_allowed
  39.   $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
  40.       time-exceeded -j ACCEPT
  41.   $IPTABLES -A icmp_allowed -m state --state NEW -p icmp --icmp-type \
  42.       destination-unreachable -j ACCEPT
  43.   $IPTABLES -A icmp_allowed -p icmp -j LOG --log-prefix "Bad ICMP traffic:"
  44.   $IPTABLES -A icmp_allowed -p icmp -j DROP
  45.   # Trafic entrant
  46.   einfo "Créer la chaîne de trafic SSH entrant"
  47.   $IPTABLES -N allow-ssh-traffic-in
  48.   $IPTABLES -F allow-ssh-traffic-in
  49.   # Protection anti Flood
  50.   $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
  51.       ALL RST --dport ssh -j ACCEPT
  52.   $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
  53.       ALL FIN --dport ssh -j ACCEPT
  54.   $IPTABLES -A allow-ssh-traffic-in -m limit --limit 1/second -p tcp --tcp-flags \
  55.       ALL SYN --dport ssh -j ACCEPT
  56.   $IPTABLES -A allow-ssh-traffic-in -p tcp --dport ssh -j ACCEPT
  57.   # Trafic sortant
  58.  
  59.   einfo "Créer la chaîne de trafic DNS/SSH/HTTP/HTTPS/FTP/MAIL sortant"
  60.   $IPTABLES -N allow-www-traffic-out
  61.   $IPTABLES -F allow-www-traffic-out
  62.   $IPTABLES -A allow-www-traffic-out -p tcp --dport www -j ACCEPT
  63.   $IPTABLES -A allow-www-traffic-out -p tcp --dport https -j ACCEPT
  64.   $IPTABLES -A allow-www-traffic-out -p tcp --dport ftp -j ACCEPT
  65.   $IPTABLES -A allow-www-traffic-out -p tcp --dport smtp -j ACCEPT
  66.   $IPTABLES -A allow-www-traffic-out -p tcp --dport pop3 -j ACCEPT
  67.   $IPTABLES -A allow-www-traffic-out -p tcp --dport ssh -j ACCEPT
  68.   $IPTABLES -A allow-www-traffic-out -p tcp --dport 53 -j ACCEPT
  69.   # Détecter les scanneurs de ports.
  70.   einfo "Créer la chaîne de détection de portscan"
  71.   $IPTABLES -N check-flags
  72.   $IPTABLES -F check-flags
  73.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit \
  74.       --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP-XMAS:"
  75.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
  76.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit \
  77.       5/minute -j LOG --log-level 1 --log-prefix "XMAS:"
  78.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL ALL -j DROP
  79.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG \
  80.       -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"
  81.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
  82.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -m limit \
  83.       --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"
  84.   $IPTABLES -A check-flags -p tcp --tcp-flags ALL NONE -j DROP
  85.   $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit \
  86.       --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"
  87.   $IPTABLES -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  88.   $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit \
  89.       --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"
  90.   $IPTABLES -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
  91.   # Applique et ajoute les chaînes invalides.
  92.   einfo "Appliquer les chaînes a INPUT"
  93.   $IPTABLES -A INPUT -m state --state INVALID -j DROP
  94.   $IPTABLES -A INPUT -j icmp_allowed
  95.   $IPTABLES -A INPUT -j check-flags
  96.   $IPTABLES -A INPUT -i lo -j ACCEPT
  97.   $IPTABLES -A INPUT -j allow-ssh-traffic-in
  98.   $IPTABLES -A INPUT -j allowed-connection-eth
  99.   $IPTABLES -A INPUT -j allowed-connection-wifi
  100.   einfo "Appliquer les chaînes à l'OUTPUT"
  101.   $IPTABLES -A OUTPUT -m state --state INVALID -j DROP
  102.   $IPTABLES -A OUTPUT -j icmp_allowed
  103.   $IPTABLES -A OUTPUT -j check-flags
  104.   $IPTABLES -A OUTPUT -o lo -j ACCEPT
  105.   $IPTABLES -A OUTPUT -j allow-www-traffic-out
  106.   $IPTABLES -A OUTPUT -j allowed-connection-eth
  107.   $IPTABLES -A OUTPUT -j allowed-connection-wifi
  108.   eend $?
  109. }
  110. start() {
  111.   ebegin "Démarrage du pare-feu"
  112.   if [ -e "${FIREWALL}" ]; then
  113.     restore
  114.   else
  115.     einfo "${FIREWALL} n'existe pas. Utilisation des règles par defaut."
  116.     rules
  117.   fi
  118.   eend $?
  119. }
  120. stop() {
  121.   ebegin "Arrêt du pare-feu"
  122.   $IPTABLES -F
  123.   $IPTABLES -t nat -F
  124.   $IPTABLES -X
  125.   $IPTABLES -P FORWARD ACCEPT
  126.   $IPTABLES -P INPUT   ACCEPT
  127.   $IPTABLES -P OUTPUT  ACCEPT
  128.   eend $?
  129. }
  130. showstatus() {
  131.   ebegin "Statut"
  132.   $IPTABLES -L -n -v --line-numbers
  133.   einfo "Statut NAT"
  134.   $IPTABLES -L -n -v --line-numbers -t nat
  135.   eend $?
  136. }
  137. panic() {
  138.   ebegin "Mise en place des règles de panique"
  139.   $IPTABLES -F
  140.   $IPTABLES -X
  141.   $IPTABLES -t nat -F
  142.   $IPTABLES -P FORWARD DROP
  143.   $IPTABLES -P INPUT   DROP
  144.   $IPTABLES -P OUTPUT  DROP
  145.   $IPTABLES -A INPUT -i lo -j ACCEPT
  146.   $IPTABLES -A OUTPUT -o lo -j ACCEPT
  147.   eend $?
  148. }
  149. save() {
  150.   ebegin "Enregistrement des règles de pare-feu"
  151.   $IPTABLESSAVE > $FIREWALL
  152.   eend $?
  153. }
  154. restore() {
  155.   ebegin "Rétablissement des règles précédentes"
  156.   $IPTABLESRESTORE < $FIREWALL
  157.   eend $?
  158. }
  159. restart() {
  160.   svc_stop; svc_start
  161. }
  162. showoptions() {
  163.   echo "Usage: $0 {start|save|restore|panic|stop|restart|showstatus}"
  164.   echo "start)      Restaure les paramètres s'ils existent, sinon force les règles."
  165.   echo "stop)       Efface toutes les règles et autorise tout accès."
  166.   echo "rules)      Force les paramètres des nouvelles règles."
  167.   echo "save)       Sauve les paramètres dans ${FIREWALL}."
  168.   echo "restore)    Récupère les paramètres depuis ${FIREWALL}."
  169.   echo "showstatus) Affiche le statut."
  170. }


Message édité par matthias le 25-09-2004 à 21:02:13
mood
Publicité
Posté le 25-09-2004 à 21:00:55  profilanswer
 

n°561984
matthias
Posté le 25-09-2004 à 21:23:45  profilanswer
 

je penche pour un pb DNS car immédiatement aprés le boot si je veux me connecter sur un FTP, il bloque sur un pb de résolution d'adresse, si je stop le firewall , check mails puis restart du firewall ça marche .... je comprends pas :(    
 
pour infos  c'est mon routeur qui fait office de serveur DNS.

n°563325
hellice
Posté le 28-09-2004 à 21:16:03  profilanswer
 

Un ptit coup d'ethereal pour voir ce qui passe (ou ce qui ne passe pas) ?
 
Compares devant et derrière ton firewall (si tu peux...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [gentoo] problème script iptable (open)

 

Sujets relatifs
[MandrakeMove] Probleme de lancementProbleme d'acces avec apache 1.3
Enorme probleme!! avec \i386\biosinfo.infmd5sum : problème ?
alsa debian sarge probleme !probleme install drivers radeon 9600
Fedora Core 2 : Problème avec IGP ?!!Probleme avec apt-get
[debian sid]probleme usb depuis 2.6.8.1Probleme pour installer xmms avec rpm?
Plus de sujets relatifs à : [gentoo] problème script iptable (open)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR