[firewall Iptables] accés proxy et dns

accés proxy et dns [firewall Iptables] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 26-01-2006 à 16:42:16    

Bonjour ...  
 
Voila je posséde un reseau avec bien entendue un server linux debian stable qui me sert de :
 
Firewall iptable (c'est lui qui et méchant !)
Proxy (Squid + Privoxy) je compte maitre par la suite un clamaV pour scanner le cache du Squid...
SNORT (Intrusion Detection System)
Server DNS Bind9
Server FTP
Server Web
 
Plant du réseau :
 
Routeur Alice box
 
[R1] => [eth1 server eth0] => [Poste client]
 
Server :
eth1 :
ip : 192.168.1.200 mask : 255.255.255.0
pass : 192.168.1.1
dns : 127.0.0.1
 
eth0 :
ip : 10.0.0.1 mask 255.0.0.0
pass : 10.0.0.1
dns : 127.0.0.1
 
et les poste clients :
ip : 10.0.0.xxx mask : 255.0.0.0
pass : 10.0.0.1
dns : 10.0.0.1
 
le poste principale qui permet l'administration du server et le poste 10.0.0.2 (le mien  ;) )
 
Config :
 
squid.conf

Code :
  1. # Define Privoxy as parent proxy (without ICP)
  2. cache_peer 127.0.0.1 parent 8118 7 no-query
  3. # Define ACL for protocol FTP
  4. acl ftp proto FTP
  5. # Forward all the rest to Privoxy
  6. #never_direct allow all
  7. # Do not forward FTP requests to Privoxy
  8. always_direct allow ftp
  9. # Pas d'infos sur ces lignes
  10. hierarchy_stoplist cgi-bin ?
  11. acl QUERY urlpath_regex cgi-bin \?
  12. no_cache deny QUERY
  13. # Taille maximum de mémoire vive utilisée pour stocker du cache
  14. cache_mem 16 MB
  15. # Taille maximum des objets stockés dans le cache
  16. maximum_object_size 15 MB
  17. # Paramétrage du cache N°1 sur le premier disque
  18. # - Type de stockage
  19. # - Emplacement du cache
  20. # - Taille totale du cache en MB
  21. # - Nombre de répertoires de niveau 1 et de niveau 2
  22. cache_dir ufs /var/spool/squid 512 16 256
  23. # Paramétrage du cache N°2 sur le deuxième disque
  24. cache_dir ufs /home/dd2/squid 512 16 256
  25. # Format des logs :
  26. # -> Avec off, squid utilise son propre format de logs,
  27. #    mais la date et l'heure ne sont pas lisible.
  28. # -> Avec on, squid utilise le format standard CLF
  29. emulate_httpd_log off
  30. # Ces deux lignes permettent d'intégrer le plugin SquidGuard
  31. #redirect_program /usr/bin/squidGuard
  32. #redirect_children 4
  33. # Pas d'infos sur ces lignes
  34. refresh_pattern ^ftp:                1440        20%        10080
  35. refresh_pattern ^gopher:        1440        0%        1440
  36. refresh_pattern .                0        20%        4320
  37. # **********************************************************
  38. # ** Définition des restrictions pour l'accès au cache    **
  39. # **********************************************************
  40. # Liste des acl par défaut -> A conserver
  41. acl all src 0.0.0.0/0.0.0.0
  42. acl manager proto cache_object
  43. acl localhost src 127.0.0.1/255.255.255.255
  44. acl to_localhost dst 127.0.0.0/8
  45. acl SSL_ports port 443 563        # https, snews
  46. acl SSL_ports port 873                # rsync
  47. acl Safe_ports port 80                # http
  48. acl Safe_ports port 21                # ftp
  49. acl Safe_ports port 443 563        # https, snews
  50. acl Safe_ports port 70                # gopher
  51. acl Safe_ports port 210                # wais
  52. acl Safe_ports port 1025-65535        # unregistered ports
  53. acl Safe_ports port 280                # http-mgmt
  54. acl Safe_ports port 488                # gss-http
  55. acl Safe_ports port 591                # filemaker
  56. acl Safe_ports port 777                # multiling http
  57. acl Safe_ports port 631                # cups
  58. acl Safe_ports port 873                # rsync
  59. acl Safe_ports port 901                # SWAT
  60. acl purge method PURGE
  61. acl CONNECT method CONNECT
  62. # ACL qui définit le réseau utilisant le cache
  63. acl MonReseau src 10.0.0.0/255.0.0.0
  64. # Accès par défaut -> A conserver
  65. http_access allow manager localhost
  66. http_access deny manager
  67. http_access allow purge localhost
  68. http_access deny purge
  69. http_access deny !Safe_ports
  70. http_access deny CONNECT !SSL_ports
  71. http_access allow localhost
  72. # Donne accès au cache au réseau
  73. http_access allow  MonReseau
  74. # Interdit tout le reste
  75. http_access deny all
  76. # Autorise les réponses pour tout le monde (par défaut)
  77. http_reply_access allow all
  78. # Autorise le protocole icp pour tout le monde (par défaut)
  79. icp_access allow all
  80. coredump_dir /var/spool/squid


 
le fichier de configuration de mon firewall iptables :
 
firewall.sh
 

Code :
  1. #!/bin/sh
  2. # Activation du forwarding
  3. echo 1 > /proc/sys/net/ipv4/ip_forward
  4. # pour empêcher les attaques de type spoofing
  5. # et bloquer les réponses ICMP du firewall,
  6. if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
  7. then
  8. for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
  9. do
  10. echo 1 > $filtre
  11. done
  12. fi
  13. # pas de icmp
  14. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  15. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  16. # chargement de iptables.
  17. modprobe ip_tables
  18. # on va charger quelques modules supplémentaires pour
  19. # gérer la translation d'adresse, l'IRC et le FTP
  20. modprobe ip_nat_ftp
  21. modprobe ip_nat_irc
  22. modprobe iptable_filter
  23. modprobe iptable_nat
  24. # vidages de toutes les règles
  25. iptables -F
  26. iptables -X
  27. # activation des logs
  28. iptables -N LOG_DROP
  29. iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
  30. iptables -A LOG_DROP -j DROP
  31. iptables -N LOG_ACCEPT
  32. iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : '
  33. iptables -A LOG_ACCEPT -j ACCEPT
  34. # ont refuse tout
  35. iptables -P INPUT DROP
  36. iptables -P OUTPUT DROP
  37. iptables -P FORWARD DROP
  38. # Pour éviter les problèmes, on va tout accepter sur
  39. # la machine en local (interface lo).
  40. iptables -A INPUT -i lo -j ACCEPT
  41. iptables -A OUTPUT -o lo -j ACCEPT
  42. echo " [initialisation terminé]"
  43. # autorisation du proxy squid a sortire sur l interface eth1 par le port 80
  44. iptables -A OUTPUT -o eth1 -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT
  45. iptables -A INPUT -i eth1 -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
  46. # proxy soit totalement transparent pour le LAN
  47. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
  48. #==============================================================
  49. #==============================================================
  50. ### activation routage entre eth1 et eth0 ###
  51. iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
  52. ### acceptation des connection ssh port 22 de la machine 10.0.0.2 ###
  53. iptables -A INPUT -i eth0 -s 10.0.0.2 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT
  54. iptables -A OUTPUT -o eth0 -d 10.0.0.2 -m state --state ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT
  55. ### acceptation du dns ###
  56. iptables -A INPUT -i eth0 --protocol udp --source-port 53 -j ACCEPT
  57. iptables -A OUTPUT -o eth0 --protocol udp --destination-port 53 -j ACCEPT
  58. iptables -A INPUT -i eth0 --protocol tcp --source-port 53 -j ACCEPT
  59. iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 53 -j ACCEPT
  60. ### acceptation de Edonkey2000 sur 10.0.0.2 ###
  61. iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 3404 -j DNAT --to 10.0.0.2:3404
  62. iptables -A PREROUTING -t nat -i eth1 -p udp --dport 3403 -j DNAT --to 10.0.0.2:3403
  63. iptables -A INPUT -p udp -m state --state NEW --dport 3403 -i eth1 -j ACCEPT
  64. iptables -A INPUT -p tcp -m state --state NEW --dport 3404 -i eth1 -j ACCEPT
  65. #==============================================================
  66. #==============================================================
  67. # ont accpete les connection du eth0(reseau) vers le eth1(internet)
  68. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
  69. iptables -A FORWARD -o eth0 -i eth1 -j ACCEPT
  70. # permettre à l'ensemble du LAN de dialoguer sur internet avec la même adresse IP sinon, bien
  71. iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE
  72. # Toutes les règles qui n'ont pas passé les
  73. # règles du firewall seront refusées et loguées...
  74. iptables -A FORWARD -j LOG_DROP
  75. iptables -A INPUT -j LOG_DROP
  76. iptables -A OUTPUT -j LOG_DROP
  77. echo " [Termine]"


 
le fichier qui me permet de suprimer le firewall iptables :
desac_firewall.sh

Code :
  1. #!/bin/sh
  2. # On remet la police par défaut à ACCEPT
  3. iptables -P INPUT ACCEPT
  4. iptables -P FORWARD ACCEPT
  5. iptables -P OUTPUT ACCEPT
  6. # On remet les polices par défaut pour la table NAT
  7. iptables -t nat -P PREROUTING ACCEPT
  8. iptables -t nat -P POSTROUTING ACCEPT
  9. iptables -t nat -P OUTPUT ACCEPT
  10. # On vide (flush) toutes les règles existantes
  11. iptables -F
  12. iptables -t nat -F
  13. # On efface toutes les chaînes qui ne sont pas à defaut dans la table filter et nat
  14. iptables -X
  15. iptables -t nat -X
  16. echo " [termine]"


 
et mon fichier de configuration par default de mon iptables :
default.sh

Code :
  1. #!/bin/sh
  2. ### acceptation de Edonkey2000 sur 10.0.0.2 ###
  3. iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 3404 -j DNAT --to 10.0.0.2:3404
  4. iptables -A PREROUTING -t nat -i eth1 -p udp --dport 3403 -j DNAT --to 10.0.0.2:3403
  5. iptables -A INPUT -p udp -m state --state NEW --dport 3403 -i eth1 -j ACCEPT
  6. iptables -A INPUT -p tcp -m state --state NEW --dport 3404 -i eth1 -j ACCEPT
  7. ### activation routage entre eth1 et eth0 ###
  8. iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE


 
 

  • Quand je désactive le firewall iptables et que je lance mon fichier de comfiguration "default.sh" tout se passe bien ,j'ai bien le proxy 10.0.0.1:3128 etc ...


  • Quand le lance le firewall Iptables "Firewall.sh" je n'ai plus de dns ainsi que de proxy que ce soit transparent ou non... mais je posséde toujour la connection vue que la radio de winamp marche toujour etc ... je ne posséde juste plus de proxy ni de dns ...


Je pence que dans mon fichier "Firewall.sh" je doit avoir 2 erreur :
 

  • 1. sur le DNS
  • 2. sur le proxy trensparent


Je ne suis pas une téte en iptables ... je suis aussi a la recherche de bonne documentation sur iptables sur le NAT .
 
Si vous avez des idée ...


Message édité par watcher le 26-01-2006 à 18:19:06
Reply

Marsh Posté le 26-01-2006 à 16:42:16   

Reply

Marsh Posté le 27-01-2006 à 13:47:54    

Personne peut m'aidez .... ? ....  :??:  

Reply

Marsh Posté le 27-01-2006 à 14:55:57    

1. Je pense qu'il faudrait également autoriser ton DNS à sortir sur internet pour faire ses requêtes (si tu ne t'en sers pas exclusivement comme DNS interne)
 
2. Qu'est ce qui se passe quand tu fais une requète http quand ton script de firewall est activé? (tu as une page d'erreur du proxy ou erreur 404)


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Sujets relatifs:

Leave a Replay

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