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
2Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3pkts bytes target     prot opt in     out     source               destination
43313  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
2Chain new_chain (0 references)
3target     prot opt source               destination

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

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

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

1# iptables -X old_chain
1# iptables -L old_chain
2iptables: 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...
3ACCEPT     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
2Chain INPUT (policy ACCEPT)
3num  target     prot opt source               destination
41    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
2Chain INPUT (policy ACCEPT)
3num  target     prot opt source               destination
41    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
2Chain INPUT (policy ACCEPT)
3num  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
2Chain INPUT (policy ACCEPT)
3num  target     prot opt source               destination
41    DROP       all  --  192.168.1.102        anywhere
1# iptables -D INPUT -s 192.168.1.102 -j DROP
1# iptables -L --line-numbers
2Chain INPUT (policy ACCEPT)
3num  target     prot opt source               destination
41    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Другие опции

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

1# iptables -P chain target

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

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

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

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

1# iptables -F

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

1# iptables -F INPUT

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

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

1# iptables -Z

Пример:

1# iptables -L -v
2Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3pkts bytes target     prot opt in     out     source               destination
425  2352 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
1# iptables -Z
1# iptables -L -v
2Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
3pkts bytes target     prot opt in     out     source               destination
45   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
2iptables: 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> — сохранить определённую таблицу. Подробнее — смотрите тут>>>.

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