Linux 的 Xinetd 服务介绍
Xinetd 简介
Xinetd 是新一代的网络守护进程服务程序,又叫超级 Internet 服务器,经常用来管理保护多种轻量级 Internet 服务。它在 Linux 的安全中有着举足轻重的地位,它管理的服务都是一些不是很常用,但是系统中偶尔也会用到的小服务或者该服务没什么好的安全机制,比如:Ftp、Rsync、Telnet、SSH 等。它并不是一真正意义上的服务,Xinetd 相当于 Rync、SSH 等服务的代理人,比如代理了 sshd,那就可以关闭 SSH 服务,22 端口就由 Xinetd 服务代理了。它的作用大致可以分为以下几个:访问控制、防止 DOS 攻击、服务转发、用户交互式体验等。
概念介绍
超级守护进程:多个服务统一由一个进程管理,该进程可以管理多个服务。独立启动的守护进程:每个特定服务都有单独的守护进程(stand-alone),这个保证单一服务始终存活的进程就是独立启动的守护进程。
优点介绍
强大的存取控制功能
- 设置特定的连接时间;
- 内置对恶意用户和善意用户的差别待遇设定;
- 使用
libwrap支持,其效能更甚于tcpd; - 可以限制连接的等级,基于主机的连接数和基于服务的连接数;
- 将某个服务设置到特定的主机以提供服务。
有效防止 DoS 攻击
- 可以限制连接的等级;
- 可以限制一个主机的最大连接数,从而防止某个主机独占某个服务;
- 可以限制日志文件的大小,防止磁盘空间被填满。
强大的日志功能
- 可以为每一个服务
syslog设定日志等级; - 如果不使用
syslog,也可以为每个服务建立日志文件; - 可以记录请求的起止时间以决定对方的访问时间;
- 可以记录试图非法访问的请求。
- 可以为每一个服务
转向功能
- 可以将客户端的请求转发到另一台主机去处理。
支持 IPv6
- Xinetd 从
2.1.8.8 pre*版本开始就支持 IPv6,另外 IPv4 仍然被支持。
- Xinetd 从
与客户端的交互功能
- 无论客户端请求是否成功,Xinetd 都会有提示告知连接状态。
缺点介绍
Xinetd 当前最大的缺点是对 RPC 支持的不稳定,但是可以启用 protmap,使它与 Xinetd 共存来解决这个问题。
Xinetd 使用
原则上任何系统服务都可以使用 Xinetd,然而最适合的应该是那些常见的网络服务,并且这些服务的请求数目和频繁程度不会太高。像 DNS 和 Apache 就不适合采用 Xinetd 进行管理,而像 FTP、Telnet、SSH 等就适合使用 Xinetd 进行管理。
- 系统默认使用 Xinetd 的服务可以分为如下几类
- ① 标准 Internet 服务:telnet、ftp。
- ② 信息服务:finger、netstat、systat。
- ③ 邮件服务:imap、imaps、pop2、pop3、pops。
- ④ RPC 服务:rquotad、rstatd、rusersd、sprayd、walld。
- ⑤ BSD 服务:comsat、exec、login、ntalk、shell、talk。
- ⑥ 内部服务:chargen、daytime、echo、servers、services、time。
- ⑦ 安全服务:irc。
- ⑧ 其他服务:name、tftp、uucp。
具体可以使用 Xinetd 进行管理的服务都在 /etc/services 配置文件中定义,该配置文件记录了网络服务名和它们对应使用的端口号及协议。文件中的每一行对应一种服务,它由 4 个字段组成,中间用 Tab 键或空格键分隔,分别表示 服务名称、使用端口、协议名称 及 别名。在一般情况下,不要修改该配置文件的内容,因为这些设置都是 Internet 标准的设置。一旦修改,可能会造成系统冲突,使用户无法正常访问资源。Linux 系统的端口号范围为 0 ~ 65535,不同范围的端口号有不同的意义:
0:不使用。1 ~ 1023:系统保留,只能由root用户使用。1024 ~ 4999:由客户端程序自由分配。5000 ~ 65535:由服务器程序自由分配。
Xinetd 配置
Xinetd 的配置文件是 /etc/xinetd.conf,但是它只包括默认值,并包含 /etc/xinetd.d 目录中的配置文件。如果要启用或禁用某项 Xinetd 服务,可以编辑位于 /etc/xinetd.d 目录中的配置文件。例如,disable 属性被设为 yes,表示该项服务已禁用;disable 属性被设为 no,表示该项服务已启用。参数和值之间的操作符可以是 =、+= 或 -=。所有属性可以使用 =,其作用是分配一个或多个值。某些属性可以使用 += 或 -=,其作用分别是将其值增加到某个现存的值表中,或将其值从现存值表中删除。详细的配置参数说明如下:
| 配置参数 | 说明 |
|---|---|
| enabled | 是否启用该服务或服务列表 |
| disabled | 是否停用该服务或服务列表 |
| server | 启动脚本的位置 |
| server_args | |
| socket_type | 服务的数据包类型 |
| log_type | 包括:日志类型、路径、报警最大容量、停止服务的最大容量 |
| log_on_success | 成功后要将哪些值记录到日志中 |
| log_on_failure | 失败后要将哪些值记录到日志中 |
| only_from | 只有指定 IP 可以访问 |
| no_access | 指定 IP 不可以访问 |
| access_times | 允许连接的时间 |
| user | 运行此服务进程的用户 |
| wait | 服务将以多线程的方式运行 |
| max_load | 系统最大负载系数 |
| cps m n | 限制每秒 m 个入站连接,如果超过 m,则等待 n 秒,主要用于对付服务攻击 |
| port | 连接的端口 |
| nice | |
| protocol | 连接使用的协议 |
| instances | 最大连接进程数 |
| per_source | 限制每个主机的最大连接数 |
| bind | |
| mdns | |
| v6only | |
| passenv | |
| groups | |
| umask | |
| banner | |
| banner_fail | |
| banner_success | |
| rlimit_as | 最多可用内存 |
| rlimit_cpu | CPU 每秒最多处理的进程数 |
Xinetd 安装
- CentOS 安装 Xinetd
1 | # 安装 |
- Xinetd 服务管理
1 | # 启动 |
