Организация безопасного межсетевого экрана iptables в Kali Linux

Салимжанов Р.Д

Organizing a secure iptables firewall in Kali Linux

Salimzhanov R.D.

Аннотация: В этой статье представлена первоначальная безопасная настройка iptables в Kali Linux, с примерами настройки.

Abstract: This article presents the initial secure configuration of iptables in Kali Linux, with configuration examples.

Введение

Для начала следует ответить на вопрос: что такое iptables и зачем его настраивать?

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

Настраивая iptables, можно контролировать доступ к различным сетевым службам, ограничивать или разрешать определенные типы трафика, создавать правила для защиты от DDoS-атак и других сетевых угроз.

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

Установка iptables

Настройка и установка iptables производится в командной строке, как правило, itpables предустанавливается на всех Linux-дистрибутивах. Чтобы обновить утилиту или установить ее используем команду:

sudo apt-get install iptables

Организация безопасного межсетевого экрана iptables в Kali Linux

После установки/обновления следует проверить текущие правила iptables с помощью команды:

sudo iptables -L

или

sudo iptables --list

Организация безопасного межсетевого экрана iptables в Kali Linux

Поведение по умолчанию, правила и цепочки

И так, при просмотре текущих правил iptables мы видим:

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Что здесь обозначает: INPUT, FORWARD, OUTPUT?

В системе Linux используются 3 основные цепочки определенных по умолчанию:

INPUT - Управляет входящими соединениями.

FORWARD - Управляет входящими соединениями, которые не поступают локально.

OUTPUT - Управляет исходящими соединениями.

Так же к каждой цепочке, как определенных по умолчанию, так и составленных самостоятельно применяются правила:

ACCEPT - Открывает (разрешает) соединение.

DROP - Закрывает соединение без отправки ответа клиенту.

QUEUE - Отправляет пакет в очередь для дальнейшего взаимодействия со сторонним приложением.

RETURN - Возвращает пакет на одно правило назад, прерывая обработку текущего правила.

REJECT - Блокирует соединение. В ответ будет отправлено сообщение об ошибке.

DENY - Отбрасывает входящее соединение. Отправка ответа не предусмотрена.

ESTABLISHED - Соединение установлено так как поступил уже не первый пакет в рамках данного сеанса.

В целом, правила iptables предоставляют гибкость и контроль над сетевым трафиком, позволяя им настраивать безопасность и эффективность работы сетевых сервисов.

Первоначальная настройка безопасного межсетевого экрана iptables

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

Sudo su

Организация безопасного межсетевого экрана iptables в Kali Linux

И очистим все текущие правила iptables с помощью команды:

sudo iptables -F

Организация безопасного межсетевого экрана iptables в Kali Linux

В первом случаи:

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Во втором случаи:

iptables --policy INPUT DROP

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Полный безопасный режим считается при блокировки всех соединений, но и также его более дольше настраивать, так как многим программам при настройке INPUT, так же следует настраивать OUTPUT. Так что в этой статье рассмотрим более упрощённый способ настройки (2 вариант).

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

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Организация безопасного межсетевого экрана iptables в Kali Linux

А также разрешим входящие соединения с localhost:

iptables -A INPUT -i lo -j ACCEPT

Организация безопасного межсетевого экрана iptables в Kali Linux

Теперь у нас продолжают также функционировать программы, которые были до этого установлены. (соответственно если вы не доверяете какому-либо установленному ПО, следует его ограничить).

Открываем порты для базовых сервисов веб-сервера:

Открываем порт 80 для http:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Открываем порт 443 для https:

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

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

iptables -A INPUT -p TCP --dport 22 -j ACCEPT

Организация безопасного межсетевого экрана iptables в Kali Linux

Соответственно, по необходимости можно открывать порты, основываясь на конкретных задачах. Список портов и обозначений: (https://ru.wikipedia.org/wiki/Список_портов_TCP_и_UDP).

После начальных действий, сохраним правила, перед этим создав отдельную директорию:

mkdir /etc/iptables-conf/

Организация безопасного межсетевого экрана iptables в Kali Linux

iptables-save > /etc/iptables-conf/iptables_rules2.ipv4

Организация безопасного межсетевого экрана iptables в Kali Linux

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

vim /etc/skriptiptables.sh

Организация безопасного межсетевого экрана iptables в Kali Linux

Запищим в файле скрипт импорта:

#!/bin/bash

/sbin/iptables-restore < /etc/iptables-conf/iptables_rules2.ipv4

Организация безопасного межсетевого экрана iptables в Kali Linux

Сделаем исполняемым:

chmod +x /etc/skriptiptables.sh

Организация безопасного межсетевого экрана iptables в Kali Linux

После чего, добавляем скрипт в автозагрузку с помощью systemd:

vim /etc/systemd/system/testservice.service

Организация безопасного межсетевого экрана iptables в Kali Linux

Запищим в файле автозапуска:

[Unit]

Description=Запуск iptables

[Service]

Type=oneshot

ExecStart=/etc/skriptiptables.sh

[Install]

WantedBy=multi-user.target

Организация безопасного межсетевого экрана iptables в Kali Linux

Запускаем:

systemctl enable testservice

Организация безопасного межсетевого экрана iptables в Kali Linux

Теперь при загрузке системы, правила автоматически загружаются.

Проверим после перезагрузки:

Организация безопасного межсетевого экрана iptables в Kali Linux

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

iptables-restore < /etc/iptables-conf/iptables_rules2.ipv4

Организация безопасного межсетевого экрана iptables в Kali Linux

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

Блокировка определенного IP адреса.

Блокировка IP-адреса должна осуществляться с учетом правил и политик, установленных вашей организацией или провайдером услуг. Кроме того, следует учитывать возможность изменения IP-адреса злоумышленником или необходимость разблокировки IP-адреса в будущем. Такая блокировка может помочь от злоумышленников, спама, ограничения к определенному сайту и так далее.

Пример:

Чтобы заблокировать адрес злоумышленника 2.2.2.2:

iptables -A INPUT -s 2.2.2.2 -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Чтобы заблокировать определенный домен:

iptables -A OUTPUT -p tcp -d vk.com -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Заблокировать входящие запросы порта

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

iptables -A INPUT -p tcp --dport 8080 -j DROP

iptables -A INPUT -i eth1 -p tcp --dport 8080 -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Чтобы заблокировать запрос порта 80 с адреса 2.2.2.2 используем:

iptables -A INPUT -p tcp -s 2.2.2.2 --dport 80 -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Сбрасывать трафик с определенных MAC адресов.

iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

Открыть диапазон адресов, для определенного порта.

iptables -A INPUT -p tcp --destination-port 25 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT

Организация безопасного межсетевого экрана iptables в Kali Linux

Ограничить количество параллельных соединений для одного адреса.

Ограничение количества параллельных соединений для одного адреса может быть полезным в различных ситуациях:

1. Защита от DDoS-атак

2. Управление нагрузкой

3. Предотвращение спама:

К примеру добавим правило в цепочку INPUT, которое позволяет блокировать новые входящие соединения на порт 22 (SSH) при достижении определенного лимита активных соединений. Это полезно для защиты от DDoS-атак, направленных на перегрузку целевого сервиса.

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

--connlimit-above 3 : Указывает, что правило действует только если количество соединений превышает 3.

Организация безопасного межсетевого экрана iptables в Kali Linux

Ограничить пользователю доступ в интернет

Создадим тестового пользователя и зададим ему пароль:

useradd -m testuser

passwd testuser

Организация безопасного межсетевого экрана iptables в Kali Linux

Создадим группу, которой ограничим доступ в интернет и запишем пользователя в группу:

groupadd notinet

usermod -a -G notinet testuser

Организация безопасного межсетевого экрана iptables в Kali Linux

Введем правило на группу:

iptables -A OUTPUT -m owner --gid-owner notinet -j DROP

Организация безопасного межсетевого экрана iptables в Kali Linux

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

ВЫВОД

Подведем итоги IPtables — это стандартный инструмент для управления сетевым экраном (firewall) в Linux. Он позволяет администраторам блокировать или разрешать трафик на основе различных критериев, таких как IP-адрес источника и назначения, порты TCP/UDP и другие. Несмотря на то, что существуют и другие инструменты для управления сетевыми экранами в Linux, iptables остается одним из самых популярных и широко используемых инструментов благодаря своей гибкости и мощности.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1) Основные настройки iptables, или как настроить фаервол в Linux // [электронный ресурс]. URL: https://linuxinsider.ru/osnovnye-nastrojki-iptables-ili-kak-nastroit-faervol-v-linux/ / (дата обращения 27.05.2024)

2) Настройка iptables Linux Firewall: руководство для начинающих // [электронный ресурс]. URL: https://1cloud.ru/help/linux/nastrojka_linus-firewall_iptables (дата обращения 27.05.2024)

3) Обзор и практическое использование Iptables // [электронный ресурс]. URL: https://timeweb.cloud/tutorials/network-security/obzor-i-prakticheskoe-ispolzovanie-iptables (дата обращения 27.05.2024)

4) Iptables // [электронный ресурс]. URL: https://wiki.archlinux.org/title/Iptables_(Русский)#top-page (дата обращения 27.05.2024)

5) Погружение в Iptables – теория и настройка // [электронный ресурс]. URL: https://wiki.merionet.ru/articles/pogruzhenie-v-iptables-teoriya-i-nastrojka (дата обращения 27.05.2024)

11
Начать дискуссию