Вопрос или проблема
Я хочу открыть следующие порты в своем файрволле CentOS 7:
UDP 137 (Служба имен NetBIOS)
UDP 138 (Служба дейтаграмм NetBIOS)
TCP 139 (Служба сессий NetBIOS)
TCP 445 (SMB)
Я предполагаю, что имя службы samba
включает TCP 445, но я не знаю, имеют ли другие порты преднастроенные имена служб.
Я могу перечислить поддерживаемые службы, используя:
$ firewall-cmd --get-services
Но это не говорит мне, какие порты настроены для этих служб.
Есть ли способ перечислить, какие порты принадлежат этим службам, чтобы я мог найти нужный?
Вы можете найти xml-файлы, в которых хранится эта информация, по адресу /usr/lib/firewalld/services/
(для управляемых дистрибутивом служб) и/или /etc/firewalld/services/
для ваших собственных пользовательских служб.
Например, samba.xml
выглядит так (на моем centos7):
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Samba</short>
<description>Эта опция позволяет вам получать доступ и участвовать в сетях совместного использования файлов и принтеров Windows. Вам нужно установить пакет samba, чтобы эта опция была полезной.</description>
<port protocol="udp" port="137"/>
<port protocol="udp" port="138"/>
<port protocol="tcp" port="139"/>
<port protocol="tcp" port="445"/>
<module name="nf_conntrack_netbios_ns"/>
</service>
Так что легко заметить, какие порты включены для этой службы. Если у вас есть номер порта (и он не является частью диапазона портов), вы можете попробовать что-то вроде
grep -r -l 'port="3702"' {/usr/lib,/etc}/firewalld/services/
(и игнорировать возможную ошибку о том, что /etc/firewalld/services
не существует).
Ответ или решение
Чтобы получить список портов, которые относятся к преднастроенным службам в фаерволе firewalld на CentOS 7, существует несколько методов. Firewalld использует конфигурационные файлы в формате XML для определения служб и их связанных портов. Ниже приведены подробные шаги для выполнения этой задачи.
Шаг 1: Получение списка доступных служб
Сначала вы можете получить список всех поддерживаемых служб с помощью команды:
firewall-cmd --get-services
Эта команда выведет список всех предустановленных служб, доступных на вашей системе, таких как samba
, http
, ssh
и других. Однако данная команда не предоставляет информацию о портах, связанных с этими службами.
Шаг 2: Изучение конфигурационных файлов
Для просмотра или поиска портов, связанных с конкретными службами, необходимо обратиться к конфигурационным файлам, которые располагаются в следующих каталогах:
/usr/lib/firewalld/services/
(для системных служб, управляемых дистрибутивом)/etc/firewalld/services/
(для пользовательских или настроенных вручную служб)
Вы можете просмотреть содержимое файла, соответствующего нужной вам службе, следующим образом. Например, для службы Samba:
cat /usr/lib/firewalld/services/samba.xml
В этом файле вы увидите информацию о портах, таких как:
<port protocol="udp" port="137"/>
<port protocol="udp" port="138"/>
<port protocol="tcp" port="139"/>
<port protocol="tcp" port="445"/>
Эти строки показывают, какие конкретные порты открываются службой Samba.
Шаг 3: Автоматизированный поиск
Если вам нужно быстро найти, какие службы связаны с определённым портом, вы можете использовать команду grep
. Например, если вы хотите найти, какая служба использует порт 137, выполните:
grep -r -l 'port="137"' {/usr/lib,/etc}/firewalld/services/
Эта команда просканирует указанные каталоги и выведет названия файлов, содержащих упоминаемый порт.
Шаг 4: Проверка активных правил
Для дополнения, вы можете проверить активные правила и посмотреть, какие порты открыты в данный момент, используя:
firewall-cmd --list-all
Это даст вам представление о текущей конфигурации фаерволла.
Заключение
Таким образом, изучив конфигурационные файлы служб и применив команды для поиска, вы сможете легко составить список портов, ассоциированных с преднастроенными службами в firewalld на CentOS 7. Данный подход не только помогает в настройке сети, но также обеспечивает безопасность, позволяя открывать только необходимые порты.