Как начать работу с firewalld в Linux

Опубликовано: 2022-07-08
Экран ноутбука с командной строкой Linux.
Фатмавати Ачмад Заэнури/Shutterstock.com

Если вы ищете современный, мощный брандмауэр для 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 

Установка брандмауэра на Ubuntu

 sudo apt установить firewall-config 

Установка конфигурации брандмауэра в Ubuntu

В Fedora firewalld уже установлен. Нам просто нужно добавить firewall-config .

sudo dnf install firewall-config

Установка firewall-config в Fedora

В Manjaro ни один из компонентов не предустановлен, но они объединены в один пакет, поэтому мы можем установить их оба с помощью одной команды.

 sudo pacman -Sy firewalld 

Установка firewalld и firewall-config одной командой на Manjaro

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

 sudo systemctl включить firewalld 

Включение автоматического запуска firewalld при загрузке

И нам нужно запустить демона, чтобы он сейчас работал.

 sudo systemctl запустить firewalld 

Запуск демона firewalld

Мы можем использовать systemctl , чтобы проверить, что firewalld запущен и работает без проблем:

 sudo systemctl статус firewalld 

Проверка состояния firewalld с помощью systemctl

Мы также можем использовать firewalld , чтобы проверить, работает ли он. Для этого используется команда firewall-cmd с параметром --state . Обратите внимание, что в firewall-cmd нет буквы «d»:

 sudo firewall-cmd --state 

Проверка состояния firewalld командой firewall-cmd

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

Концепция зон

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 

Поиск зоны firewalld по умолчанию

Наша зона по умолчанию — публичная зона. Чтобы просмотреть сведения о конфигурации зоны, используйте параметр --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 

Список всех зон firewalld

Чтобы увидеть конфигурацию сразу для всех зон, используйте параметр --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 может ссылаться по имени

Наша версия firewalld перечислила 192 службы. Чтобы включить службу в зоне, используйте параметр --add-service .

Список признанных сервисов

Мы можем добавить службу в зону, используя параметр --add-service .

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

Добавление службы 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 с помощью графического интерфейса, достаточно выбрать зону из списка зон и выбрать службу из списка служб.

Вы можете изменить текущий сеанс или постоянную конфигурацию, выбрав «Время выполнения» или «Постоянный» в раскрывающемся меню «Конфигурация».

Выпадающее меню конфигурации

Чтобы внести изменения в работающий сеанс и зафиксировать изменения только после того, как вы проверили их работу, установите в меню «Конфигурация» значение «Время выполнения». Внесите свои изменения. Когда вы будете уверены, что они делают то, что вам нужно, используйте пункт меню «Параметры» > «Время выполнения на постоянное».

Чтобы добавить запись порта и протокола в зону, выберите зону из списка зон и нажмите «Порты». Нажав кнопку «Добавить», вы можете указать номер порта и выбрать протокол из меню.

Добавление пары портов и протоколов с помощью графического интерфейса конфигурации брандмауэра

Чтобы добавить протокол, нажмите «Протоколы», нажмите кнопку «Добавить» и выберите протокол во всплывающем меню.

Протокол в публичной зоне, в GUI firewall-config

Чтобы переместить интерфейс из одной зоны в другую, дважды щелкните интерфейс в списке «Подключения», затем выберите зону во всплывающем меню.

Перемещение сетевого интерфейса из одной зоны в другую в графическом интерфейсе конфигурации брандмауэра

Вершина айсберга

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