2.5.6.2 Настройка iptables
Скачать документНастройка в графическом режиме
Настройка iptables при помощи консольных команд
Просмотр и удаление правил
Прием и сбрасывание трафика в цепях
Разрешение и блокировка портов
Блокирование ICMP
Предотвращение несанкционированных действий на сервере
Настройка в графическом режиме
iptables в графическом режиме более удобен, но менее гибок по отношению к ручной настройке.
1) Здесь доступен уже предопределенный список служб, для которых можно открыть порты, по которым они работают нажатием на соответствующий флаг.
2) Также, если нужной службы нет в списке, порты для нее можно добавить вручную в разделе «Другие порты».
3) В пункте «Доверенные интерфейсы» можно выбрать интерфейсы, подключенные к доверенной сети.
4) Пункт «Маскарад» позволяет настроить узел, подключающий локальную сеть к интернету (из LAN в WAN), но при этом локальная сеть не будет видна извне, будет лишь доступен один адрес (только IPv4).
5) Если используется Маскарад, скорее всего возникнет потребность в перенаправлении портов из одной системы в другую (только IPv4).
6) Можно настроить фильтр ICMP, который работает ниже сетевого протокола, поэтому он используется для информирования о сети. Для этого протокола можно закрыть доступ, чтобы другая сторона не была информирована о вашей сети.
7) Можно добавить собственные готовые правила, если уже готов шаблон, их можно разом добавить и применить.
Настройка iptables при помощи консольных команд
Просмотр и удаление правил
Как уже было сказано ранее, управление межсетевым экраном производится путем ручного или автоматического добавления правил. Например, некоторые дополнительные приложения могут обращаться к инструменту, изменяя определенные политики. Однако большинство подобных действий все же делается вручную. Просмотр списка всех текущих правил доступен через команду:
sudo iptables -L
В отобразившемся результате будет информация по трем цепочкам: «INPUT», «OUTPUT» и «FORWARD» — входящий, исходящий и пересылаемый трафик соответственно.
Определить статус всех цепочек можно, выполнив:
sudo iptables -S
Если настроенные правила не выполняют необходимые задачи, их можно удалить. Весь список правил можно удалить с помощью команды:
sudo iptables -F
После активации правила будут стерты абсолютно для всех трех цепочек.
Когда необходимо затронуть только политики из какой-то одной цепи, к строке добавляется дополнительный аргумент:
sudo iptables -F INPUT sudo iptables -F OUTPUT sudo iptables -F FORWARD
Отсутствие всех правил означает, что сейчас не применяется никаких настроек фильтрации трафика ни в одну из сторон. Далее системный администратор уже самостоятельно задает новые параметры, используя всю ту же консоль, команду и различные аргументы.
Прием и сбрасывание трафика в цепях
Каждая цепь настраивается отдельно для приема или блокирования трафика. Выставив определенное значение, можно добиться того, что, например, весь входящий трафик будет блокироваться. Для этого команда должна иметь вид:
sudo iptables --policy INPUT DROP
где INPUT — название цепи, а DROP — значение сброса.
Точно такие же параметры задаются и для других цепей, например:
sudo iptables --policy OUTPUT DROP
Если же необходимо выставить значение на прием трафика, тогда DROP изменяется на ACCEPT и получается:
sudo iptables --policy INPUT ACCEPT
Разрешение и блокировка портов
Как известно, все сетевые приложения и процессы работают через определенный порт. Путем блокировки или разрешения определенных адресов можно контролировать доступ всех сетевых целей. Давайте разберем проброс порта на примере 80. В терминале будет достаточно ввести команду:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
где:
-А — добавление нового правила;
INPUT — указание цепи;
-P — определение протокола, в этом случае TCP;
--dport — порт назначения.
Точно такая же команда относится и к порту 22, который используется сервисом SSH:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Для блокирования указанного порта применяется строка точно такого же вида, только в конце ACCEPT изменяется на DROP. В итоге получается:
sudo iptables -A INPUT -p tcp --dport 2450 -j DROP
Все эти правила заносятся в конфигурационный файл, и вы можете просмотреть их в любой момент. Напоминаем, осуществляется это через sudo iptables -L
. Если вместе с портом необходимо разрешить еще и сетевой IP-адрес, строка немного видоизменяется — после tcp добавляется -s и сам адрес:
sudo iptables -A INPUT -p tcp -s 12.12.12.12/32 --dport 22 -j ACCEPT
где 12.12.12.12/32 — необходимый IP-адрес.
Блокирование происходит по тому же принципу, меняя в конце значение ACCEPT на DROP. Тогда получается;
sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22 -j DROP
Блокирование ICMP
ICMP (Internet Control Message Protocol) — протокол, который входит в состав TCP/IP и задействован для передачи сообщений об ошибках и экстренных ситуациях при работе с трафиком. Например, когда запрашиваемый сервер недоступен, именно этот инструмент выполняет сервисные функции. Утилита iptables позволяет заблокировать его через брандмауэр, а сделать это можно командой:
sudo iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
Она произведет блокировку запросов от вашего и к вашему серверу.
Входящие запросы блокируются немного иначе. Тогда нужно ввести:
sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP
После активации данных правил сервер не будет отвечать на ping-запросы.
Предотвращение несанкционированных действий на сервере
Иногда серверы подвергаются DDoS-атакам или другим несанкционированным действиям со стороны злоумышленников. Правильная настройка межсетевого экрана позволит обезопасить себя от подобного рода взломов. Для начала рекомендуется задать следующие правила:
1. Пропишите в консоли:
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
где:
--limit 20/minute
— ограничение на частоту положительных результатов. Единицу измерения вы можете указывать самостоятельно, например, /second, /minute, /hour, /day;--limit-burst number
— ограничение на число пропускаемых пакетов. Все значения выставляются индивидуально по предпочтениям администратора.
2. Далее можно запретить сканирование открытых портов, чтобы убрать одну из возможных причин взлома. Введите первую команду:
sudo iptables -N block-scan
3. Затем укажите:
sudo iptables -A block-scan -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
4. Последняя команда имеет вид:
sudo iptables -A block-scan -j DROP
Выражение block-scan в данных случаях — название используемой цепи.
Для того чтобы новые правила вступили в силу, необходимо сохранить конфигурацию и вновь запустить службу iptables:
sudo iptables-save > /etc/sysconfig/iptables sudo systemctl enable --now iptables.service
Дата последнего изменения: 03.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.