Настройка брандмауэра

Брандмауэр — это защитный экран между глобальным интернетом и локальной компьютерной сетью организации. Он выполняет функцию проверки и фильтрации данных, поступающих из интернета. В зависимости от настроек брандмауэр может пропустить их или заблокировать (например, если обнаружит «червей», вирусы и хакерскую атаку).

По умолчанию брандмауэр не установлен в дистрибутивах Debian, но доступен из его репозиториев. Мы будем использовать брандмауэр iptables.

Итак, iptables - это утилита для настройки программного Firewall'а (межсетевого экрана) linux, которая предустанавливается по умолчанию во все сборки Linux, начиная с версии 2.4. Запускается iptables из командной строки (CLI) под пользователем с правами root и настраивается там же.

Установка iptables

Для установки iptables необходимо использовать команду

Команда sudo apt install iptables

Посмотреть состояние системы

Команда sudo iptables -L -nv

Состояние по умолчанию нет фильтров и все открыто, разрешается пропускать любые пакеты.

Проверка какие порты открыты

Для просмотра открытых портов сервера необходимо использовать команду.

sudo ss -ntuld

Мы видим, что у нас открыт порт 63345, это порт мы используем для соединения по ssh.

Запись вида 0.0.0.0: номер порта, говорит о том, что этот порт открыт для всех соединений из вне и такой порт необходимо защищать.

Настройка правил

Очень важно настраивать порты аккуратно, так как можно заблокировать порт ssh и не сможет потом зайти на свой сервер, поможет только переустановка системы.

Первым делом разрешаем себе подключение по ssh ( обмен пакетами по порту ssh ), учитывайте также если вы изменили стандартный порт на кастомный.

Команда sudo iptables -A INPUT -p tcp --dport=22 -j ACCEPT

-A – добавить правило

NPUT – в цепочку

-p tcp – для протокола tcp (ssh работает по данному протоколу)

--dport= 22 – номер порта, настроенный для работы ssh (тут вводите свой порт, по которому делали настройку подключения)

-j ACCEPT – разрешение для таких пакетов.

Проверим как установилось новое правило

Команда sudo iptables -L -nv

Мы подключили правило пропуска пакетов ssh и по этому порту уже начали ходить пакеты.

Стандартные настройки

Для начала посмотрим какие сетевые интерфейсы у нас есть.

Команда ip a

У на с два интерфейса lo и ens3.

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

ens3 — сетевой интерфейс к карте Ethernet, у вас может называться по другому, его и нужно настраивать.

Разрешаем трафик для сетевого интерфейса.

Команда sudo iptables -A INPUT -i ens3 -j ACCEPT

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

Команда sudo iptables -A INPUT -p icmp -j ACCEPT

Команда sudo iptables -L -nv

Так же можно открывать порты, которые необходимы для вашего сервера, например, для веб сервера необходимы порты 80, 443. Если нет такой необходимости для вашего сервера тогда эти порты оставляем закрытыми.

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

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

Команда sudo iptables -L -nv

Включение запрета для остальных пакетов

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

Команда sudo iptables -P INPUT DROP

Команда sudo iptables -L -nv

Если на данном этапе вас не выкинуло из сессии связи с сервером значит все настроили правильно, и вы себя не заблокировали для работы с сервером по протоколу ssh.

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

Блокировка пользователя по ip

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

Команда sudo iptables -I INPUT -s айпишник который блокируем -j DROP

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

Сохранение настройки брандмауэра

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

Команда sudo iptables-save > ./iptables.rules

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

Команда cat iptables.rules

Восстановление настроек из файла

Так же из файла настроек мы можем загрузить настройки в брандмауэр.

Команда sudo iptables-restore < ./iptables.rules

Настройка загрузки правил брандмауэра

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

Команда sudo apt install iptables-persistent netfilter-persistent

Проверим как все установилось, нам необходимо зайти в директорию новых пакетов /etc/iptables , настройки для ip4 в файле rules.v4, a ip6 в файле rules.v6

Команда cd /etc/iptables

Команда ls -la

Если изменим настройки этих файлов, то нужно пересохранить.

Команда sudo netfilter-persistent save

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

Команда sudo netfilter-persistent start

Настройки для ip4 в файле rules.v4, a ip6 в файле rules.v6 необходимо открыть в текстовом редакторе и разместить по порядку в файле, по приоритетам, так как это улучшит работу и правильно настроит блокировку для ip.