第四章系统安全基础应用

账号安全控制

 用户账号,是计算机使用者的身份凭证和标识,每一个访问系统资源的人,必须凭借助他的用户账号才能进入计算机。在linux系统中,提供了多种机制来保证用户账号的正当,和安全使用。

1.        账户使用的命令:

useradd  -L                     // 锁定账号

passwd   -S                     // 查看账户状态

usermod      -U                  // 解锁账号

chattr     +i    /etc/passwd     // 锁定文件

chattr     -i    /etc/passwd     // 解锁文件

lsattr   /etc/passwd           // 查看文件状态i为锁定,非i表示正常。

账号或文件被锁定,就无法更改其他的属性。

2.       密码安全控制:在服务器端设置限制用户的最大有效天数。

spacer.gif

spacer.gif


chage -M  10(天)xiaowang  // 适用于已有的用户

chage -d   0   xiaowang // 要求用户下次登录必须修改密码,必须符合密码复杂性要求。如下图所示!

 spacer.gif

spacer.gif

3. shell 环境的命令历史机制为了用户提供了极大的便利,另一方面也给用户带来了潜在的风险。只要获得用户命令的历史文件,该用户的命令操作过程将会一览无余,如果使用明文输入密码登陆服务器,无意之中服务器的安全壁垒有多了一个缺口。

Bash 终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认记录1000 条命令,修改 /etc/profile 文件中的 “HISTSIZE”变量值。

spacer.gif

export  HISTSIZE=10   // 适用于当前用户。

还可以修改用户宿主目录中的 ~/.bash_logout 文件,添加清空历史命令中的操作语句。当用户重新登录bash环境时,所有历史记录将自动清空。

spacer.gif

spacer.gif

history      //显示当前输入过得历史命令。

history -c   //清除当前输入过得历史命令。

clear       //清空屏幕内容。

 bash 终端环境中,还可以设这一个闲置超时时间,当超过指定的时间没有任何输入即自动注销终端,闲置超时由变量“TMOUT”来控制,默认单位为秒。如下图所示!

spacer.gif


           exporyTMOUT=60   //默认600秒,可任意修改,适用于当前用户

 

二.用户切换与提权

        大多数linux服务器并不建议直接以root用户进行登陆。另一方面可以大大减少因误操作而导致的破坏,一方面也降低了特权密码在不安全的网络中被泄露的风险。

  1. 1.   su 命令 -----切换用户

使用 su 命令可以切换为指定的另一个用户,从而且具有该用户的所有权限。切换时需要目标用户的密码进行验证(从root 切换到其他用户不需要密码)。

      命令的使用: su – root   // 切换到root  shell 目录下。

    spacer.gif

上述命令操作中:选项-等同于--login-l  表示切换后进入目标用户的登录shell环境,若缺少此项则仅全换身份,不缺换用户环境root 用户可以省略。


spacer.gif

  1. 2.   任何用户都允许使用su”命令,从而有机会反复尝试其他用户(如root)的登陆密码,该服务器带来很大的风险。为了加强su命令的使用控制,可以借助于pam_wheel”认证模块,只允许个别用户使用su命令进行切换。

 实现过程:将授权使用“su” 命令的用户添加到wheel组,修改 ‘/etc/pam.d/su’ 认证配置以启用 pam_wheel 认证。

spacer.gif

 将用户添加到“wheel”

spacer.gif

确认用户是否添加到‘wheel’组

spacer.gif

修改‘vim /etc/pam.d/su’脚本

spacer.gif

 使用‘su命令切换用户的操作将会记录到安全的日志 /var/log/secure 文件中。

 查看文件的命令: tail /var/log/secure 

  1. 3.   sudo  命令---提升权限:

通过‘su命令可以非常方便地登陆切换为另一个用户,但提前条件必须知道目标用户登陆密码。

sudo 命令的使用,root可以预给普通用户拥有一部分权限,不需要将目标用户的密码告诉它, sudo 可提升执行权限,首先管理员先进行授权,指定哪些用户以超级用户(或普通用户)的身份来执行那些命令。

  sudo 机制的配置文件位于/etc/sudoers文件默认权限 440 使用专门的visudo 工具来进行编辑。

用户user授权的用户名,采用%组名’的形式(授权一个组的所有用户)

主机MACHINE)使用配置文件的主机名称,此选项主要是方便再多个主机间共用同一份‘sudores’文件,根据实际主机名来编写脚本:

命令COMMANDS允许授权的用户通过;‘sudo’方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号,” 进行分隔。

典型‘sudo配置记录中,每一行对应一个用户或组的‘sudo’授权配置。

spacer.gif

但是用相同授权的用户较多时,获授权的命令较多时,可采用集中定义的别名,用户主机命令都可以定义为别名。(必须为大写)分别通过关键字 User_AliasHost_AliasCmnd_Alias 来进行设置。

sudo 配置记录的命令部分允许使用通配符*,取反符号“!”当需要授权某个目录下的所有命令,取消其中个别命令时特别有用。

默认情况下,通过sudo方式执行的操作并不记录,若启用sudo日志记录以备管理员查看,应在 /etc/sudoers visudo 文件中添加最后添加“Defaultry logfile设置。

spacer.gif

spacer.gif

spacer.gif


执行sudo命令时间隔不超过五分钟不需要验证 sudo 密码,sudo  -l 可以查看用户自己的使用命令。

 tail  /var/log/sudo 查看sudo 文件的日志记录。

. 系统引导和登陆控制

  1. 1.   在互联网环境中,大部分服务器都是通过远程登录的方式来进行管理的,而本地引导和终端登陆过程往往容易被忽视,从而留下安全隐患,当服务器所在的机房环境缺乏严格,安全的管控制度,防止其他用户的非授权介入,必须重视物理设备的防护。

  2. 2.   调整BIOS 引导设置。

(1)         将第一有限引导设备first Boot Device设为当前系统所在磁盘。

(2)         禁止从其他设备(如:光盘  U网络等)引导系统,对应的项设为Disabled“残废”

(3)          BIOS 的安全级别改为setup,并设置好管理密码,以防止未授权的修改。

(4)         禁止启用 Ctrl+Alt+Delete 热键重启。

Vi  /etc/inittab

spacer.gif

 init   q  //重新读取文件,已更新配置。

(5)         限制更改GRUB 引导参数,任何可对服务器进行grub修改,加强服务器的引导过程安全控制,可以为grub 设置一个密码,只有提供正确密码才可被允许修改引导参数。

spacer.gif

 

重新开机进入GRUB 菜单时,直接按e键将无法修改引导参数。若要获得编辑权限,必须先按p键并根据提示输入正确的GRUB密码, e 在行尾添加single’  的启动参数, s 1 也可以表示进入单用户模式。spacer.gif

 注意:

GRUB 设置密码时,--MD5…… ”部分可替换为明文的密码字符串,例如123456但是安全性稍差。另外,可以将password ……部分添加到每个title行之后,效果是在进入指定的系统之前需要验证密码,否则拒绝登陆引导。

(6)         修改登陆提示信息:

 系统登录信息表示在 /etc/issue /etc/issue.net 文件中,其中包括系统类型,内核版本等相关内容。

 对于***者来说,可以依据这些信息来选择相应的***程序,对于生产环境linux 服务器,建议修改/etc/issue 配置文件内容。

spacer.gif

spacer.gif

(7)         禁止root用户登陆终端

linux系统中,login程序会读取 /etc/securetty 文件以决定允许root用户从哪些终端登陆(安全终端)登陆系统若禁止root用户从那些中登陆,可修改 /etc/securetty  文件的终端 tty1 tty2 tty6 将注释掉就可指定root用户从哪个终端登陆。

spacer.gif

spacer.gif


(8)         禁止普通用户登陆系统

添加 touch   /etc/nologin //禁止普通用户登陆系统。

恢复普通用户登陆系统,删除 /etc/nologin





                         作者:王国苍