第四章系统安全基础应用
一,账号安全控制
用户账号,是计算机使用者的身份凭证和标识,每一个访问系统资源的人,必须凭借助他的用户账号才能进入计算机。在linux系统中,提供了多种机制来保证用户账号的正当,和安全使用。
1. 账户使用的命令:
useradd -L // 锁定账号
passwd -S // 查看账户状态
usermod -U // 解锁账号
chattr +i /etc/passwd // 锁定文件
chattr -i /etc/passwd // 解锁文件
lsattr /etc/passwd // 查看文件状态“i”为锁定,非“i”表示正常。
账号或文件被锁定,就无法更改其他的属性。
2. 密码安全控制:在服务器端设置限制用户的最大有效天数。
chage -M 10(天)xiaowang // 适用于已有的用户
chage -d 0 xiaowang // 要求用户下次登录必须修改密码,必须符合密码复杂性要求。如下图所示!
3. shell 环境的命令历史机制为了用户提供了极大的便利,另一方面也给用户带来了潜在的风险。只要获得用户命令的历史文件,该用户的命令操作过程将会一览无余,如果使用明文输入密码登陆服务器,无意之中服务器的安全壁垒有多了一个缺口。
Bash 终端环境中,历史命令的记录条数由变量“HISTSIZE”控制,默认记录1000 条命令,修改 /etc/profile 文件中的 “HISTSIZE”变量值。
export HISTSIZE=10 // 适用于当前用户。
还可以修改用户宿主目录中的 ~/.bash_logout 文件,添加清空历史命令中的操作语句。当用户重新登录bash环境时,所有历史记录将自动清空。
history //显示当前输入过得历史命令。
history -c //清除当前输入过得历史命令。
clear //清空屏幕内容。
bash 终端环境中,还可以设这一个闲置超时时间,当超过指定的时间没有任何输入即自动注销终端,闲置超时由变量“TMOUT”来控制,默认单位为秒。如下图所示!
exporyTMOUT=60 //默认600秒,可任意修改,适用于当前用户。
二.用户切换与提权
大多数linux服务器并不建议直接以root用户进行登陆。另一方面可以大大减少因误操作而导致的破坏,一方面也降低了特权密码在不安全的网络中被泄露的风险。
1. su 命令 -----切换用户
使用 su 命令,可以切换为指定的另一个用户,从而且具有该用户的所有权限。切换时需要目标用户的密码进行验证(从root 切换到其他用户不需要密码)。
命令的使用: su – root // 切换到root shell 目录下。
上述命令操作中:选项“-”等同于“--login”或“-l” 表示切换后进入目标用户的登录shell环境,若缺少此项则仅全换身份,不缺换用户环境。对root 用户可以省略。
2. 任何用户都允许使用“su”命令,从而有机会反复尝试其他用户(如root)的登陆密码,该服务器带来很大的风险。为了加强“su”命令的使用控制,可以借助于“pam_wheel”认证模块,只允许个别用户使用“su”命令进行切换。
实现过程:将授权使用“su” 命令的用户添加到wheel组,修改 ‘/etc/pam.d/su’ 认证配置以启用 pam_wheel 认证。
将用户添加到“wheel”组
确认用户是否添加到‘wheel’组
修改‘vim /etc/pam.d/su’脚本
使用‘su’命令切换用户的操作将会记录到安全的日志 /var/log/secure 文件中。
查看文件的命令: tail /var/log/secure
3. sudo 命令---提升权限:
通过‘su’命令可以非常方便地登陆切换为另一个用户,但提前条件必须知道目标用户登陆密码。
sudo 命令的使用,root可以预给普通用户拥有一部分权限,不需要将目标用户的密码告诉它, sudo 可提升执行权限,首先管理员先进行授权,指定哪些用户以超级用户(或普通用户)的身份来执行那些命令。
sudo 机制的配置文件位于‘/etc/sudoers’文件默认权限为 440 使用专门的visudo 工具来进行编辑。
用户(user)授权的用户名,采用‘%组名’的形式(授权一个组的所有用户)
主机(MACHINE)使用配置文件的主机名称,此选项主要是方便再多个主机间共用同一份‘sudores’文件,根据实际主机名来编写脚本:
命令(COMMANDS)允许授权的用户通过;‘sudo’方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,” 进行分隔。
典型‘sudo’配置记录中,每一行对应一个用户或组的‘sudo’授权配置。
但是用相同授权的用户较多时,获授权的命令较多时,可采用集中定义的别名,用户主机命令都可以定义为别名。(必须为大写)分别通过关键字 User_Alias,Host_Alias,Cmnd_Alias 来进行设置。
sudo 配置记录的命令部分允许使用通配符“*”,取反符号“!”当需要授权某个目录下的所有命令,取消其中个别命令时特别有用。
默认情况下,通过sudo方式执行的操作并不记录,若启用sudo日志记录以备管理员查看,应在 /etc/sudoers 或 visudo 文件中添加最后添加“Defaultry logfile”设置。
执行sudo命令时间隔不超过五分钟不需要验证 sudo 密码,sudo -l 可以查看用户自己的使用命令。
tail /var/log/sudo 查看sudo 文件的日志记录。
三 . 系统引导和登陆控制!
1. 在互联网环境中,大部分服务器都是通过远程登录的方式来进行管理的,而本地引导和终端登陆过程往往容易被忽视,从而留下安全隐患,当服务器所在的机房环境缺乏严格,安全的管控制度,防止其他用户的非授权介入,必须重视物理设备的防护。
2. 调整BIOS 引导设置。
(1) 将第一有限引导设备(first Boot Device)设为当前系统所在磁盘。
(2) 禁止从其他设备(如:光盘 U盘网络等)引导系统,对应的项设为(Disabled)“残废”
(3) 将 BIOS 的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。
(4) 禁止启用 Ctrl+Alt+Delete 热键重启。
Vi /etc/inittab
init q //重新读取文件,已更新配置。
(5) 限制更改GRUB 引导参数,任何可对服务器进行grub修改,加强服务器的引导过程安全控制,可以为grub 设置一个密码,只有提供正确密码才可被允许修改引导参数。
重新开机进入GRUB 菜单时,直接按e键将无法修改引导参数。若要获得编辑权限,必须先按p键并根据提示输入正确的GRUB密码,按 e 键在行尾添加‘single’ 的启动参数, s 或 1 也可以表示进入单用户模式。
注意:
为GRUB 设置密码时,“--MD5…… ”部分可替换为明文的密码字符串,例如“123456”但是安全性稍差。另外,可以将“password ……”部分添加到每个title行之后,效果是在进入指定的系统之前需要验证密码,否则拒绝登陆引导。
(6) 修改登陆提示信息:
系统登录信息表示在 /etc/issue /etc/issue.net 文件中,其中包括系统类型,内核版本等相关内容。
对于***者来说,可以依据这些信息来选择相应的***程序,对于生产环境linux 服务器,建议修改/etc/issue 配置文件内容。
(7) 禁止root用户登陆终端
在linux系统中,login程序会读取 /etc/securetty 文件,以决定允许root用户从哪些终端登陆(安全终端)登陆系统,若禁止root用户从那些中登陆,可修改 /etc/securetty 文件的终端 tty1 tty2 tty6 将注释掉就可指定root用户从哪个终端登陆。
(8) 禁止普通用户登陆系统
添加: touch /etc/nologin //禁止普通用户登陆系统。
恢复普通用户登陆系统,删除 /etc/nologin
作者:王国苍