[ip tables-linux] passerelle, http, ftp

passerelle, http, ftp [ip tables-linux] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 20-03-2004 à 11:02:50    

Je posséde un pc avec deux interfaces : eth0(interface internet 192.168.50.206)et eth1(interface externe 192.168.0.206). Il fonctionne sous mandrake 9.2 et iptables 1.2.8.
Je cherche à me connecter à un serveur sur le réseau externe à partir du réseau interne. Je pense avoir fixé les bonnes régles mais n'en suis pas sur car je n'arrive ni a accéder au serveur ftp, ni au serveur web tournant sur le même poste.  
 
@ipserveur 192.168.50.208
@ipclient 192.168.0.205
 
Voici le script de flush des tables et régles:
 
 

Code :
  1. #!/bin/sh
  2. #Script de remise à zéro des régles iptables
  3. echo "[flush des regles iptables]"
  4. #Remise des polices par défaut a ACCEPT
  5. iptables -P INPUT ACCEPT
  6. iptables -P FORWARD ACCEPT
  7. iptables -P OUTPUT ACCEPT
  8. #Remise par defaut des polices de la table NAT
  9. iptables -t nat -P PREROUTING ACCEPT
  10. iptables -t nat -P POSTROUTING ACCEPT
  11. iptables -t nat -P OUTPUT ACCEPT
  12. #On vide les régles existantes
  13. iptables -F
  14. iptables -t nat -F
  15. #On efface toutes les régles qui ne sont pas par défaut
  16. #dans les tables filter et nat
  17. iptables -X
  18. iptables -t nat -X
  19. echo "[flush des regles iptables effectue]"


 
 
 
Voici le script des régles http:
 

Code :
  1. #!/bin/sh
  2. #######################################################
  3. #            #
  4. #  Préparation du script        #
  5. #            #
  6. #######################################################
  7. #définition des variables d'environnement
  8. EXT_IF="eth0"
  9. INT_IF="eth1"
  10. AD_PROXY="172.16.1.132:3128"
  11. AD_LAN="192.168.0.0/24"
  12. #activation du forwarding (l'ordinateur fait office de routeur).
  13. echo 1 > /proc/sys/net/ipv4/ip_forward
  14. #Nous allons insérer une petite astuce pour éviter le spoofing
  15. #(technique de piratage).
  16. if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
  17. then
  18.   for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
  19.   do
  20.     echo 1 > $filtre
  21.   done
  22. fi
  23. #puis une petite régle pour éviter les icmp (ping, etc...)
  24. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  25. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  26. # On désactive le routage par la source, les attaquants peuvent
  27. # envoyer des paquets pouvant "provenir" de votre réseau.
  28. # Le routage par la source est rarement utilisé légitimement.
  29. echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
  30. # Désactive la redirection des ICMP, celle-ci peut être utilisée
  31. # pour décrouvrir notre réseau.
  32. for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
  33.    echo 0 > ${interface}
  34. done
  35. # Nous loggons tous les paquets spoofés, routés à  la source
  36. # et redirigés.
  37. /bin/echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
  38. # Nous effaçons toutes les régles (on les flush).
  39. iptables -F
  40. iptables -X
  41. # Ajout de deux nouvelles chaines, nous rajoutons ainsi des
  42. # cibles, nous loggerons les évènements.
  43. # logging du paquet et rejet avec ajout d'une chaine de caractéres
  44. # pour pouvoir nous y retrouver dans les fichiers de log
  45. iptables -N LOG_DROP
  46. iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
  47. iptables -A LOG_DROP -j DROP
  48. # par défaut nous refuserons tous les paquets
  49. iptables -P INPUT DROP
  50. iptables -P OUTPUT DROP
  51. iptables -P FORWARD DROP
  52. # Nous accepterons tout ce qui vient de l'interface
  53. # locale.
  54. iptables -A INPUT  -i lo -j ACCEPT
  55. iptables -A OUTPUT -o lo -j ACCEPT
  56. #########################################################
  57. #       #
  58. # Voila nous avons terminée la préparation,       #
  59. # passons maintenant à  la configuration du        #
  60. # firewall en lui-même.    #
  61. #       #
  62. #########################################################
  63. # Translation d'adresses pour tout ce qui traverse la passerelle
  64. # en sortant par l'interface externe
  65. iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
  66. ## WWW
  67. # On permet le surf sur le port 80
  68. iptables -A INPUT  -i $EXT_IF -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
  69. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  70. # Permission du surf sur le port 443 (https: http sécurisé)
  71. iptables -A INPUT  -i $EXT_IF -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
  72. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  73. ## FTP
  74. # Permet les connexions ftp.
  75. iptables -A INPUT  -i $EXT_IF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
  76. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
  77. # Maintenant le suivi de connexions
  78. # 1) Ftp Activ.
  79. # Ceci comporte un raccordement d'arrivée du port 20 sur la machine distante, à  un port local
  80. # passé au-dessus du canal ftp par l'intermédiaire d'une commande RELATED.  Le module
  81. # ip_conntrack_ftp identifie le raccordement par rapport au raccordement sortant original au
  82. # port 21, ainsi nous n'avons pas besoin de NEW comme état.
  83. iptables -A INPUT  -i $EXT_IF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
  84. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
  85. # 2) Ftp Passif.
  86. iptables -A INPUT  -i $EXT_IF -p tcp --sport 1024: --dport 1024: \
  87.   -m state --state ESTABLISHED -j ACCEPT
  88. iptables -A OUTPUT -o $EXT_IF -p tcp --sport 1024: --dport 1024: \
  89.   -m state --state ESTABLISHED,RELATED -j ACCEPT
  90. # Il est nécessaire de logguer tous les paquets qui n'ont pas passé nos régles
  91. iptables -A FORWARD -j LOG_DROP
  92. iptables -A INPUT -j LOG_DROP
  93. iptables -A OUTPUT -j LOG_DROP


 
Est-ce une erreur de ma part ? Quel est le problème ?
Merci de votre aide :hello:


Message édité par nodus le 20-03-2004 à 11:11:49
Reply

Marsh Posté le 20-03-2004 à 11:02:50   

Reply

Marsh Posté le 20-03-2004 à 11:08:57    

Salut,
 
d'après ce que je comprend de tes règles, tu n'autorises que ce qui rentres et sort de la passerelle ; à aucun moment tu n'autorises quoique ce soit à traverser ta passerelle (chaine FORWARD)


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 20-03-2004 à 11:18:30    

Voici ce que je viens de rajouter dans le fichier de régles, j'en ai profité pour effacer régles contre les pings.
 
 

Code :
  1. iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE


 
Le but est simplement d'avoir une passerelle effectuant du filtrage de paquet, ne permettant que l'accés web et ftp que dans un sens (le dns est il nécessaire ?). Le réseau externe ne doit pas voir le réseau interne mais l'inverse doit etre possible...
Rien de trés dur apparament mais je galére... :cry:


Message édité par nodus le 20-03-2004 à 11:26:17
Reply

Marsh Posté le 20-03-2004 à 11:21:04    

est ce que tu pourrais décrire plus précisément ton réseau parce que je ne comprends rien au plan d'adressage là et aux interfaces


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 20-03-2004 à 11:34:17    

Mjules a écrit :

est ce que tu pourrais décrire plus précisément ton réseau parce que je ne comprends rien au plan d'adressage là et aux interfaces


 
Je ne peut faire un schéma n'ayant pas accés au ftp depuis ce réseau (proxy powered  :fou: ) mais je vais essayer de vous expliquer :
 
serveur                                                   client
192.168.50.208                                          192.168.0.205
(------)                   (----------)                  (-------)
( web  )--------------(passerelle)-------------(            )
( ftp    )              eth0(               ) eth1          (            )
(------)192.168.50.206(----------)192.168.0.206(-------)
 
 
J'espere que ça serait assez clair  :)


Message édité par nodus le 20-03-2004 à 11:36:54
Reply

Marsh Posté le 20-03-2004 à 11:38:08    

ah oui, là, c'est plus clair
 
si tu ajoutes ces 2 lignes là ; tu as accès au web depuis le réseau ?
 
iptables -A FORWARD  -i $EXT_IF -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o $EXT_IF -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 20-03-2004 à 11:47:16    

Mjules a écrit :

ah oui, là, c'est plus clair
 
si tu ajoutes ces 2 lignes là ; tu as accès au web depuis le réseau ?
 
iptables -A FORWARD  -i $EXT_IF -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o $EXT_IF -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT  


 
 
Nop, rien du tout. Est ce que je dois rajouter des entrées dans les tables de routage du firewall ?


Message édité par nodus le 20-03-2004 à 11:47:25
Reply

Marsh Posté le 20-03-2004 à 11:52:33    

Voici ce que me retourne la commande iptables -L :
 

Code :
  1. Chain INPUT (policy DROP)
  2. target     prot opt source               destination       
  3. ACCEPT     all  --  anywhere             anywhere         
  4. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:http state ESTABLISHED
  5. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:https state ESTABLISHED
  6. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:ftp state ESTABLISHED
  7. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:ftp-data state RELATED,ESTABLISHED
  8. ACCEPT     tcp  --  anywhere             anywhere           tcp spts:1024:65535 dpts:1024:65535 state ESTABLISHED
  9. LOG_DROP   all  --  anywhere             anywhere         
  10. Chain FORWARD (policy DROP)
  11. target     prot opt source               destination       
  12. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:http state ESTABLISHED
  13. ACCEPT     tcp  --  anywhere             anywhere           tcp spt:http state NEW,ESTABLISHED
  14. LOG_DROP   all  --  anywhere             anywhere         
  15. Chain OUTPUT (policy DROP)
  16. target     prot opt source               destination       
  17. ACCEPT     all  --  anywhere             anywhere         
  18. ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:http state NEW,ESTABLISHED
  19. ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:https state NEW,ESTABLISHED
  20. ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp state NEW,ESTABLISHED
  21. ACCEPT     tcp  --  anywhere             anywhere           tcp dpt:ftp-data state ESTABLISHED
  22. ACCEPT     tcp  --  anywhere             anywhere           tcp spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
  23. LOG_DROP   all  --  anywhere             anywhere         
  24. Chain LOG_DROP (3 references)
  25. target     prot opt source               destination       
  26. LOG        all  --  anywhere             anywhere           LOG level warning prefix `[IPTABLES DROP] : '
  27. DROP       all  --  anywhere             anywhere

Reply

Marsh Posté le 20-03-2004 à 11:53:01    

Question bête, c'est normal le anywhere ?

Reply

Marsh Posté le 22-03-2004 à 10:51:17    

:bounce:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 22-03-2004 à 10:51:17   

Reply

Marsh Posté le 23-03-2004 à 11:50:50    

:bounce:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 23-03-2004 à 11:55:31    

Si tu utilises kde essaie ce soft : http://kmyfirewall.sourceforge.net/
 
Je pense qu'il va t'aider pour configurer tout ca

Reply

Marsh Posté le 24-03-2004 à 10:22:06    

Merci mais en fait j'aimerais bien comprendre ce qui ne va pas sur le script (je ne cherche pas simplement a faire), si qqn connait la solution :hello:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 24-03-2004 à 11:49:13    

Je crois que avec ces lignes tu log tout mais aussi tu drop tout :
Fait un test sans la dernière ligne...
# logging du paquet et rejet avec ajout d'une chaine de caractères
# pour pouvoir nous y retrouver dans les fichiers de log
   
  iptables -N LOG_DROP
  iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
  iptables -A LOG_DROP -j DROP

Reply

Marsh Posté le 25-03-2004 à 17:17:55    

Je viens de refaire des régles avec :
 

Code :
  1. EXT_IF="eth0"
  2. echo 1 > /proc/sys/net/ipv4/ip_forward
  3. iptables -A INPUT  -i lo -j ACCEPT
  4. iptables -A OUTPUT -o lo -j ACCEPT 
  5. iptables -A INPUT  -i $EXT_IF -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
  6. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
  7. iptables -A INPUT  -i $EXT_IF -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
  8. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
  9. iptables -A INPUT  -i $EXT_IF -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
  10. iptables -A OUTPUT -o $EXT_IF -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
  11. iptables -A INPUT  -i $EXT_IF -p tcp --sport 1024: --dport 1024: \
  12. -m state --state ESTABLISHED -j ACCEPT
  13. iptables -A OUTPUT -o $EXT_IF -p tcp --sport 1024: --dport 1024: \
  14. -m state --state ESTABLISHED,RELATED -j ACCEPT


 
J'execute donc le script de flush des régles, puis le script nouvellement écris.
Aprés divers tests, toujours pas d'accés sur le serveur alors qu'un accés direct marche parfaitement en http et ftp  :(  
 
Voici les pings que j'obtiens (je précise que je peut pinger le firewall et que le serveur a la nouvelle adresse 192.168.50.207) :

ping sur le firewall:

Code :
  1. localhost root # ping 192.168.0.206
  2. PING 192.168.0.206 (192.168.0.206) 56(84) bytes of data.
  3. 64 bytes from 192.168.0.206: icmp_seq=1 ttl=64 time=7.60 ms
  4. 64 bytes from 192.168.0.206: icmp_seq=2 ttl=64 time=0.181 ms
  5. --- 192.168.0.206 ping statistics ---
  6. 2 packets transmitted, 2 received, 0% packet loss, time 1017ms
  7. rtt min/avg/max/mdev = 0.181/3.890/7.600/3.710 ms


 

ping sur le serveur à travers le firewall :

 

Code :
  1. localhost root # ping 192.168.50.207
  2. PING 192.168.50.207 (192.168.50.207) 56(84) bytes of data.
  3. WARNING: failed to install socket filter
  4. : Protocol not available
  5. From 192.168.0.206: icmp_seq=2 Redirect Host(New nexthop: 192.168.50.207)
  6. From 192.168.0.206: icmp_seq=3 Redirect Host(New nexthop: 192.168.50.207)
  7. From 192.168.0.206 icmp_seq=1 Destination Host Unreachable
  8. From 192.168.0.206 icmp_seq=2 Destination Host Unreachable
  9. From 192.168.0.206 icmp_seq=3 Destination Host Unreachable
  10. From 192.168.0.206: icmp_seq=4 Redirect Host(New nexthop: 192.168.50.207)
  11. From 192.168.0.206: icmp_seq=5 Redirect Host(New nexthop: 192.168.50.207)
  12. From 192.168.0.206: icmp_seq=6 Redirect Host(New nexthop: 192.168.50.207)
  13. From 192.168.0.206 icmp_seq=4 Destination Host Unreachable
  14. From 192.168.0.206 icmp_seq=5 Destination Host Unreachable
  15. From 192.168.0.206 icmp_seq=6 Destination Host Unreachable
  16. From 192.168.0.206: icmp_seq=8 Redirect Host(New nexthop: 192.168.50.207)
  17. --- 192.168.50.207 ping statistics ---
  18. 9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 8017ms
  19. , pipe 3


 
 
La distribution n'est rien qu'une mandrake 9.2 de base avec l'option firewall pour avoir iptables. Avez vous une idée ?


Message édité par nodus le 25-03-2004 à 17:18:39

---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 25-03-2004 à 18:38:26    

je répète :  
tu n'as pas de règles forward, ce qui fait que tu droppes tout ce qui passe à travers la passerelle donc forcément une machine derrière ne peut pas avoir accès au web


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 28-03-2004 à 13:34:53    

+1

Reply

Marsh Posté le 28-03-2004 à 15:46:39    

Mjules a écrit :

je répète :  
tu n'as pas de règles forward, ce qui fait que tu droppes tout ce qui passe à travers la passerelle donc forcément une machine derrière ne peut pas avoir accès au web


 
Je les ai rajoutées par la suite mais ça ne marche pas  :cry:


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Sujets relatifs:

Leave a Replay

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