陈金莲
Linux环境下把控根帐号权限各种形式的实现
陈金莲
(黄冈职业技术学院 电子信息学院,湖北 黄冈 438002)
帐号安全是多任务多用户操作系统的第一道安全关口,在linux环境中,对具有系统管理权限的根帐号,其安全控制更是显得尤为重要。既保证根帐号安全,又实现必要的系统管理,实现根帐号权限的精细化控制,在两者之间找到最佳平衡点是Linux系统管理的一个重要技能。
根帐号;资源权限;应用程序认证;帐号切换
Linux系统的用户都知道,为了安全起见,在登录系统时,一般不建议直接用根帐号,以免由于误操作导致数据丢失或系统故障。但很多的系统管理工作又必须以根帐号的身份操作才行。对于两者之间的平衡,Linux系统有两种解决方案。一是普通帐号用“su–root”命令切换到根帐号,执行完系统管理命令后再切换回普通帐号;二是用sudo方式去临时执行一些系统管理工作。不同的发行版本对这两种方式的处理有些差别,下面以RedHat系列的Linux发行版为例来说明如何利用这两种方式来构造粒度更细的管理权限。
对于“su–root”方式,RedHat Linux系统在默认情况下,对于任何的普通帐号,只要知道根帐号的口令,即可切换到根帐号,执行任何的系统管理工作。这种操作方式控制简单,但是会带来一定的安全隐患。并且,如果一个系统由多人管理,还可能造成管理混乱。而对sudo方式,RedHat Linux的默认处理则是任何普通用户都不能用sudo命令执行任何的系统管理工作,这一默认规则又显得非常呆板。
那么,在RedHat Linux下如何通过改造系统配置来构造安全且合理的根帐号权限控制呢?
首先,我们来看看如何利用“su–root”方式来对使用根帐号管理权限的用户进行限制。RedHat Linux默认情况下,所有用户都可以切换到root帐号下的原因是关闭了对su命令认证的某些控制项。在系统的/etc/pam.d目录下存放着需要经过各种应用程序认证的一些系统配置文件,而其中的su文件则控制着使用su命令的一些认证控制选项,内容如图1所示。哪些用户可以用su命令切换到根帐号,哪些用户不能切换由其中的pam_wheel.so模块控制,图中红色方框标出。
图1 su控制配置文件
如果启用该模块的认证功能,就表示只有属于wheel组的用户才能用su命令切换到根帐号来完成系统管理工作。wheel是Linux中一个系统组,用于归纳一些具有根帐号管理权限的用户,以减少对系统摧毁性破坏的概率和风险。那么,这样就形成了一些用户能用su命令切换到root,而有些用户不能切换到root帐号的情形,实现了第一层级的根帐号权限限制。
下面,通过实例来进行验证。首先不开启wheel模块的认证,在系统中新建两个普通帐号zhang和chen,然后分别通过他们切换到root帐号,由图2可以看出,只要能正确输入root帐号的密码就可以切换到root帐号。
再开启wheel组的认证,因为zhang和chen都不在wheel组,所以即使知道root帐号密码也不能切换到root帐号下,如图3所示。
再将zhang帐号加入wheel组,chen帐号不加入,进行验证。如图4所示,zhang能成功切换至根帐号,而chen无法切换。
图2 成功的切换
图3 失败的切换
图4 两种不同效果对比
上一种方案虽然将普通用户分成两大类,一类可以切换到root并使用其所有权限,一类不能,但这个分类法仍然比较粗糙,要有更具体的管理权限控制,还需要用到/etc/sudoers配置文件。
sudoers,顾名思义,能使用sudo命令的用户。先来看看sudo命令的特点:
(1)sudo能够限制某个或某组用户只在某台主机上运行某些系统管理命令。
(2)sudo提供了丰富的日志,详细地记录了每个用户干了什么,并且能将日志传到中心主机或者日志服务器,以进行监控。
(3)sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为五分钟的票(这个值可以在编译的时候改变)。
所以说,sudo命令具有良好的事前控制,事后追查的能力,在生产环境中用来控制根帐号权限的管理非常必要的。对sudo命令的控制是通过/etc/sudoers配置文件来实现。在该文件中,每一个权限控制条目都是以“USER_FLAG HOST_FLAG=( RUNAS_FLAG)COMMAND_FLAG ”的格式来定义,其中USER_FLAG 即授权用户,可以是单个用户,也可以是一个用户组,如果是用户组,则前面用%引导;HOST_FLAG表示登录的主机列表,RUNAS_FLAG表示以什么身份运行命令;COMMAND_FLAG表示可以运行哪些命令,整个控制行的意思即用户可以在哪些机器上以何种身份执行什么命令。
为了避免编辑过程中的语法错误,最好通过visudo命令对该文件进行编辑,因为该命令可以对该文件的语法错误进行检查,下面仍然以实例来说明验证。
创建三个帐号chen、zhang、wang,将chen加入users组,另外两个作为普通帐号。编辑/etc/sudoers,在其中增加如图5所示两行配置信息。第一行控制条目的意义是所有users组中的用户可以从任何机器上登录,以root身份执行文件系统的挂载和卸载管理;第二行控制条目的含义是zhang用户可以在任何机器上登录,以所有用户身份执行用户的增删用户的管理。
以chen帐号登录,用sudo方式执行光驱挂载,顺利完成,而用sudo方式执行用户添加时,提醒不被允许执行,如图6所示,与条目一的设计符合。以zhang帐号登录,用sudo方式执行添加用户,顺利完成,而用sudo方式执行挂载光驱操作时,提醒不被允许,如图7所示,与条目二的设计符合。
图5 权限控制条目
图6 chen用户权限的验证
图7 zhang用户权限的验证
图8 wang用户权限的验证
图9 sudo的日志
以wang帐号登录,无论是用sudo方式执行挂载操作还是添加用户操作,都被提醒用户不在sudoers文件中,如图8所示。
由以上结果可知,三种用户被sudoers配置文件分成三类不同的管理权限,将root的管理权限进行了分割,极大地减少了系统滥用的风险,并且也使得root权限管理更清晰明了。
在自动化运维中,需要在控制端设计好管理命令,推送到被控制端自动执行,控制端和被控制端用的是相同的加入到/etc/sudoers中的具有系统管理权限的帐号,并且在执行命令的过程中不能交互地输入密码,此时,就需要在控制条目中执行命令前加一关键字NOPASSWD,即“USER_FLAG HOST_FLAG=( RUNAS_FLAG) NOPASSWD:COMMAND_FLAG ”样的格式。
sudo提供的日志在/var/log/secure文件中,通过sudo方式执行管理命令不
管是成功还是不成功,在该文件中都有明确的记载,如图9所示,清楚地记录了什么时候、在哪台机器上、什么帐号、在什么路径下,以谁的身份执行了什么命令,或者不被允许执行什么命令,这对于事后分析追查是非常重要的依据,所以有很高的安全性。
通过su认证模块的启用和sudoers配置文件的应用可以对root帐号权限实施有效的分配和管理,减少系统风险。特别是sudoers文件的分权功能,让多管理员的系统各司其职,无法越权,这也是现在很多Linux发行版本普遍采用的一种方式。
[1]Bovet.深入理解Linux内核[M].北京:中国电力出版社,2008.
[2]刘晓辉.网管天下[M].北京:电子工业出版社,2011.
[3]Matt Welsh & Lar Kaufman.Linux权威指南[M]. 北京:中国电力出版社,2000.
[4]余柏山.Linux系统管理与网络管理[M]. 北京:清华大学出版社,2010.
[5]赵炯.Linux内核完全剖析[M].北京:机械 工业出版社,2006.
[6]张恒杰.Red Hat Enterprise Linux服务器 配置与管理[M].北京:清华大学出版社,2013.
[7]丁明一.Linux运维之道[M].北京:电子工业出版社,2016.
[8]Wolfgang Mauerer.深入Linux内核架构[M].北京:人民邮电出版社,2010.
Various Forms Realization of Controlling Root Account Authority under Linux Environment
Chen Jinlian
(Huanggang Polytechnic College, Huanggang 438002 Hubei)
The account security is the first security gateway of multi-task and multi-user operating system. In Linux environment, the security control of root account with system management authority is particularly important. It is an important skill of Linux system management to ensure the security of the root account, to realize the necessary system management, to realize the fine control of the root account permissions, and to find the best balance between the two.
Root account;Resource permission; Application authentication; Account switch
2020-09-05
陈金莲,女,湖北红安人,工程硕士,高级工程师,副教授。研究方向:网络工程、网络安全、服务器运维。
TP315
A
1672-1047(2020)05-0120-04
10.3969/j.issn.1672-1047.2020.05.30
[责任编辑:罗幼平]