Centos – How to get a list of the ports which belong to preconfigured firewall-cmd services

centosfirewallfirewalldsystemd

I want to open the following ports in my CentOS 7 firewall:

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)

I can guess that the services names include samba includes TCP 445 but I don't know if the other ports have a service name preconfigured.

I can list supported services with:

$ firewall-cmd --get-services

But this doesn't tell me what ports are configured with the services.

Is there a way to list what ports belong to these services so that I can grep for the one that I need?

Best Answer

You can find the xml files this information is stored in in /usr/lib/firewalld/services/ (for distro-managed services) and/or /etc/firewalld/services/ for your own user-defined services.

For example, samba.xml reads (on my centos7):

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Samba</short>
  <description>This option allows you to access and participate in Windows file and printer sharing networks. You need the samba package installed for this option to be useful.</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>

so it's easy to spot what ports are enabled by this service.

Related Question