用户管理通常是指系统的用户帐户管理,不管是 UNIX 系" name="description" />
在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都是非常好的密码破解工具,在系统上运行它们几分钟就可以破解出一堆弱口令。口令过于简单的用户,一定要强制他们更改口令,否则后患无穷。如果用户拒绝更改口令,那就删除他们,我就做过这样的事。