четверг, 3 ноября 2011 г.

Настроить iptables за 2 минуты


Короткая инструкция как быстро настроить iptables на сервере.
iptables - командная утилита позволяющая управлять межсетевым экраном netfilter который в свою очередь является достаточно мощным средством управления трафика, контроля состояний TCP/UDP сессий, маркировки трафика и многого другого.


Создадим файл загрузки правил iptables в /etc/init.d/iptables

 #!/bin/sh  
 # Start/stop the firewall  
 #LSBNAMES='-l' # Uncomment for LSB name support in /etc/cron.d/  
 echo 1 > /proc/sys/net/ipv4/ip_forward  
 case "$1" in  
  start) echo -n "Starting firewall: iptables"  
      cat /etc/iptables/rules-save | iptables-restore  
      echo "."  
  ;;  
  stop) echo -n "Stopping firewall: iptables"  
      iptables -F  
      iptables -X  
      echo "."  
  ;;  
  save) echo -n "Saving firewall: iptables"  
      iptables-save > /etc/iptables/rules-save  
      echo "."  
  ;;  
  restart) echo -n "Restarting firewall: iptables"  
      # iptables-save > /etc/iptables/rules-save  
      iptables -X  
      cat /etc/iptables/rules-save | iptables-restore  
      echo "."  
  ;;  
      reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"  
      echo "."  
  ;;  
  *) echo "Usage: /etc/init.d/netfilter start|stop|restart|reload|force-reload"  
      exit 1  
  ;;  
 esac  
 exit 0  


Теперь необходимо создать ссылки на созданный скрипт запуска iptables с помощью команды:


 update-rc.d netfilter defaults  

Создадим файл с правилами /etc/iptables/rules-save
Ниже приведен листинг правил, которые подойдут для веб, ftp, dns  и почтового сервера.

 # cat /etc/iptables/rules-save  
 *filter  
 :INPUT ACCEPT [0:0]  
 :FORWARD ACCEPT [0:0]  
 :OUTPUT ACCEPT [0:0]  
 :Firewall-INPUT - [0:0]  
 -A INPUT -j Firewall-INPUT  
 -A FORWARD -j Firewall-INPUT  
 -A Firewall-INPUT -i lo -j ACCEPT  
 -A Firewall-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT  
 -A Firewall-INPUT -p esp -j ACCEPT  
 -A Firewall-INPUT -p ah -j ACCEPT  
 -A Firewall-INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 143 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 993 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 25 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 110 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 21 -j ACCEPT  
 -A Firewall-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 21 -j ACCEPT  
 -A Firewall-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 53 -j ACCEPT  
 -A Firewall-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT  
 -A Firewall-INPUT -j REJECT --reject-with icmp-host-prohibited  
 COMMIT  

На этом всё. В планах написать серию статей про iptables, как настроить NAT, маркировку трафика QoS, обработку сессий на 7 уровне сетевой модели OSI и многое.
Оставайтесь с блогом сурового ITшника.


Почитать о создании правил iptables можно здесь:
Руководство по iptbales - http://www.opennet.ru/docs/RUS/iptables/
Статья на Wikipedia - http://ru.wikipedia.org/wiki/Iptables
Русскоязычный сайт о iptables http://iptables.ru/
Официальный сайт netfilter http://www.netfilter.org/
Неплохой MAN по iptables http://security.maruhn.com/iptables-manual.html