iptables і Netfilter
Коротко: Netfilter — каркас фільтрації пакетів у ядрі Linux, iptables — класичний інструмент для написання для нього правил.
Докладніше: Кожен пакет проходить через хуки в ядрі. Правила в таблицях і ланцюжках вирішують, прийняти його, відкинути чи переписати. Наступник називається nftables.
Подробиці
- Таблиці:
filter(дозволити/заборонити),nat(переписати адреси),mangle(змінювати пакети). - Ланцюжки:
INPUT(на цю машину),OUTPUT(з неї),FORWARD(транзитні), а такожPREROUTINGіPOSTROUTING. - Правило: Умова плюс ціль, наприклад
-p tcp --dport 22 -j ACCEPT. Перемагає перше підхожене правило, інакше діє типова політика ланцюжка. - Відстеження з’єднань:
-m conntrack --ctstate ESTABLISHED,RELATEDдозволяє відповіді на власні з’єднання. - Застосування: Домашні маршрутизатори, міжмережеві екрани серверів, Docker (створює власні правила), проброс портів.
- Сьогодні: Нові системи використовують nftables або оболонки на кшталт ufw і firewalld. Див. NAT.
Див. також: fail2ban