Linux账号安全
时间:2006-02-01 来源:olylinux
在早期的Linux系统中,/etc/passwd文件含有全部系统需要知道的关于每个用户的信息,当然,用户的口令经过一定的数字与逻辑算法后把一个运算结果(可见字符串)放到了passwd文件中,于是,passwd文件也就成了入侵者的众矢之的,后来,为了保护passwd文件中的密码,出现了passwd文件的shadow化,也就是把密码的加密算法后的结果和其他一些辅助信息存到了shadow文件,虽然shadow文件采用了比passwd文件更加安全的保管方式,但是,同样也需要管理员的“加倍关心”,否则,也可能成为入侵者的“猎物”。
/etc/passwd中包含有用户的登录名,口令经过加密算法得出的结果(或者在/etc/shadow中),用户号(UID),用户组号(GID),用户注释,用户主目录和用户所用的shell程序。其中用户号和用户组号用于linux系统标识用户和同组用户及用户的访问权限。
用户登录时输入的口令经计算后于/etc/passwd或者/etc/shadow中的结果相比较,符合则允许登录,否则拒绝用户登录。用户可用passwd命令修改自己的口令,不能直接修改/etc/passwd或者/etc/shadow中的口令部份。
一个强壮的有效的口令应当至少有8个字符长,不要取用个人信息(如生日,名字,用户名,计算机的型号等也尽量不要在密码中连接电话号码和2002、2000、888等数字),普通的英语单词也不好(因为可用字典攻击法),口令中最好有一些非字母(如数字,标点符号,控制字符等),注意尽量不要写在纸上或计算机中的文件中,选择口令的一个好方法是将不相关的字母和数字或控制字符相连,并组成不少于8位的长度。为了强迫用户指定足够强壮的密码,需修改文件/etc/login.defs 中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。
如果系统管理员在离开系统之前忘记注销root账户,系统应当在超时后自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。
编辑profile文件(vi /etc/profile)
在"HISTFILESIZE="后面加入下面这行:
TMOUT=3600
3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的“.bashrc”文件中添加该值(如果你的linux使用bash的话,否则就要修改用户的.profile文件),以便系统对该用户实行特殊的自动注销时间。
改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。
不应在不同机器中、不同的应用中使用同一个口令,特别是在不同级别的用户上使用同一口令。用户应定期改变口令,至少3个月要改变一次,系统管理员可以强制用户定期做口令修改。
2) su命令
禁止任何人通过su命令改变为root用户
su(Substitute User替代用户)命令允许你成为系统中其他已存在的用户。如果你不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,你可以在su配置文件(在"/etc/pam.d/"目录下)的开头添加下面两行:
编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/Pam_wheel.so group=wheel
这表明只有"wheel"组的成员可以使用su命令成为root用户。你可以把用户添加到“wheel”组,以使它可以使用su命令成为root用户。
3) 其他用户和登陆脚本
删除所有的特殊账户
你可以考虑删除所有不用的缺省用户和组账户(比如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等)。
删除用户和组的命令:
[root@Linux/]# userdel LP
删除组:
[root@Linux/]# groupdel LP
选择正确的密码
在选择正确密码之前还应作以下修改:
修改密码长度:设置为不少于8位的。
修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行
PASS_MIN_LEN 5 (默认的情况)
改为
PASS_MIN_LEN 8 (修改后的情况)
login.defs文件是login程序的配置文件。
打开密码的shadow支持功能:(这个在高版本的linux中都是默认支持的,不需要下面的过程了。虽然在当今的最新版Linux中都自动开启了shadow支持,但是投入运转较早的Linux站点可能尚不流行Shadow技术)
你应该打开密码的shadow功能,来对password加密。使用“/usr/sbin/authconfig”工具打开shadow功能。如果你想把已有的密码和组转变为shadow格式,可以分别使用“pwcov,grpconv”命令。
Shell logging
Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。
第一步:
“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中可以保存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如30。编辑profile文件(vi /etc/profile),把下面这行改为:
HISTFILESIZE=30
HISTSIZE=30
这表示每个用户的“.bash_history”文件只可以保存30条旧命令。
第二步:
网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除。