Linux系统安全的基础应用

一、帐号安全控制

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命令提升权限

实现步骤:

  1. 在配置文件/etc/sudoers 中添加授权

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

你可能感兴趣的:(linux,justify,帐号安全)