Linux系统安全与应用(一)——账号安全与控制与PAM认证模块

  • 一、账号安全控制
    • 1、系统账号清理
    • 2、密码安全控制
      • ①、设置密码有效期
      • ②、要求用户下次登陆时更改密码
    • 3、命令历史限制
    • 4、终端自动注销
    • 5、切换用户:su
      • ①、用途及用法
      • ②、密码验证
      • ③、限制使用su命令切换用户
  • 二、Linux中的PAM安全认证
    • 1、su命令的安全隐患
    • 2、PAM可插拔式认证模块
    • 3、PAM认证原理
    • 4、每一列的名称解释
    • 5、控制标记的补充说明
    • 6、PAM安全认证流程

一、账号安全控制

1、系统账号清理

将非登录用户的shell设为不可登陆 usermod -s /sbin/nologin 用户名 禁止用户登录
usermod -s /bin/false 用户名 禁止用户登录
锁定长期不使用的账号 usermod -L 用户名 锁定用户账户
passwd -l 用户名 锁定用户账户
删除无用的账号 userdel [-r] 用户名
锁定账号文件 chattr +i /etc/passwd /etc/shadow 锁定账号文件
lsattr /etc/passwd /etc/shadow 查看账号文件
chattr -i /etc/passwd /etc/shadow 解锁账号文件

2、密码安全控制

①、设置密码有效期




②、要求用户下次登陆时更改密码


3、命令历史限制

  • 减少记录的命令条数
  • 登录时自动清空命令历史


4、终端自动注销

5、切换用户:su

①、用途及用法

②、密码验证

  • root→任意用户,不验证密码
  • 普通用户→其他用户,验证目标用户的密码

③、限制使用su命令切换用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块



二、Linux中的PAM安全认证

1、su命令的安全隐患

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

2、PAM可插拔式认证模块

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

3、PAM认证原理

  • 一般遵循的规律

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

4、每一列的名称解释

第一列代表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、控制标记的补充说明

  • required
    表示该行以及所涉及模块的成功是用户通过鉴别的【必要条件】。换句话说,只有当对应于应用程序的所有带required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。
    反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。
  • requisite
    与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也公立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。
  • sufficient
    表示该行以及所涉及模块验证成功是用户通过鉴别的【充分条件】。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不公导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。
  • optional
    他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。

6、PAM安全认证流程

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

Linux系统安全与应用(一)——账号安全与控制与PAM认证模块相关推荐

  1. linux的超级管理用户目录是,Linux系统中的root超级权限的控制

    Linux系统中的root超级权限的控制 超级用户是系统最高权限的拥有者,是系统管理唯一的胜任者:由于权限的超级并且达到无所不能的地步,如果管理不擅,必会对系统安全造成威胁. 除了尽可能的避免用直接用 ...

  2. linux pam 使用例子,PAM认证模块使用实例

    PAM认证模块使用实例 概述:本文给出几个通过自定义配置PAM提高网络服务安全性的例子,希望对试图进一步了解PAM的朋友起到抛砖引玉的作用. 源贴:http://blog.163.com/zhzh_l ...

  3. Linux 私房菜————Linux系统基本操作命令(十)|引导程序|服务控制

    引导程序和服务控制 一.Linux操作系统引导过程总览 1.开机自检 2.MBR引导 3.GRUB 菜单 4.加载内核 5.init进程初始化 二.Linux系统初始化进程 1.init进程 2.Sy ...

  4. 系统安全及应用(账户安全控制,系统引导和登录,弱口令检测和登录控制,PAM认证,端口扫描,用户切换和提权)

    文章目录 系统安全及应用 账户安全控制 基本安全措施 chattr--锁定账号配置文件 密码安全控制( chage) 要求用户下次登录时修改密码 命令历史,自动注销 注销时自动清空命令历史: bash ...

  5. Linux系统编程--2(环境变量,进程控制)

    环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...

  6. Linux系统编程36:多线程之线程控制之pthread线程库(线程创建,终止,等待和分离)

    文章目录 (1)POSIX线程库 (2)pthread_create--创建线程 A:关于Linux线程的再理解 B:线程ID及地址空间布局 (3)pthread_exit--线程终止 (4)pthr ...

  7. Linux系统编程四:串口编程,控制LED和蜂鸣器

    目录 一.概述 二.串口初始化 2.1 读取当前串口的参数 参数结构体 2.2 波特率相关的函数 2.3 清空串口缓存 2.4 设置串口参数 三.串口通信 四.控制LED和蜂鸣器 五.总结 一.概述 ...

  8. Linux 系统和安全

    文章目录 1.前言 2.账号安全与控制 2.1 将非登录用户的 Shell 设为 /sbin/nologin 2.2 锁定长期不使用的账号 2.3 删除无用账号 2.4 锁定账号文件 passwd.s ...

  9. Linux系统账号安全

    系统安全 文章目录 系统安全 账号安全控制 账号安全基本措施 系统账号清理 密码安全控制 命令历史限制 终端自动注销 su命令切换用户 Linux中的PAM安全认证 su命令的安全隐患 PAM可插拔式 ...

最新文章

  1. Netty 框架学习(二):DelimiterBasedFrameDecoder和FixedLengthFrameDecoder
  2. Appium移动自动化测试(一)--安装Appium(转)
  3. MYSQL必知必会学习笔记(二)
  4. mockito mock void方法_使用 Junit + Mockito 实践单元测试!
  5. python的逆袭之路_Python领域最伟大工程师Kenneth Reitz的逆袭之路
  6. FlashFXP使用教程
  7. Activity 模版样式简介
  8. mysql高效索引覆盖索引_MySQL高效索引:覆盖索引
  9. 工程模式写入imei_开发初期IMEI号的写入
  10. linux终端无法输入大写字母,linux不能打大写字母
  11. 从未在一起更让人遗憾_我们从未在一起更遗憾
  12. qlikview中日期问题的两个小结
  13. 夏季 肝病患者养生保健重点在哪 请详解
  14. 1.3 飞桨开源深度学习平台介绍
  15. oracle数据库硬恢复,oracle数据库恢复
  16. 生成服务器证书 启用HTTPS 生成自签名证书
  17. 【技术分享】迅为i.MX6ULL开发板-Uboot-Logo修改方法
  18. 地图集web项目_技术学习(二)_bootstrap分页的例子
  19. 怎么屏蔽还有照片_华为手机中老是出现不明照片?这些功能一定要注意,尽量将其关闭...
  20. 天鹅是白天的月亮(转)

热门文章

  1. 喜马拉雅贺雯迪:基于端到端TTS实现更具生动、富有情感的语音合成表现
  2. LiveVideoStackCon深圳-透过业务看QoE
  3. c++实现单例类(懒汉与饿汉)
  4. 《视频直播技术详解》系列之二:采集
  5. Upsync:微博开源基于Nginx容器动态流量管理方案
  6. 【HTTP】另类的POST头数据 RFC1867协议格式简析
  7. Linux深入学习专业书
  8. Vmware Ubuntu 自适应屏幕 进入全屏模式
  9. Vue003_class 与style 绑定
  10. 手绘风格的数据可视化 (萌萌风)Sketchify,及其他可视化工具(商业风)