Как начать работу с firewalld в Linux
Опубликовано: 2022-07-08 Если вы ищете современный, мощный брандмауэр для Linux, который легко настроить из командной строки или с помощью графического интерфейса, то firewalld
, вероятно, то, что вам нужно.
Необходимость в брандмауэрах
Сетевые подключения имеют источник и пункт назначения. Программное обеспечение в источнике запрашивает соединение, а программное обеспечение в пункте назначения принимает или отклоняет его. Если он принят, пакеты данных, обычно называемые сетевым трафиком, могут проходить по соединению в обоих направлениях. Это верно, независимо от того, делитесь ли вы информацией в комнате у себя дома, удаленно подключаетесь к работе из домашнего офиса или используете удаленный облачный ресурс.
Хорошая практика безопасности гласит, что вы должны ограничивать и контролировать подключения к вашему компьютеру. Это то, что делают брандмауэры. Они фильтруют сетевой трафик по IP-адресу, порту или протоколу и отклоняют подключения, которые не соответствуют предварительно определенному набору критериев — правилам брандмауэра , которые вы настроили. Они как сотрудники службы безопасности на эксклюзивном мероприятии. Если твоего имени нет в списке, ты не попадешь внутрь.
Конечно, вы не хотите, чтобы ваши правила брандмауэра были настолько строгими, что ограничивали вашу обычную деятельность. Чем проще настроить брандмауэр, тем меньше у вас шансов непреднамеренно установить конфликтующие или драконовские правила. Мы часто слышим от пользователей, которые говорят, что они не используют брандмауэр, потому что он слишком сложен для понимания или синтаксис команды слишком непрозрачен.
firewalld
firewalld является мощным, но простым в настройке как из командной строки, так и через специальное приложение с графическим интерфейсом. Под капотом брандмауэры Linux полагаются на netfilter
, структуру сетевой фильтрации на стороне ядра. Здесь, в пользовательской среде, у нас есть выбор инструментов для взаимодействия с netfilter
, таких как iptables
, несложный брандмауэр ufw
и firewalld
.
По нашему мнению, firewalld
предлагает наилучший баланс функциональности, детализации и простоты.
Установка брандмауэра
В firewalld
есть две части. Есть firewalld
, процесс-демон, обеспечивающий функциональность брандмауэра, и есть firewall-config
. Это необязательный графический интерфейс для firewalld
. Обратите внимание, что в firewall-config
нет буквы «d».
Установка firewalld
на Ubuntu, Fedora и Manjaro проста во всех случаях, хотя у каждого из них есть свои взгляды на то, что предустановлено, а что в комплекте.
Для установки на Ubuntu нам нужно установить firewalld
и firewall-config
.
sudo apt установить firewalld
sudo apt установить firewall-config
В Fedora firewalld
уже установлен. Нам просто нужно добавить firewall-config
.
sudo dnf install firewall-config
В Manjaro ни один из компонентов не предустановлен, но они объединены в один пакет, поэтому мы можем установить их оба с помощью одной команды.
sudo pacman -Sy firewalld
Нам нужно включить демон firewalld
, чтобы он мог запускаться каждый раз при загрузке компьютера.
sudo systemctl включить firewalld
И нам нужно запустить демона, чтобы он сейчас работал.
sudo systemctl запустить firewalld
Мы можем использовать systemctl
, чтобы проверить, что firewalld
запущен и работает без проблем:
sudo systemctl статус firewalld
Мы также можем использовать firewalld
, чтобы проверить, работает ли он. Для этого используется команда firewall-cmd
с параметром --state
. Обратите внимание, что в firewall-cmd
нет буквы «d»:
sudo firewall-cmd --state
Теперь, когда мы установили и запустили брандмауэр, мы можем перейти к его настройке.
Концепция зон
firewalld
firewalld основан на зонах . Зоны — это наборы правил брандмауэра и связанное с ними сетевое соединение. Это позволяет вам настраивать разные зоны и другой набор ограничений безопасности, в которых вы можете работать. Например, у вас может быть определена зона для регулярных ежедневных пробежек, другая зона для более безопасных пробежек и зона полной блокировки «ни входить, ни выходить».
Чтобы перейти из одной зоны в другую и фактически с одного уровня безопасности на другой, вы перемещаете свое сетевое соединение из зоны, в которой оно находится, в зону, в которой вы хотите работать.
Это позволяет очень быстро перейти от одного определенного набора правил брандмауэра к другому. Другим способом использования зон может быть использование ноутбуком одной зоны, когда вы дома, и другой, когда вы находитесь вне дома и используете общедоступный Wi-Fi.
firewalld
поставляется с девятью предварительно настроенными зонами. Их можно редактировать, а также добавлять или удалять дополнительные зоны.
- drop : все входящие пакеты отбрасываются. Исходящий трафик разрешен. Это самый параноидальный сеттинг.
- block : все входящие пакеты отбрасываются, а отправителю отправляется сообщение
icmp-host-prohibited
. Исходящий трафик разрешен. - trust : принимаются все сетевые подключения, а другим системам доверяют. Это наиболее надежный параметр, и его следует ограничивать очень безопасными средами, такими как закрытые тестовые сети или ваш дом.
- public : Эта зона предназначена для использования в общедоступных или других сетях, где нельзя доверять ни одному из других компьютеров. Принимается небольшой набор распространенных и обычно безопасных запросов на подключение.
- external : Эта зона предназначена для использования во внешних сетях с включенной маскировкой NAT (переадресация портов). Ваш брандмауэр действует как маршрутизатор, перенаправляющий трафик в вашу частную сеть, которая остается доступной, но все еще частной.
- internal : Эта зона предназначена для использования во внутренних сетях, когда ваша система выступает в качестве шлюза или маршрутизатора. Другие системы в этой сети обычно являются доверенными.
- dmz : Эта зона предназначена для компьютеров, расположенных в «демилитаризованной зоне» за пределами вашей защиты периметра и с ограниченным доступом обратно в вашу сеть.
- work : Эта зона предназначена для рабочих машин. Другие компьютеры в этой сети обычно являются доверенными.
- home : Эта зона предназначена для домашних машин. Другие компьютеры в этой сети обычно являются доверенными.
Домашняя, рабочая и внутренняя зоны очень похожи по функциям, но разделение их на разные зоны позволяет вам точно настроить зону по своему вкусу, инкапсулируя один набор правил для конкретного сценария.
Хорошей отправной точкой является определение зоны по умолчанию. Это зона, в которую добавляются ваши сетевые интерфейсы при установке firewalld
.
sudo firewall-cmd --get-default-zone
Наша зона по умолчанию — публичная зона. Чтобы просмотреть сведения о конфигурации зоны, используйте параметр --list-all
. Здесь перечислены все, что было добавлено или включено для зоны.
sudo firewall-cmd --zone = public --list-all
Мы видим, что эта зона связана с сетевым подключением enp0s3 и разрешает трафик, связанный с DHCP, mDNS и SSH. Поскольку в эту зону добавлен как минимум один интерфейс, эта зона активна.
firewalld
позволяет вам добавлять в зону службы , от которых вы хотите принимать трафик. Затем эта зона пропускает этот тип трафика. Это проще, чем помнить, что mDNS, например, использует порт 5353 и протокол UDP, и вручную добавлять эти данные в зону. Хотя можно и так.
Если мы запустим предыдущую команду на ноутбуке с ethernet-подключением и картой Wi-Fi, мы увидим что-то похожее, но с двумя интерфейсами.
sudo firewall-cmd --zone = public --list-all
Оба наших сетевых интерфейса были добавлены в зону по умолчанию. В зоне есть правила для тех же трех сервисов, что и в первом примере, но DHCP и SSH были добавлены как именованные сервисы, а mDNS добавлен как пара портов и протоколов.
Чтобы получить список всех зон, используйте параметр --get-zones
.
sudo firewall-cmd --get-zones
Чтобы увидеть конфигурацию сразу для всех зон, используйте параметр --list-all-zones
. Вы захотите передать это в less
.
sudo firewall-cmd --list-all-zones | меньше
Это полезно, потому что вы можете прокручивать список или использовать средство поиска для поиска номеров портов, протоколов и служб.
На нашем ноутбуке мы собираемся переместить наше Ethernet-соединение из общедоступной зоны в домашнюю зону. Мы можем сделать это с параметрами --zone
и --change-interface
.
sudo firewall-cmd --zone=home --change-interface=enp3s0
Давайте взглянем на домашнюю зону и посмотрим, были ли внесены наши изменения.
sudo firewall-cmd --zone=home --list-all
И это так. Наше соединение Ethernet добавлено в домашнюю зону.
Однако это не постоянное изменение. Мы изменили текущую конфигурацию брандмауэра, а не его сохраненную конфигурацию. Если мы перезагрузимся или воспользуемся параметром --reload
, мы вернемся к нашим предыдущим настройкам.
Чтобы сделать изменение постоянным, нам нужно использовать метко названную опцию --permanent
.
Это означает, что мы можем изменить брандмауэр для разовых требований, не изменяя сохраненную конфигурацию брандмауэра. Мы также можем протестировать изменения, прежде чем отправлять их в конфигурацию. Чтобы сделать наше изменение постоянным, мы должны использовать следующий формат:
sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent
Если вы внесли какие-то изменения, но забыли использовать --permanent
для некоторых из них, вы можете записать в конфигурацию настройки текущего запущенного сеанса брандмауэра с помощью --runtime-to-permanent
.
sudo firewall-cmd --runtime-to-permanent
СВЯЗАННЫЕ С: Что такое DHCP (протокол динамической конфигурации хоста)?
Добавление и удаление служб
firewalld
знает о многих сервисах. Вы можете перечислить их, используя параметр --get-services
.
sudo firewall-cmd --get-services
Наша версия firewalld
перечислила 192 службы. Чтобы включить службу в зоне, используйте параметр --add-service
.
Мы можем добавить службу в зону, используя параметр --add-service
.
sudo firewall-cmd --zone=public --add-service=http
Имя сервиса должно совпадать с его записью в списке сервисов от firewalld
.
Чтобы удалить службу, замените --add-service
на --remove-service
Добавление и удаление портов и протоколов
Если вы предпочитаете выбирать, какие порты и протоколы добавляются, вы тоже можете это сделать. Вам нужно знать номер порта и протокол для добавляемого типа трафика.
Добавим трафик HTTPS в публичную зону. Это использует порт 443 и является формой TCP-трафика.
sudo firewall-cmd --zone=public --add-port=443/tcp
Вы можете указать диапазон портов, указав между первым и последним портами дефис « -
», например «400-450».
Чтобы удалить порт, замените --add-port
на --remove-port
.
СВЯЗАННЫЕ: В чем разница между TCP и UDP?
Использование графического интерфейса
Нажмите клавишу «Супер» и начните вводить «брандмауэр». Вы увидите значок кирпичной стены для приложения firewall-config
.
Щелкните этот значок, чтобы запустить приложение.
Чтобы добавить службу в firewalld
с помощью графического интерфейса, достаточно выбрать зону из списка зон и выбрать службу из списка служб.
Вы можете изменить текущий сеанс или постоянную конфигурацию, выбрав «Время выполнения» или «Постоянный» в раскрывающемся меню «Конфигурация».
Чтобы внести изменения в работающий сеанс и зафиксировать изменения только после того, как вы проверили их работу, установите в меню «Конфигурация» значение «Время выполнения». Внесите свои изменения. Когда вы будете уверены, что они делают то, что вам нужно, используйте пункт меню «Параметры» > «Время выполнения на постоянное».
Чтобы добавить запись порта и протокола в зону, выберите зону из списка зон и нажмите «Порты». Нажав кнопку «Добавить», вы можете указать номер порта и выбрать протокол из меню.
Чтобы добавить протокол, нажмите «Протоколы», нажмите кнопку «Добавить» и выберите протокол во всплывающем меню.
Чтобы переместить интерфейс из одной зоны в другую, дважды щелкните интерфейс в списке «Подключения», затем выберите зону во всплывающем меню.
Вершина айсберга
С firewalld
можно сделать гораздо больше, но и этого достаточно, чтобы начать работу. С помощью информации, которую мы вам предоставили, вы сможете создавать значимые правила в своих зонах.