Вопрос или проблема
Добавляет ли команда добавление сервиса с помощью firewall-cmd автоматически порт, который нужен сервису? Например, когда я добавляю myservice, нужно ли мне также указывать порт? Какова цель –add-service, если нужно также добавлять порт?
firewall-cmd --zone=public --add-service=myservice
Нет необходимости указывать порт.
Смотрите https://firewalld.org/documentation/howto/open-a-port-or-service.html
Для большинства более важных сервисов в firewalld уже определен сервис. Тогда нет необходимости знать о номерах стандартных портов.
Команда firewall-cmd --zone=public --add-service=myservice
добавляет существующий сервис в зону фаервола; она не определяет новый сервис myservice
. Это означает, что сервис с именем myservice
уже существует.
Вам может быть интересно прочитать 23.4.3 Настройка фаервола через командную строку в Руководстве по безопасности и жесткой настройке SUSE Linux Enterprise Server 15 SP6 (даже если вы используете другое дистрибутив).
Чтобы определить новый сервис, вы можете либо скопировать и редактировать существующий сервис, либо сделать это официальным способом, как показано ниже:
FW_CMD='firewall-cmd --permanent'
# определите имя *n*, краткое описание *s*, описание *d*, порт *p* и протокол *proto*
$FW_CMD --new-service="$n"
$FW_CMD --service="$n" --set-short="$s"
$FW_CMD --service="$n" --set-description="$d"
$FW_CMD --service="$n" --add-port="$p/$proto"
Более подробную информацию можно найти в соответствующих руководствах.
Ответ или решение
Когда речь заходит о конфигурации сетевых брандмауэров в Linux, особенно при работе с firewalld
и командой firewall-cmd
, важно понимать, как добавление служб и портов соотносится друг с другом. Вопрос, который вы подняли, касается автоматического добавления портов при добавлении службы, и давайте разберем это более детально.
Основы работы с firewall-cmd
Команда firewall-cmd
используется для управления настройками firewalld
, который предоставляет динамическую конфигурацию брандмауэра для Linux. Когда вы используете команду:
firewall-cmd --zone=public --add-service=myservice
вы добавляете уже существующую службу myservice
в определенную зону (в данном случае, в зону "public"). Это означает, что для службы уже заранее настроены необходимые порты и протоколы.
Автоматическое добавление портов
Как упоминалось в вашем вопросе, нет необходимости указывать порт отдельно, если служба уже существует в конфигурации firewalld
. Для большинства распространенных сервисов, таких как HTTP, HTTPS, FTP и т.д., firewalld
уже предлагает определение службы, включающее стандартные порты и протоколы. Таким образом, команда --add-service
автоматически добавляет все необходимые правила (включая порты) в зависимости от заранее заданного набора параметров службы.
Цель --add-service
Цель директивы --add-service
заключается в упрощении управления брандмауэром. Вместо того чтобы вручную добавлять каждый порт и его протокол для службы, достаточно добавить один элемент, который уже содержит все необходимые настройки. Это упрощает работу администраторов, особенно когда службы, которые нужно открыть, распространены и имеют стандартные конфигурации.
Добавление новой службы
Если же требуется добавить новую службу, которая не входит в стандартный набор, необходимо использовать более сложные команды для определения этой службы. Например, чтобы добавить новую службу с указанием порта и протокола, вы можете использовать следующие команды:
FW_CMD='firewall-cmd --permanent'
$name='myservice'
$short_description='Краткое описание'
$description='Полное описание службы'
$port='8080'
$proto='tcp'
$FW_CMD --new-service="$name"
$FW_CMD --service="$name" --set-short="$short_description"
$FW_CMD --service="$name" --set-description="$description"
$FW_CMD --service="$name" --add-port="$port/$proto"
В этом случае вы создаете новую службу с собственными параметрами и можете точно указать, какие порты открывать и какие протоколы использовать.
Заключение
Таким образом, основное правило заключается в том, что добавление существующей услуги с помощью firewall-cmd
автоматически открывает необходимые порты и протоколы, что упрощает процесс настройки. Если вам необходимо настроить новую службу, существуют формализованные команды для ее создания, которые включают в себя детали, такие как порты и протоколы.
Эта информация позволяет более эффективно управлять настройками вашего брандмауэра, повышая безопасность и оптимизацию управляемых услуг. Рекомендуется регулярно проверять официальный документ firewalld для получения актуальной информации о поддерживаемых службах и настройках.