现在的位置: 首页 > 综合 > 正文

xinetd 服务器

2013年10月10日 ⁄ 综合 ⁄ 共 2090字 ⁄ 字号 评论关闭

xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。它能提供以下特色:

        * 支持对tcp、ucp、RPC
服务(但是当前对RPC的支持不够稳定)
  

        * 基于时间段的访问控制

  * 功能完备的log功能,即可以记录连接成功也可以记录连接失败的行为

  * 能有效的防止DoS
攻击(Denial of Services)

  * 能限制同时运行的同一类型的服务器数目

  * 能限制启动的所有服务器数目

  * 能限制log文件大小

  * 将某个服务绑定在特定的系统接口上,从而能实现只允许私有网络访问某项服务

  * 能实现作为其他系统的代理。如果和ip伪装结合可以实现对内部私有网络的访问
  它最大的缺点是对RPC支持的不稳定性,但是可以启动protmap,与xinetd共存来解决这个问题。

 xinetd已经取代了inetd
,并且提供了访问控制、加强的日志和资源管理功能,已经成了Red Hat 7 和 Mandrake 7.2的Internet标准超级守护进程。

  xinetd用括号括起的、扩展了的语法取代了inetd中的通用的行。另外,还添加了日志和访问控制功能。 虽然inetd可以使用Venema的 tcp_wrappers
软件
(tcpd) 控制 TCP 的连接,但是你不能用它来控制 UDP
连接。此外,inetd对RPC(portmapper)类型的服务也处理不好。另外,虽然使用 inetd 你可以控制连接速度 (
通过给wait或是no wait
变量附加一个数值,例如nowait.1表示每隔一秒钟一个实例),你不能控制实例的最大数。这能导致进程表攻击(例如,一个有效的拒绝服务攻击
)。通过使用xinetd,我们可以防止Dos。
  xinetd 对所有的服务都进行纪录,日志保存到文件 /var/adm/xinetd.log中,并且使用配置文件/etc/xinetd.conf。


配置文件

  xinetd 配置文件,通常可以手工或是自动从inetd.conf文件生成。前者费时间且容易出错;后者可以通过 itox软件或者xconv. pl 脚本
轻易完成。虽然itox软件正在被取消而倾向于使用 xconv. pl 脚本,它仍是很有用的。但是,要注意重复的运行它会覆盖原有的配置文件。itox和 xconv都以同样的方式工作,我们用 itox来进行演示:

  $ itox < /etc/inetd.conf > xinetd.conf
新一些的工具(xconv)可以理解注释,并且在对tcpd的使用上要比itox做得更好,使用itox,你不得不指定守护进程的路径 (如
/usr/sbin)。 你想要包含的第一段就是默认的段,就像名字暗示的那样,默认的xinetd服务。

  defaults
  {
 

    instances = 25

  log_type = FILE /var/adm/servicelog

  log_on_success = PID HOST EXIT

  flags = NORETRY

  log_on_failure = HOST RECORD ATTEMPT

  only_from = 129.22.0.0

  no_access = 129.22.210.61

  disabled = nntp uucp tftp bootps who

  shell login exec

  disabled += finger

  }
  

我们可以了解 xinetd 设置参数的语法:

<指示(directive)>
<操作符(operator)> <值(value)>。

        xinetd所能理解的指示列在表一中,在这里我们将忽略
flags、type、env 和passenv指示符。 我对将对 only_from 和 no_access以及额外的日志选项加以更多的讨论。

表 1. xinetd的指示符
指示符 描述
socket_type 网络套接字类型, 流或者数据包
socket_type 网络套接字类型, 流或者数据包
protocol IP 协议, 通常是TCP或者 UDP
wait yes/no, 等同于inetd的wait/nowait
user 运行进程的用户 ID
server 执行的完整路径
server_args 传递给server的变量,或者是值
instances 可以启动的实例的最大的值
start max_load 负载均衡
log_on_success 成功启动的登记选项
log_on_failure 联机失败的时候的日志信息
only_from 接受的网络或是主机
no_access 拒绝访问的网络或是主机
disabled 用在默认的 {} 中 禁止服务
log_type 日志的类型和路径 FILE /SYSLOG
nice 运行服务的优先级
id 日志中使用的服务名

 操作符非常简单,“=”或者“+=”。用 =,右边给定的值传给左边的指示符。+=也是非常直接的,用于给一个已经指定的指示符添加一个值。没有它,原先的指示符就会被覆盖,这样可以用来展开访问列表,或者跨越多行。
  用如下的格式描述服务:
  服务名 
  {
  指示符 = 值
  指示符 += 值
  }
  服务名一定要在 /etc/services列出 ,并且要使用合适的socket和协议。

抱歉!评论已关闭.