avis sur script firewall

avis sur script firewall - Linux et OS Alternatifs

Marsh Posté le 27-11-2001 à 10:23:19    

Code :
  1. #2001/11/27
  2. #Test firewall with some rules for Candiulb.be
  3. #Server will act as a gateway and host some services : http, ftp, ircd, dns
  4. #Iptables Path
  5. IPTABLES="/sbin/iptables"
  6. ##################################################
  7. ####
  8. #First, we flush everything to avoid duplicate chains#
  9. ######################################################
  10. #
  11. # reset the default policies in the filter table.
  12. #
  13. $IPTABLES -P INPUT ACCEPT
  14. $IPTABLES -P FORWARD ACCEPT
  15. $IPTABLES -P OUTPUT ACCEPT
  16. #
  17. # reset the default policies in the nat table.
  18. #
  19. $IPTABLES -t nat -P PREROUTING ACCEPT
  20. $IPTABLES -t nat -P POSTROUTING ACCEPT
  21. $IPTABLES -t nat -P OUTPUT ACCEPT
  22. #
  23. # flush all the rules in the filter and nat tables.
  24. #
  25. $IPTABLES -F
  26. $IPTABLES -t nat -F
  27. #
  28. # erase all chains that's not default in filter and nat table.
  29. #
  30. $IPTABLES -X
  31. $IPTABLES -t nat -X
  32. #####################################
  33. #Enabling nat for my private network#
  34. #####################################
  35. $IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
  36. echo 1 > /proc/sys/net/ipv4/ip_forward
  37. ######################
  38. #Set Default Policies#
  39. ######################
  40. $IPTABLES -P INPUT DROP
  41. $IPTABLES -P OUTPUT DROP
  42. $IPTABLES -P FORWARD ACCEPT
  43. #######################
  44. #Some trustly services#
  45. #######################
  46. $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT #ftp
  47. $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT #ssh
  48. $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT #imap
  49. $IPTABLES -A INPUT -p tcp --dport 53 -j ACCEPT #domain
  50. $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT #http
  51. $IPTABLES -A INPUT -p tcp --dport 110 -j ACCEPT
  52. #iptables -A INPUT -p tcp --dport 587 -j ACCEPT            ##Vraiment nécessaire ?
  53. $IPTABLES -A INPUT -p tcp --dport 3333 -j ACCEPT #Decnote
  54. $IPTABLES -A INPUT -p tcp --dport 6667 -j ACCEPT #irc
  55. ######################
  56. #Some untrustly ports#
  57. ######################
  58. PORT="137:139 2049 6000:6063 20034 12345:12346 27374 27665 27444 31335 10498 12754 12345:12346 "
  59. $IPTABLES -A INPUT -p tcp --dport $PORT -j DROP
  60. $IPTABLES -A INPUT -p tcp --sport $PORT -j DROP
  61. $IPTABLES -A INPUT -p tcp --dport 113 -j REJECT \
  62.  --reject-with tcp-reset
  63. #######################
  64. #ICMP related security#
  65. #######################
  66. $IPTABLES -N ALLOW_ICMP
  67. $IPTABLES -F ALLOW_ICMP
  68. ## Echo Reply (pong)
  69. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type echo-reply -j ACCEPT
  70. ## Destination Unreachable
  71. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type destination-unreachable \
  72.  -j ACCEPT
  73. ## Accept Pings ##
  74. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type echo-request -j ACCEPT
  75. ## TTL Exceeded (traceroute)
  76. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
  77. ################################
  78. # Reserved/Private IP Addresses#
  79. ################################
  80.    RESERVED_NET="
  81. 0.0.0.0/8 1.0.0.0/8 2.0.0.0/8 \
  82. 5.0.0.0/8 \
  83. 7.0.0.0/8 \
  84.         10.0.0.0/8 \
  85. 23.0.0.0/8 \
  86. 27.0.0.0/8 \
  87. 31.0.0.0/8 \
  88. 36.0.0.0/8 37.0.0.0/8 \
  89. 39.0.0.0/8 \
  90. 41.0.0.0/8 42.0.0.0/8 \
  91. 58.0.0.0/8 59.0.0.0/8 60.0.0.0/8 \
  92. 67.0.0.0/8 68.0.0.0/8 69.0.0.0/8 70.0.0.0/8 71.0.0.0/8 72.0.0.0/8 73.0.0.0/8 \
  93. 74.0.0.0/8 75.0.0.0/8 76.0.0.0/8 77.0.0.0/8 78.0.0.0/8 79.0.0.0/8 \
  94. 82.0.0.0/8 83.0.0.0/8 84.0.0.0/8 85.0.0.0/8 86.0.0.0/8 87.0.0.0/8 \
  95. 88.0.0.0/8 89.0.0.0/8 90.0.0.0/8 91.0.0.0/8 92.0.0.0/8 93.0.0.0/8 94.0.0.0/8 \
  96. 95.0.0.0/8 96.0.0.0/8 97.0.0.0/8 98.0.0.0/8 99.0.0.0/8 100.0.0.0/8 101.0.0.0/8 \
  97. 102.0.0.0/8 103.0.0.0/8 104.0.0.0/8 105.0.0.0/8 106.0.0.0/8 107.0.0.0/8 \
  98. 108.0.0.0/8 109.0.0.0/8 110.0.0.0/8 111.0.0.0/8 112.0.0.0/8 113.0.0.0/8 \
  99. 114.0.0.0/8 115.0.0.0/8 116.0.0.0/8 117.0.0.0/8 118.0.0.0/8 119.0.0.0/8 \
  100. 120.0.0.0/8 121.0.0.0/8 122.0.0.0/8 123.0.0.0/8 124.0.0.0/8 125.0.0.0/8 \
  101. 126.0.0.0/8 127.0.0.0/8 \
  102.         172.16.0.0/12 \
  103.         192.168.0.0/16 \
  104. 197.0.0.0/8 \
  105. 201.0.0.0/8 \
  106. 219.0.0.0/8 220.0.0.0/8 221.0.0.0/8 222.0.0.0/8 223.0.0.0/8 \
  107. 240.0.0.0/8 241.0.0.0/8 242.0.0.0/8 243.0.0.0/8 244.0.0.0/8 245.0.0.0/8 \
  108. 246.0.0.0/8 247.0.0.0/8 248.0.0.0/8 249.0.0.0/8 250.0.0.0/8 251.0.0.0/8 \
  109. 252.0.0.0/8 253.0.0.0/8 254.0.0.0/8 255.0.0.0/8"
  110. for NET in $RESERVED_NET; do
  111.     $IPTABLES -t nat -A PREROUTING -i eth1 -s $NET -j DROP
  112. done
  113. ############
  114. #Some Stuff#
  115. ############
  116. $IPTABLES -A INPUT -i lo -j ACCEPT
  117. #Regle Spéciale portforwarding
  118. $IPTABLES -A PREROUTING -t nat -p tcp -d $EXT_IP --dport 23 \
  119.          -j DNAT --to $EXT_IP:6667
  120. #SNAT
  121. $IPTABLES -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 212.68.*.*  #mask for now


 
J'aimerais avoir votre avis pour ce début de firewall
Je me suis inspiré un peu partout
Est-ce que la section #Some untrustly ports# est nécessaire étant donné que par défaut tout en INPUT est DROP ?
Merci d'avance !

Reply

Marsh Posté le 27-11-2001 à 10:23:19   

Reply

Marsh Posté le 27-11-2001 à 14:22:56    

- met toutes les polices par défaut à DROP (output à la limite en ACCEPT)
tout tes "-j ACCEPT" ne servent à rien, puisque tu acceptes tout par défaut ;) soit tu mets tes polices à DROP par défaut, et que des -j ACCEPT, soit tu mets tes polices à ACCEPT par défaut et tu n'utilises que des -j DROP.  
(dans la plupart des cas)  
(je suis chiant hein! ;)
 
- tu acceptes les pings ? c mieux pas, mais bon...
 
- ça fonctionne ça ??
PORT="137:139 2049 6000:6063 20034 12345:12346 27374 27665 27444 31335 10498 12754 12345:12346 "  
$IPTABLES -A INPUT -p tcp --dport $PORT -j DROP  
...
il faut pas ajouter -m multiport ou qq ch du genre ?
 
- $IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE  
et  
$IPTABLES -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 212.68.*.*  #mask for now
veulent dire la même chose non ? ça masque ton ip interne avec ton ip externe.
sinon, c'est un bon début.

Reply

Marsh Posté le 27-11-2001 à 15:37:29    

Pour les polices, elles étaient déjà à DROP par défaut sauf pour la forward (à ne pas confondre avec les Flushs).
Pour le multiports, je crois que ca doit marcher comme ca.
J'ai résolu le truc de ping je crois
Pour bien faire, que faut-il encore mettre ?
 

Code :
  1. #2001/11/27
  2. #Test firewall with some rules for Candiulb.be
  3. #Server will act as a gateway and host some services : http, ftp, ircd, dns
  4. #Iptables Path
  5. IPTABLES="/sbin/iptables"
  6. ##################################################
  7. ####
  8. #First, we flush everything to avoid duplicate chains#
  9. ######################################################
  10. #
  11. # reset the default policies in the filter table.
  12. #
  13. $IPTABLES -P INPUT ACCEPT
  14. $IPTABLES -P FORWARD ACCEPT
  15. $IPTABLES -P OUTPUT ACCEPT
  16. #
  17. # reset the default policies in the nat table.
  18. #
  19. $IPTABLES -t nat -P PREROUTING ACCEPT
  20. $IPTABLES -t nat -P POSTROUTING ACCEPT
  21. $IPTABLES -t nat -P OUTPUT ACCEPT
  22. #
  23. # flush all the rules in the filter and nat tables.
  24. #
  25. $IPTABLES -F
  26. $IPTABLES -t nat -F
  27. #
  28. # erase all chains that's not default in filter and nat table.
  29. #
  30. $IPTABLES -X
  31. $IPTABLES -t nat -X
  32. #########################Firewall Begin####################
  33. #####################################
  34. #Enabling nat for my private network#
  35. #####################################
  36. $IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
  37. echo 1 > /proc/sys/net/ipv4/ip_forward
  38. ######################
  39. #Set Default Policies#
  40. ######################
  41. $IPTABLES -P INPUT DROP
  42. $IPTABLES -P OUTPUT DROP
  43. $IPTABLES -P FORWARD ACCEPT
  44. #######################
  45. #Some trustly services#
  46. #######################
  47. $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT #ftp
  48. $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT #ssh
  49. $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT #imap
  50. $IPTABLES -A INPUT -p tcp --dport 53 -j ACCEPT #domain
  51. $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT #http
  52. $IPTABLES -A INPUT -p tcp --dport 110 -j ACCEPT
  53. #iptables -A INPUT -p tcp --dport 587 -j ACCEPT  ##Vraiment nécessaire ?
  54. $IPTABLES -A INPUT -p tcp --dport 3333 -j ACCEPT #Decnote
  55. $IPTABLES -A INPUT -p tcp --dport 6667 -j ACCEPT #irc
  56. ######################
  57. #Some untrustly ports#
  58. ######################
  59. U-PORT="137:139 2049 6000:6063 20034 12345:12346 27374 27665 27444 31335 10498 12754 12345:12346"
  60. for PORT in $U-PORT; do
  61.  $IPTABLES -A INPUT -p tcp --dport $PORT -j DROP
  62.  $IPTABLES -A INPUT -p tcp --sport $PORT -j DROP
  63. done
  64. $IPTABLES -A INPUT -p tcp --dport 113 -j REJECT \
  65.  --reject-with tcp-reset
  66. #######################
  67. #ICMP related security#
  68. #######################
  69. $IPTABLES -N ALLOW_ICMP
  70. $IPTABLES -F ALLOW_ICMP
  71. ## Echo Reply (pong)
  72. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type echo-reply -j ACCEPT
  73. ## Destination Unreachable
  74. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type destination-unreachable \
  75.  -j ACCEPT
  76. ## Accept Pings ##
  77. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type echo-request -j ACCEPT
  78. ## TTL Exceeded (traceroute)
  79. $IPTABLES -A ALLOW_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
  80. ## Ping Flood
  81. $IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
  82. $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
  83. ################################
  84. # Reserved/Private IP Addresses#
  85. ################################
  86.    RESERVED_NET="
  87. 0.0.0.0/8 1.0.0.0/8 2.0.0.0/8 \
  88. 5.0.0.0/8 \
  89. 7.0.0.0/8 \
  90.         10.0.0.0/8 \
  91. 23.0.0.0/8 \
  92. 27.0.0.0/8 \
  93. 31.0.0.0/8 \
  94. 36.0.0.0/8 37.0.0.0/8 \
  95. 39.0.0.0/8 \
  96. 41.0.0.0/8 42.0.0.0/8 \
  97. 58.0.0.0/8 59.0.0.0/8 60.0.0.0/8 \
  98. 67.0.0.0/8 68.0.0.0/8 69.0.0.0/8 70.0.0.0/8 71.0.0.0/8 72.0.0.0/8 73.0.0.0/8 \
  99. 74.0.0.0/8 75.0.0.0/8 76.0.0.0/8 77.0.0.0/8 78.0.0.0/8 79.0.0.0/8 \
  100. 82.0.0.0/8 83.0.0.0/8 84.0.0.0/8 85.0.0.0/8 86.0.0.0/8 87.0.0.0/8 \
  101. 88.0.0.0/8 89.0.0.0/8 90.0.0.0/8 91.0.0.0/8 92.0.0.0/8 93.0.0.0/8 94.0.0.0/8 \
  102. 95.0.0.0/8 96.0.0.0/8 97.0.0.0/8 98.0.0.0/8 99.0.0.0/8 100.0.0.0/8 101.0.0.0/8 \
  103. 102.0.0.0/8 103.0.0.0/8 104.0.0.0/8 105.0.0.0/8 106.0.0.0/8 107.0.0.0/8 \
  104. 108.0.0.0/8 109.0.0.0/8 110.0.0.0/8 111.0.0.0/8 112.0.0.0/8 113.0.0.0/8 \
  105. 114.0.0.0/8 115.0.0.0/8 116.0.0.0/8 117.0.0.0/8 118.0.0.0/8 119.0.0.0/8 \
  106. 120.0.0.0/8 121.0.0.0/8 122.0.0.0/8 123.0.0.0/8 124.0.0.0/8 125.0.0.0/8 \
  107. 126.0.0.0/8 127.0.0.0/8 \
  108.         172.16.0.0/12 \
  109.         192.168.0.0/16 \
  110. 197.0.0.0/8 \
  111. 201.0.0.0/8 \
  112. 219.0.0.0/8 220.0.0.0/8 221.0.0.0/8 222.0.0.0/8 223.0.0.0/8 \
  113. 240.0.0.0/8 241.0.0.0/8 242.0.0.0/8 243.0.0.0/8 244.0.0.0/8 245.0.0.0/8 \
  114. 246.0.0.0/8 247.0.0.0/8 248.0.0.0/8 249.0.0.0/8 250.0.0.0/8 251.0.0.0/8 \
  115. 252.0.0.0/8 253.0.0.0/8 254.0.0.0/8 255.0.0.0/8"
  116. for NET in $RESERVED_NET; do
  117.     $IPTABLES -t nat -A PREROUTING -i eth1 -s $NET -j DROP
  118. done
  119. ############
  120. #Some Stuff#
  121. ############
  122. $IPTABLES -A INPUT -i lo -j ACCEPT
  123. #Regle Spéciale portforwarding
  124. $IPTABLES -A PREROUTING -t nat -p tcp -d 212.68.*.* --dport 23 \
  125.          -j DNAT --to 212.68.*.*:6667

Reply

Marsh Posté le 27-11-2001 à 16:00:34    

oups j'avais pas vu que tu les redéclarais ;) (une fois suffit)
 
sinon, il te manque la limitation de forwarding... pour le moment n'importe devrait pouvoir utiliser ton pc comme passerelle pour accéder à ton réseau interne ou même à un autre pc d'internet (me demande pas comment, mazis je l'ai lu)
 
faudrait aussi utiliser ta chaine ALLOW_ICMP (-j ALLOW_ICMP)
pour le moment elle est déclarée mais tu ne t'en serts pas (ou bien j'ai encore mal lu ?)
 
utilisation des états (state : new, relate, established, invalid)
 
activer les options de protections du kernel (syn_coockies, ...)

Reply

Marsh Posté le 27-11-2001 à 17:43:44    

Bon, il va falloir que je potasse un peu pour completer tout celà...
J'ai même tenté d'éditer ton firewall pour l'adapter à mon serveur mais j'y comprends rien ;)
Si jamais t'as un peu de temps à y consacrer, je veux bien que tu édites ce que j'ai déjà modifié au tien (si tu me le permets). Si tu me passes ton adresse mail je peux déjà t'envoyer ce que j'ai fait  :wahoo:  
Entre belges ;)

Reply

Marsh Posté le 27-11-2001 à 17:58:46    

si tu savais le nombre de nuit que j'ai passé là dessus ;)  :sol:  
 
tien v'la en core un beau lien (si tu n'est pas anglophobe)
http://www.cs.princeton.edu/~jns/s [...] tml#CONFIG
il explique le contenu d'un firewall, ça permet de mieux comprendre encore.
 
PS :je t'ai envoyé mon adresse en privé

Reply

Marsh Posté le 27-11-2001 à 18:40:37    

Merci pour ton lien et pour ton email, je regarde tout cà et je t'envoye le feedback ;)
Merci pour tout

Reply

Sujets relatifs:

Leave a Replay

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