中文(Chinese) 英文(English) Tel: 4006-858-981           Msn: China@Safe.sh         QQ: 7387526       Server Hosting        加入收藏
主页 >> 精辟见解 >> 专家答疑
精辟见解
分类
服务器安全维护之四服务器安全管理

四. 服务器安全管理

4.1 安全管理应做的事

安全管理是站点安全中最重要的一环,离开了管理,安全将变得不切实际。以下也许是Windows系统安全管理员每天应做的事:

1. 检查系统有无新增帐户,并了解其来源及用途;查看管理员组里有无新增帐户,该组的帐户除系统最初设置外,以后不应该增加帐户;

2. 在命令行状态下,运行netstat –an命令查看当前连接及打开的端口,查找可疑连接及可疑的端口;

3. 查看“任务管理器”,查找有无可疑的应用程序或后台进程在运行,并观察CPU及内存的使用状态;

4. 运行注册表编辑器,查找有无可疑的程序被加到windows的启动项里,并查看有无新增的可疑服务;

5. 使用 Windows事件查看器查看“系统日志”“安全日志”和“应用程序日志”,以发现有无可疑的事件或影响系统性能的事件;

6. 检查共享目录,不应有对所有用户可写的目录存在;

7. 如果运行Microsoft IIS,查看C:WINNTsystem32LogFiles下的WEB 服务器日志,以发现是否有试图攻击WEB的行为;

8. 不定期运行杀毒软件查杀病毒;

9. 经常浏览微软的网站,保持服务器的补丁同步更新,留意微软发布的安全公告。

以下是Unix系统安全管理员应经常做的事:

1. 以root运行last,查看用户在过去一段时间内所发生的事件;

2.查看/etc/passwd和/etc/shadow文件,以发现是否有新增用户,并追查用户来源及用途;保证这两个文件中的系统用户(如Daemon bin sys adm lp uucp nuucp listen noaccess、mysql、sshd、nobody等)没有自己的shell;检查有无帐户被提升到root权限(UID 0);

3. 运行netstat –an |grep LISTEN查看有无可疑的打开的端口;

4. 使用ps命令查看系统进程,保证只有必要的进程在运行;

5. 检查被cron运行的程序,Solaris一般在/var/spool/cron目录里,Freebsd一般在/var/cron里,初始化的crontable除root外,其他用户不应拥有;仔细查看root的crontable;

6. 使用vmstat和top查看系统资源占用状况,对高资源占用的系统进程要做谨慎处理;

7. 查看系统日志,包括Solaris下的/var/adm/messages和Freebsd下的/var/log/messages,以发现有无可疑的事件发生;

8. 查看系统安全日志,包括用户登陆尝试、验证失败、可疑的IP地址登陆等,在solaris下是/var/log/authlog,freebsd下是/var/log/auth.log;

9. 运行chkrootkit,以检查系统是否被植入木马程序;

10. 安装了Apache的主机,不定期查看Apache的访问日志和错误日志, 以发现是否有试图攻击WEB的行为。

4.2 系统及服务的稳定性

一些重要的服务器是片刻也不能停的,一旦发生服务器down机事故,而你又没有及时发现和恢复,那么你面对的将是铺天盖地的指责。系统安全管理的任务也许不是很重,但责任却并不轻。因此,你有必要时刻了解服务器的存活状况,一旦发生down机事件,你应在第一时间知道。

有些好的IDC机房有服务器监控系统,一旦某台机器down掉,它会发出警报。然后机房的值班人员会电话通知你,这样你就能从容的处理事故。然而,并非所有的机房都有这样的措施,很多时候还得依靠自己的小心。

在机房网络中,应该有一它网管机器,这台机器最好是Unix系统,因为你可以在上面编写脚本来监控网络,并通过sendmail发送邮件给自己。这台机器可以是一台服务器,象前面讲过的登陆入口服务器,就完全可以充当网管机;也可以是一台配置很低的普通PC,能运行Linux或Freebsd就可以了。有必要在上面运行sendmail,因为它要对外发送邮件。当然,sendmail有一些安全问题,因此在运行它之前,你必须确认服务器处于安全的网络:在防火墙之后,且同一网段中没有其他公司的服务器。否则,就不要运行它。当然,你也可以配置 sendmail绑定在127.0.0.1端口,不接受网络请求(在Linux默认安装的sendmail不接受网络请求,Freebsd中可以在 rc.conf文件中设置使sendmail绑定在127.0.0.1端口),这样的sendmail会安全很多。

然后你可以写一个简单的脚本来监控网络主机生存状况。在Unix主机上,使用shell或perl都很容易编写脚本,但是,shell脚本用于系统管理更简单明了,除非你要进行复杂的数学计算或文本处理。如下这个shell脚本很简单,却很实用:

#!/bin/sh

# script name:nping

# use this script to confirm the hosts are alive or not

HOST01="xxx.xxx.xxx.xxx"

HOST02="xxx.xxx.xxx.xxx"

HOST03="xxx.xxx.xxx.xxx"

HOST04="xxx.xxx.xxx.xxx"

HOST05="xxx.xxx.xxx.xxx"

HOST06="xxx.xxx.xxx.xxx"

HOST07="xxx.xxx.xxx.xxx"

HOST08="xxx.xxx.xxx.xxx"

HOST09="xxx.xxx.xxx.xxx"

HOST10="xxx.xxx.xxx.xxx"

for LOOP in $HOST01 $HOST02 $HOST03 $HOST04 $HOST05 $HOST06 $HOST07 $HOST08 $HOST09 $HOST10

do

if !/sbin/ping -c 2 $LOOP >/dev/null 2>&1;then

echo "Warning:The host $LOOP seems down" >> error.log

fi

done

if [ -f error.log ];then

cat error.log |mail -s "Warning:Host Down" yourname@yourmail.com

rm –rf error.log

fi

该脚本执行一个简单的ping操作,以判断目标主机是否存活,如果目标主机停止响应,则向管理员发送邮件报警。

你可以在任务里设定每隔一段时间执行一次该脚本,由于ping对内网的影响很小,因此这个时间可以短一些,我把它设为1小时。

然而,有的时候,你可能关心的不止是服务器是否存活,更想了解它的服务状态是否正常,这个时候,你可以使用一个工具来判断服务器的开放服务状态,这个工具就是被Unix系统管理员广泛使用的网络端口扫描工具Nmap(可以从http://www.insecure.org/nmap/ 下载最新版本)。它的使用很简单,安装完成后直接在命令行下执行:nmap IP,就可以得到目标主机的开放TCP端口状况。当然,Nmap的功能远不止如此,它还可以执行UDP、SYN、FIN、RPC等扫描,它的半开放扫描可绕过防火墙的过滤,并可根据操作系统指纹判断目标系统类型。在这里只要利用到Nmap的TCP扫描就够了。然后,你可以编写一个脚本来定期检测服务器的开放端口状况,并将结果Email给管理员。我编写的如下:

#!/bin/sh

# script name:nscan

# use this script to check the services status on local servers

HOST01="xxx.xxx.xxx.xxx"

HOST02="xxx.xxx.xxx.xxx"

HOST03="xxx.xxx.xxx.xxx"

HOST04="xxx.xxx.xxx.xxx"

HOST05="xxx.xxx.xxx.xxx"

HOST06="xxx.xxx.xxx.xxx"

HOST07="xxx.xxx.xxx.xxx"

SQL_PORT="2433/tcp"

MSRDP_PORT="3389/tcp"

PCANYWH_PORT="5631/tcp"

for LOOP in $HOST01 $HOST02 $HOST03 $HOST04 $HOST05 $HOST06 $HOST07

do

第1页 第2页
页面工具 打印 | 电子邮件 | 评价
关于我们 | 沪ICP备12021423号-1 | 联系我们 友情链接 | 站点地图 | 隐私 | 法律 | Copyright © 2023 Safe.Sh