[résolu] [iptables] configuration du traffic entrant

configuration du traffic entrant [résolu] [iptables] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 04-03-2009 à 07:58:06    

Bonjour,  
 
je suis en train de mettre en place une passerelle sous linux (debian 5) pour mon reseau entreprise.  
 
eth0 est l'interface locale sur le reseau 192.168.0.0  
eth1 est l'interface connectée au net via la freebox (en mode routeur) sur le reseau 192.168.1.0 avec renvoi du port 80 sur eth1 (pour des raisons pratiques, la freebox est en rotueur car j'ai deja une passerelle sous windows et le temps de faire celle sous linux les postes doivent encore accéder au net)  
 
J'ai lu une bonne dizaine de tutos et une cinquantaine de post sur divers forums mais j'en suis toujours au même point : tout le traffic sortant passe très bien mais impossible d'atteidre mon serveur web depuis l'extérieur (ip du serveur web : 192.168.0.2)  
 
le forward de port est autorisé,
les deux cartes réseaux ont une configuration fixe
 

Code :
  1. eth0
  2. address : 192.168.0.254
  3. netmask : 255.255.255.0
  4. network : 192.168.0.0
  5. broadcast : 192.168.0.255
  6. eth1
  7. address : 192.168.1.10
  8. netmask : 255.255.255.0
  9. network : 192.168.1.0
  10. broadcast : 192.128.1.255
  11. gateway  : 192.168.1.254 # ip de la freebox en interne


 
voici mon fichier de configuration iptables :  
 

Code :
  1. #!/bin/sh
  2. modprobe ip_tables
  3. modprobe iptable_filter
  4. modprobe iptable_nat
  5. ######################################
  6. # REMISE à ZERO des règles de filtrage
  7. ######################################
  8. iptables -F
  9. iptables -X
  10. iptables -t nat -F
  11. iptables -t nat -X
  12. ################################
  13. #on logue tout ce qui est rejete
  14. ################################
  15. iptables -N LOG_DROP
  16. iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
  17. iptables -A LOG_DROP -j DROP
  18. #################################
  19. #on logue tout ce qui est accepte
  20. #################################
  21. iptables -N LOG_ACCEPT
  22. iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : '
  23. iptables -A LOG_ACCEPT -j ACCEPT
  24. #####################################
  25. # Mise en place des régles par défaut
  26. #####################################
  27. iptables -P INPUT DROP
  28. iptables -P OUTPUT DROP
  29. iptables -P FORWARD DROP
  30. #######################################
  31. #on accepte tout ce qui se passe sur lo
  32. #######################################
  33. iptables -A INPUT -i lo -j ACCEPT
  34. iptables -A OUTPUT -o lo -j ACCEPT
  35. ####################################################
  36. #on accepte tout ce qui se passe sur le reseau local
  37. ####################################################
  38. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
  39. iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
  40. iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
  41. ############################
  42. #on accepte les tequetes DNS
  43. ############################
  44. iptables -A INPUT -i eth1 --protocol udp --source-port 53 -j ACCEPT
  45. iptables -A OUTPUT -o eth1 --protocol udp --destination-port 53 -j ACCEPT
  46. iptables -A INPUT -i eth1 --protocol tcp --source-port 53 -j ACCEPT
  47. iptables -A OUTPUT -o eth1 --protocol tcp --destination-port 53 -j ACCEPT
  48. ###########################################
  49. #on accepte tout le traffic LAN -> internet
  50. ###########################################
  51. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
  52. iptables -A FORWARD -o eth0 -i eth1 -j ACCEPT
  53. iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
  54. #######################################################
  55. #on autorise les connexion entrantes sur certains ports
  56. #######################################################
  57. iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2
  58. #pour la ligne precedennte, j'ai aussi essyé de remplacer -i eth1 par -d IP publique de la freebox
  59. #mais toujours pas de traffic entrant
  60. iptables -A FORWARD -i eth1 -o eth0 -p tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  61. iptables -A FORWARD -o eth1 -i eth0 -p tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT
  62. iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
  63. ###########
  64. #protection
  65. ###########
  66. #scanport
  67. iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
  68. #on accepte le ping max 2/seconde
  69. iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  70. iptables -A INPUT  -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  71. iptables -A INPUT  -p icmp -m limit --limit 2/s -j ACCEPT
  72. ##########
  73. #log rejet
  74. ##########
  75. iptables -A FORWARD -j LOG_DROP
  76. iptables -A INPUT -j LOG_DROP
  77. iptables -A OUTPUT -j LOG_DROP


 
 
Je suis presque au bout de ma configuration et la j'avoue que je bloque.  
Votre me sera précieuse.  
 
Julien


Message édité par elchofar le 06-03-2009 à 17:13:09
Reply

Marsh Posté le 04-03-2009 à 07:58:06   

Reply

Marsh Posté le 05-03-2009 à 18:14:18    

Bonjour,
Peux tu poster le résultat des commandes suivantes, plus lisible pour analyser les règles

iptables -L -v -n


iptables -t nat -v -n


systctl net.ipv4.ip_forward


Sinon tes lignes 61 et 62 font que ta chaîne forward accepte tout trafic et ne fait pas ce que tu souhaites réellement.
61 : on accepte tout trafic en transit entrant par eth0 et sortant par eth1
62 : on accepte tout trafic en transit entrant par eth1 et sortant par eth0
vu que tu n'as pas notion de stateful ici, et que ta règle est avant tout le reste, c'est un peu comme si tu avais mis ta politique à ACCEPT sur la chaine FORWARD.

 

En regardant le reste, je ne vois pas pourquoi ça ne marcherait pas si tout le trafic de ta freebox est bien rebalancer vers ton routeur/firewall.
D'où la question : comment as tu configurer ta freebox ?
- en mode routeur simplement ? si oui as tu rediriger des ports vers ton routeur pour que ton routeur recoivent les flux entrant à destination d'un port 80 ?
- en mode modem ? vérifie que c'est bien eth1 l'interface réseau faisant face à internet et non une ppp... je ne me souviens plus comment on configure avec free.
- ton routeur se situe-t-il en zone DMZ de manière à recevoir tous les flux ?


Message édité par o'gure le 05-03-2009 à 18:21:41

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 05-03-2009 à 18:21:29    

Bonjour,
 
voici le résultat des commandes :  
 

iptables -L -v -n


Code :
  1. Chain INPUT (policy DROP 0 packets, 0 bytes)
  2. pkts bytes target     prot opt in     out     source               destination
  3.     0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  4.    23  2302 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0
  5.     0     0 ACCEPT     udp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           udp spt:53
  6.     0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp spt:53
  7.     0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED
  8.     0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 2/sec burst 5
  9.     0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
  10. Chain FORWARD (policy DROP 0 packets, 0 bytes)
  11. pkts bytes target     prot opt in     out     source               destination
  12.     2   112 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0
  13.     0     0 ACCEPT     all  --  eth0   eth1    0.0.0.0/0            0.0.0.0/0
  14.     4   236 ACCEPT     all  --  eth1   eth0    0.0.0.0/0            0.0.0.0/0
  15.     0     0 ACCEPT     tcp  --  eth1   eth0    0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW,ESTABLISHED
  16.     0     0 ACCEPT     tcp  --  eth0   eth1    0.0.0.0/0            0.0.0.0/0           tcp spt:80 state ESTABLISHED
  17.     0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x04 limit: avg 1/sec burst 5
  18.     0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
  19. Chain OUTPUT (policy DROP 0 packets, 0 bytes)
  20. pkts bytes target     prot opt in     out     source               destination
  21.     0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
  22.    19  1644 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.0.0/24
  23.     0     0 ACCEPT     udp  --  *      eth1    0.0.0.0/0            0.0.0.0/0           udp dpt:53
  24.     0     0 ACCEPT     tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0           tcp dpt:53
  25.     0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED
  26.     0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
  27. Chain LOG_ACCEPT (0 references)
  28. pkts bytes target     prot opt in     out     source               destination
  29.     0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `[IPTABLES ACCEPT] : '
  30.     0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0
  31. Chain LOG_DROP (3 references)
  32. pkts bytes target     prot opt in     out     source               destination
  33.     0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `[IPTABLES DROP] : '
  34.     0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0


 

iptables -L -t nat -v -n


Code :
  1. Chain PREROUTING (policy ACCEPT 5425 packets, 792K bytes)
  2. pkts bytes target     prot opt in     out     source               destination
  3.     0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 to:192.168.0.2
  4. Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
  5. pkts bytes target     prot opt in     out     source               destination
  6.     1    64 MASQUERADE  all  --  *      *       192.168.0.0/24       0.0.0.0/0
  7.     0     0 MASQUERADE  all  --  *      eth1    0.0.0.0/0            0.0.0.0/0
  8. Chain OUTPUT (policy ACCEPT 577 packets, 45609 bytes)
  9. pkts bytes target     prot opt in     out     source               destination


 

sysctl net.ipv4.ip_forward


Code :
  1. net.ipv4.ip_forward = 1


 

Reply

Marsh Posté le 05-03-2009 à 18:22:49    

Arf, je ne pensais pas que t'allais répondre si vite :D
J'ai rajouté des commentaires dans mon post, pourrais-tu y jeter un coup d'oeil et répondre aux questions supplémentaires :jap:


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 05-03-2009 à 19:15:49    


J'ai modifié mes règles des lignes que tu m'as indiqué (je commence à mieux comprendre la logique iptables)
 
voici donc les nouvelles lignes
 

Code :
  1. #iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
  2. iptables -A FORWARD -o eth0 -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT


 
pour la config freebox, j'ai essayé en redirigeant juste le 80 sur ma passerelle
mais comme j'ai déjà un serveur qui tourne et que des client s'en servent, je fait mes tests en mettant une machine sur le réseau de eth1 (sortie vers reseau freebox), je ping bien la passerelle mais le forward vers le serveur ne fonctionne pas

Reply

Marsh Posté le 06-03-2009 à 17:12:06    

Bonjour,
 
après quelque déboires sur les syntaxes iptables, j'ai résolu mon probleme, j'ai modifié les règles de routage internet vers le serveur web comme suit :  
 

Code :
  1. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
  2. iptables -A FORWARD -i eth1 -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  3. iptables -A FORWARD -o eth1 -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
  4. iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80


 
Merci  pour ton aide et pour les commandes d'affichage des règles qui mon permis de décoder les règles.
 
Julien

Reply

Marsh Posté le 03-05-2014 à 12:25:12    

Bonjour,
 
Pourquoi précisez la carte ethernet dans vos instructions (eth1 ou eth0). Les règles ne doivent'elles pas s'appliquer partout ?
 
Merci

Reply

Marsh Posté le 03-05-2014 à 13:04:28    

ariden a écrit :

Bonjour,

 

Pourquoi précisez la carte ethernet dans vos instructions (eth1 ou eth0). Les règles ne doivent'elles pas s'appliquer partout ?

 

Merci


Simplement pour refléter la topologie de ton réseau et éviter du spoofing. Selon par où entre le paquet dans le firewall, il va être traité différemment. Un paquet entrant par la porte d'entrée, c'est pas pareil qu'un paquet entrant par la porte de la cuisine :o


Message édité par o'gure le 03-05-2014 à 13:28:01

---------------
Relax. Take a deep breath !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed