🔥 Iptables: который решает, кому стучаться в ваш сервер
Кратко: Iptables — это интерфейс командной строки для управления сетевым экраном в Linux. Представьте ваш сервер как многоквартирный дом. Iptables — это строгий консьерж, который проверяет каждого: у кого есть приглашение — проходит, кто похож на вора — получает дверью по носу. Именно этот инструмент с 1998 года защищает миллионы серверов по всему миру.
▫️Как устроен Iptables: «Таблицы», «Цепочки» и «Правила» Таблицы — разделы по функциональности: · filter (по умолчанию): Главная таблица для фильтрации. Здесь решается: пропустить (ACCEPT) или заблокировать (DROP). · nat: Магия подмены IP-адресов (NAT), чтобы ваш сервер выходил в интернет. · mangle: Для специфических изменений пакетов. Цепочки — точки, в которых правила вступают в бой. В таблице filter их три: · INPUT: Трафик, который приходит на сам сервер. · OUTPUT: Трафик, который исходит от самого сервера. · FORWARD: Трафик, который сервер пропускает через себя (как роутер).
Путь пакета: Пришёл → PREROUTING → Маршрутизация → INPUT (для сервера) или FORWARD (транзитом) → POSTROUTING → Ушёл.
▫️Базовые команды Стандарт синтаксиса: iptables -t [таблица] -[команда] [цепочка] [условие] -j [действие]. Команды: · -A (Append): Добавить правило в конец. · -I (Insert): Вставить правило в начало. · -L (List): Посмотреть правила. · -D (Delete): Удалить правило. · -P (Policy): Установить политику по умолчанию. Действия (Targets): · ACCEPT: Пропустить. · DROP: Удалить тихо (без ответа). Это стандарт безопасности, чтобы враг не понял, жив ли сервер. · REJECT: Отклонить с ошибкой.
▫️Живые примеры 1. Открываем порт для веб-сервера: Разрешаем входящие подключения по 80-му порту (HTTP):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Разрешаем SSH, но баним злых соседей: Пустим безопасный трафик для уже установленных соединений (чтобы нас не выкинуло):
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Разрешаем новый SSH: iptables -A INPUT -p tcp --dport 22 -j ACCEPT
3. Политика «Запрещено всё, что не разрешено»: Ставим политику DROP по умолчанию (самый безопасный путь):
iptables -P INPUT DROP
4. NAT (Делим интернет с локальной сетью): iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
▫️Как не отрезать себе кислород (Важно!) Если вы настраиваете iptables по SSH, одно неверное движение — и вы потеряете доступ к серверу. Всегда сначала разрешайте SSH, и только потом меняйте политику на DROP. Сохраняем результат: По умолчанию iptables забывает правила после перезагрузки. Используйте iptables-persistent: iptables-save > /etc/iptables/rules.v4
▫️Облегченные надстройки Iptables — мощный, но сложный для новичков. Используйте надстройки: · ufw (Ubuntu): ufw allow 22 сделает всё за вас. · firewalld (CentOS/RHEL): Работает с зонами доверия. Под капотом этих утилит всё равно работает старый добрый iptables (или его наследник nftables). Понимание INPUT, FORWARD и policy DROP — это база, без которой вы не станете настоящим системным администратором.