Linux系统安全及应用

一.账号安全基本措施

1.系统账号清理

  • 将非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
  • 锁定长期不使用的账号
usermod -L 用户名

passwd -l 用户名

passwd -S 用户名
  • 删除无用的账号
userdel 【-r】用户名
  • 锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow

lsattr /etc/passwd /etc/shadow(锁定文件并查看状态)

chattr -i /etc/passwd /etc/shadow(解锁)

md5sum /etc/password 校验和

2.密码安全控制

chage命令

2.1.常用选项
-m 密码可更改的最小天数,为0时可代表任何时候
-M 密码保持有效的最大天数
-w 用户密码到期前,提前收到警告信息的天数
-E 账号到期的日期
-d 上一次更改的日期
-i 停滞时期 如果一个密码已过期这些天,那么此账号将不可用
-l 列出当前的设置 由非特权用户来确定他们的密码或账号何时过期
  • 设置密码有效期
  • 要求用户下次登录时修改密码
chage -M 天数  用户名 (针对已存在的用户,天数为 99999 表示为永不过期)

2.2.相关实操

vim /etc/login.defs  -->  PASS_MAX_DAYS 天数(针对新建的用户)
2.3.相关实操

chage -d 0 用户名(强制用户下一次登录修改密码)

3.命令历史限制

  • 减少记录的命令条数
  • 登录时自动情况命令历史
history(查看历史命令)

vim /etc/profile  -->  export HISTSIZE=XX  -->  source /etc/profile(限制历史命令数量)

history -c(临时清空历史命令)

vim /etc/profile  -->  > ~/.bash_history


3.1.相关实操


3.2.永久生效

4.终端自动注销

  • 闲置600秒后自动注销
vim /etc/profile  -->  export TMOUT=XX  -->  source /etc/profile(自动注销)
  • 开机永久清空历史命令

  • 设置每60秒清空一次历史命令

二.系统引导和登录控制

1.使用su命令切换用户

1.1.用途及用法

用途:Substitiute User,切换用户

格式:

su -目标用户

1.2.密码验证

root→任意用户,不验证密码

普通用户→其他用户,验证目标用户的密码

相关实操

1.3.限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组 
    gpasswd wheel -a 用户名
    
  • 启用pam_wheel认证模块
    vim /etc/pam.d/su -> 开启 auth   required   pam_wheel.so use_uid 的配置

相关实操

加入wheel组前

加入wheel组

加入wheel组后

1.4.ssh远程登录输入三次密码错误则锁定用户 

vim /etc/pam.d/sshd  
auth       required     pam_tally2.so  deny=3 unlock_time=600 even_deny_root root_unlock_time=600

相关实操

2.Linux中的PAM安全认证

2.1.su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(比如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

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

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

2.3.PAM认证原理

  • 一般遵循的顺序

service(服务)->PAM(配置文件)->pam_*.so

  • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块是不同的

2.4.PAM配置文件

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

用cat /etc/pam.d/system-auth

第一列代表PAM认证模块类型

auth:认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据

account:账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服

务,检查账户是否到期

password:密码模块接口,用于更改用户密码,以及强制使用强密码配置

session:会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效

第二列代表PAM控制标记

required:模块结果必须成功才能继续认证,如果在此处测试失败,则继续测试引用在该模块接口

的下一个模块,直到所有的模块测试完成,才将结果通知给用户。

requisite:模块结果必须成功才能继续认证,如果在此处测试失败,则会立即将失败结果通知给用

户。

sufficient:模块结果如果测试失败,将被忽略。如果sufficient模块测试成功,并且之前的required

模块没有发生故障,PAM会向应用程序返回通过的结果,不会再调用堆栈中其他模块。

optional:该模块返回的通过/失败结果被忽略。一般不用于验证,只是显示信息(通常用于

session 类型)。

include:与其他控制标志不同,include与模块结果的处理方式无关。该标志用于直接引用其他

第三列代表PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。同一个模块,可以出

现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的

模块类型编制了不同的执行函数。

第四列代表PAM模块的参数

这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开

查看某个程序是否支持PAM认证,可以用ls命令

示例:

查看su是否支持PAM模版认证

ls /etc/pam.d | grep su

相关实操

查看su的PAM配置文件

cat /etc/pam.d/su

 相关实操

3.使用sudo机制提升权限

3.1.使用sudo

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

相关实操

新用户不在wheel组

在wheel组的用户

3.2.配置sudo

vi  /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)

用户 主机名=命令程序列表    //可以使用通配符*全部,!取反符号
别名创建
  • User_Alias 大写别名=用户1,用户2,……
  • Host_Alias 大写别名=主机名1,主机名2,……
  • Cmnd_Alias 大写别名=程序1,程序2,……

相关实操

使用别名进行授权

#用户/组授权

用户名/用户别名 主机名/别名 =(用户)程序列表/别名

%组名 主机名 程序列表

用户名 主机名 = [(用户)NOPASSWD:] 程序列表

普通用户使用授权命令
mkdir ~/guazhai(通过wangwu用户在家目录下创建一个 guazhai的空文件)

sudo  mount /dev/sr0   ~/guazhai  //sudo(加配置的命令表中的命令,以root的身份去运行该授权命令)

提示:第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码

启用sudo操作日志

visudo

Defaults logfile = “/var/log/sudo”

su切换

将信任的普通用户加入到wheel组中    gpasswd -a 用户 wheel

修改su的PAM认证文件配置 

 /etc/pam.d/su 将2,6行注释取消

4.安全控制

4.1.开关机安全控制

调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、u盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码
GRUB限制(了解即可)
  • 使用grub-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00 header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

通常情况下在系统开机进入GRUB菜单时,按e可以查看并修改GRUB引导参数,这对服务器是一

个极大的威胁。可以为GRUB设置一个密码,只有提供正确的密码才能被允许修改参数

4.2.终端登录安全控制

  • 限制root只在安全终端登录
安全终端配置:/etc/securetty

  • 禁止普通用户登录
  1. 建议/etc/nologin文件
  2. 删除nologin文件或重启后即恢复正常
touch /etc/nologin(禁止普通用户登录)
rm -rf /etc/nologin(取消上述登录限制)

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 08:08:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 08:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 08:08:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 08:08:02       20 阅读

热门阅读

  1. 掌控基础设施,加速 DevOps 之旅:IaC 深度解析

    2024-04-23 08:08:02       12 阅读
  2. Web 常见十大漏洞原理及利用方式

    2024-04-23 08:08:02       15 阅读
  3. 2024年深圳杯&东三省数学建模联赛赛题浅析

    2024-04-23 08:08:02       16 阅读
  4. STM32 J-LINK

    2024-04-23 08:08:02       16 阅读
  5. 张量堆叠函数torch.stack()

    2024-04-23 08:08:02       10 阅读
  6. 资料总结分享:临床重要数据库

    2024-04-23 08:08:02       15 阅读