Оглавление

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

Установка iptables

В большинстве случаев iptables предустановлен на Ubuntu. Чтобы проверить это, выполните:

sudo iptables -L

Если вы видите список правил, значит, iptables установлен. Если нет, установите его командой:

sudo apt update
sudo apt install iptables

Основы работы с iptables

Структура iptables

iptables работает с тремя основными цепочками:

  • INPUT — для входящего трафика.
  • OUTPUT — для исходящего трафика.
  • FORWARD — для пересылаемого трафика (между интерфейсами).

Каждая цепочка может содержать несколько правил, которые обрабатываются последовательно.

Проверка текущих правил

Для просмотра текущих правил используйте:

sudo iptables -L -v -n

Это покажет активные правила и количество обработанных пакетов.

Сброс правил

Чтобы очистить все текущие правила, выполните:

sudo iptables -F

Установка политики по умолчанию

Для повышения безопасности сначала установите политику по умолчанию для цепочек:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

Это установит блокировку всего входящего и пересылаемого трафика, позволяя только исходящий.

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

1. Разрешение SSH

Чтобы разрешить доступ по SSH, выполните:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Если вы используете нестандартный порт, например 2222:

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

2. Разрешение веб-трафика

Для веб-сервера, который принимает HTTP и HTTPS запросы, выполните:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

3. Блокировка IP-адреса

Чтобы заблокировать IP-адрес, используйте:

sudo iptables -A INPUT -s 203.0.113.0 -j DROP

4. Разрешение трафика из определенной подсети

Если необходимо разрешить трафик из определенной подсети, например 192.168.1.0/24:

sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

5. Ограничение трафика

Вы можете ограничить количество соединений с одного IP-адреса. Например, чтобы разрешить не более 3 попыток подключения к SSH в минуту:

sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

Это правило блокирует IP-адреса, которые пытаются подключиться более 3 раз за минуту.

6. Защита от SYN-атак

Для защиты от SYN-атак можно использовать следующие команды:

sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP

Эти правила разрешают до 1 SYN-пакета в секунду с начальным порогом в 3 пакета.

7. Логирование трафика

Чтобы вести учет трафика и отслеживать подозрительную активность, можно добавить правила логирования:

sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables: " --log-level 4

Эти правила будут записывать входящие пакеты, превышающие лимит, в системный журнал.

8. Сохранение правил

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

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Чтобы загрузить правила при старте системы, добавьте в /etc/rc.local перед exit 0:

iptables-restore < /etc/iptables/rules.v4

Заключение

iptables является мощным инструментом для управления сетевым трафиком и защиты серверов. Правильная настройка правил поможет предотвратить несанкционированный доступ и различные атаки. Комбинируйте iptables с другими методами безопасности, такими как регулярные обновления и использование сложных паролей, чтобы обеспечить максимальную защиту вашего сервера.

Работа с iptables требует внимательности и понимания сетевых принципов, но правильная настройка поможет вам создать надежный барьер для вашего сервера.