Поиск по сайту:

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


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

Необходимость в брандмауэрах

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

Хорошая практика безопасности гласит, что вы должны ограничивать и контролировать подключения к вашему компьютеру. Это то, что делают брандмауэры. Они фильтруют сетевой трафик по IP-адресу, порту или протоколу и отклоняют соединения, которые не соответствуют заданному набору критериев — правилам брандмауэра, — которые вы настроили. Они как сотрудники службы безопасности на эксклюзивном мероприятии. Если твоего имени нет в списке, ты не попадешь внутрь.

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

Брандмауэр firewalld является мощным, но простым в настройке как из командной строки, так и через специальное приложение с графическим интерфейсом. Под капотом брандмауэры Linux полагаются на netfilter , структуру сетевой фильтрации на стороне ядра. Здесь, в пользовательской среде, у нас есть выбор инструментов для взаимодействия с netfilter, таких как iptables, ufw несложный брандмауэр и <брандмауэр.

По нашему мнению, firewalld предлагает наилучший баланс функциональности, детализации и простоты.

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

firewalld состоит из двух частей. Есть firewalld, процесс-демон, обеспечивающий функциональность брандмауэра, и есть firewall-config. Это необязательный графический интерфейс для firewalld. Обратите внимание, что в firewall-config нет буквы «d».

Установка firewalld в Ubuntu, Fedora и Manjaro проста во всех случаях, хотя у каждого из них есть свой взгляд на то, что предустановлено и что входит в комплект.

Для установки в Ubuntu нам нужно установить firewalld и firewall-config.

sudo apt install firewalld
sudo apt install firewall-config

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

sudo dnf install firewall-config

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

sudo pacman -Sy firewalld

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

sudo systemctl enable firewalld

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

sudo systemctl start firewalld

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

sudo systemctl status firewalld

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

sudo firewall-cmd --state

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

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

Брандмауэр firewalld основан на зонах. Зоны — это наборы правил брандмауэра и связанное с ними сетевое соединение. Это позволяет вам настраивать разные зоны и другой набор ограничений безопасности, в которых вы можете работать. Например, у вас может быть определена зона для регулярных ежедневных пробежек, другая зона для более безопасных пробежек и зона полной блокировки «ни входить, ни выходить».

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

Это позволяет очень быстро перейти от одного определенного набора правил брандмауэра к другому. Другим способом использования зон может быть использование ноутбуком одной зоны, когда вы дома, и другой, когда вы находитесь вне дома и используете общедоступный Wi-Fi.

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

  • drop: все входящие пакеты отбрасываются. Исходящий трафик разрешен. Это самая параноидальная настройка.
  • блокировать: все входящие пакеты отбрасываются, а отправителю отправляется сообщение icmp-host-prohibited. Исходящий трафик разрешен.
  • доверенный: принимаются все сетевые подключения, а другие системы являются доверенными. Это наиболее надежный параметр, и его следует использовать только в очень безопасных средах, таких как закрытые тестовые сети или ваш дом.
  • public: эта зона предназначена для использования в общедоступных или других сетях, где нельзя доверять ни одному из других компьютеров. Принимается небольшой набор распространенных и обычно безопасных запросов на подключение.
  • external: эта зона предназначена для использования во внешних сетях с включенной маскировкой NAT (переадресацией портов). Ваш брандмауэр действует как маршрутизатор, перенаправляющий трафик в вашу частную сеть, которая остается доступной, но все еще частной.
  • internal: эта зона предназначена для использования во внутренних сетях, когда ваша система действует как шлюз или маршрутизатор. Другим системам в этой сети обычно доверяют.
  • dmz: эта зона предназначена для компьютеров, расположенных в «демилитаризованной зоне» за пределами вашей защиты периметра и с ограниченным доступом обратно в вашу сеть.
  • работа: эта зона предназначена для рабочих машин. Другие компьютеры в этой сети обычно считаются доверенными.
  • дом: эта зона предназначена для домашних компьютеров. Другие компьютеры в этой сети обычно считаются доверенными.

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

Хорошей отправной точкой является определение зоны по умолчанию. Это зона, в которую добавляются ваши сетевые интерфейсы при установке 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 | less

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

На нашем ноутбуке мы собираемся переместить наше соединение 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 -постоянная опция.

sudo firewall-cmd --runtime-to-permanent

Добавление и удаление служб

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.

Использование графического интерфейса

Нажмите клавишу «Супер» и начните вводить «брандмауэр». Вы увидите значок кирпичной стены для приложения firewall-config .

Щелкните этот значок, чтобы запустить приложение.

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

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

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

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

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

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

Верхушка айсберга

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