Linux是当前比较流行的网络服务器操作系统,它继承了UNIX系统安全、稳定、高效等优点 。在Linux系统中Root拥有最高权限,正因如此攻击者往往以获取Root权限为目标 。作为管理员如何有效地对Root进行有效管理呢?本文将从权限控制的角度,提供几个安全技巧 。
演示环境
Red Hat Enterprise Linux 5
1、远程登录
我们知道在RHEL系统中,默认是允许Root用户直接远程登录的 。假若攻击者获取了Root的密码,然后进行远程登录,那整个服务器就沦陷了 。因此,我们要做好Root的权限限制,拒绝其远程登录 。这样,就算攻击者获取了Root密码,也不能通过远程登录控制服务器 。限制Root远程登录的方法有很多种,笔者向大家推荐两种 。
(1)SSH限制
我们知道SSH是Linux系统中用于远程维护管理的一个服务,类似于Windows系统中的Telnet或者远程桌面3389 。通过SSH限制Root远程登录,我们需要做的就是修改SSH的配置文件 。找/etc/ssh/sshd_config文件,在其中添加PermitRootLogin no 。需要注意的是Linux系统是大小写敏感的,不要输错 。输入完毕后,保存并退出,然后输入命令service sshd restart重启SSH服务使修改生效 。这样当通过Root远程连接Linux服务器时,就会拒绝连接 。(图1)
(2)PAM认证
我们还可以使用PAM认证模块来拒绝Root用户直接登录系统,可通过下面的操作来实现 。打开/etc/pam.d/sshd文件,在第一行加入auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshduser onerr=succeed这条语句 。其含义是,在登录时认证帐户和密码是否有效,只有认证通过才能登录系统,否则结束认证拒绝登录 。它的认证模块是/lib/security/pam_listfile.so,认证的用户是用户(user),当然也可以是组(group),认证的方式是拒绝(deny),认证文件是/etc/sshduser,文件名及目录随意,如果认证成功就返回(succeed) 。(图2)
然后我们创建一个认证文件,可以在终端中运行命令echo "root" > /etc/sshduser来创建,当然我们也可以使用vi打开sshduser文件来加入用户 。需要说明的是,当有多个用户时,每个用户占用一行 。添加完成后,再使用Root直接登录服务器就可以看到登录被拒绝了 。(图3)
2、su限制
我们知道在Linux系统中有个su命令,利用该命令只要知道Root用户的密码,默认情况下任何人都可以切换到Root用户中进行操作 。例如,一个属于users组的普通用户gslw可以通过su命令切换到Root用户中 。(图4)
因此,我们需要对SU进行限制,只允许特定组的用户才能SU到Root用户 。使用的方法还是通过PAM认证模块来实现 。我们先前控制ssh服务,是使用/etc/pam.d/sshd文件,当然控制用户使用su命令就需要对
/etc/pam.d/su文件进行修改 。直接打开该文件进行修改,或者在终端命令窗口输入命令vi /etc/pam.d/su,然后去掉其中#auth required pam_wheel.so use_uid的注释即可 。(图5)
其含义是,使用pam_wheel.so文件来检查当前用户的UID,如果不是whell组的用户就直接拒绝 。现在我们通过gslw用户登录系统,然后su到Root可以看到被拒绝 。当然,要使其可以su到Root需要将其加入了wheel组才可以 。(图6)
3、Root分权
大家知道,由于Root具有最高的权限,经常用root用户来管理系统,会给系统带来一定的安全隐患 。比如,一条无意识输入的破坏性的命令有可能会给系统带来毁灭性的打击 。另外,如果系统被植入了嗅探工具,如果用root登录会造成root口令被窃取 。因此我们要消减Root的权限,可以让其它用户来完成Root的一些工作,避免过多地使用Root用户 。
如何为Root分权,要根据服务器的性质来确定 。比如一个Linux平台的apache服务器,作为管理员经常使用的命令应该是诸如/usr/local/apache2/bin/apachect1 start/stop/restart这样的是启动/重启/停止服务器的命令 。我们可以为此创建一个用户gslw来管理apache服务器,我们知道普通用户是没有权限来启动apache服务器的 。这里要用到sudo命令,通过它为gslw用户加入扩展权限使其可以管理apache服务器 。
推荐阅读
- linux下birt导出文件乱码
- Linux下让Firefox3与Firefox2浏览器共存的方法
- Linux操作系统下1拖多解决方案出现
- Linux内核isdn_net.c文件 本地溢出漏洞
- Linux查看文件夹大小的命令
- 在Linux下访问MS SQL Server数据库
- Linux操作系统中实现DDOS攻击的方法
- Linux下添加硬盘、分区、格式化任务指南
- Linux应用问答系列之硬件FAQ
- RedHat linux inittab详解