База Знаний

Простые инструкции по работе с сервисом ProfitServer
  1. Главная
  2. База Знаний
  3. Настройка Firewall на Linux

Настройка Firewall на Linux


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

В данной статье мы рассмотрим два основных инструмента для настройки Linux Firewall: firewalld и iptables. Мы проведем сравнительный анализ их особенностей, функциональности и преимуществ. Кроме того, мы предоставим подробные инструкции по настройке и использованию каждого из этих инструментов, а также обсудим лучшие практики по обеспечению безопасности с помощью Firewall на платформе Linux. Все действия будет воспроизведены на виртуальном сервере с root доступом.

Настройка Firewalld на Linux

Firewalld (Firewall Daemon) - это программа для управления брандмауэром в операционных системах Linux. Она предоставляет пользовательский интерфейс для настройки правил брандмауэра, позволяя разрешать или блокировать соединения сетевых приложений. По умолчанию он предустановлен в большинстве серверных дистрибутивов. Если Firewalld не был предустановлен, его можно установить самостоятельно из официальных репозиториев дистрибутива.

Для систем Red Hat (таких как RHEL, CentOS, Fedora) установка производится командой:

yum install firewalld

Для Debian/Ubuntu:

apt-get install firewalld

После установки, его сразу можно запустить и активировать при помощи команды:

systemctl start firewalld

Далее необходимо добавить сервис в автозагрузку:

systemctl enable firewalld
Добавление Firewalld в автозагрузку linux

На текущем этапе советуем отключить ufw, так как не рекомендуется одновременное использование данного инструмента совместно с firewalld или iptables. Проверяем статус:

systemctl status ufw
Проверка статуса ufw linux

Для остановки введите команду:

systemctl stop ufw

Для полного отключения:

ufw disable

После проделанных действий, можно переходить к настройке firewalld.

Первым делом необходимо определить зоны доверия. Firewalld использует концепцию зон для определения уровня доверия к сетевым интерфейсам. Каждому интерфейсу назначается одна зона, и правила брандмауэра применяются в зависимости от зоны. Список всех доступных зон открывается командой:

firewall-cmd --get-zones

Как правило, используется 4 основных зоны:

  1. Public (Общественная): Это зона для сетей, которые вы считаете небезопасными;
  2. Private (Частная): применяется для домашних сетей или других доверенных сетевых соединений;
  3. Internal (Внутренняя): используется для внутренних сетей, таких как сети внутри организации или корпоративной сети;
  4. DMZ (Демилитаризованная зона): Это зона, где обычно размещаются серверы, к которым должен быть доступ из интернета.

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

firewall-cmd --permanent --new-zone=nameyourzone

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

firewall-cmd --reload

Удалить зону можно похожим образом:

firewall-cmd --permanent --delete-zone= nameyourzone

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

firewall-cmd --zone=public --add-service=name

Где name – название службы. Например, чтобы разрешить трафик для Apache:

firewall-cmd --zone=public --add-service=http

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

firewall-cmd --zone=public --add-port=номер_порта/протокол

На примере стандартного 22 порта для SSH команда будет выглядеть так:

firewall-cmd --zone=public --add-port=22/tcp

На этом этапе основные правила уже созданы. Далее стоит определить, как будет обрабатываться трафик зависимости от источника, назначения, порта и других критериев. Для добавления правила служит команда (в качестве примера используется зона public):

firewall-cmd --zone=public правило

Например, чтобы разрешить входящий трафик с любого источника на порт 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

Для удаления правила:

firewall-cmd --permanent --remove-rule=rule_specification

Где rule - это тип правила (например, port, service, rich-rule и т.д.), а rule_specification - это спецификация самого правила.

После внесения изменений в конфигурацию Firewalld необходимо сохранить и применить их. Чтобы сохранить изменения, используйте команду:

firewall-cmd --runtime-to-permanent

Для применения изменений:

firewall-cmd --reload

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

firewall-cmd --list-all
Список правил firewalld linux

В случае возникновения проблем проверьте журналы Firewalld при помощи команды:

journalctl -u firewalld

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

firewall-cmd --help

Настройка Iptables на Linux

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

iptables -V

В случае отсутствия инструмента, его потребуется установить. Команда для установки на Ubuntu, Debian:

apt install iptables

Для систем Red Hat (например, CentOS, Fedora):

yum install iptables

Команда для активации после установки:

systemctl start iptables

Для добавления в автозагрузку, выполните:

systemctl enable iptables

Перед началом настройки Iptables, важно понять принцип его работы. В этом нам поможет синтаксис программы. Он выглядит следующим образом:

iptables -t таблица действие цепочка дополнительные_параметры

Разберем каждый пункт детальнее.

Iptables имеет четыре основные таблицы: filter, nat, mangle и raw. Каждая из них предназначена для обработки определенных типов пакетов и имеет свои цепочки правил:

  1. filter: это наиболее часто используемая таблица, которая содержит правила фильтрации пакетов. Она используется для принятия решений о том, разрешать ли или отклонять пакеты.
  2. nat: эта таблица используется для изменения сетевых адресов и портов в пакетах. Она часто используется для настройки маскирования (NAT).
  3. mangle: в этой таблице можно изменять заголовки пакетов. Она используется для специализированных операций с пакетами, таких как маркировка.
  4. raw: эта таблица используется для настройки правил, которые применяются до того, как они пройдут через систему отслеживания состояния подключений. Она обычно используется для настройки правил, которые не должны быть изменены системой отслеживания состояния, таких как отбрасывание пакетов с определенных адресов.

Каждая таблица содержит в себе набор цепочек. Цепочки – это последовательность правил, которые проверяются последовательно. Есть три предопределенные цепочки:

  1. INPUT (входящие). Правила в этой цепочке определяют, что делать с входящими пакетами.
  2. OUTPUT (исходящие). Эта цепочка применяется ко всем пакетам, которые ваш компьютер отправляет другим устройствам или компьютерам в сети
  3. FORWARD (перенаправление). Правила в этой цепочке указывают, что делать с перенаправленными пакетами.

Наконец, каждая цепочка обладает каким-либо действием (target). На практике используется 5 основных действий:

  1. ACCEPT: Разрешить пакету пройти через межсетевой экран.
  2. DROP: Отклонить пакет и отбросить его без ответа.
  3. REJECT: Отклонить пакет и отправить отправителю сообщение об ошибке ICMP.
  4. LOG: Зарегистрировать пакет в системном журнале и выполнить другое действие (например, ACCEPT или DROP).
  5. RETURN: Прекратить проверку правил в текущей цепочке и вернуться к вызывающей цепочке (если применимо).

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

iptables -L
Настройка Firewall на Linux

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

Цепочка INPUT:

  1. Разрешить входящий трафик по протоколу TCP на порт 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Разрешить входящий трафик по протоколу UDP на порт 22:

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

3. Заблокировать входящий трафик с определенного IP-адреса:

iptables -A INPUT -s 192.168.1.100 -j DROP

Цепочка OUTPUT:

  1. Разрешить исходящий трафик по протоколу TCP на порт 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Разрешить исходящий трафик по протоколу UDP на порт 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Заблокировать исходящий трафик на определенный порт (например, 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Цепочка FORWARD:

  1. Заблокировать пересылаемый трафик из определенного диапазона IP-адресов:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Заблокировать пересылку пакетов с определенного сетевого интерфейса:

iptables -A FORWARD -i eth1 -j DROP

3. Ограничить количество одновременных соединений для определенного порта (в данном примере 10 соединений в минуту на 80 порт):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Как можно заметить, в каждом отдельном случае используется дополнительный аргумент (команда). Для получения полного списка возможных аргументов и общей поддержки по функционалу инструмента введите:

iptables -h
Команды для настройки iptables linux

Убедиться в правильности настроек можно повторно введя команду для просмотра списка правил:

iptables -L
Проверка правил iptables linux

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

iptables -D цепочка номер правила

Например, если вы хотите удалить правило номер 1 из цепочки INPUT, команда будет выглядеть так:

iptables -D INPUT 1

Для удаления всех правил одной командой:

iptables -F

Важный момент: в iptables правила не сохраняются автоматически после перезагрузки системы или сервиса. Для сохранения правил их нужно добавить в файл конфигурации и восстановить после перезагрузки. В этом помогут утилиты iptables-save и iptables-restore. Для сохранения правил введите команду:

iptables-save > /etc/iptables/rules.v4

Она сохраняет текущие правила iptables в файле rules.v4. Для восстановления после перезагрузки введите:

iptables-restore < /etc/iptables/rules.v4

Данная команда восстанавливает правила из файла rules.v4

Заключение

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

Предыдущая статья Консольные текстовые редакторы Linux
Следующая статья Общая диагностика ресурсов сервера

Задайте вопрос

Мы всегда готовы ответить на Ваши вопросы в любое время суток.
Пожалуйста, проверьте нашу Базу Знаний, скорее всего ответ на ваш вопрос там уже есть!