Unix如何配置inetd限制

wen 网络安全 1

本文目录导读:

Unix如何配置inetd限制

  1. 使用传统 inetd(较少见,依赖 /etc/inetd.conf
  2. 使用 xinetd(现代系统常用,功能强大)
  3. 总结建议

在 Unix/Linux 系统中,inetd(或 xinetd)是用于管理互联网服务的超级守护进程,通过配置 inetd,你可以对监听的网络服务进行访问控制,例如限制 IP 地址、连接速率等。

以下是针对 传统 inetdxinetd 的常用配置方法:

使用传统 inetd(较少见,依赖 /etc/inetd.conf

传统 inetd 本身功能较弱,直接的原生限制能力有限,通常需要借助外部工具(如 tcpd/hosts.allowiptables)。

主要限制方法:

  1. 通过 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。

  2. 使用 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(现代系统常用,功能强大)

xinetdinetd 的增强版,自带丰富的访问控制选项,它的配置文件通常位于 /etc/xinetd.conf 或者 /etc/xinetd.d/ 目录下的独立文件。

常用限制参数

编辑 /etc/xinetd.d/<服务名> 文件(如 telnetftp):

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 黑白名单 使用 xinetdonly_from/no_access
需要限制连接速率/防止 DDoS 使用 xinetdcpsper_source
系统只有传统 inetd 使用 tcpd + hosts.allow/hosts.deny 或直接 iptables
需要更精细的规则(如某端口只允许某用户) 考虑升级到 xinetd 或使用 systemd socket

注意: 修改配置前请备份原文件,并确保不会把自己锁在系统之外(例如配置 SSH 时务必保留至少一个不受限的访问方式)。

抱歉,评论功能暂时关闭!