iptables
Фаерволом в linux является netfilter, а одна из утилит для его настройки - это iptables
Межсетевой экран (firewall, brandmauer) не дает поддельному трафику попасть в сеть, защищает внутреннюю сеть от DDOS-атак и блокирует передачу инфы неизвестному источнику.
Не юзай ufw вместе с iptables
Если уже используется iptables - юзать ufw не стоит (в большинстве случаев), ибо усложняется администрирование сети и сложнее диагностировать ошибки.
+ ufw - обычная обертка над iptables.
Chains
Цепочки iptables (последовательности правил, которые применяются к пакетам):
-
INPUT
Входящие пакеты -
OUTPUT
Исходящие пакеты -
FORWARD
Пакеты, которые были приняты хостом, но ему не предназначены - ему нужно передать дальше, их конечному получателю, например. То есть, пакеты, которые просто идут через данный хост и не предназначены этому хосту.
Такое может быть, если хост является, к примеру, маршрутизатором. -
PREROUTING
Цепочка, в которую пакет попадает перед обработкой iptables, то есть система еще не знает, в какую цепочку попадет пакет -
POSTROUTING
Сюда попадают пакеты, которые прошли все предыдущие цепочки
Механизм взаимодействия с сетью
Естественно, при работе с сетью используется и цепочка INPUT, и цепочка OUTPUT. Банально, утилита ping отправляет пакеты ICMP таргету (исходящий трафик/OUTPUT), но и ответы должен получать извне на эти пакеты (входящий трафик/INPUT). А FORWARD может и вообще не использоваться при взаимодействии с сетью (чаще всего и не используется).
То есть, нельзя просто закрыть цепочку INPUT, чтобы повысить безопасность.
Действия
Действия iptables (которые применяются к пакетам):
- Accept
Разрешает прохождение пакета дальше по цепочке - Drop
Удаляет пакет - Reject
Отклоняет пакет и сообщает об этом отправителю - Log
Делает запись о пакете в log file - Queue
Отправляет пакет пользовательскому приложению
Tables
Таблицы iptables:
- filter
Здесь осуществляется фильтрация пакетов - nat
Обеспечивает трансляцию адресов - mangle
Предназначен для модификации пакетов - raw
Предназначена для работы с сырыми пакетами (которые еще не прошли обработку)
Правила iptables
Состоит из критерия/ев, действий/я и счетчика:
Если пакет удовлетворяет критериям - к нему применяется действие и он учитывается счетчиком.
Если критерий не указан - действие применяется ко всем пакетам.
Если не указаны ни критерии, ни действия - счетчик просто засчитывает этот пакет.
Счетчик считает кол-во пакетов и их размеры.
Практика
Вывод всех правил:
Детализированный вывод всех правил с нумерацией строк:
Вывод правил для конкретной цепочки:
Добавляем правило для блокировки всех входящих/исходящих пакетов с определенного IP адреса:
Блокировка входящих/исходящих пакетов с определенного порта:
Или, например, блокировка ICMP трафика (чтобы хост не отвечал на пинг):
Установка политики по умолчанию для пакетов:
Политика по умолчанию позволяет определить общее поведение фаервола по отношению к пакетам, не попадающим под какие-либо конкретные правила.
В выводе правил цепочки в первой строке как раз будет указана политика:
Chain INPUT (policy ACCEPT)
И вот как раз этой командой можно менять этот policy.
Заблокировать все IP-адреса, кроме 192.168.3.4:
Удаление правила:
Очистка iptables (удаление всех правил):
iptables-persistent
iptables не сохраняет правила после перезагрузки - возвращает всё в дефолтное состояние.
Поэтому есть iptables-persistent:
Сохранение нынешних правил
При установке эта утилита спрашивает, сохранить ли нынешние правила в файл - лучше соглашаться, чтобы потом (вдруг что) можно было восстановить правила с этого файла.
Теперь после добавления какого-то правила в iptables, например:
можно сохранить изменения в файл:
Найти этот файл можно по пути:
Теперь, даже после удаления правила:
можно восстановить всё:
Соусы и доп. материалы:
docker iptables: https://habr.com/ru/articles/473222/
Не работает apt после iptables