pppcloud云主机内LINUX用户安全管理2

◆超级用户权限与受权apache

  ●创建多个超级用户bash

  很多新系统管理员认为root用户是惟一的超级用户,其实root只是系统默认的超级用户的名称,root并不是由于它叫root而成为超级用户的。随便打开一个/etc/passwd文件的例子,你就会发现以下几行:3d

root:asiewhgYfaoO/J:0:0:root:/root:/bin/tcsh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
lanf:Yuao56Ioyefg:0:0:bluewind:/home/bluewind:/bin/bash
jake:gUyfaiIodashfj:501:501:jake cheng:/home/jake:/bin/tcsh
apache:!!:502:502::/usr/local/apache:/bin/false日志

  能够看到,root的UID和GID都被设置为0了。实际上,超级用户的充要条件就是UID和GID都等于0。也就是说,任何用户,只要它的UID和GID都为0,就与常被称为root超级用户没有什么两样了。好比上面那个例子里面的lanf,也是一个超级用户。blog

  因此,能够将任何普通用户变成超级用户。可是,这样作并无好处,不少时候这都会增长系统的隐患。除非在组织中须要多个系统管理员管理同一个系统,这就须要有多个超级用户账号。这有利于各个管理员明确责任,经过日志知道不一样的人分别作过什么事。ci

   还有一种状况,也可能出现多个超级用户账号,那就是黑客入侵后设置一个看起来象普通账号的用户,却修改了UID和GID使之为0。这样根本就不须要知道 root用户密码,就能够执行超级用户权限了。而从咱们的系统管理员的一方来讲,咱们不可能时刻注意passwd文件的变化的,没有那个时间也没有那个精 力。这时只好编写一个脚原本帮助监视,例如:io

/bin/grep ‘0:0’ /etc/passwd |awk ‘BEGIN{FS=”:”}
{print $1}’|mail –s “`date +”%D%T”`”rootawk

  这是一个很小的脚本程序,使用了一些常规的命令来查看/etc/passwd文件,把UID和GID为0的行寄给root用户。把这个脚本放在/etc/cron.daily文件中让cron运行,root将天天收到一封信,报告当前的超级用户。配置

   实际上,因为PAM(可插入验证模块)的限制,在telnet上是不容许超级用户登入的,也就是说,黑客修改了本身的UID和GID后,想再次登录从而 得到超级用户的权限的话,不修改/etc/seuretty文件是不可能的——除非你傻到本身添加了伪TTY设备ROOT用户登录权限。通常可让超级用 户先用普通用户账号登录,再su(su命令相关内容请参考本站命令查询部分)。date

  ●为普通用户分配特权

  使用sudo命 令能够容许普通用户执行超级用户才能执行的命令。不管是基于信任的创建须要时间,仍是基因而否存在这种必要,咱们都不会把超级用户的全部权限轻易许人的。 这是网管工做的原则。因此,当一些用户必须访问某些内容时,咱们能够配置sudo以容许单独的普通用户运行特权命令。

  sudo命令容许已经在/etc/sudoers文件中指定的用户运行超级用户命令。例如,一个已经得到许可的普通用户能够运行:

sudo vi /etc/passwd

  实际上,sudo的配置彻底可让咱们指定某个列入/etc/sudoers文件的普通用户能够作什么、不能够作什么。/etc/sudoers的配置行以下:

  > 空行或注释行(以#字符打头):无用行。

  > 可选的主机别名行:用来建立主机列表的简称。必须以Host_Alias关键词开头,列表中的主机必须用逗号隔开。例如:

Host_Alias REDHAT=binbu,qd

  其中binbu和qd是俩主机名,你能够用REDHAT(别名)统称它们。

  >可选的用户别名行:用来建立用户列表的简称。用户别名行必须以User_Alias关键词开头,列表中的用户名必须以逗号隔开。其格式同主机别名行。

  >可选的命令别名行:用来建立命令列表的简称。必须以Cmnd_alias开头,列表中的命令必须用逗号隔开。

  >可选的运行方式别名行:也是用来建立用户列表的简称。不一样的是,使用这样的别名能够告诉sudo程序以列表中某一用户的身份来运行程序。

  >必要的用户访问说明行:用户访问的说明语法以下:

user host= [run as user ] command list

   在user处指定一个真正的用户名或定义过的别名,一样的,host也能够是一个真正的主机名或者定义过的主机别名。默认状况下,sudo执行的全部命 令都是以root身份执行。若是你想使用其余身份能够指定。至于command list能够是以逗号分隔的命令列表,也能够是一个已经定义过的别名。例如:

lanf binbu=/sbin/shutdown

  这一句说明lanf能够在binbu主机上运行关机命令。

  注意:

  一、能够在一行定义多个别名,中间用:隔开。

  二、能够在命令或命令别名以前加上!号,使该命令或命令别名无效。

  三、有两个关键词:ALL 和NOPASSWD。ALL意味着“全部文件”(全部主机或全部命令),NOPASSWD意味着不用密码。

  下面是一个sudoers文件的例子:

#sudoers files
#User alias specification
User_Alias ADMIN=yourid:POWERUSER=hisid,herid
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

  第三行定义了两个别名ADMIN和POWERUSER,第五行说明在全部主机上ADMIN均可以以root身份执行全部命令。第六行给POWERUSER除了运行su命令外同等ADMIN的权限。

相关文章
相关标签/搜索