Linux: IPTABLES — руководство: часть 2 — управление IPTABLES

Опубликовано:

PTABLES — руководство: часть 1 — основы IPTABLES

IPTABLES — руководство: часть 3 — параметры правил

IPTABLES — руководство: часть 4 — цели для правил

Управление IPTABLES

Просмотр правил

Просмотр текущих правил в таблице filter:

1 # iptables -t filter --list

Тоже самое — для остальных:

1 # iptables -t raw --list
1 # iptables -t nat --list
1 # iptables -t mangle --list

Или с опцией -L:

1 # iptables -t filter -L

Колонки тут:

  • num – номер правила текущей цепочке (см. дальше);
  • target – действие;
  • prot – протокол —  TCP, UDP, ICMP и т.д.;
  • opt – специальные опции для этого правила;
  • source – исходный IP-адрес пакетов;
  • destination –  IP-адрес назначения пакетов.

Далее я буду придерживаться коротких опций, вида -L, вместо длинных вида --list.

Просмотр списка правил и счётчиков:

1 # iptables -L -v
2 Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3 pkts bytes target     prot opt in     out     source               destination
4 3313  199K DROP       all  --  any    any     37.9.53.253          anywhere

Кроме того, -v (verbose) выводит:

— имена интерфейсов для правил;
— заголовки TOS;
— дополнительные опции правила.

verbose так же можно использовать при создании-удалении правил и т.д.

Не переводить IP в имена хостов (FQDN):

1 # iptables -L -n

Выводить номер правила:

1 # iptables -L --line-numbers

Вывести правила только для INPUT, с отображением счётчиков, IP вместо имён хостов, и номерами правил:

1 # iptables -L INPUT -v -n --line-numbers

Просмотреть только список правил:

1 # iptables -S

Пример:

01 # iptables -S
02 -P INPUT ACCEPT
03 -P FORWARD ACCEPT
04 -P OUTPUT ACCEPT
05 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
06 -A INPUT -p icmp -j ACCEPT
07 -A INPUT -i lo -j ACCEPT
08 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
09 -A INPUT -j REJECT --reject-with icmp-host-prohibited
10 -A FORWARD -j REJECT --reject-with icmp-host-prohibited

Управление chains

Создать цепочку:

1 # iptables -N new_chain
1 # iptables -L new_chain
2 Chain new_chain (0 references)
3 target     prot opt source               destination

Переименовать цепочку:

1 # iptables -E new_chain old_chain
1 # iptables -L old_chain
2 Chain old_chain (0 references)
3 target     prot opt source               destination

Удалить цепочку:

1 # iptables -X old_chain
1 # iptables -L old_chain
2 iptables: No chain/target/match by that name.

Управление правилами

Добавить правило:

1 <em># iptables -A chain</em>

Выполнит append к указанной chain, добавляя правило в конец списка. Пример:

1 # iptables -A INPUT -s 192.168.1.102 -j ACCEPT
1 # iptables -L INPUT
2 ...
3 ACCEPT     all  --  192.168.1.102        anywhere

Вставить правило:

1 # iptables -I <em>chain</em> <em>rulenum</em>

Добавит правило в цепочку chain под номером rulenum (если такой номер уже есть — то на его место, а существующее — сдвинется «вниз»). Пример:

1 # iptables -I INPUT 1 -s 192.168.1.102 -j ACCEPT
1 # iptables -L --line-numbers
2 Chain INPUT (policy ACCEPT)
3 num  target     prot opt source               destination
4 1    ACCEPT     all  --  192.168.1.102        anywhere

Заменить правило:

1 # iptables -R chain rulenum

Добавит правило в цепочку chain под номером rulenum (если такой номер уже есть — то на его место, а существующее -будет удалено). Пример:

1 # iptables -R INPUT 1 -s 192.168.1.102 -j DROP
1 # iptables -L --line-numbers
2 Chain INPUT (policy ACCEPT)
3 num  target     prot opt source               destination
4 1    DROP       all  --  192.168.1.102        anywhere

Удалить правило — вариант 1:

1 # iptables -D <em>chain</em> <em>rulenum</em>

Удалит правило в цепочке chain с номером rulenum. Пример:

1 # iptables -D INPUT 1
1 # iptables -L --line-numbers
2 Chain INPUT (policy ACCEPT)
3 num  target     prot opt source               destination

Удалить правило — вариант 2:

1 # iptables -D <em>chain</em> <em>rule</em>

Удалит правило, которое соответствует rule. Пример:

1 # iptables -I INPUT 1 -s 192.168.1.102 -j DROP
1 # iptables -L --line-numbers
2 Chain INPUT (policy ACCEPT)
3 num  target     prot opt source               destination
4 1    DROP       all  --  192.168.1.102        anywhere
1 # iptables -D INPUT -s 192.168.1.102 -j DROP
1 # iptables -L --line-numbers
2 Chain INPUT (policy ACCEPT)
3 num  target     prot opt source               destination
4 1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Другие опции

Изменить правило по-умолчанию:

1 # iptables -P chain target

Например, для INPUT изменить ACCEPT на DROP:

1 # iptables -L
2 Chain INPUT (policy ACCEPT)
1 # iptables -P INPUT DROP
1 # iptables -L
2 Chain INPUT (policy DROP)

(будьте осторожны с этой опцией — можете лишиться доступа к серверу)

Сбросить (удалить) все правила во всех цепочка:

1 # iptables -F

Удалить правила только для цепочки INPUT:

1 # iptables -F INPUT

(будьте осторожны с этой опцией — можете лишиться доступа к серверу)

Обнулить все счётчики во всех правилах:

1 # iptables -Z

Пример:

1 # iptables -L -v
2 Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3 pkts bytes target     prot opt in     out     source               destination
4 25  2352 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
1 # iptables -Z
1 # iptables -L -v
2 Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3 pkts bytes target     prot opt in     out     source               destination
4 5   356 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED

Сохранение и восстановление правил

В CentOS правила хранятся в файле /etc/sysconfig/iptables:

01 # head /etc/sysconfig/iptables
02 # Generated by iptables-save v1.4.7 on Thu Oct 16 18:56:56 2014
03 *filter
04 :INPUT ACCEPT [0:0]
05 :FORWARD ACCEPT [0:0]
06 :OUTPUT ACCEPT [66:27636]
07 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
08 -A INPUT -p icmp -j ACCEPT
09 -A INPUT -i lo -j ACCEPT
10 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
11 -A INPUT -j REJECT --reject-with icmp-host-prohibited

Для сохранения правил — выполните:

1 # service iptables save
2 iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Что бы сохранить правила в отдельный файл — используйте:

1 # iptables-save > /root/iptables_bkp

Что бы восстановить из него:

1 # iptables-restore < /root/iptables_bkp

С помощью опции -c команды iptables-save можно так же сохранить значения счётчиков, а с помощью-t <em>tablename</em> — сохранить определённую таблицу. Подробнее — смотрите тут>>>.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!