站点主机安全档案 (5)
2008-04-02 10:57:15来源:互联网 阅读 ()
do
nmap -sT $LOOP >nmap.tmp 2>&1
for PORT in $SQL_PORT $MSRDP_PORT $PCANYWH_PORT
do
if ! grep $PORT nmap.tmp >/dev/null 2>&1;then
echo “Warning:The port $PORT is seem to down on $LOOP” >>$LOOP.error
fi
done
if [ ! -f $LOOP.error ];then
echo "The services running on $LOOP are nomal!"
else
cat $LOOP.error >>nscan.err 2>&1
rm -rf $LOOP.error
fi
rm -rf nmap.tmp
done
if [ -f nscan.err ];then
cat nscan.err |mail –s “Host Services Down” yourname@yourmail.com
rm –rf nscan.err
fi
该脚本只是判断MS SQL Server、MS终端服务和Pcanywhere服务是否正常,如果不正常,就向管理员发送邮件报警。如果你需要检查其他的服务端口,修改该脚本即可。
你也可以配置任务来定期执行该脚本,不过请注意,Nmap扫描会影响网络,因此检测的时间间距不要太小。当然,在Unix系统下,有好些方法可以判断目标系统的开放端口状况,但使用Nmap扫描看起来也不错。
4.3 日志管理
不管是Windows系统还是Unix系统,都有自己的事件日志。在Windows下使用事件查看器可以清楚的了解系统运行的各项状态,它包括应用程序日志、安全日志和系统日志。你应经常阅读这些日志,尤其是一些红色标记的错误信息。根据这些错误提示发现问题和解决问题是Windows系统管理员应做的事。
如果服务器不加入域,那么一般来说系统错误信息很少;如果在机房的服务器组成一个域,那么从日志里可能会经常看到各种错误提示,尤其是在域控制器有问题的时候。管理好一个域不是一件太容易的事,它凭空给系统管理员增加很多困难。如果你真碰到这样的问题,建议你到google上面去查找答案,一般来说,你碰到的问题别人肯定也遇见过了,因特网上有很多热心的人愿意解答困难者的问题(尤其是国外的技术站点)。
读Windows的日志不浪费你太多精神,因为它都分门别类整理得很清楚,有什么错误能一目了然的看出来。每天快速翻一下它的日志是可行的,如果你的服务器磁盘有坏道,也能从日志里体现出来,为你及早更换磁盘、避免数据灾难赢得了时间。
在Unix系统下,读日志要费劲一些,因为Unix系统通常把一些通用的日志信息写到messages文件里,导致这个文件里杂七杂八什么都有,包括应用程序信息、用户验证信息、网络连接信息、内核信息等等,在浏览它们时比较费劲。然而,这不意味着你可以不管它们。实际上,日志文件是系统侦错时的唯一依据。某天你的Unix系统崩溃了,在居丧之余,不要忘了去分析它的日志,或许可以为你找到原因。
在Unix系统下,有一个日志分析软件叫Swatch,它能很好的帮你裁减和分析日志,减轻系统管理员的负担。关于它的安装和使用我不在这里详叙,因为我自己并没有使用它。我自己编写脚本用于查看日志,使用awk语句照样能将日志文件裁减到合理的程度。这个脚本的样式我不在这里描述,因为不同的系统和网络环境所产生的条件并不一样。
在UNIX系统下,另外一个日志文件也很值得关注,它记载了用户的登陆和验证信息,该文件一般位于/var/log下,名为authlog或者auth.log,只有root才可以对它进行读写。
如果系统中安装了Apache,那么经常查看Apache的错误日志和访问日志也值得推荐。从这两个日志里,你可以发现很多有趣信息,因特网上对WEB站点的攻击从来没有终止过(从这里也可以找到大量试图攻击IIS的信息)。
4.4 用户管理
用户管理通常是指系统的用户帐户管理,不管是UNIX系统还是Windows系统,帐户安全是系统安全的关键。系统中应保持固定数量的用户帐户,作为系统管理员,应清楚每一个帐户的使用者和用途。用户新申请帐户应该有个流程,规范的管理总比不规范好。
在Unix系统上,大多数系统帐户平时是没什么用的,包括:bin daemon adm lp mail news uucp operator games gopher rpc等,如果你不把它们删除,那么也不要让它们拥有真正的shell,检查/etc/passwd文件,看看这些帐户的最后一个域(shell)是否被置/sbin/nologin或/bin/false。经常检查帐户的权限,普通帐户不应该在root组(gid=0),更不应拥有root权限(uid=0)。可以写一个脚本来替你检查,如下所示:
#!/bin/sh
# script name:checkuser
# check if there is any user who have real shell or have root id/gid
FILE=/etc/passwd
NUM=0
while read LINE
do
NUM=`expr $NUM 1`
if [ $NUM -lt 3 ];then
continue
fi
USER=`echo $LINE |cut -d: -f1`
USER_SHELL=`echo $LINE |cut -d: -f7`
USER_UID=`echo $LINE |cut -d: -f3`
USER_GID=`echo $LINE |cut -d: -f4`
if [ "$USER_SHELL" != "/sbin/nologin" ];then
echo -e "\n$USER has one real shell:$USER_SHELL"
fi
if [ $USER_UID -eq 0 ];then
echo "$USER has the root uid(uid 0)"
fi
if [ $USER_GID -eq 0 ];then
echo "$USER has the root gid(gid 0)"
fi
done <$FILE
这个脚本运行在Freebsd下,Freebsd的/etc/passwd文件前两行是版本说明,所以在程序里把它跳过,从第三行起挨个检查用户帐号,它将每一个拥有真正shell或者拥有root用户ID或组ID的帐号在屏幕上打印出来。
同样,在Windows服务器上,如果不运行IIS服务,那么把IIS相关的帐号禁止掉,把终端服务帐号禁止掉,把guest帐号禁止掉。Windows系统的管理员组除了Administrator外不要有其他帐号,甚至应该把Administrator帐号改名。每一个帐号在帐号描述里说明它的用途。如果Windows服务器采用域的方式,那么应确保域中有尽可能少的用户。一般域中两个用户就够了,一个Administrators组的用户,一个普通用户。请记住,域的Administrators组的用户(通常是administrator)对你的每一台加入域的服务器都有生死控制权,所以你应绝对保证这个帐户的安全。
不管是系统的root密码还是普通用户密码,都应定期更改。我一般每两个月更改一次系统root密码。当然,如发现系统有被入侵迹象,应马上更改密码。对于用户密码,不管在什么系统中,都可以设置密码过期期限,用户使用一段时间后必须更改密码。有的用户安全意识并不强烈,他们使用自己容易记住的词汇作为口令,例如自己的英文名或者生日。这些都容易被猜测,你可以使用工具破解这些简单口令。Unix下的John和Windows下的LC3都是非常好的密码破解工具,在系统上运行它们几分钟就可以破解出一堆弱口令。口令过于简单的用户,一定要强制他们更改口令,否则后患无穷。如果用户拒绝更改口令,那就删除他们,我就做过这样的事。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:预测现在-安全策略新观点
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
