让Xinetd 服务更安全

作者:马路遥
  xinetd服务。又名超级Internet服务器。经常用来管理多种轻量级Internet 服务。如telnet talk pop3 imap 等。有时也用来管理Apache 和ftp服务。xinetd 可以在Linux 、FreeBSD、Solaris等多种Unix操作系统上使用。
  xinetd 服务的核心配置文件是 /etc/xinetd.conf 文件。它的最后一行一般是
includedir /etc/xinetd.d ,这表示具体的服务配置都写在/etc/xinetd.d 目录下的配置文件中。以/etc/xinetd.d/telnet 为例。该文件内容如下。(每行’#’后笔者添加的说明)
service telnet  #使用telnet服务的标准端口,即23
{
disable = no #启动xinetd服务时自动打开本服务
socket_type = stream #服务使用的数据传输方式
wait = no #本服务是多线程的
user = roo #执行本服务的用户名t
server = /usr/sbin/in.telnetd #启动telnet 服务所使用的命令
log_on_failure += USERID #登陆不成功时日志记载用户名的信息
}

  上边是telnet 服务的基本配置。我们还可以添加下面的选项。如;
bind = 192.168.0.200
这可以使telnet 服务只在某一个IP地址上提供服务,对于哪些起网关作用的服务器来说。可以拒绝外部地址的访问。
only_from = 192.168.0.100
  这可以使得只有IP地址为192.168.0.100 的机器才能使用本机的telnet 服务,这样可以拒绝哪些未经授权的访问请求。
no_access = 192.168.0.101 ,禁止某个地址访问本机的telnet 服务。
access_times = 23:00-6:00 允许在23:00至6:00的其间访问本机的telnet 服务。注意要用24小时制来表示。小时可以是0-23 ,而分钟可以是0-59,但不可以用24来表示小时或用60来表示分钟。
  除了利用Xinetd 服务自身的配置文件以外。我们还可以使用tcp-wrappers 防火墙来保护xinetd 提供的多种服务。tcp-wrappers 防火墙是用过/etc/hosts.deny 和 /etc/hosts.allow 两个文件来配置的。是一种简单易用。却又功能强大的防火墙。
  /etc/hosts.deny 文件用来存放拒绝访问的机器列表,/etc/hosts.allow用来存放允许访问的机器列表。如果两个文件的定义存在歧义,则以/etc/hosts.allow为准。两个文件的格式相同都是如下格式:
SERVICE:HOST(s)[:ACTION] 

  SERVICE 和 HOST(s)是必须的。而ACTION部分是可选的。
SERVICE 项就是服务的进程名称,也就是ps –e 命令中显示的进程名称。并且可以是用ALL和EXCEPT 关键字。代表所有的服务或例外。如:
ALL EXCEPT sshd 代表除了ssh 服务以外的所有服务。
HOST(s)代表某台主机或一系列主机,也可以使用ALL 和 EXCEPT 关键字。
如192.168.0.3 代表一台主机。
192.168.0. EXCEPT 192.168.0.3 代表除了192.168.0.3以外的192.168.0.0整个网段。
.abc.com EXCEPT bad.abc.com 代表除了 bad.abc.com 以外的所有以abc.com为结尾的域名。
ACTION字段是可选的。她使得我们可以在有连接请求的时候执行一定的动作。如写入日志或发email通知管理员等工作。写法通常为
spawn /bin/echo `date` %c >> /var/log/tcp_wrapper
含义是当有访问请求时。将日期和客户机的信息写如 /var/log/tcp_wrapper 作为日志。除了%c 之外,还可以用 %d、%a、%p等参数来代表不同的信息。详细用法可以用man xinetd.conf 来查询。
下面给出一个完整的tcp_wrappers 防火墙的配置,这也是笔者在工作中的实际配置之一。
/etc/hosts.allow 如下 :
in.ftpd:mycompany.com
in.ftpd:myhome.com
in.telnetd:mycompany.com
in.telnetd:myhome.com

/etc/hosts.deny 如下:
in.ftpd:ALL:spawn /bin/echo `date` %c >> /var/log/tcp_wrapper
in.telnetd:ALL: spawn /bin/echo `date` %c >> /var/log/tcp_wrapper

通过/etc/hosts.deny 和/etc/hosts.allow 的组合配置,实现的功能如下:
1.用我家中和公司的固定IP地址可以访问这太服务器的ftp和telnet 服务。
2.其他地方的非法请求,不仅回被拒绝,而且将写到日志中。

tcp_wrapper防火墙的功能十分之有用,对此笔者有亲身的体会。2000年的时候。笔者为公司在省电信的机房里架设了一台测试用的服务器。当时没有意识到Internet 上的险恶环境,服务器没有安装任何形式的防火墙,结果3天之后。服务器就被黑客所破坏。痛定思痛,笔者重新安装了服务器,并增加了上述的防火墙。从结果来看。效果十分理想。这台服务器在网上放置了一年。一直都毫发无损。
  

Comments

学习!!