1. Введение: что такое iptables?

iptables — стандартная система фильтрации сетевого трафика в Linux, работающая непосредственно на уровне ядра операционной системы. Она определяет три ключевых аспекта безопасности сети:

  • Кто получает доступ к вашему серверу (разрешение соединений);
  • Кого нужно заблокировать (определенные IP-адреса или порты);
  • Как обрабатывать переадресацию (например, если сервер выступает в роли шлюза между сетями).
 


2. Структура iptables: таблицы и цепочки

Таблицы (tables)

Каждая таблица представляет собой набор правил, определяющих порядок действий над пакетом:

  • Filter: Основная таблица для разрешения или блокировки трафика.
  • Nat: Используется для преобразования сетевых адресов (NAT) и проброски портов.
  • Mangle: Редактирование отдельных полей пакета (редко используется).
  • Raw: Обход автоматических проверок определенных пакетов.

Цепочки (chains)

Процесс прохождения каждого пакета включает проверку через следующие этапы:

  • Input: Входящий трафик, направленный непосредственно на сервер.
  • Output: Исходящий трафик, инициированный самим сервером.
  • Forward: Транзитный трафик (при работе сервера как маршрутизатора).
  • Prerouting и Postrouting: Технические этапы изменения адресов пакетов до или после основных проверок.

3. Маршрут движения пакета через iptables

Каждый поступающий пакет последовательно обрабатывается следующим образом:

  1. Пакет попадает в систему → проверка в Prerouting (возможность изменения адреса).
  2. Если пакет предназначен именно этому серверу → Input (принять или отвергнуть).
  3. Если пакет должен быть передан дальше (сервер является роутером) → Forward.
  4. Когда сервер отправляет собственный пакет → Output → Postrouting (финализация изменений перед отправкой).

 

4. Настройка iptables: основы управления

Вот некоторые базовые команды для настройки вашей системы защиты:

КомандаОписание
iptables -LПоказ текущих правил фильтра
iptables -FПолностью очищает все установленные правила (действовать осторожно!)
iptables -A INPUT -p tcp --dport 80 -j ACCEPTРазрешает подключение по протоколу HTTP (порт 80)
iptables -A INPUT -s 1.2.3.4 -j DROPЗаблокирует указанный IP-адрес

Примеры настроек:

Базовая конфигурация
# Удаляем старые правила
iptables -F
iptables -X

# Устанавливаем политики по умолчанию
iptables -P INPUT DROP       # Запрещаем весь входящий трафик
iptables -P FORWARD DROP     # Отключаем пропуск транзита
iptables -P OUTPUT ACCEPT    # Но разрешаем исходящий трафик

# Внутренний интерфейс (lo) оставляем открытым
iptables -A INPUT -i lo -j ACCEPT

# Ответы на собственные запросы разрешим
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Открываем нужные сервисы (SSH, HTTP, HTTPS)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Ping тоже разрешён
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Защита от атак
# Ограничиваем количество новых подключений по SSH (до трёх раз в минуту)
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP  # Остальные попытки сразу блокируются

# Подозрительный IP адрес забанен навсегда
iptables -A INPUT -s 5.6.7.8 -j DROP
Проброс портов (NAT)
# Перенаправление порта 8080 на 80 (полезно, если сервер является шлюзом)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
 


5. Сохранение конфигурации

Чтобы ваши настройки остались неизменными после перезагрузки сервера, сохраняйте их соответствующим образом:

  • Для Ubuntu / Debian:
sudo apt install iptables-persistent
sudo netfilter-persistent save
  • Для CentOS / RHEL:
sudo service iptables save

6. Альтернативы iptables

Хотя iptables активно применяется, существуют альтернативы:

  • nftables: Современная версия с упрощёнными командами.
  • FirewallD: Удобный графический интерфейс для управления зоной доверия.

Однако iptables остаётся надёжным инструментом практически на всех дистрибутивах Linux.


Заключение

Iptables позволяет эффективно контролировать и защищать сеть вашего сервера, обеспечивая безопасность и стабильность ваших приложений. Его ключевые преимущества:

  • ✔️ Мощная защита от несанкционированного доступа.
  • ✔️ Гибкость в настройке сложных сценариев фильтрации.
  • ✔️ Универсальность и совместимость с любым современным Linux-дистрибутивом.

От root

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *