Инфа по IPTABLES:
iptables -L Iptables -L --line-numbers # посмотреть правила с нумерацией строк
3 цепочки IPTABLES:
INPUT - входящий траффик
FORWARD - транзитный траффик
OUTPUT - исходящий траффик
Установка базовой политики IPTABLES (POLICY):
Политика - это базовое правило по умолчанию, которое работает, если других правил нет.
iptables INPUT -P ACCEPT # разрешить весь входящий траффик iptables INPUT -P DROP # запретить весь входящий траффик iptables OUTPUT -P ACCEPT # разрешить весь исходящий траффик iptables FORWARD -P DROP # запретить весь транзитный траффик
Удаление правил в IPTABLES - FLUSH:
Если в политике входящих/исходящих пакетов не прописано ALLOW, сервер вышибет из SSH сессии после этой команды.
iptables -F # убить вообще все правила, кроме базовых политик
Добавление (APPEND) правил в IPTABLES:
По интерфейсам:
iptables -A INPUT -i lo -j ACCEPT # разрешить пакеты на входе в loopback интерфейс iptables -A INPUT -i eth0 -j ACCEPT # разрешить пакеты на входе eth0 iptables -A INPUT -i ppp0 -j ACCEPT # разрешить пакеты на входе по модемному соединению
По статусу пакетов:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # подгрузить модуль (-m) инспекции пакетов, разрешить пакеты на вход лишь со статусами ESTABLISHED и RELATED из уже установленных сессий. К новым пакетам (статус NEW) правило не применяется.
По портам:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # разрешить порт SSH, dport = "destination port", sport = "source port" iptables -A INPUT -p tcp --dport 6881:6890 -j ACCEPT # разрешить группу TCP портов с 6881 по 6890
По IP адресам, подсетям, MAC-адресам:
iptables -A INPUT -s 192.168.0.4 -j ACCEPT # разрешить пакеты с одного IP iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # разрешить пакеты из подсети iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT # разрешить пакеты из подсети iptables -A INPUT -s 192.168.0.4 -m mac --mac-source 00:50:8D:FD:E6:32 -j ACCEPT # фильтр по IP и по MAC
Комбинирование правил:
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT # разрешить SSH только с выбранной подсети IP
Удаление правил:
iptables -D <chain-name> <line-number> | <rule> # удалить правило с цепочке по номеру строки или правилу (правило должно четко соответствовать существующему)
Применение и сохранение правил в IPTABLES:
sudo ./sbin/service iptables save