系统管理指南:安全性服务

保证登录和口令的安全

您可以限制远程登录和要求用户具有口令,也可以监视失败的访问尝试以及临时禁用登录。

Procedure如何显示用户的登录状态

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用 logins 命令显示用户的登录状态。


    # logins -x -l username
    
    -x

    显示一组扩展的登录状态信息。

    -l username

    显示指定用户的登录状态。变量 username 是用户的登录名称。必须以逗号分隔的列表形式指定多个登录名称。

    logins 命令使用相应的口令数据库来获取用户的登录状态。该数据库可以是本地 /etc/passwd 文件,也可以是名称服务的口令数据库。有关更多信息,请参见 logins(1M) 手册页。


示例 3–1 显示用户的登录状态

在以下示例中,显示了用户 rimmer 的登录状态。


# logins -x -l rimmer

rimmer       500     staff           10   Annalee J. Rimmer

                     /export/home/rimmer

                     /bin/sh

                     PS 010103 10 7 -1
rimmer

标识用户的登录名称。

500

标识用户 ID (user ID, UID)。

staff

标识用户的主组。

10

标识组 ID (group ID, GID)。

Annalee J. Rimmer

标识注释。

/export/home/rimmer

标识用户的起始目录。

/bin/sh

标识登录 shell。

PS 010170 10 7 -1

指定口令生命期信息:

  • 上次更改口令的日期

  • 更改之间要求的天数

  • 在该天数后必须更改

  • 警告期


Procedure如何显示没有口令的用户

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用 logins 命令显示所有没有口令的用户。


    # logins -p

    -p 选项用于显示没有口令的用户列表。除非启用了名称服务,否则 logins 命令将使用本地系统的口令数据库。


示例 3–2 显示没有口令的用户

在以下示例中,用户 pmorph 没有口令。


# logins -p

pmorph          501     other           1       Polly Morph

# 

Procedure如何临时禁止用户登录

在系统关闭或例行维护期间,可临时禁止用户登录。超级用户登录将不受影响。有关更多信息,请参见 nologin(4) 手册页。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在文本编辑器中创建 /etc/nologin 文件。


    # vi /etc/nologin
    
  3. 添加有关系统可用性的消息。

  4. 关闭并保存该文件。


示例 3–3 禁止用户登录

在此示例中,用户将收到系统不可用的通知。


# vi /etc/nologin

(Add system message here)

 

# cat /etc/nologin 

***No logins permitted.***



***The system will be unavailable until 12 noon.***

您也可以将系统引导至运行级 0(单用户模式)以禁止登录。有关将系统引导至单用户模式的信息,请参见《系统管理指南:基本管理》中的第 9  章 “关闭系统(任务)”


Procedure如何监视失败的登录尝试

此过程从终端窗口捕获失败的登录尝试。此过程不会从 CDE 或 GNOME 登录尝试中捕获失败的登录。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /var/adm 目录中创建 loginlog 文件。


    # touch /var/adm/loginlog
    
  3. loginlog 文件中,为 root 用户设置读写权限。


    # chmod 600 /var/adm/loginlog
    
  4. loginlog 文件中,将组成员关系更改为 sys


    # chgrp sys /var/adm/loginlog
    
  5. 检验日志是否正常工作。

    例如,使用错误的口令五次登录系统。然后,显示 /var/adm/loginlog 文件。


    # more /var/adm/loginlog
    
    jdoe:/dev/pts/2:Tue Nov  4 10:21:10 2003
    
    jdoe:/dev/pts/2:Tue Nov  4 10:21:21 2003
    
    jdoe:/dev/pts/2:Tue Nov  4 10:21:30 2003
    
    jdoe:/dev/pts/2:Tue Nov  4 10:21:40 2003
    
    jdoe:/dev/pts/2:Tue Nov  4 10:21:49 2003
    
    #

    loginlog 文件中,每次失败的尝试都对应一项。每一项都包含用户的登录名称、tty 设备以及登录尝试失败的时间。如果用户登录尝试失败的次数少于五次,则不会记录任何失败的登录尝试。

    如果 loginlog 文件不断增大,则表明可能是存在侵入计算机系统的尝试。因此,应定期检查并清除该文件的内容。有关更多信息,请参见 loginlog(4) 手册页。

Procedure如何监视所有失败的登录尝试

此过程捕获 syslog 文件中所有失败的登录尝试。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用所需的 SYSLOGSYSLOG_FAILED_LOGINS 值设置 /etc/default/login 文件。

    编辑 /etc/default/login 文件以更改相应项。请确保取消对 SYSLOG=YES 的注释。


    # grep SYSLOG /etc/default/login
    
    # SYSLOG determines whether the syslog(3) LOG_AUTH facility 
    
    # should be used
    
    SYSLOG=YESSYSLOG_FAILED_LOGINS=0
    
    #
  3. 使用正确的权限创建文件以保存日志信息。

    1. /var/adm 目录中创建 authlog 文件。


      # touch /var/adm/authlog
      
    2. authlog 文件中,为 root 用户设置读写权限。


      # chmod 600 /var/adm/authlog
      
    3. authlog 文件中,将组成员关系更改为 sys


      # chgrp sys /var/adm/authlog
      
  4. 编辑 syslog.conf 文件以记录失败的口令尝试。

    这些失败应发送到 authlog 文件。

    1. syslog.conf 文件中键入以下项。

      使用制表符分隔 syslog.conf 的同一行中的字段。


      auth.notice <按 Tab 键>  /var/adm/authlog
    2. 刷新 syslog 守护进程的配置信息。


      # svcadm refresh system/system-log
      
  5. 检验日志是否正常工作。

    例如,使用错误的口令以普通用户的身份登录系统。然后,以主管理员角色或超级用户身份显示 /var/adm/authlog 文件。


    # more /var/adm/authlog
    
    Nov  4 14:46:11 example1 login: [ID 143248 auth.notice] 
    
     Login failure on /dev/pts/8 from example2, stacey
    
    #
  6. 定期监视 /var/adm/authlog 文件。


示例 3–4 在三次登录失败后记录访问尝试

按照上述过程进行操作,但在 /etc/default/login 文件中将 SYSLOG_FAILED_LOGINS 的值设置为 3



示例 3–5 在三次登录失败后关闭连接

/etc/default/login 文件中取消对 RETRIES 项的注释,然后将 RETRIES 的值设置为 3。所做编辑将立即生效。在一个会话中重试登录三次后,系统便会关闭连接。


Procedure如何创建拨号口令


注意 – 注意 –

首次建立拨号口令时,务必保持登录到至少一个端口。请在其他端口上测试该口令。如果注销以测试新口令,则可能无法重新登录。如果同时还登录到另一个端口,则可返回并修复相应错误。


  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建一个包含串行设备列表的 /etc/dialups 文件。

    添加要使用拨号口令保护的所有端口。/etc/dialups 文件的内容应与以下信息类似:


    /dev/term/a
    
    /dev/term/b
    
    /dev/term/c
  3. 对于要求拥有拨号口令的登录程序,创建一个 /etc/d_passwd 文件,并在文件中添加这些程序。

    添加用户可在登录时运行的 shell 程序,例如 uucicoshkshcsh/etc/d_passwd 文件的显示应与以下信息类似:


    /usr/lib/uucp/uucico:encrypted-password:
    
    /usr/bin/csh:encrypted-password:
    
    /usr/bin/ksh:encrypted-password:
    
    /usr/bin/sh:encrypted-password:

    在此过程的后续部分,将为每个登录程序添加加密口令。

  4. 在这两个文件中,将拥有权设置为 root


    # chown root /etc/dialups /etc/d_passwd
  5. 在这两个文件中,将组拥有权设置为 root


    # chgrp root /etc/dialups /etc/d_passwd
  6. 在这两个文件中,为 root 设置读写权限。


    # chmod 600 /etc/dialups /etc/d_passwd
  7. 创建加密口令。

    1. 创建临时用户。


      # useradd username
      
    2. 为临时用户创建口令。


      # passwd username
      
      New Password:  <键入口令>
      
      Re-enter new Password:   <重新键入口令>
      
      passwd: password successfully changed for username
      
    3. 捕获加密口令。


      # grep username /etc/shadow > username.temp
    4. 编辑 username.temp 文件。

      删除除加密口令以外的所有字段。第二个字段保存加密口令。

      例如,在以下行中,加密口令为 U9gp9SyA/JlSk


      temp:U9gp9SyA/JlSk:7967:::::7988:
    5. 删除临时用户。


      # userdel username
      
  8. 将加密口令从 username.temp 文件复制到 /etc/d_passwd 文件中。

    可为每个登录 shell 创建不同口令。或者,对每个登录 shell 使用相同口令。

  9. 将该口令通知拨号用户。

    应确保在通知用户的过程中口令不会被篡改。

Procedure如何临时禁用拨号登录

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将下面的项作为单独的一行放入 /etc/d_passwd 文件:


    /usr/bin/sh:*: