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地址列表 。

推荐阅读