Linux系统安全与应用

Posted Richard_Chiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统安全与应用相关的知识,希望对你有一定的参考价值。

Linux系统安全与应用(一)

壹、账号安全控制

1、系统安全清理

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

    usermod -s /sbin/nologin 用户名
  • 锁定长期不使用的账号

    usermod -L 用户名
    passwd -l 用户名
    passwd -S 用户名
    usermod -U 用户名#解锁账号
    passwd -u 用户名 #解锁账号
  • 删除无用的账号

    userdel [-r] 用户名
  • 锁定账号文件passwd、 shadow

    chattr +i /etc/passwd /etc/shadow #锁定账号文件
    lsattr /etc/passwd /etc/shadow    #锁定文件并查看状态
    chattr -i /etc/passwd /etc/shadow #解锁文件

2、登录码安全控制

  • 设置有效期
  • 要求用户下次登陆时修改登录码
[root@localhost~]#vi /etc/login.defs #修改登录码配置文件,适用于新建用户
PASS_MAX_DAYS 天数
[root@localhost~]#chage -M 30 lisi   #适用于已有用户
[root@localhost~]#cat /etc/shadow | grep lisi
[root@localhost~]#chage -d 0 用户名 #强制下次登录时修改登录码

3、命令历史限制

  • 减少记录的命令条数(默认为1000条
  • 登陆时自动清空命令历史
[root@localhost~]#history -c          #临时清空历史记录
[root@localhost~]#vi /etc/profile
export HISTSIZE=200                   #export设置环境变量全局有效            
[root@localhost~]#source /etc/profile #重新加载配置文件
或
[root@localhost~]#. /etc/profile      #重新加载配置文件
—————————————————————————————————————————————————————————————
[root@localhost~]#vim ~/.bashrc       #清空命令历史
[root@localhost~]history              #查看记录的命令历史的条目
[root@localhost~]#vim .bash_history   #查看命令历史的记录

4、终端自动注销

  • 闲置600秒后自动注销
[root@localhost~]#vi /etc/profile
......
export TMOUT=600                      #闲置600秒后自动注销,export设置环境变量全局有效
[root@localhost~]#source /etc/profile #重新加载配置文件
[root@localhost~]#echo $TMOUT         #帮助输出变量的值

贰、使用su命令切换用户

1、用途及用法

  • 用途:Substitute User,切换用户

  • 格式

    su - 目标用户

2、登录码验证

[nanjing@localhost~]$su - root #带“-”选项表示将使用目标用户的登录Shell环境
口令:
[root@localhost~]#whoami       #查看当前用户名
root

3、限制使用su命令的用户

  • 允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块
[root@localhost~]#gpasswd -a 用户 wheel #将允许使用su命令的用户加入wheel组
[root@localhost~]#vim /etc/pam.d/su    #启用pam_wheel认证模块
1 #%PAM-1.0
2 auth   sufficient pam_rootok.so
..........
6 auth   required pam_wheel.so use_uid
..........
[root@localhost~]#whoami               #查看当前用户名

总结:

  1. 以上两行是默认状态(即开启第二行,注释第六行),这种状态下是允许所有用户间使用su命令进行切换的
  2. 两行都注释也是运行所有用户都能使用su命令但root下使用su切换到其他普通用户需要输入登录码:如果第二行不注释, 则root使用su切换普通用户就不需要输入登录码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入登录码)
  3. 如果开启第六行,表示只有root用户和wheel组内的用户才可以使用su命令
  4. 如果注释第二行,开启第六行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
[root@localhost~]#gpasswd -a nanjing wheel#添加授权用户nanjing到wheel组中
[root@localhost~]#groups beijing          #添加授权beijing到wheel组中
[root@localhost~]#vim /etc/pam.d/su
auth required pam_wheel.so use_uid        #去掉此行前的注释
#启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令

4、查看su操作记录

  • 安全日志文件:/var/log/secure
[root@localhost~]#vim /var/log/secure #查看su切换用户的操作记录

叁、Linux中的PAM安全认证

1、su命令的安全隐患

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

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

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

小结:

Linux--PAM,是Linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
PAM使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的登录码,这就是su命令通过调用PAM模块实现的。

3、PAM认证原理

  • PAM认证一般遵循的顺序

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

4、PAM认证的构成

  • 查看某个程序是否支持PAM认证,可用ls命令
    • 示例:查看su是否支持PAM模块认证
[root@localhost~]#ls /etc/pam.d | grep su #查看su是否支持PAM模块认证 
  • 查看su的PAM配置文件: cat /etc/pam.d/su
    • 每一行都是一个独立的认证过程
    • 每一行可以区分为三个字段
    • 认证模块类型
    • 控制类型
    • PAM模块及其参数

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

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

auth:对用户身份进行识别,如提示输入登录码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等
password:使用用户信息来更新数据,如修改用户登录码。
session定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记

required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值
optional:不进行成功与否的返回,一般不用于验证只是显示信息(通常用于session 类型)。
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam. d/system- auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项

第三列代表PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数

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

5、PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果
  1. required验证失败时仍然继续,但返回Fail
  2. requisite验证失败则立即结束整个验证过程,返回Fail
  3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息(通常用于session类型)

PAM实例:

用户1 用户2 用户3 用户4
auth required 模块1 pass fail pass pass
auth sufficient 模块2 pass pass fail pass
auth required 模块3 pass pass pass fail
结果 pass fail pass pass

以上是关于Linux系统安全与应用的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统安全----账号安全

Linux系统安全及应用

Linux的系统的安全如何保障?保护Linux系统安全的九个常用方法

2018-2019-1 20165320 《信息安全系统设计基础》 缓冲区溢出漏洞实验

2017-2018-1 《信息安全系统设计基础》实验五 通信协议设计

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段