1)基本安全措施
系统帐号清理
在Linux系统中,除了用户手动创建的各种帐号以外,还包括随系统或程序安装过程
生成的其他大量帐号。除了超级用户root以外,其他大量帐号只是用来维护系统运作,启动或保持服务进程,一般允许登录的,因此也称为非登录用户。
常见的非登录用户包括bin、daemon、adm、lp、mail、nobody、apache、mysql、dbus、ftp、gdm、haldaemon等。为了确保系统安全,这些用户的登录Shell 通常是 /sbin/nologin, 表示禁止终端登录,应确保不被人为改动。
各种非登录用户中,还有相当一部分是很少用到的,如:news、uucp、games、gopher。这些用户可以视为冗余帐号,直接删除即可。除此之外,还有一些随应用程序安装的用户帐号,若程序卸载以后未自动删除,则需要管理员手动进行清理对于Linux服务器中长期不用的用户帐号,若无法确定是否应该删除,可以暂时将其锁定
锁定用户帐号
解除用户帐号锁定
如果服务器中的用户帐号已经固定,不再进行更改,可以锁定帐号配置文件
锁定文件chattr
查看文件锁定状态lsattr
例1:锁定帐号配置文件
例2:解除帐号配置文件的锁定
注意:帐号文件被锁定的情况下,其内容将不允许更改,因此无法添加、删除帐号,也不能更改用户的密码、登录Shell、宿主目录等属性信息
密码安全控制
1.更改密码有效期
方法一:修改配置文件 /etc/login.defs 中的PASS_MAX_DAYS项(适用于新建的用户)
方法二:命令 chage-M30zhangsan(适用于已经创建的zhangsan用户)
2.强制用户下次登录是重设密码
命令历史、自动注销
Bash 终端环境中,历史命令的记录条数由变量HISTSIZE 控制,默认为1000条。
若对 /etc/profile 文件中的HISTSIZE 变量值进行修改,将会作用系统中的所有用户。
方法一:vim/etc/profile(适用于新建的用户)
除此之外,还可以修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。这样一来,当用户退出已登录的Bash 环境以后,所记录的历史命令将自动清空。
例:
Bash 终端环境中,还可以设置闲置超时时间,当超过指定的时间没有任何输入即自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险。
闲置超时由变量TMOUT来控制,默认单位为秒
方法一:vim /etc/profile(适用于所有新登录的用户,若对当前用户修改,则可以修改配置文件~/.bash_profile,然后重读配置即可)
方法二:适用于当前用户
注意:当正在进行程序代码编译、修改系统配置等耗时较长的操作时,应避免设置TMOUT变量。必要时可以执行"unset TMOUT"命令取消TMOUT变量。
2)用户切换与提权
Linux系统提供了su、sudo 两种机制,其中su主要用来切换用户,而sudo用来提升执行权限
su命令切换用户
使用su命令,可以切换为指定的另一用户,从而具有该用户的所有权限。切换时需要目标用户的密码进行验证(从root切换为其他用户时例外)
例:从当前的lisi用户切换为root用户
注意:
上述命令中,选项"-"等同于"--login"或"-l",表示切换后进入目标用户的登录Shell环境,若缺少此选项则仅切换身份、不切换用户环境。对于切换为root用户的情况,"root"可以省略。
默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助pam_wheel认证模块,只允许极个别用户使用su命令进行切换。
方法:将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证。
去掉阴影行开头的"#"即可
启用pam_wheel认证后,未加入到wheel组内的其他用户将无法使用su命令,尝试进行切换时将会按照"密码不正确"来处理,从而将切换用户的权限控制在最小范围内。
使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中。查看该文件可以确认哪些用户进行了切换
sudo命令提升权限
实现步骤:
sudo 机制的配置文件位于/etc/sudoers,文件的默认权限位440,需要使用专门的visudo工具进行编辑。虽然也可以用vi进行编辑,但保存时必须执行":w!"来强制操作,否则系统将提示为只读文件而拒绝保存。
授权的基本格式
userMACHINE=COMMANDS
用户主机=命令
注意:命令需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。
例:授予普通用户张三执行ifconfig命令的权限,wheel组的用户不需要验证密码即可执行任何命令
[root@localhost~]#visudo
……//省略部分内容
zhangsanlocalhost=/sbin/ifcofig
%wheelALL=NOPASSWD:ALL
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。
例:利用别名机制,允许用户jerry、tom、mary在主机smtp、pop中执行rpm、yum命令
[root@localhost~]#visudo
……//省略部分内容
User_AliasOPERATORS=jerry,tom,marry
Host_Alias