24. 防止任何人都能够用su命令成为root
假如不想任何人都能够用“su”命令成为root或只让某些用户有权使用“su”命令,那么在“/etc/pam.d/su”文档中加入下面两行。我建议尽量限制用户通过“su”命令成为root。
第一步
编辑su文档(vi /etc/pam.d/su)在文档的头部加入下面两行:
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
加入这两行之后,“/etc/pam.d/su”文档变为:
#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_xauth.so
这两行的意思是只有“wheel”组的成员才能用su命令成为root。注意,“wheel”组是系统中用于这个目的的特别帐号。不能用别的组名。把这节介绍的方法和《22. “/etc/securetty”文档》中介绍的方法结合起来,能够更好地加强系统的安全性。
第二步
我们在“/etc/pam.d/su”配置文档中定义了“wheel”组,现在介绍一下怎样让一些用户能够用“su”命令成为“root”。下面是个例子,让admin用户成为“wheel”组的成员,这样就能够用“su”命令成为“root”:
[root@deep]# usermod -G10 admin
“G”是表示用户所在的其他组。“10”是“wheel”组的ID值,“admin”是我们加到“wheel”组的用户。用同样的命令能够让其他的用户能够用su命令成为root。
25. 资源限制
限制用户对系统资源的使用,能够避免拒绝服务(如:创建很多进程、消耗系统的内存,等等)这种攻击方式。这些限制必须在用户登录之前设定。例如,能够用下面的方法对系统中用户加以。
第一步
编辑limits.conf文档(vi /etc/security/limits.conf),加入或改变下面这些行:
* hard core 0
* hard rss 5000
* hard nproc 20
这些行的的意思是:“core 0”表示禁止创建core文档;“nproc 20”把最多进程数限制到20;“rss 5000”表示除了root之外,其他用户都最多只能用5M内存。上面这些都只对登录到系统中的用户有效。通过上面这些限制,就能更好地控制系统中的用户对进程、core文档和内存的使用情况。星号“*”表示的是任何登录到系统中的用户。
第二步
必须编辑“/etc/pam.d/login”文档,在文档末尾加入下面这一行:
session required /lib/security/pam_limits.so
加入这一行后“/etc/pam.d/login”文档是这样的:
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok use_authtok md5 shadow
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so
#session optional /lib/security/pam_console.so
26. 更好地控制mount上的文档系统
能够用一些选项,如:noexec、nodev和nosuid,更好地控制mount上的文档系统,如:“/home”和“/tmp”。这些都在“/etc/fstab”文档中设定。fstab文档包含了各个文档系统的描述信息。假如想知道在这个文档中能够设定哪些选项,请用man命令查看关于mount的帮助。
编辑fstab文档(vi /etc/fstab),并根据需要把这两行:
/dev/sda11 /tmp ext2 defaults 1 2
/dev/sda6 /home ext2 defaults 1 2
改变成:
/dev/sda11 /tmp ext2 nosuid,nodev,noexec 1 2
/dev/sda6 /home ext2 nosuid,nodev 1 2
“nodev”表示不允许在这个文档系统上有字符或特别的块设备。“nosuid”表示不允许设定文档的suid(set-user-identifier)和sgid(set-group-identifier)许可位。“noexec”表示不允许文档系统上有任何可执行的二进制文档。
注意:上面的例子中,“/dev/sda11”mount到“/tmp”目录上,而“/dev/sd6”mount到“/home”目录上。当然这和您的实际情况会有所不同,这些取决于您是怎么分区的连同用什么样的硬盘,例如:IDE硬盘是hda、hdb,等等,而SCSI硬盘是sda、sdb,等等。
27. 把rpm程式转移到一个安全的地方,并改变默认的访问许可
一旦在Linux服务器上用rpm命令安装完任何需要的软件,最好把rpm程式转移到一个安全的地方,如:软盘或其他您认为安全的地方。因为假如有人入侵了您的服务器,他就不能用rpm命令安装那些有害的软件。当然,假如将来要用rpm安装新的软件,您就要把rpm程式拷回原来的目录。
* 把rpm程式移到软盘上,用下面的命令:
[root@deep]# mount /dev/fd0 /mnt/floppy/
[root@deep]# mv /bin/rpm /mnt/floppy/
[root@deep]# umount /mnt/floppy
注意:千万不要把rpm程式从系统中卸载掉,否则以后就不能重新安装他,因为安装rpm程式或其他软件包本身就要用rpm命令。
更有一点要注意的是,把rpm命令的访问许可从默认的755改成700。这样非root用户就不能使用rpm命令了。特别是考虑到万一在安装完新软件之后忘了把rpm程式移到一个安全的地方,这样做就更有必要了。
* 改变“/bin/rpm”默认的访问权限,用下面这个命令:
[root@deep]# chmod 700 /bin/rpm
28. 登录shell
为了方便重复输入很长的命令,bash shell能够在“~/.bash_history”文档(“~/”是家目录,每个用户都是不相同的)中存500个曾输入过的命令。每一个有自己帐号的用户,在自己的家目录中,都会有“.bash_history”文档。可能会有这种情况,用户在不该输入口令的地方输入了口令,而输入的口令会在“.bash_history”文档中保存下来。而且“.bash_history”文档越大这种可能性也越大。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




