本文目录导读:

在 Unix/Linux 系统中,inetd(或 xinetd)是用于管理互联网服务的超级守护进程,通过配置 inetd,你可以对监听的网络服务进行访问控制,例如限制 IP 地址、连接速率等。
以下是针对 传统 inetd 和 xinetd 的常用配置方法:
使用传统 inetd(较少见,依赖 /etc/inetd.conf)
传统 inetd 本身功能较弱,直接的原生限制能力有限,通常需要借助外部工具(如 tcpd/hosts.allow 或 iptables)。
主要限制方法:
-
通过
tcpd(/etc/hosts.allow和/etc/hosts.deny)-
修改
/etc/inetd.conf,确保调用服务时使用tcpd作为包装器。 -
示例(假设原配置为
telnet stream tcp nowait root /usr/sbin/telnetd): 应改为:telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/telnetd
-
然后修改
/etc/hosts.allow(允许)和/etc/hosts.deny(拒绝):# /etc/hosts.deny ALL: ALL # /etc/hosts.allow telnetd: 192.168.1.0/255.255.255.0 : allow
这样只有
168.1.0/24网段可以访问 telnet。
-
-
使用
iptables限制端口(更底层,与 inetd 无关但同样有效)iptables -A INPUT -p tcp --dport 23 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 23 -j DROP
使用 xinetd(现代系统常用,功能强大)
xinetd 是 inetd 的增强版,自带丰富的访问控制选项,它的配置文件通常位于 /etc/xinetd.conf 或者 /etc/xinetd.d/ 目录下的独立文件。
常用限制参数
编辑 /etc/xinetd.d/<服务名> 文件(如 telnet、ftp):
service telnet
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -L /usr/sbin/tcpd
# ===== 访问控制参数 =====
# 限制允许连接的客户端 IP
only_from = 192.168.1.0/24 10.0.0.0/8
# 明确拒绝的客户端 IP
no_access = 192.168.1.5
# 最大并发连接数(针对该服务)
instances = 10
# 总连接速率限制(每秒钟允许的最大连接数)
cps = 25 10
# 解释:每秒最多25个连接;若超过,则暂停10秒
# 每个来源 IP 的最大并发连接数
per_source = 5
# 日志记录(可选)
log_type = SYSLOG authpriv
log_on_failure = HOST USERID
log_on_success = HOST USERID
}
参数详解
| 参数 | 作用 |
|---|---|
only_from |
仅允许指定的 IP/网段访问(支持 IP、CIDR、通配符) |
no_access |
拒绝指定的 IP/网段访问(优先级高于 only_from) |
instances |
该服务的最大并发实例数(即最大连接数) |
cps |
每秒最大连接数 + 超过后暂停的秒数(防止 DoS) |
per_source |
每个来源 IP 的最大并发连接数 |
banner_fail |
拒绝连接时显示的提示文件 |
banner_success |
成功连接时显示的提示文件 |
全局配置文件 /etc/xinetd.conf 的限制
你也可以在全局配置中设置默认限制,然后各服务可覆盖:
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_failure = HOST
log_on_success = HOST PID
cps = 25 30
per_source = 10
}
includedir /etc/xinetd.d
应用配置并重启
-
修改配置后,需要重启
xinetd服务:# 对于 systemd 系统 systemctl restart xinetd # 对于 SysV init 系统 service xinetd restart
-
检查服务状态:
ps aux | grep xinetd netstat -tlnp | grep xinetd
总结建议
| 场景 | 推荐方式 |
|---|---|
| 仅需要简单 IP 黑白名单 | 使用 xinetd 的 only_from/no_access |
| 需要限制连接速率/防止 DDoS | 使用 xinetd 的 cps 和 per_source |
系统只有传统 inetd |
使用 tcpd + hosts.allow/hosts.deny 或直接 iptables |
| 需要更精细的规则(如某端口只允许某用户) | 考虑升级到 xinetd 或使用 systemd socket |
注意: 修改配置前请备份原文件,并确保不会把自己锁在系统之外(例如配置 SSH 时务必保留至少一个不受限的访问方式)。