====== iptables ======
===== Просмотр =====
Отобразить список правил с номерами строк:
iptables -L -n -v --line-numbers
список правил в цепочке **INPUT**:
iptables -L INPUT -n -v --line-numbers
список правил в таблице **nat**:
iptables -L -n -t nat -v --line-numbers
===== Удаление=====
Удалить третье правило в цепочке **INPUT** (по умолчанию таблица **filter**):
iptables -D INPUT 3
===== Добавление =====
Добавляем правило в цепочку **RH-Firewall-1-INPUT**
iptables -I RH-Firewall-1-INPUT 7 -i eth1 -j ACCEPT
Добавляем правило в конец цепочки:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
===== НАТ =====
Здесь br703 - внешний интерфейс, br3044 - внутренний
iptables -t nat -A POSTROUTING -o br703 -j MASQUERADE
iptables -I FORWARD 1 -i br703 -o br3044 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 2 -i br3044 -o br703 -j ACCEPT
===== Пример =====
**/etc/sysconfig/iptables**
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# AntiDDoS
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Anti-spoofing
-I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
# Anti SYN open connection
-I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
# ICMP
# -A INPUT -p icmp -j ACCEPT
-A INPUT -p icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
-A INPUT -p icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp --icmp-type 12 -j ACCEPT
# SSH
-A INPUT -p tcp -m state --state NEW --dport 46022 -m recent --name BLOCK --set
-A INPUT -p tcp -m state --state NEW --dport 46022 -m recent --name BLOCK --update --seconds 60 --rttl --hitcount 3 -j DROP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 46022 -j ACCEPT
# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
#
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
===== Откат изменений через крон =====
0 16 * * * /bin/cat /etc/sysconfig/iptables.bak > /etc/sysconfig/iptables
1 16 * * * /etc/init.d/iptables reload
#0 18 * * * /sbin/reboot
{{tag> linux iptables }}