13.2 Настройка iptables

Настройка в графическом режиме

Опять же iptables в GUI-режиме более удобен, но менее гибок по отношению с ручной настройкой.


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-адрес, строка немного видоизменяется — после TPC добавляется -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. Пропишите в консоли:

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 -m limit —limit 1/s -j RETURN

4. Последняя третья команда имеет вид:

 sudo iptables -A block-scan -j DROP

Выражение block-scan в данных случаях — название используемой цепи.

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.