Debian Ubuntu iptables настройка

 Для настройки правил iptables существуют различные виды таблиц:
Mangle –для изменения заголовков пакетов
Nat – необходима для настройки трансляции сетевых адресов.
Filter – в данной таблице указываются правила для фильтрации трафика. Данная таблица задействована по умолчанию.
Для настройки маршрутизации пакетов используем таблицу Filter
В таблицах присутствуют цепочки и действия.
основные цепочки:
FORWARD - для проходящих через данную машину пакетов.
OUTPUT – цепочка для исходящих пакетов.
INPUT – цепочка для входящих пакетов
действия:
ACCEPT – пакет пропускается
DROP – пакет не пропускается
REJECT – отклонение пакета с уведомлением отправителю
iptables [-t table] command [match] [target/jump]
Добавление правила:
iptables -A INPUT rule_name

В данном случае правило добавляется в цепочку для входящих пакетов таблицы Filter

ключи:
-p, --protocol
Указывается тип протокола из /etc/protocols
Примеры:
iptables -A INPUT -p tcp
iptables -A INPUT -p udp


-s, --source
IP-адрес(а) источника пакета
Примеры:
iptables -A INPUT -s 192.168.100.1
iptables -A INPUT -s 192.168.100.0/100  #диапазон адресов


-d,  --destination
IP-адрес(а) получателя
Примеры:
iptables -A INPUT -d 192.168.200.1
iptables -A INPUT -d 192.168.200.0/100  #диапазон адресов


-i, --in-interface
Интерфейс с которого был получен пакет
Пример:
iptables -A INPUT -i eth0

-o, --out-interface
Интерфейс с которого пакет отправлен
Пример
iptables -A OUTPUT -o eth0

--sport, --source-port
Порт с которого был отправлен пакет
Пример
iptables -A INPUT -p tcp --sport 80

--dport, --destination-port
Порт на который адресован пакет
Пример:
iptables -A INPUT -p tcp --dport 22

--tcp-flags
tcp флаги которые следует проверить и  флаги которые должны быть установлены
Пример
iptables -p tcp --tcp-flags SYN,FIN,ACK SYN

--syn
аналогичен --tcp-flags SYN,ACK,FIN SYN и поэтому для установки правила используется с протоколом tcp
Пример
iptables -p tcp –syn

--state
iptables -A INPUT -m state --state NEW,ESTABLISHED
Проверяется состояние соединения:
NEW – пакеты инициирующие новое соединение
ESTABLISHED – пакеты, принадлежащие к уже установленному соединению
INVALID – пакет связан с неизвестным соединением или содержит ошибку в заголовке
RELATED – пакет принадлежит к существующему соединению, но при этом открывает новое соединение.

Примеры правил:
Открываем 80 порт
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Разрешение входящих пакетов для loopback адаптер:
# iptables -A INPUT -i lo -j ACCEPT
Разрешаем трафик с  IP адреса 192.168.1.99
# iptables -A INPUT -p tcp –source 192.168.1.99 -j ACCEPT

Проверка правил
iptables -L -n –V

Для многократного использования настроек iptables необходимо поместить их в скрипт.
Пример скрипта:
#!/bin/bash

#Сбрасываем текущие настройки iptables
/sbin/iptables –F

#Политики маршрутизации по умолчанию
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT

#Разрешение на трафик через loopback адаптер
/sbin/iptables -A INPUT -i lo -j ACCEPT

#Разрешение пакетам создающим новые tcp и udp соединения
/sbin/iptables -A INPUT -p tcp -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p udp -m state –state RELATED,ESTABLISHED -j ACCEPT

#Открываем необходимые порты
/sbin/iptables -A INPUT -i eth0 -p tcp –dport 21 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp –dport 443 -j ACCEPT



Для запуска скрипта с настройками iptables при старте системы помещаем его в /etc/network/if-up.d/

Даем права на выполнение:
# chmod +x /etc/network/if-up.d/iptables

Дополнительная информация