系统管理指南:IP 服务

监视和修改传输层服务

传输层协议 TCP、SCTP 和 UDP 是标准 Oracle Solaris : 软件包的一部分。这些协议通常无需进行干预即可正常运行。但是,站点上的具体情况可能要求您记录或修改通过传输层协议运行的服务。因而,您必须使用服务管理工具 (Service Management Facility, SMF) 修改这些服务的配置文件,《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”对此工具进行了介绍。

inetd 守护进程负责在系统引导时启动标准 Internet 服务。这些服务包括将 TCP、SCTP 或 UDP 用作其传输层协议的应用程序。可以使用 SMF 命令修改现有的 Internet 服务或添加新服务。有关 inetd 的更多信息,请参阅inetd Internet 服务守护进程

涉及传输层协议的操作包括:

有关 inetd 守护进程的详细信息,请参阅 inetd(1M) 手册页。

Procedure如何记录所有传入 TCP 连接的 IP 地址

  1. 在本地系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 对于 inetd 管理的所有服务,将 TCP 跟踪设置为“启用”。


    # inetadm -M tcp_trace=TRUE
    

Procedure如何添加使用 SCTP 协议的服务

SCTP 传输协议以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,即多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的考虑。

缺省情况下,SCTP 包括在 Oracle Solaris : 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echodiscard 就是这样的应用程序。下一过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。


注 –

也可以使用以下过程为 TCP 和 UDP 传输层协议添加服务。


以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用服务管理工具 (Service Management Facility, SMF) 命令添加该服务。

开始之前

执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。

  1. 使用拥有系统文件的写入权限的用户帐户,登录到本地系统。

  2. 编辑 /etc/services 文件并添加新服务的定义。

    对于服务定义,使用以下语法。


    service-name |port/protocol | aliases
    
  3. 添加新服务。

    转到存储服务清单的目录,然后键入以下内容:


    # cd dir-name
    # svccfg import service-manifest-name
    

    有关 svccfg 的完整语法,请参阅 svccfg(1M) 手册页。

    假定您希望使用当前位于 service.dir 目录中的清单 echo.sctp.xml 添加新的 SCTP echo 服务,应键入以下内容:


    # cd service.dir
    # svccfg import echo.sctp.xml
    
  4. 验证是否已添加服务清单:


    # svcs FMRI
    

    对于 FMRI 参数,使用服务清单的故障管理资源标识符 (Fault Managed Resource Identifier, FMRI)。例如,对于 SCTP echo 服务,应使用以下命令:


    # svcs svc:/network/echo:sctp_stream
    

    输出应该与如下所示类似:


    	STATE          STIME    FMRI
    disabled       16:17:00 svc:/network/echo:sctp_stream

    有关 svcs 命令的详细信息,请参阅 svcs(1) 手册页。

    该输出指明,新的服务清单当前处于禁用状态。

  5. 列出服务的属性以确定是否必须进行修改。


    # inetadm -l FMRI
    

    有关 inetadm 命令的详细信息,请参阅 inetadm(1M) 手册页。

    例如,对于 SCTP echo 服务,应键入以下内容:


    # inetadm -l svc:/network/echo:sctp_stream
    SCOPE    NAME=VALUE
    	         name="echo"
    	         endpoint_type="stream"
    	         proto="sctp"
    	         isrpc=FALSE
    	         wait=FALSE
    	         exec="/usr/lib/inet/in.echod -s"
             .
             .
             default  tcp_trace=FALSE
           	default  tcp_wrappers=FALSE
  6. 启用新服务:


    # inetadm -e FMRI
    
  7. 验证服务是否已启用:

    例如,对于新的 echo 服务,应键入以下内容:


    # inetadm | grep sctp_stream
    .
    .
    	enabled   online         svc:/network/echo:sctp_stream

示例 5–9 添加使用 SCTP 传输协议的服务

以下示例给出要使用的命令以及使回显服务使用 SCTP 传输层协议所需的文件项。


$ cat /etc/services
.
.
echo            7/tcp
echo            7/udp
echo            7/sctp

# cd service.dir

	# svccfg import echo.sctp.xml

# svcs network/echo*
	STATE          STIME    FMRI
	disabled       15:46:44 svc:/network/echo:dgram
	disabled       15:46:44 svc:/network/echo:stream
	disabled       16:17:00 svc:/network/echo:sctp_stream

# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE
	         name="echo"
	         endpoint_type="stream"
	         proto="sctp"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

# inetadm -e svc:/network/echo:sctp_stream

# inetadm | grep echo
	disabled  disabled       svc:/network/echo:stream
	disabled  disabled       svc:/network/echo:dgram
	enabled   online         svc:/network/echo:sctp_stream

Procedure如何使用 TCP 包装控制对 TCP 服务的访问

tcpd 程序可实现 TCP 包装。TCP 包装介于守护进程和传入的服务请求之间,为诸如 ftpd 之类的服务守护进程提供了安全措施。TCP 包装记录成功的和不成功的连接尝试。此外,TCP 包装可以提供访问控制,根据发出请求的位置允许或拒绝连接。可以使用 TCP 包装保护诸如 SSH、Telnet 和 FTP 之类的守护进程。sendmail 应用程序也可以使用 TCP 包装,如《系统管理指南:网络服务》中的“sendmail 版本 8.12 支持 TCP 包装”所述。

  1. 在本地系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将 TCP 包装设置为“启用”。


    # inetadm -M tcp_wrappers=TRUE
    
  3. 配置 TCP 包装访问控制策略,如 hosts_access(3) 手册页中所述。

    此手册页可以在 SFW CD-ROM(它与 Oracle Solaris : CD-ROM 一起打包)上的 /usr/sfw/man 目录中找到。