扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
3.2.2.13 特殊的帐号
禁止操作系统中不必要的预置帐号(每次升级或安装完都要检查一下)。Linux系统中就提供这样一些你可能不需要的预置帐号。如果确实不需要这些帐号,就把它们删掉。系统中有越多的帐号,就越容易受到攻击。
我们假定你已经在系统中使用shadow口令。如果不是这样,最好在系统中加上shadow口令的支持,因为这样系统会更安全。如果你是按照上一章介绍的方法安装服务器,那么在“安全验证配置”这一步就已经选上“Enable Shaow Passwords”这个选项了。
在系统中删除一个用户可以用这个命令:
[root@cnns]# userdel username
在系统中删除一个组可以用这个命令:
[root@cnns]# groupdel username
第一步 用下面的命令删除一些不必要的用户:
[root@cnns]# userdel adm
[root@cnns]# userdel lp
[root@cnns]# userdel sync
[root@cnns]# userdel shutdown
[root@cnns]# userdel halt
[root@cnns]# userdel news
[root@cnns]# userdel uucp
[root@cnns]# userdel operator
[root@cnns]# userdel games (如果不用X Window服务器,可以删除这个用户)
[root@cnns]# userdel gopher
[root@cnns]# userdel ftp (如果没安装匿名ftp服务器,可以删除这个用户)
第二步 输入下面的命令删除一些不必要的组:
[root@cnns]# groupdel adm
[root@cnns]# groupdel lp
[root@cnns]# groupdel news
[root@cnns]# groupdel uucp
[root@cnns]# groupdel games (delete this group if you don’t use X Window Server ).
[root@cnns]# groupdel dip
[root@cnns]# groupdel pppusers
[root@cnns]# groupdel popusers (delete this group if you don’t use pop server for email).
[root@cnns]# groupdel slipusers
第三步 在系统中加入必要的用户:
在系统中添加用户,用这个命令:
[root@cnns]# useradd username
给系统中的用户添加或改变口令,用这个命令:
[root@cnns]# passwd username
例如:
[root@cnns]# useradd admin
[root@cnns]# passwd admin
这些命令的输出是这样的:
Changing password for user admin
New UNIX password: somepasswd
passwd: all authentication tokens updated successfully
第四步 “不许改变”位可以用来保护文件使其不被意外地删除或重写,也可以防止有些人创建这个文件的符号连接。删除“/etc/passwd”、“/etc/shadow”、“/etc/group”或“ /etc/gshadow”都是黑客的攻击方法。
给口令文件和组文件设置不可改变位,可以用下面的命令:
[root@cnns]# chattr +i /etc/passwd
[root@cnns]# chattr +i /etc/shadow
[root@cnns]# chattr +i /etc/group
[root@cnns]# chattr +i /etc/gshadow
注意:如果将来要在口令或组文件中增加或删除用户,就必须先清除这些文件的不可改变位,否则就不能做任何改变。如果没有清除这些文件的不可改变位,安装那些会自动在口令文件和组文件中加入新用户的rpm软件包的时候,在安装过程中就会出现出错的提示。
3.2.2.14 防止任何人都可以用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@cnns]# usermod -G10 admin
“G”是表示用户所在的其它组。“10”是“wheel”组的ID值,“admin”是我们加到“wheel”组的用户。用同样的命令可以让其他的用户可以用su命令成为root。
3.2.2.15 资源限制
限制用户对系统资源的使用,可以避免拒绝服务(如:创建很多进程、消耗系统的内存,等等)这种攻击方式。这些限制必须在用户登录之前设定。例如,可以用下面的方法对系统中用户加以。
第一步:
编辑limits.conf文件(vi /etc/security/limits.conf),加入或改变下面这些行:
* hard core 0
* hard rss 5000
* hard nproc 20
这些行的的意思是:“core 0”表示禁止创?ore文件;“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
3.2.2.16 更好地控制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,等等。
3.2.2.17 把rpm程序转移到一个安全的地方,并改变默认的访问许可一旦在Linux服务器上用rpm命令安装完所有需要的软件,最好把rpm程序转移到一个安全的地方,如:软盘或其它你认为安全的地方。因为如果有人入侵了你的服务器,他就不能用rpm命令安装那些有害的软件。当然,如果将来要用rpm安装新的软件,你就要把rpm程序拷回原来的目录。
把rpm程序移到软盘上,用下面的命令:
[root@cnns]# mount /dev/fd0 /mnt/floppy/
[root@cnns]# mv /bin/rpm /mnt/floppy/
[root@cnns]# umount /mnt/floppy
注意:千万不要把rpm程序从系统中卸载掉,否则以后就不能重新安装它,因为安装rpm程序或其它软件包本身就要用rpm命令。
还有一点要注意的是,把rpm命令的访问许可从默认的755改成700。这样非root用户就不能使用rpm命令了。特别是考虑到万一在安装完新软件之后忘了把rpm程序移到一个安全的地方,这样做就更有必要了。
改变“/bin/rpm”默认的访问权限,用下面这个命令:
[root@cnns]# chmod 700 /bin/rpm
3.2.2.18 登录shell
为了方便重复输入很长的命令,bash shell可以在“~/.bash_history”文件(“~/”是家目录,每个用户都是不一样的)中存500个曾经输入过的命令。每一个有自己帐号的用户,在自己的家目录中,都会有“.bash_history”文件。可能会有这种情况,用户在不该输入口令的地方输入了口令,而输入的口令会在“.bash_history”文件中保存下来。而且“.bash_history”文件越大这种可能性也越大。
在“/etc/profile”文件中HISTFILESIZE和HISTSIZE这两行决定了系统中所有用户的“.bash_history”文件可以保存多少命令。我建议把“/etc/profile”文件中的HISTFILESIZE和HISTSIZE都设成一个比较小的值,如:20。
编辑profile文件(vi /etc/profile),把这些行改成:
HISTFILESIZE=20
HISTSIZE=20
这样每个用户家目录下的“.bash_history”就最多只能存20个命令。如果黑客试图在用户的“~/.bash_history”文件中发现一些口令,他就没有什么机会了。
3.2.2.19 “/etc/lilo.conf”文件
LILO是Linux上一个多功能的引导程序。它可以用于多种文件系统,也可以从软盘或硬盘上引导Linux并装入内核,还可以做为其它操作系统的“引导管理器”。根(/)文件系统对LILO来说很重要,有下面这两个原因:第一:LILO要告诉内核到那里去找根文件系统;第二:LILO要用到的一些东西,如:引导扇区、“/boot”目录和内核就存放在根文件系统中。引导扇区包括LILO引导程序的第一部分,这个部分在引导阶段的后半部分还要装入更大的引导程序。
这两个引导程序通常存在“/boot/boot.b”文件中。内核是由引导程序装入并启动的。在RedHat Linux系统中,内核通常在根目录或“/boot”目录下。
因为LILO对Linux系统非常重要,所以我们要尽可能地保护好它。LILO最重要的配置文件是“ /etc”目录下的“lilo.conf”文件。用这个文件我们可以配置或提高LILO程序以及Linux系统的安全性。下面是LILO程序的三个重要的选项设置。
1)加入:timeout=00
这项设置设定LILO在引导默认的系统之前,等候用户输入的时间。C2安全等级规定这个时间间隔必须设成0,因为多重引导会使系统的安全措施形同虚设。除非想用多重引导,否则最好把这项设成0。
2)加入:restricted
当LILO引导的时候,输入参数linux single,进入单用户(single)模式。因为单用户模式没有口令验证,所以可以在LILO引导时,加上口令保护。“restricted”选项只能和“password”合起来用。注意要给每个内核都要加上口令保护。
3)加入:password=
用单用户模式启动Linux系统的时候,系统要求用户输入这个口令。口令是大小写敏感的,而且要注意,要让“/etc/lilo.conf”文件,除了root之外,其他用户没有读的权限,这样也就看不到口令了。下面是用“lilo.conf”文件保护LILO的一个具体例子。
第一步:
编辑lilo.conf文件(vi /etc/lilo.conf),加上或改变下面介绍的三个设置:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00 ? change this line to 00.
Default=linux
restricted ? add this line.
password= ? add this line and put your password.
image=/boot/vmlinuz-2.2.12-20
label=linux
initrd=/boot/initrd-2.2.12-10.img
root=/dev/sda6
read-only
第二步
因为“/etc/lilo.conf”配置文件里,存在没有经过加密的口令,所以只有root才能有读的权限。用下面的命令改变文件的权限:
[root@cnns]# chmod 600 /etc/lilo.conf (will be no longer world readable).
第三步
使改变后的“/etc/lilo.conf”配置文件生效:
[root@cnns]# /sbin/lilo -v (to update the lilo.conf file).
第四步
为了更安全一点,可以用chattr命令给“lilo.conf”文件加上不可改变的权限。让文件不可改变用下面的命令:
[root@cnns]# chattr +i /etc/lilo.conf
这样可以避免“lilo.conf”文件因为意外或其它原因而被改变。如果想要改变“lilo.conf”文件,必须先清除它的不可改变标志。
清除不可改变的标记用下面的命令:
[root@cnns]# chattr -i /etc/lilo.conf
3.2.2.20 使Control-Alt-Delete关机键无效
把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。
编辑inittab文件(vi /etc/inittab)把这一行:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
用下面的命令使改变生效:
[root@cnns]# /sbin/init q
3.2.2.21 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可,改变启动和停止daemon的脚本文件的权限。
[root@cnns]# chmod -R 700 /etc/rc.d/init.d/*
这样只有root可以读、写和执行这个目录下的脚本。我想一般用户没有什么必要知道脚本文件的内容。
注意:如果你安装或升级了一个程序,要用到“/etc/rc.d/init.d/”中system V脚本,不要忘记再检查一下改变和检查这个脚本文件的许可。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。