系统安全及应用

1、账号安全控制

1.1、基本安全措施

1.1.1、系统账号清理

系统账号清理

  • 将非登录用户的shell设为/sbin/nologin

  • 锁定长期不使用的账号

  • 删除无用的账号

  • 锁定账号文件passwd、shadow

chattr命令

更改文件属性

参数 解释
a 让文件或目录仅供附加用途
i 不得任意更改文件或目录
+ 开启文件或目录的该项属性
- 关闭文件或目录的该项属性

示例:

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow      锁定passwd和shadow文件,不能更改
[root@localhost ~]# ls /etc/passwd /etc/shadow
/etc/passwd  /etc/shadow
[root@localhost ~]# ls -l /etc/passwd /etc/shadow          这样看不出来
-rw-r--r--. 1 root root 2116 2月  23 23:07 /etc/passwd
----------. 1 root root 1200 2月  23 23:07 /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow         lsattr为显示文件隐藏属性
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow     解锁passwd和shadow文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow        lsattr查看文件隐藏属性
---------------- /etc/passwd
---------------- /etc/shadow

1.1.2、密码安全控制

  • 设置密码有效期  chage -M 天数 用户

  • 要求用户下次登录时修改密码 chage -d 0 用户

法一、设置密码有效期 chage -M 天数 用户

[root@localhost ~]# useradd kervin25              创建一个用户kervin25
[root@localhost ~]# id kervin25
uid=1001(kervin25) gid=1001(kervin25) 组=1001(kervin25)
[root@localhost ~]# passwd kervin25
更改用户 kervin25 的密码 。         
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# chage -M 60 kervin25         改变kervin25用户密码有效期为60天
[root@localhost ~]# tail -5 /etc/shadow          查看末尾5行
postfix:!!:19046::::::
sshd:!!:19046::::::
tcpdump:!!:19046::::::
kervin24:$6$Gh97wz0PuTt2po5B$okFQpMNjwA1HYBeMpRQM6Dfx830jNq5rAeK.t4uW1yPZ2bCbqD7hrCT0vi4n9syT0KIieAAUe2nZCEY4SfN.V/::0:99999:7:::
kervin25:$6$Pk29zg3n$xA11jMiQipSiMVSlNyaitGB4oEB4Vbq.SFe5/Feo3AF/1Co8GiN10wRZ76BljNgVLp3aBVIhL25XBVmq0hH381:19058:0:60:7:::            

法二、设置密码有效期

 

创建用户的默认设置文件 /etc/login.defs,修改PASS_MAX_DAYS

系统安全及应用_第1张图片

法三、要求用户下次登录时修改密码

chage -d 0 用户

[root@localhost ~]# chage -d 0 kervin2   

系统安全及应用_第2张图片

 

1.1.3、命令历史

  • 减少记录的命令条数

  • 注销时自动清空命令历史

法一、减少记录的命令条数

主要是为了防止黑客从命令中找到含密码的记录

主要通过 /etc/Profile 文件 来修改

该文件是每个用户登录时,操作系统首先执行的文件,然后再将控制权交给用户主目录下的.profile文件

系统安全及应用_第3张图片

[root@localhost ~]# source /etc/profile    source用法->重新执行刚修改的初始化文件,使之生效 

法二、减少记录的命令条数

[root@localhost ~]# export HISTSIZE=200        将当前环境里的HISTSIZE改为200

 

注意:该命令只要当前登录用户或当前环境生效

法三、注销时自动清空命令历史

主要通过ls -a找到.bash.logout 文件来修改 (注:该文件为用户账号的初始配置文件,每次退出登录时执行)

[root@localhost ~]# vim .bash_logout 
history -c    -c为清空历史  
clear

系统安全及应用_第4张图片

 注:以后只要注销后,就可以清空历史命令,其他用户的.bash.logout文件位于/home下

1.1.4、终端自动注销

闲置600秒后自动注销

方法一、主要通过 /etc/Profile 文件 来修改

export TMOUT=600 表示闲置600秒后自动注销,export表示声明为全局变量

系统安全及应用_第5张图片

[root@localhost ~]# source /etc/profile    source用法->重新执行刚修改的初始化文件,使之生效 

方法二、

[root@localhost ~]# export TMOUT=200        闲置600秒后自动注销

注意:该命令只要当前登录用户或当前环境生效

1.2、用户切换与提权

1.2.1、su命令切换用户

用途及用法

用途:Substitute User,切换用户

格式:su - 目标用户 -等价于--login(带-表示使用目标用户的登录shell环境)

查看su操作记录

安全日志文件:/var/log/secure

缺点

用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码 对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分

解决方案:

法一、借助pam_wheel认证模块,只允许极个别的用户使用su命令进行切换

授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置,启用pam_wheel认证

[root@localhost ~]# gpasswd -a kervin24 wheel       添加授权用户kervin24
正在将用户“kervin24”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group           确认wheel组成员
wheel:x:10:kervin24
[root@localhost ~]# vi /etc/pam.d/su                

系统安全及应用_第6张图片

[root@localhost ~]# id kervin24
uid=1000(kervin24) gid=1000(kervin24) 组=1000(kervin24),10(wheel)

1.2.2、使用sudo机制提升权限

sudo命令的用途及用法

用途:以其他用户身份(如root)执行授权的命令

用法:sudo授权命令

配置sudo授权

visudo或者vi /etc/sudoers

[root@localhost ~]# visudo
配置sudo授权
visudo 或者 vim /etc/sudoers
记录格式:
用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。

示例:为普通用户提升权限,进行管理任务

系统安全及应用_第7张图片

1.3、PMA安全认证

su命令的安全隐患

默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;

为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。

什么是PAM?

PAM(Pluggable Authentication Modules)可插拔式认证模块

是一种高效而且灵活便利的用户级别的认证方式;

也是当前Linux服务器普遍使用的认证方式。

PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用

系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略

PAM认证原理

PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so;,

PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。

用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。

如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。

ls /etc/pam.d/ | grep su

PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。

你可能感兴趣的:(Linux,linux)