Брандмауэр iptables является мощным инструментом для защиты Linux серверов от сетевых атак. С его помощью можно контролировать входящий и исходящий сетевой трафик, блокировать подключения из определенных IP-адресов, разрешать доступ только к конкретным портам и протоколам. В этой статье мы рассмотрим основные правила настройки iptables для повышения безопасности Linux сервера.

Прежде всего, необходимо установить iptables, если он еще не установлен:


sudo apt install iptables


Далее перейдем к основным правилам.

1. Запретить входящие подключения извне

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


iptables -P INPUT DROP


Это установит политику по умолчанию "отбрасывать" для цепочки INPUT. 

2. Разрешить входящие подключения к определенным сервисам

Хотя мы запретили весь входящий трафик, нам нужно разрешить подключения к определенным сервисам, например, 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


Эти правила разрешат TCP-трафик к портам 22, 80 и 443 соответственно.

3. Разрешить исходящие подключения

В большинстве случаев нужно разрешить исходящие подключения с сервера, поэтому добавим такое правило:

  
iptables -P OUTPUT ACCEPT


4. Ограничить количество подключений с IP

Чтобы предотвратить перегрузку сервера из-за слишком большого числа подключений с одного IP, можно использовать модуль limit:


iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT


Это правило отбросит любые новые SYN-пакеты с IP, если число подключений с него превысит 10.

5. Логировать отброшенные пакеты

Чтобы видеть какие пакеты были отброшены брандмауэром, можно отправлять их в лог:


iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP


Эти правила будут логировать до 2 пакетов в минуту с префиксом в syslog.

6. Разрешить Loopback-интерфейс

Нужно явно разрешить трафик через loopback для корректной работы локальных сервисов: 


iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


7. Сохранить правила iptables

Все правила iptables нужно сохранить, чтобы они применялись после перезагрузки:


sudo sh -c "iptables-save > /etc/iptables.rules" 


Также добавьте iptables-restore в автозагрузку, чтобы правила применялись после перезапуска сервера.

Данные основные правила помогут значительно повысить безопасность вашего Linux сервера. Конечно, эти настройки можно дополнить для решения более специфических задач по защите системы. Например, можно настроить белые и черные списки IP-адресов, фильтрацию трафика по MAC-адресам и так далее. Главное - помнить, что iptables - мощный инструмент, который при правильной настройке способен надежно защитить Linux сервер от сетевых атак.