Un firewall minimaliste
Le 1 février 2008, à 12:35 par Ulhume...

L'objectif de ce script est de mettre en place une protection minimum très rapidement.

Syntaxe

./firewall etat
etat
start|stop

Scripte

  1. !/bin/sh
  2.  
  3. function start{
  4. # vidage des regles
  5. iptables -F
  6. iptables -X
  7. iptables -t nat -F
  8.  
  9. # chargement des modules kernel necessaires au FTP
  10. /sbin/modprobe ip_nat_ftp
  11. /sbin/modprobe ip_conntrack_ftp
  12.  
  13. # garde les connexions ouvertes
  14. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  15. iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  16.  
  17. # autorise les connexions SSH entrantes
  18. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  19.  
  20. # autorise le ping (décommenter la ligne ci-dessous)
  21. iptables -A INPUT -p icmp -j ACCEPT
  22.  
  23. # autorise les connexions HTTP entrantes
  24. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  25. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  26.  
  27. # autorise les connexions SMTP et POP entrantes
  28. iptables -A INPUT -p tcp --dport 25 -j ACCEPT
  29. iptables -A INPUT -p tcp --dport 993 -j ACCEPT
  30.  
  31. # autorise les connexions Jabber entrantes
  32. iptables -A INPUT -p tcp --dport 5222 -j ACCEPT
  33.  
  34. iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
  35. iptables -A INPUT -p udp --dport 8000 -j ACCEPT
  36.  
  37. iptables -A INPUT -p tcp --dport 21 -j ACCEPT
  38.  
  39. # bloque les connexions entrantes
  40. iptables -P INPUT DROP
  41. iptables -P FORWARD DROP
  42.  
  43. # bloque les connexions sortantes
  44. iptables -P OUTPUT DROP
  45.  
  46. # autorise loopback
  47. iptables -A INPUT -i lo -j ACCEPT
  48. iptables -A OUTPUT -o lo -j ACCEPT
  49.  
  50. iptables -A INPUT -i tun1 -j ACCEPT
  51. iptables -A OUTPUT -o tun1 -j ACCEPT
  52.  
  53. # connexions sortantes autorisees (FTP, DNS, HTTP, HTTPS) pour les mises-a-jour
  54. iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT
  55. iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
  56. iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
  57. iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
  58. iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
  59. iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
  60.  
  61. # connexions SMTP, POP et IMAP sortantes autorisees
  62. iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
  63. iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
  64. iptables -A OUTPUT -p tcp --dport 143 -j ACCEPT
  65.  
  66. # connexions NTP sortantes autorisees
  67. iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
  68. iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
  69.  
  70. # connexions SSH sortantes autorisees
  71. iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
  72. iptables -A OUTPUT -p udp --dport 22 -j ACCEPT
  73.  
  74. # connexions WHOIS sortantes autorisees
  75. iptables -A OUTPUT -p tcp --dport 43 -j ACCEPT
  76.  
  77. # connexions USENET sortantes autorisees
  78. iptables -A OUTPUT -p tcp --dport 119 -j ACCEPT
  79. iptables -A OUTPUT -p tcp --dport 8000 -j ACCEPT
  80. iptables -A OUTPUT -p udp --dport 8000 -j ACCEPT
  81. }
  82.  
  83. function stop {
  84. #!/bin/sh
  85.  
  86. # vidage des regles
  87. iptables -F
  88. iptables -X
  89. iptables -t nat -F
  90.  
  91. # chargement des modules kernel necessaires au FTP
  92. /sbin/modprobe ip_nat_ftp
  93. /sbin/modprobe ip_conntrack_ftp
  94.  
  95. # garde les connexions ouvertes
  96. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  97. iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  98.  
  99. # bloque les connexions entrantes
  100. iptables -P INPUT ACCEPT
  101. iptables -P FORWARD ACCEPT
  102.  
  103. # bloque les connexions sortantes
  104. iptables -P OUTPUT ACCEPT
  105.  
  106. # autorise loopback
  107. iptables -A INPUT -i lo -j ACCEPT
  108. iptables -A OUTPUT -o lo -j ACCEPT
  109. }
  110.  
  111. case "$1" in
  112.     start)
  113.         start_firewall
  114.         ;;
  115.     stop)
  116.         stop_firewall
  117.         ;;
  118.     *)
  119.         gprintf "Usage: $s start|stop|restart|status}\n" $0
  120.         exit 1
  121. esac

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Les derniers bavardages...