IPTABLES – руководство: часть 1 – основы IPTABLES
IPTABLES – руководство: часть 3 – параметры правил
IPTABLES – руководство: часть 4 – цели для правил
Содержание
Управление IPTABLES
Просмотр правил
Просмотр текущих правил в таблице filter
:
# iptables -t filter --list
Тоже самое – для остальных:
# iptables -t raw --list
# iptables -t nat --list
# iptables -t mangle --list
Или с опцией -L
:
# iptables -t filter -L
Колонки тут:
num
– номер правила текущей цепочке (см. дальше);target
– действие;prot
– протокол – TCP, UDP, ICMP и т.д.;opt
– специальные опции для этого правила;source
– исходный IP-адрес пакетов;destination
– IP-адрес назначения пакетов.
Далее я буду придерживаться коротких опций, вида -L
, вместо длинных вида --list
.
Просмотр списка правил и счётчиков:
# iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 3313 199K DROP all -- any any 37.9.53.253 anywhere
Кроме того, -v
(verbose
) выводит:
– имена интерфейсов для правил;
– заголовки TOS
;
– дополнительные опции правила.
verbose
так же можно использовать при создании-удалении правил и т.д.
Не переводить IP в имена хостов (FQDN):
# iptables -L -n
Выводить номер правила:
# iptables -L --line-numbers
Вывести правила только для INPUT
, с отображением счётчиков, IP вместо имён хостов, и номерами правил:
# iptables -L INPUT -v -n --line-numbers
Просмотреть только список правил:
# iptables -S
Пример:
# iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited
Управление chains
Создать цепочку:
# iptables -N new_chain
# iptables -L new_chain Chain new_chain (0 references) target prot opt source destination
Переименовать цепочку:
# iptables -E new_chain old_chain
# iptables -L old_chain Chain old_chain (0 references) target prot opt source destination
Удалить цепочку:
# iptables -X old_chain
# iptables -L old_chain iptables: No chain/target/match by that name.
Управление правилами
Добавить правило:
# iptables -A chain
Выполнит append к указанной chain, добавляя правило в конец списка. Пример:
# iptables -A INPUT -s 192.168.1.102 -j ACCEPT
# iptables -L INPUT ... ACCEPT all -- 192.168.1.102 anywhere
Вставить правило:
# iptables -I chain rulenum
Добавит правило в цепочку chain под номером rulenum (если такой номер уже есть – то на его место, а существующее – сдвинется “вниз”). Пример:
# iptables -I INPUT 1 -s 192.168.1.102 -j ACCEPT
# iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 192.168.1.102 anywhere
Заменить правило:
# iptables -R chain rulenum
Добавит правило в цепочку chain под номером rulenum (если такой номер уже есть – то на его место, а существующее -будет удалено). Пример:
# iptables -R INPUT 1 -s 192.168.1.102 -j DROP
# iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 192.168.1.102 anywhere
Удалить правило – вариант 1:
# iptables -D chain rulenum
Удалит правило в цепочке chain с номером rulenum. Пример:
# iptables -D INPUT 1
# iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination
Удалить правило – вариант 2:
# iptables -D chain rule
Удалит правило, которое соответствует rule. Пример:
# iptables -I INPUT 1 -s 192.168.1.102 -j DROP
# iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 192.168.1.102 anywhere
# iptables -D INPUT -s 192.168.1.102 -j DROP
# iptables -L --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Другие опции
Изменить правило по-умолчанию:
# iptables -P chain target
Например, для INPUT
изменить ACCEPT
на DROP
:
# iptables -L Chain INPUT (policy ACCEPT)
# iptables -P INPUT DROP
# iptables -L Chain INPUT (policy DROP)
(будьте осторожны с этой опцией – можете лишиться доступа к серверу)
Сбросить (удалить) все правила во всех цепочка:
# iptables -F
Удалить правила только для цепочки INPUT
:
# iptables -F INPUT
(будьте осторожны с этой опцией – можете лишиться доступа к серверу)
Обнулить все счётчики во всех правилах:
# iptables -Z
Пример:
# iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 25 2352 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
# iptables -Z
# iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 5 356 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
Сохранение и восстановление правил
В CentOS правила хранятся в файле /etc/sysconfig/iptables
:
# head /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Thu Oct 16 18:56:56 2014 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [66:27636] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
Для сохранения правил – выполните:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Что бы сохранить правила в отдельный файл – используйте:
# iptables-save > /root/iptables_bkp
Что бы восстановить из него:
# iptables-restore < /root/iptables_bkp
С помощью опции -c
команды iptables-save
можно так же сохранить значения счётчиков, а с помощью -t tablename
– сохранить определённую таблицу. Подробнее – смотрите тут>>>.