iptables
=========================================================================
#!/bin/sh
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#необходим для корректной работы FTP-сервера
/sbin/modprobe ip_conntrack_ftp
#Сбрасываем старые данные и правила
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle
/sbin/iptables -X
/sbin/iptables -X -t nat
/sbin/iptables -X -t mangle
echo Old Rules Flushed
#Устанавливаем правила на DROP по-умолчанию. (Set Default-Drop Policy)
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
#Create New Chain Called BAD_PACKETS
/sbin/iptables -N BAD_PACKETS
#Разрешаем работу локального интерфейса, того самого 127.0.0.1 (Allow The Loopback)
/sbin/iptables -A INPUT -i lo -j ACCEPT
#Jump To BAD_PACKETS
/sbin/iptables -A INPUT -j BAD_PACKETS
#Разрешаем поддерживать открытыми уже установленные соединения (Allow Established Connections)
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем получать данные от DHCP-сервера. (Allow DHCP)
/sbin/iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT
#Разрешаем присоединяться к SSH, при условии, что используется стандартный 22 порт (Allow SSH)
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 22 -j ACCEPT
#Разрешаем сетевую печать на этом компьютере. (Allow net print)
/sbin/iptables -A INPUT -p UDP -i eth0 --dport 631 -j ACCEPT
#Разрешаем webmin на стандартном 10000 порту (Allow webmin)
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 10000 -j ACCEPT
#Allow avahi-daemon
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 5353 -j ACCEPT
#Allow input torrents-client
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 51413 -j ACCEPT
/sbin/iptables -A INPUT -p UDP -i eth0 --dport 51413 -j ACCEPT
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 6881 -j ACCEPT
/sbin/iptables -A INPUT -p UDP -i eth0 --dport 6881 -j ACCEPT
#Allow Samba From Specified Hosts
/sbin/iptables -A INPUT -p TCP -i eth0 --dport 137:139 -j ACCEPT
/sbin/iptables -A INPUT -p UDP -i eth0 --dport 137:139 -j ACCEPT
/sbin/iptables -A INPUT -p TCP -i eth0 --sport 137:139 -j ACCEPT
/sbin/iptables -A INPUT -p UDP -i eth0 --sport 137:139 -j ACCEPT
#Allow CMP Replies From Specified Hosts (Ping)
/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT
#Разрешаем подключаться к SMTP на 587 порт
/sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT
#Log
/sbin/iptables -A INPUT -j LOG --log-prefix "INPUT DROP: "
#Accept Loopback On OUTPUT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
#Разрешаем поддерживать открытыми уже установленные соединения. (Allow Established Connections)
/sbin/iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#Разрешить получать IP по DHCP (Allow DHCP)
/sbin/iptables -A OUTPUT -p UDP --dport 67 --sport 68 -j ACCEPT
#Allow HTTP, FTP, DNS, SSH, SMTP & Port 443 Outbound
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 443 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 22 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 21 -j ACCEPT
#Allow POP, IMAP
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 110 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 143 -j ACCEPT
#Allow IMAPS
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 993 -j ACCEPT
#Allow output ICQ
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 5190 -j ACCEPT
#Разрешить выход на IRC. Allow output IRC
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6667 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6668 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 6669 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 8001 -j ACCEPT
#Allow output CUPS (for printers in net)
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 631 -j ACCEPT
#Allow output avahi-daemon
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 5353 -j ACCEPT
#Allow output NTP (for ntpdate)
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 123 -j ACCEPT
#Allow output Urban Terror (ну это просто необходимость)
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 27960 -j ACCEPT
#Allow specify ports
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2046 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 2050 -j ACCEPT
#Allow Samba From Specified Hosts
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p TCP -o eth0 --dport 445 -j ACCEPT
/sbin/iptables -A OUTPUT -p UDP -o eth0 --dport 445 -j ACCEPT
#Allow ICMP
/sbin/iptables -A OUTPUT -p ICMP -o eth0 --icmp-type 8 -j ACCEPT
#Drop
/sbin/iptables -A OUTPUT -j LOG --log-prefix "OUTPUT DROP: "
/sbin/iptables -A BAD_PACKETS -p TCP ! --syn -m state --state NEW -j DROP
/sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL ALL -j DROP
/sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL NONE -j DROP
/sbin/iptables -A BAD_PACKETS -p TCP --tcp-flags ALL SYN \-m state --state ESTABLISHED -j DROP
/sbin/iptables -A BAD_PACKETS -p ICMP --fragment -j DROP
/sbin/iptables -A BAD_PACKETS -m state --state INVALID -j DROP
/sbin/iptables -A BAD_PACKETS -d 255.255.255.255 -j DROP
/sbin/iptables -A BAD_PACKETS -j RETURN
echo "Rules written."
=============================================================
# iptables -t filter -L
Вывести список всец цепочек правил
# iptables -t nat -L
Вывести все цепочки из NAT таблицы
# iptables -t nat -F
Очистить все цепочки правил в таблице NAT
# iptables -t filter -X
Очистить все пользовательские цепочки правил в таблице filter
# iptables -t filter -F
Очистить все цепочки правил в таблице filter
# iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT
Разрешить входящие соединения с telnet
# iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
Запретить исходящие HTTP соединения
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.
# iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22
Пересылка пакетов, адресованных одному хосту, на другой хост
# iptables -t filter -A INPUT -j LOG --log-prefix
Включить логгирование пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"
# iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT
Разрешить форвардинг POP3 соединений
===============================================
Как удалить в Iptables правило
----------------------------------------------------------------
iptables -L INPUT --line-numbers
iptables -D INPUT номер
iptables -t nat -L POSTROUTING --line-numbers
iptables -t nat -D POSTROUTING номер
-------------------------------------