xinetd和inetd守护进程
inetd是在许多Linux系统上运行的守护程序。inetd守护程序的目的是侦听特定端口上的连接。创建inetd来处理多个服务,这种方法消除了对多个守护程序的需要。inetd将确定需要哪个服务,然后确定需要调用哪个程序来满足请求。
inetd的主要配置文件位于/etc/inetd.conf
中。
/etc/inetd.conf部分内容:
service name socket type protocol wait/nowait user server program arguments ## service socket protocol wait/ user server server program ## name type nowait program arguments ftp stream tcp6 nowait root /usr/sbin/ftpd ftpd telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd -a shell stream tcp6 nowait root /usr/sbin/rshd rshd
Service Name
服务名称 Service Name
标识inetd应该侦听哪个端口。它可以是数字,也可以是/ etc / services
文件中列出的服务的名称。
Socket Type
通信套接字类型是用于TCP的流,用于UDP的dgram和用于原始套接字的raw。
Protocol
可以使用以下协议:
tcp和tcp4 = TCP(IPV4)
udp和udp4 = UDP(IPV4)
tcp6 = TCP(IPV6)
udp6 = UDP(IPV6)
wait/nowait
连接选项。 inetd使用wait
或nowait
字段来定义它应如何处理传入的连接。数据报套接字(UDP)使用wait
。如果指定了wait
,则inetd将在任何时候仅对指定的端口执行一台服务器。nowait
选项用于指定该inetd应该为每个传入连接启动一个新的服务器进程。stream套接字应始终使用nowait
选项。
User
指定用于启动服务的用户名。
Server Program
这是inetd应该启动的服务的路径。内部服务标记为internal
.
Server Program Arguments
服务器程序参数。此字段用于传递给服务器的参数。对于内部服务,此字段为空。
xinetd
现在,大多数现代Linux系统将使用新版本的扩展Internet守护进程
xinetd。
xinetd
实现了inetd过去使用的功能,但是,它提供了日志记录和增强的资源管理。
xinetd
配置文件可以在位置/etc/xinetd.conf
中找到。
但是,大多数服务被配置在/etc/xinetd.d
目录下的单个文件中。
可以使用itox
将旧的inetd.conf文件转换为xinetd.conf文件。
下面是一个/etc/xinetd.conf
文件的例子:
# # xinetd.conf # # Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany. # Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany. # defaults { log_type = FILE /var/log/xinetd.log log_on_success = HOST EXIT DURATION log_on_failure = HOST ATTEMPT # only_from = localhost instances = 30 cps = 50 10 # # The specification of an interface is interesting, if we are on a firewall. # For example, if you only want to provide services from an internal # network interface, you may specify your internal interfaces IP-Address. # # interface = 127.0.0.1 } includedir /etc/xinetd.d
xinetd.d服务文件中的字段说明
字段 | 说明 |
---|---|
id | 服务名称 |
flags | 可使用下列标志的任何组合: INTERCEPT 拦截数据包或者已接受的连接,以验证它们来自可接受的位置。 NORETRY 避免在服务失败时重试。 IDONLY 仅当远程端标识远程用户时才接受连接。 NODELAY 如果服务是tcp服务,并且设置了NODELAY标志,那么将在套接字上设置TCP_NODELAY标志。如果服务不是tcp服务,则此选项无效。 KEEPALIVE 设置TCP套接字上的keepalive标志。 SENSOR这将使用检测到指定端口的访问的传感器替换服务。传感器没有检测到隐形扫描。仅当您不需要服务时使用此选项。任何访问尝试都会被记录下来。 IPV4 只使用IPV4。 IPV6 使用IPV6。 |
disable | 这将导致服务被禁用而无法启动。 |
socket_type | stream 基于流的服务 dgram 基于数据服务 raw 需要直接访问IP的服务 seqpacket 需要可靠的顺序数据报传输的服务 |
wait | 此属性确定服务是单线程还是多线程,以及xinetd是否接受连接或服务器程序是否接受连接。如果它的值是yes ,那么服务是单线程的。这意味着xinetd将启动服务器,然后停止处理服务请求,直到服务器死亡,服务器软件将接受连接。如果属性值为no ,则该服务是多线程的,xinetd将继续处理新的服务请求,而xinetd 将接受该连接。 |
user | 确定进程的uid。 |
group | 确定服务作为哪个组运行。 |
instances | 确定可以运行的实例数量。默认值没有限制。 |
nice | 服务器优先级值(nice值)。 |
server | 要执行的服务的完整路径。 |
server_args | 传递给服务器的参数。 |
only_from | 用于限制可以访问的IP地址、网络或主机名。 |
no_access | 通过IP地址、网络或主机名阻止访问。 |
access_times | 确定服务何时可用。在HH:MM格式中指定 |
log_type | 日志类型,SYSLOG或FILE。 |
log_on_success | 确定记录哪些变量,这些变量可以是PID, HOST, USERID, EXIT, DURATION 或者 TRAFFIC。 |
log_on_failure | 确定记录哪些变量,这些变量可以是 HOST, USERID 或者 ATTEMPT。 |
port | 确定服务端口。如果这是为/etc/services 文件中列出的服务指定的,那么它必须与该文件中列出的端口号相同。 |
bind | 允许将服务绑定到机器上的特定接口。 |
per_source | 它指定每个源IP地址的最大服务实例。 |
cps | 限制连接的数量(每秒连接数)。 |
max_load | 在一分钟平均负载。达到此阈值后停止接受连接。 |
includedir | 采用includedir /etc/xinetd.d 形式包含其他配置文件。 |
/etc/services
文件/etc/services
用于将端口号和协议与服务名称关联起来。
例如,如果TCP请求进入端口901,文件/etc/services
显示Samba Web管理工具的一个条目:
swat 901/tcp
对应的条目可以在/etc/xinetd.d
目录下找到:
sles01:/etc/xinetd.d # ls -l swat* -rw-r--r-- 1 root root 277 Feb 4 2012 swat sles01:/etc/xinetd.d # cat swat # SWAT is the Samba Web Administration Tool. service swat { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/swat only_from = 127.0.0.1 log_on_failure += USERID disable = no }