regles iptables

regles iptables - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 18-10-2007 à 15:26:17    

Bonjour,
 
Je dois mettre en place un petit firewall sous iptables pr mon reseau local.
J'explique brièvement mes interfaces :
eth0 => chaine wan
La classe d’@IP 192.168.0.0/24 correspond au LAN sur l’interface eth1 => chaine lan
La classe d’@IP 192.168.1.0 correspond à la DMZ sur l’interface eth2 => chaine dmz
 
J'ai installé un squid en tant que proxy qui fonctionne si l'on active le "masquerading" mais dès que j'active mes règles, impossible de se connecter depuis le LAN, en passant ou pas par le proxy.
En me documentant un peu j'ai vu que ça pouvait venir du dns mais il me semble que ds mes règles (entre les chaines) il devrait passer....
enfin là je coince...
 
Voici mon script :

Code :
  1. #!/bin/sh
  2. # Script Iptables
  3. # Cree le 15/10/07 by Drik
  4. # Activation du forwarding
  5. echo 1 > /proc/sys/net/ipv4/ip_forward
  6. # Chargement du module ip_tables
  7. modprobe ip_tables
  8. # chargement de modules supplementaires
  9. modprobe iptable_filter
  10. modprobe iptable_nat
  11. modprobe iptable_mangle
  12. # On vide ttes les tables par defaut
  13. iptables -F
  14. iptables -t nat -F
  15. iptables -t mangle -F
  16. iptables -X
  17. echo - Vidage des tables : [OK]
  18. # Politique par defaut
  19. iptables -P INPUT DROP
  20. iptables -P OUTPUT DROP
  21. iptables -P FORWARD DROP
  22. echo - TT REFUSER PAR DEFAUT : [OK]
  23. # Creation chaines
  24. iptables -N lan-wan
  25. iptables -N lan-dmz
  26. iptables -N lan-fw
  27. iptables -N dmz-wan
  28. iptables -N dmz-lan
  29. iptables -N dmz-fw
  30. iptables -N wan-dmz
  31. iptables -N wan-fw
  32. echo - Creation des chaines : [OK]
  33. # ETATS en INPUT
  34. # On accepte les connexions venant de lo
  35. iptables -A INPUT   -i lo -j ACCEPT
  36. # Et si la connexion est etablie ESTABLISHED ou assimilable a une connexion etablie RELATED
  37. iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
  38. # Si l'etat de la connexion est INVALID, on ignore le paquet
  39. iptables -A INPUT   -m state --state INVALID -j DROP
  40. # Toute communication TCP doit commencer par un paquet comportant le flag SYN et uniquement celui-ci, si ce n'est pas le cas, on rejette la connexion
  41. iptables -A INPUT   -m state --state NEW -p TCP --tcp-flags ! ALL SYN -j DROP
  42. # Enfin, on trie les connexions entrantes selon les interfaces
  43. iptables -A INPUT   -i eth0 -j wan-fw
  44. iptables -A INPUT   -i eth2 -j dmz-fw
  45. iptables -A INPUT   -j DROP
  46. echo - Refuser les connexions entrantes en INPUT : [OK]
  47. # LOGS de ces ETATS
  48. iptables -A INPUT   -m limit --limit 3/s -j LOG --log-prefix "Bad INPUT: "
  49. iptables -A INPUT   -p TCP --tcp-flags ! ALL SYN -m state --state NEW -m limit --limit 3/s -j LOG --log-prefix "INPUT TCP sans SYN: "
  50. echo - Log des Etats en INPUT : [OK]
  51. # ETATS et LOG en FORWARD
  52. iptables -A FORWARD -m state --state INVALID -m limit --limit 3/s -j LOG --log-prefix "INVALID FORWARD: "
  53. iptables -A FORWARD -m state --state INVALID -j DROP
  54. iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  55. iptables -A FORWARD -p TCP --tcp-flags ! ALL SYN -m state --state NEW -m limit --limit 3/s -j LOG --log-prefix "FORWARD TCP sans SYN: "
  56. iptables -A FORWARD -p TCP --tcp-flags ! ALL SYN -m state --state NEW -j DROP
  57. iptables -A FORWARD -i eth2 -o eth0 -j dmz-wan
  58. iptables -A FORWARD -i eth2 -o eth1 -j dmz-lan
  59. iptables -A FORWARD -i eth0 -o eth2 -j wan-dmz
  60. iptables -A FORWARD -i eth1 -o eth2 -j lan-dmz
  61. iptables -A FORWARD -j LOG -m limit --limit 3/s --log-prefix "BAD FORWARD "
  62. iptables -A FORWARD -j DROP
  63. echo - Refuser le FORWARD pr certaines chaines : [OK]
  64. # ETATS EN OUTPUT
  65. iptables -A OUTPUT -j ACCEPT
  66. echo - Autoriser OUTPUT a sortir : [OK]
  67. # REGLES DE FILTRAGE
  68. # LAN
  69. iptables -A lan-wan -j ACCEPT
  70. iptables -A lan-fw -j ACCEPT
  71. echo - Autoriser le lan a sortir : [OK]
  72. # DMZ
  73. iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport http -j ACCEPT
  74. iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport https -j ACCEPT
  75. iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport ssh -j ACCEPT
  76. echo - Autoriser 22,80,443 a partir du LAN sur 192.168.1.1 - DMZ : [OK]
  77. iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport http -j ACCEPT
  78. iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport https -j ACCEPT
  79. iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport ssh -j ACCEPT
  80. echo - Autoriser 22,80,443 a partir du WAN  sur 192.168.1.1 - DMZ : [OK]
  81. iptables -A dmz-wan -p TCP -s 192.168.1.1 --dport http -j ACCEPT
  82. iptables -A dmz-wan -p TCP -s 192.168.1.1 --dport https -j ACCEPT
  83. iptables -A dmz-wan -p TCP --dport 53 -j ACCEPT
  84. iptables -A dmz-wan -p UDP --dport 53 -j ACCEPT
  85. echo - Autoriser la DMZ a sortir sur 80,443 et 53 : [OK]
  86. # MASQUERADE
  87. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  88. # NAT DMZ
  89. iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport http --to-destination 192.168.1.1
  90. iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport https --to-destination 192.168.1.1
  91. iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport ssh --to-destination 192.168.1.1
  92. # PROXY TRANSPARENT
  93. iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
  94. echo - PROXY TRANSPARENT sur 80 : [OK]


 
 
Je vous remercie.

Reply

Marsh Posté le 18-10-2007 à 15:26:17   

Reply

Marsh Posté le 18-10-2007 à 17:02:33    

manque pas un iptables -A INPUT   -i eth1 -j lan-fw  
 
?? car il y a rien qui va dans lan-fw puisqu'il n'y a pas de règle

Reply

Marsh Posté le 18-10-2007 à 19:26:45    

Je@nb a écrit :

manque pas un iptables -A INPUT   -i eth1 -j lan-fw  
 
?? car il y a rien qui va dans lan-fw puisqu'il n'y a pas de règle


 
En gros, tu me conseilles de rajouter ceci ?
 

Code :
  1. iptables -A INPUT   -i eth1 -j lan-wan
  2. iptables -A INPUT   -i eth1 -j lan-fw
  3. iptables -A INPUT   -j ACCEPT


 
La question que je me posais était : est ce que le fait de créer ces regles n'annulent pas celles que j'ai créées aussi en INPUT ms qui st en DROP ??

Reply

Marsh Posté le 19-10-2007 à 12:44:40    

drik a écrit :


 
En gros, tu me conseilles de rajouter ceci ?
 

Code :
  1. iptables -A INPUT   -i eth1 -j lan-wan
  2. iptables -A INPUT   -i eth1 -j lan-fw
  3. iptables -A INPUT   -j ACCEPT


 
La question que je me posais était : est ce que le fait de créer ces regles n'annulent pas celles que j'ai créées aussi en INPUT ms qui st en DROP ??


 
Je viens de rajouter ces lignes.....marche tjrs pas...
J'ai testé aussi avec ces lignes :
 

Code :
  1. iptables -A lan-wan -p TCP --dport 53 -j ACCEPT
  2. iptables -A lan-wan -p UDP --dport 53 -j ACCEPT


 
 
Tjrs pas d'Internet à partir du LAN ....????

Reply

Marsh Posté le 20-10-2007 à 21:12:29    

Je comprend pas trop ta démarche, tu semble débuter (mais je me trompe peut être) avec Netfilter, pourquoi n'essayes tu pas de creer ton propre firewall ? Tu commences en  n'acceptant rien, et ensuite tu ouvres petit a petit (mais avec des regles simples).
 
Concernant tes deux derniere règle c'est juste pour que le lan puisse faire une requete dns (port 53).

Message cité 1 fois
Message édité par kenshln le 20-10-2007 à 21:13:31
Reply

Marsh Posté le 22-10-2007 à 14:52:38    

kenshln a écrit :

Je comprend pas trop ta démarche, tu semble débuter (mais je me trompe peut être) avec Netfilter, pourquoi n'essayes tu pas de creer ton propre firewall ? Tu commences en  n'acceptant rien, et ensuite tu ouvres petit a petit (mais avec des regles simples).
 
Concernant tes deux derniere règle c'est juste pour que le lan puisse faire une requete dns (port 53).


 
 
Pr répondre à ta remarque, mon idée générale est de créer des chaines comme je l'ai fait au début pour pouvoir ensuite créer des règles en me basant dessus.
Il est vrai qu'il y a pas mal de règles qui concernent ici la DMZ ou des logs sur les paquets sans SYN ou autres ms j'ai essayé comme tu l'a dit en premier de créer mes chaines, d'interdire tt par defaut et autoriser au fur et à mesure.
Je ne pense pas vouloir faire un script super compliqué et mes règles me paraissent simples...ms je pense que mon erreur vient de mes chaines en INPUT ... arretez moi si je me trompe !!!
 
Comme tu dis, je peux très bien créer un autre script avec des règles très basiques, je peux aussi utiliser shorewall et pas m'emmerder avec tt ça c'est sûr, mais le but de mon post c'est de faire marcher ceci et pas de tt recommencer...
Pouvez-vous m'éclairer ??? ;)

Reply

Sujets relatifs:

Leave a Replay

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