【 tulaoshi.com - Linux 】
一、
当在一台PC机上安装了Linux系统,你就拥有了一个强大的、高级的、多任务的网络操作系统。但时候该系统功能有些过于强大了些。某些发布版本缺省启动很多服务(如:rlogind, inetd, httpd, innd, fingerd,timed, rhsd,等等)。作为系统管理员需要熟悉了解这些服务。若机器连接了Internet,就更需要关自己系统的安全。
大多数攻击者并不是一个革新者,他们往往利用最新的公布的系统工具技术等突破一个所周知的或 一个新的刚刚发现的安全漏洞。但作为一个管理者,通过访问你使用的Linux发布的官方站点如
www.redhat.com、www.calderasystems.com等可以获知最新的安全漏洞及相应的补丁程序。也可以通过定
期访问www.securityfocus.com、www.cert.org等安全漏洞通告站点。
控制访问服务器的最方便的方法是通过一个叫TCP wrapper的程序。在大多数发布版本中该程序往往是缺 省地被安装。利用TCP wrapper你可以限制访问前面提到的某些服务。而且TCP wrapper的记录文件记录了所 有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁企图连接你的系统。
在Linux的/etc目录下,有一个如下所示inetd.conf文件,该文件是TCP wrapper的配置文件,定义了 TCP wrapper可以控制启动哪些服务。比如要将finger服务去除,就将finger服务的那一行注释掉(在前面 加上"# "即可);
# inetd。conf This file describes the services that will be available
# through the INETD TCP/IP super server. To re-configure
# the running INETD process, edit this file, then send the
# INETD process a SIGHUP signal。
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
# Finger, systat and netstat give out user information which may be
...............
但是对于诸如sendmail,named等服务,由于它们不象finger,telnet等服务,在请求到来时由inet守护 进程启动相应的进程提供服务,而是在系统启动时,单独作为守护进程运行的。在slackware版本的Linux,可 以通过修改/etc/rc.d目录下的启动配置文件rc.M文件,将启动sendmail的命令行注释掉:
#!/bin/sh
# rc。M This file is executed by init(8) when the system is being
# initialized for one of the "multi user" run levels (i.E.
# levels 1 through 6). It usually does mounting of file
# systems et al.
# Start the sendmail daemon:
# if [ -x /usr/sbin/sendmail ]; then
# echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -q 15m)… "
# /usr/sbin/sendmail -bd -q 15m
# fi
............
(注:对于redhat发布,可以巩固运行chkconfig命令或linuxconfig命令来管理是否启动某项服务,如: chkconfig --level 345 sendmail on 来实现系统在345运行级别下自动启动sendmail) 对于诸如named等其他服务,也是通过将同一个目录下相应启动配置文件中相应的启动命令注释掉,从而当 你重新启动机器时,相应的服务将不会启动。而对于高版本的redhat linux,提供了一个linuxconfig命令, 可以通过它在图形界面下交互式地设置是否在启动时,运行相关服务。 但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。
Linux提供另外一种更为灵活有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上, 使可信任用户使用各种服务。
在/etc目录下,有两个文件:hosts.deny hosts.allow 通过配置这两个文件,你可以指定哪些机器可 以使用这些服务,哪些不可以使用这些服务。配置这两个文件是通过一种简单的访问控制语言来实现的,访 问控制语句的基本格式为: 程序名列表,主机名/IP地址列表。
程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分隔,可以在 inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所 需的程序名:in.telnetd 主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格 分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。 当服务请求到达服务器时,访问控制软件就按照下列顺序查询这两个文件,直到遇到一个匹配为止:
1. 当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务
2. 否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务
3. 否则允许使用该服务 如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文 件实现对所有主机关闭所有服务。
在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加 # 实 现注释功