SuSEfirewall2/通过软件包添加的服务定义
关于
本文档描述了如何使用和支持 SuSEfirewall2 - 通过特殊的 sysconfig 文件定义服务(例如,Samba 服务器)。
一些复杂的服务需要打开许多不同的 TCP、UDP、RPC 端口,和/或允许不同的 IP 协议,或者允许某些端口上的传入广播。此外,您可能还有更多共享这些端口的服务(例如 portmap)。一旦您在防火墙中打开这些端口,就很难记住哪个端口属于哪个服务。
此功能(SuSEfirewall2 自 openSUSE 10.2 起,YaST 防火墙自 openSUSE 10.3 起)允许您定义简单的配置文件 - 每个服务一个。这些服务随后在 SuSEfirewall2 的特殊配置变量中指定(每个防火墙区域一个变量)。
为什么服务定义包含在更多软件包中?
静态服务列表不适用于大量的服务定义。动态服务集链接到当前安装的软件包。
如果您没有安装 apache2,那么在 YaST 防火墙用户界面中提供允许 HTTP 服务器,并用永远不会使用的配置填充该目录是没有必要的。
如何定义新服务?
所有这些服务定义都存储在:/etc/sysconfig/SuSEfirewall2.d/services 和 /usr/share/SuSEfirewall2/services 中。服务定义文件应属于相应的 RPM 软件包,并且也应反映软件包名称或守护程序名称,以避免与其他软件包发生冲突。
使用文件 /etc/sysconfig/SuSEfirewall2.d/services/TEMPLATE 作为模板。
示例
以下是 Samba 服务器服务定义的一个示例,它可能被写入 /etc/sysconfig/SuSEfirewall2.d/services/samba-server 文件(samba 软件包在一个软件包中具有客户端和服务器功能)
## Name: Samba Server ## Description: Opens ports for Samba Server with broadcast allowed. # space separated list of allowed TCP ports TCP="netbios-ssn microsoft-ds" # space separated list of allowed UDP ports UDP="netbios-ns netbios-dgm" # space separated list of allowed RPC services RPC="" # space separated list of allowed IP protocols IP="" # space separated list of allowed UDP ports that accept broadcasts BROADCAST="netbios-ns netbios-dgm"
重要行用粗体文本标记。Name 变量(被两个 # 字符隐藏)在 YaST 防火墙中用作在用户界面中显示的名称。
此示例打开 TCP 端口 139、445,UDP 端口 137、138,并允许 UDP 端口 137、138 上的广播。
需要接受广播的 UDP 端口必须同时在 UDP 和 BROADCAST 中列出,因为 SuSEfirewall2 可以配置为接受单播数据包,但丢弃广播。事实上,外部区域默认情况下会丢弃广播。
支持的格式
配置值中允许使用多种格式。
端口名称 - 例如,netbios-ns,允许在 TCP、UDP 和 BROADCAST 中使用。端口号 - 例如,137,允许在 TCP、UDP 和 BROADCAST 中使用。端口范围 - 例如,200:250,允许在 TCP、UDP 和 BROADCAST 中使用。RPC 服务名称 - 例如,ypbind,允许在 RPC 中使用(这些服务动态占用空闲端口,因此需要通过监听该端口的应用程序的名称来定义)。IP 协议名称 - 例如,esp,允许在 IP 中使用。
## Name: Exemplary Service ## Description: Opens several ports and makes your system insecure TCP="ssh 13:20 http 130:150 32000:38000" UDP="netbios-ns 150:300" RPC="portmap nlockmgr mountd nfs nfs_acl" IP="esp" BROADCAST="netbios-ns netbios-dgm"
如何在防火墙配置中使用服务?
这很简单。/etc/sysconfig/SuSEfirewall2 配置文件中有三个特殊变量:FW_CONFIGURATIONS_EXT、FW_CONFIGURATIONS_DMZ 和 FW_CONFIGURATIONS_INT。只需使用文件名(定义服务)并将其写入选定的变量即可。
示例
FW_CONFIGURATIONS_DMZ="samba" FW_CONFIGURATIONS_EXT="bind apache2 lukemftp"
此示例使用四个定义的服务,Samba 服务器允许在隔离区中使用,其他服务在外部区域中使用。