Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1489004
  • 博文数量: 408
  • 博客积分: 10036
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:57
文章分类

全部博文(408)

文章存档

2011年(1)

2010年(2)

2009年(1)

2008年(3)

2007年(7)

2006年(394)

我的朋友

分类: LINUX

2006-07-24 19:06:02

管理控制


·在管理机器的时候,用户必须以根身份或通过 setuid 程序(如 sudo 或 su)而获得的有效根特权来执行某些任务。setuid 是一种使用程序所有者的用户 ID(UID)而不是运行该程序的用户 ID 的程序。当使用长格式列举时,这类程序的所有者部分有一个小写的 s,如下所示:

    -rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su


    对于系统管理员来说,他们必须决定机构内的用户对机器到底能拥有多少管理权限。通过 pam_console.so 这个 PAM 模块,某些通常保留给根用户的活动,如重新引导和挂载可移介质,第一个登录到实际控制台的用户也会被允许进行


·允许根权限

1) 禁止根存取权限

    如果管理员因为这些原因或其它原因对于允许用户登录为根用户感到不太合适,他们就应该把根口令保密,并且通过使用口令保护引导装载程序来禁止进入运行级别1或单用户模式。

      表 4-1显示了管理员可以进一步保证根登录被禁止的方法:
方法                                         描述                          影响                                不影响
1)
a、改变根 shell。 编辑 /etc/passwd 文件,然后把 shell 从 /bin/bash 改成 /sbin/nologin。 阻止进入根 shell 并记录所有进入企图。

b、以下程序会被阻止进入根帐号:
?login 、?gdm 、?kdm 、?xdm 、?su 、?ssh 、?scp 、?sftp

c、不需要 shell 的程序,如 FTP 客户、邮件客户以及许多 setuid 程序。
    以下程序不会被阻止进入根帐号:  ?sudo 、?FTP 客户 、?电子邮件客户

2)
a、禁止通过任何控制台设备(tty)来获得根权限。 一个空的 /etc/securetty 文件会防止到任何连接在计算机上的设备登录为根用户。 防止通过控制台或网络来进入根帐号。

b、以下程序被禁止用来进入根帐号:
?login 、?gdm 、?kdm 、?xdm 、?其它打开 tty 的网络服务 、不以根用户身份登录,却通过 setuid 或其它机制来执行管理性任务。

c、以下程序不会被禁止进入根帐号:
?su、?sudo 、?ssh 、?scp 、?sftp


3)
a、禁用根的 SSH 登录。 编辑 /etc/ssh/sshd_config 文件,把 PermitRootLogin 参数设置为 no。  
防止通过 OpenSSH 工具套件来获得根权限。

b、以下程序会禁止进入根帐号::
?ssh、?scp 、?sftp

c、这只会阻止根帐号对 OpenSSH 工具套件的使用。


4)
a、使用 PAM 来限制根用户对服务的存取权限。 编辑 /etc/pam.d/ 目录中的目标服务的文件。请确定验证需要 pam_listfile.so。防止到识别 PAM 的网络服务的根使用权限。


b、以下服务不能进入根帐号:
?FTP 客户 、?电子邮件客户 、?login 、?gdm 、?kdm 、?xdm 、?ssh、?scp 、?sftp 、?任何识别 PAM 的服务

c、不识别 PAM 的程序和服务。


2) 禁用根帐号的方法

1) 禁用根 Shell
    要防止用户直接登录为根用户,系统管理员可以在 /etc/passwd 文件中把根帐号的 shell 设置为 /sbin/nologin。这会阻止需要 shell 的命令,如 su 和 ssh 等直接进入根帐号。

重要
  不需要使用 shell 的程序,如电子邮件客户或 sudo 命令,仍旧能够进入根帐号。

3) 禁用根登录
       要进一步限制对根帐号的使用权限,管理员可以通过编辑 /etc/securetty 文件来禁用控制台的根登录。该文件列举了所有根用户被允许登录的设备。如果该文件不存在,根用户就能通过系统上的各类通信设备,不管是控制台还是原始网络 接口,来登录。这种情况很危险,因为用户可以以根用户身份使用 Telnet 来登录,在网络中明文传送根口令。按照默认设置,红帽企业 Linux 的 /etc/securetty 文件只允许根用户在和机器物理相连的控制台上登录。要阻止根用户登录,键入以下命令来清除该文件的内容:
echo > /etc/securetty


警告
       一个空白的 /etc/securetty 文件不会防止根用户使用 OpenSSH 工具套件来远程登录,因为控制台在验证之前不会被打开。

4.4.2.3. 禁用根的 SSH 登录
要防止根用户通过 SSH 协议登录,编辑 SSH 守护进程的配置文件(/etc/ssh/sshd_config)。把以下一行:
# PermitRootLogin yes

改成:

PermitRootLogin no

4.4.2.4. 使用 PAM 禁用根权限
     PAM 通过 /lib/security/pam_listfile.so 模块在拒绝特定帐号方面提供了极大的灵活性。这使管理员能够在不准许登录的用户列表上应用该模块。以下的例子显示了该模块在 /etc/pam.d/vsftpd PAM 配置文件中的 vsftpd FTP 服务器上是如何被使用的
auth   required   /lib/security/pam_listfile.so   item=user  sense=deny file=/etc/vsftpd.ftpusers onerr=succeed

这告诉 PAM 参考 /etc/vsftpd.ftpusers 文件,并拒绝其中列举的用户使用该服务。
管理员可以随意改变这个文件的名称,并为每个服务保存单独的列表,或使用一个单一列表来拒绝到多个服务的使用权限。
如果管理员想要拒绝到多个服务的使用权限,他也可以在 PAM 配置服务(如 /etc/pam.d/pop 和用于邮件服务的 /etc/pam.d/imap、或用于 SSH 客户的 /etc/pam.d/ssh)中添加相似的一行。


4.4.3. 限制根存取权限
与其完全否定对根帐号的使用,管理员可能只想通过 setuid 程序如 su 或 sudo 等来允许对其的使用。

1. su 命令
键入 su 命令后,用户会被提示输入根口令,经验证后,他就会得到一个根 shell 提示。
通过 su 命令登录后,用户就成为根用户,并且对系统有绝对的管理权。此外,一旦用户成为根用户,他还可以使用 su 命令来变成系统上的另一个用户而不必输入口令。
因为该程序非常强大,机构内的管理员可能想限制能够使用这个命令的人员。
最简单的方法是把用户添加到一个叫做 wheel 的特殊管理组群。要这么做,以根用户身份键入以下命令:
usermod -G wheel

在前面的命令中,把 替换成被添加到 wheel 组群中的用户名。

注记
  根用户是默认的 wheel 组群成员。

4.4.3.2. sudo 命令
sudo 命令提供了另一种授予用户管理权限的方法。当可信任的用户在管理命令前加一个 sudo 命令,这个用户就会被提示输入他自己的口令。验证后,假定这个命令被准许执行,它就会以根用户身份执行。
sudo 命令的基本格式如下:
sudo

在上面的例子中, 应该被替换为通常保留给根用户使用的命令,如 mount。

重要
      sudo 命令的用户应该在离开他们的机器前特别留意一下自己是否已经退出,因为这些用户可以在五分钟之内再次使用这个命令而不必输入口令。该设置可以通过修改配置 文件 /etc/sudoers 来改变。

sudo 命令提供了高度的灵活性。例如,只有列举在 /etc/sudoers 配置文件中的用户被允许使用 sudo 命令,并且命令是在用户的而不是根的 shell 中被执行。这意味着根 shell 可以被完全禁用

      sudo 命令还提供了完整的审核渠道。每次成功的验证都被记录在 /var/log/messages 文件中,所使用的命令以及使用者的用户名被记录在/var/log/secure 文件中。

sudo 命令的另一个优越性是,管理员可以根据需要给不同的用户以不同的命令使用权限。

想编辑 sudo 配置文件 /etc/sudoers 的管理员应该使用 visudo 命令。
要给某人以完全的管理权限,键入 visudo,然后在用户特权规定部分添加和以下相似的一行:
juan ALL=(ALL) ALL

这个例子表明,用户 juan 可以在任何主机上使用 sudo 来执行任何命令。
以下的例子显示了 sudo 配置方面的可伸缩性:
%users  localhost=/sbin/shutdown -h now

这个例子表明,只要是从控制台使用,任何用户都可以使用 /sbin/shutdown -h now 命令。
sudoers 的说明书页中有一个该文件选项的详细列表。
阅读(1404) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~