Давно не работал с iptables, решил освежить знания
Оговорка, ввиду врожденной лени писать описание таблиц и действий не стал
Честно сдул отсюда: https://losst.ru/nastrojka-iptables-dlya-chajnikov
Автору отдельное спасибо, упоминайте источники тех, материал кого использовали
Очень кратко рассмотрим основы бранмауэра iptables
Он встроен в ядро Linux и имеет 3 основные цепочки правил:
INPUT — обрабатывает входящие пакеты
FORWARD — обрабатывает транзитные соединения
OUTPUT — обрабатывает исходящие пакеты
Две дополнительные цепочки:
PREROUTING — обрабатывает пакеты перед обработкой iptables
POSTROUTING — обрабатывает все проходящие пакеты после прохождения цепочки FORWARD
5 таблиц (используются для различных действий над пакетами):
RAW — используется для работы с "сырыми" пакетами(еще не прошедшими обработку)
MANGLE — используется для модификации пакетов
NAT — используется для NAT(когда сервер используетс в качестве маршрутизатора)
FILTER — основная таблица фильтрации пакетов
Возможные варианты действий:
ACCEPT — разрешить прохождение пакета далее по цепочке
DROP — отбросить пакет
REJECT — отбросить пакет, отправить сообщени отправителю об отклонении пакета
LOG — записать запись о пакете в файл лога
Основные действия:
-A — добавить правило в цепочку
-С — проверить все правила
-D — удалить правило
-I — вставить правило с нужным номером
-L — вывести все правила в текущей цепочке
-S — вывести все правила
-F — очистить все правила
-N — создать цепочку
-X — удалить цепочку
-P — установить действие по умолчанию
Дополнительные опции:
-p — указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
-s — указать ip адрес устройства-отправителя пакета
-d — указать ip адрес получателя
-i — входной сетевой интерфейс
-o — исходящий сетевой интерфейс
-j — выбрать действие, если правило подошло
Общий формат правила:
iptables -t <таблица> <действие> <цепочка> <доп_опции>
Установка (варианты для Centos и Debian):
yum install iptables
apt install iptables
Вывести список правил можно так(примеры):
iptables -L
iptables -L INPUT
Пример блокировки определенного ip (входящие и исходящие):
iptables -A INPUT -s 1.1.1.1 -j DROP
iptables -A OUTPUT -s 1.1.1.1 -j DROP
Пример блокировки подсети:
iptables -A INPUT -s 1.1.1.0/24 -j DROP
iptables -A INPUT -s 1.1.1.0/255.255.255.0 -j DROP
Блокировка определенного протокола(ssh) для этой сети:
iptables -A INPUT -p tcp --dport ssh -s 1.1.1.0/24 -j DROP
Примеры вывода првил с номерами, количеством пакетов и байт, ip адресов:
iptables -L
iptables -L INPUT -v
iptables -L INPUT -v --line-numbers
iptables -L INPUT -v -n
Удаление правила (8 - номер правила из вывода iptables -L INPUT -v --line-numbers):
iptables -A INPUT -s 1.1.1.0/24 -j DROP
iptables -L INPUT -v --line-numbers 8 0 0 DROP tcp -- any any 1.1.1.0/24 anywhere tcp dpt:ssh
iptables -D INPUT 8