IPTABLES

Принцип настройки

Общий синтаксис использования iptables:

iptables -t <таблица> <команда> <цепочка> [номер] <условие> <действие>

Таблица

Правила netfilter распределены по 4-м таблицам, каждая из которых имеет свое назначение (подробнее ниже). Она указывается ключом -t, но если данный параметр не указан, действие будет выполняться для таблицы по умолчанию — filter.

Команда

Команды указывают, какое именно действие мы совершаем над netfilter, например, создаем или удаляем правило.

Цепочка

В каждой таблице есть цепочки, для каждой из которых создаются сами правила. Например, для вышеупомянутой таблицы filter есть три предопределенные цепочки — INPUT (входящие пакеты), OUTPUT (исходящие) и FORWARD (транзитные).

Номер

Некоторые команды требуют указания номера правила, например, на удаление или редактирование.

Условие

Условие описывает критерии отработки того или иного правила.

Действие

Ну и, собственно, что делаем с пакетом, если он подходит под критерии условия.

Справедливости ради, стоит отметить, что ключ с действием не обязан идти в конце. Просто данный формат чаще всего встречается в инструкциях и упрощает чтение правил.

Ключи iptables и примеры их использования

Для работы с таблицами (iptables -t)

Напоминаю, все правила в netfilter распределены по таблицам. Чтобы работать с конкретной таблицей, необходимо использовать ключ -t.

КлючиОписание
-t filterТаблица по умолчанию. С ней работаем, если упускаем ключ -t. Встроены три цепочки — INPUT (входящие), OUTPUT (исходящие) и FORWARD (проходящие пакеты)
-t natДля пакетов, устанавливающий новое соединение. По умолчанию, встроены три цепочки — PREROUTING (изменение входящих), OUTPUT (изменение локальных пакетов перед отправкой) и POSTROUTING (изменение всех исходящих).
-t mangleДля изменения пакетов. Цепочки — INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING.
-t rawДля создания исключений в слежении за соединениями. Цепочки: PREROUTING, OUTPUT.

Команды

Нижеперечисленные ключи определяют действия, которые выполняет утилита iptables.

КлючОписание и примеры
-AДобавление правила в конец списка:
iptables -A INPUT -s 192.168.0.15 -j DROP
запретить входящие с 192.168.0.15.
-DУдаление правила:
iptables -D INPUT 10
удалить правило в цепочке INPUT с номером 10.
-IВставка правила в определенную часть списка:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
вставить правило 5-м по списку.
-RЗамена правила.
iptables -R OUTPUT 5 -s 192.168.0.15 -j ACCEPT
заменить наше 5-е правило с запрещающего на разрешающее.
-FСброс правил в цепочке.
iptables -F INPUT
-ZОбнуление статистики.
iptables -Z INPUT
-NСоздание цепочки.
iptables -N CHAINNEW
-XУдаление цепочки.
iptables -X CHAINNEW
-PОпределение правила по умолчанию.
iptables -P INPUT DROP
-EПереименовывание цепочки.
iptables -E CHAINNEW CHAINOLD

Условия

Данные ключи определяют условия правила.

КлючОписание и примеры
-pСетевой протокол. Допустимые варианты — TCP, UDP, ICMP или ALL.
iptables -A INPUT -p tcp -j ACCEPT
разрешить все входящие tcp-соединения.
-sАдрес источника — имя хоста, IP-адрес или подсеть в нотации CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
запретить входящие с узла 192.168.0.50
-dАдрес назначения. Принцип использования аналогичен предыдущему ключу -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
запретить исходящие на узел 192.168.0.50
-iСетевой адаптер, через который приходят пакеты (INPUT).
iptables -A INPUT -i eth2 -j DROP
запретить входящие для Ethernet-интерфейса eth2.
-oСетевой адаптер, с которого уходят пакеты (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPT
разрешить исходящие с Ethernet-интерфейса eth3.
–dportПорт назначения.
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
разрешить входящие на порт 80.
–sportПорт источника.
iptables -A INPUT -p tcp –sport 1023 -j DROP
запретить входящие с порта 1023.

Перечисленные ключи также поддерживают конструкцию с использованием знака !. Он инвертирует условие, например:

iptables -A INPUT -s ! 192.168.0.50 -j DROP

запретит соединение всем хостам, кроме 192.168.0.50.

Действия

Действия, которые будут выполняться над пакетом, подходящим под критерии условия. Для каждой таблицы есть свой набор допустимых действий. Указываются с использованием ключа -j.

ТаблицаДействиеОписание
ACCEPTРазрешает пакет.
filterDROPЗапрещает пакет.
REJECTЗапрещает с отправкой сообщения источнику.

Добавление правил

Добавить правило в произвольное место таблицы:

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
Данная команда добавит правило, разрешающее трафик с любого IP-адреса и для любого интерфейса по протоколу TCP b порту 80 на цепочку INPUT.

Добавление правила с комментариями:

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -m comment --comment "allow_http" -j ACCEPT

Добавление правила для нескольких портов:

iptables -I INPUT 4 -s 192.168.2.0/24 -p tcp --match multiport --dports 80,443 -m comment --comment "allow_http_https_from_LAN" -j ACCEPT
Данная команда добавит правило, разрешающее трафик на цепочке INPUT для протокола TCP по портам 80 и 443 с комментарием.

Изменение политики на цепочке

iptables -P INPUT DROP
Команда указывает политику DROP для цепочки INPUT, которая по умолчанию запрещает любой трафик, который явно не разрешен.
main/linux/iptables-manage.txt · Последнее изменение: 2024/10/28 08:52 — davlanas
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0