2019/03/13 -PAM模块安全

本文深入解析PAM(Pluggable Authentication Modules)的概念及其在身份验证中的应用。PAM作为统一的认证框架,允许应用程序调用统一的API进行认证,简化了开发流程并增强了系统的安全性。文章还介绍了PAM的四种模块类型:auth、account、password和session,并探讨了它们如何在不同的场景下工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
PAM 可插入的验证模块 Pluggable可插拔的 Authentication 身份验证 Modules模块
ssh telnet sftp 都需要经过验证,早期是各自的服务经过自己的验证,这个验证模块只能在ssh服务中使用,其他的不能使用
API应用程序访问接口,当应用程序需要这个功能就针对这个API开发
各自软件的开发者就关注自己的服务,也不用花大量时间验证了,
pam本身不提供服务,认证功能的开发是针对pam架构开发的

在这里插入图片描述
在这里插入图片描述
SPI开发认证模块的时候调用的接口(相当于卖家)
API表示应用程序要使用认证的接口(相当于买家)
PAM相当于中间平台

在这里插入图片描述
系统管理员就负责配置文件就可以了
在这里插入图片描述
在这里插入图片描述
这些文件具体实现了服务模块在这里插入图片描述
只有上班时间链接ssh服务,下班不让链接,就可以设置pam_time模块
在这里插入图片描述
在这里插入图片描述
不是所有模块都有配置文件,有些模块比较简单就没有配置文件
在这里插入图片描述每个应用程序要调用模块,怎么去调用,有一个配置文件,但是一般都每个模块提供一个配置文件就跟/etc/sudoers.d/alice…一样,不然放在一个容易混乱
在这里插入图片描述
定义了一些调用应用程序的规则,这些规则定义了怎么去调用服务模块在这里插入图片描述
在这里插入图片描述
一个用户sshd访问的时候,/usr/sbin/sshd就回去看/etc/pam.d的配置文件sshd,根据文件里面定义的内容,来决定使用什么模块
有PAM官方文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
passwd对应的配置文件
在这里插入图片描述
里面定义的规则
在这里插入图片描述
调用的模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般用这个配置文件,目录下面可以针对单个服务创建配置文件
在这里插入图片描述
模块type四种类型
在这里插入图片描述
auth负责账号的验证
account验证账号是否合法(张三用户规定什么时候访问,但是不在这个时间段访问就是不合法,也可以控制终端
passswd负责检查账号密码复杂性
session会话,做一些额外的操作
-号代表有没有也无所谓

在这里插入图片描述
account验证账号有效性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有三个auth就等于有三轮面试
在这里插入图片描述
哪路面试一票否决,那轮面试一票肯定,就要看required字,如果是required,就是一票否决
这一轮如果失败就是一票否决

在这里插入图片描述
在这里插入图片描述
required否决了还会继续后面的type类型检查,requisite一票否决并且后面的type类型检查也不做了
在这里插入图片描述
在这里插入图片描述
直接成功,后续的type类型不查了
在这里插入图片描述
在这里插入图片描述
起到陪衬作用,仅做参考
在这里插入图片描述
调用其他的模块

在这里插入图片描述
在这里插入图片描述
复杂情况,在什么样的状态下就采取什么样的行为
done=一票通过制
bad一票否决
一般都是用简单语法

在这里插入图片描述
写完立即生效类似hosts.allow,也可能导致配置错了,全部连接不了,建议开一个终端不要断
在这里插入图片描述
模块的文档
在这里插入图片描述
在这里插入图片描述
下载文档看在这里插入图片描述
在这里插入图片描述
过滤一下系统中是否有程序调用这个模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加上这个模块就必须用户登录用的shell类型必须是/etc/shell里面的
在这里插入图片描述
如果su用这个模块就代表必须要/etc/shell这个文件里面必须有的shell才能登录
在这里插入图片描述
修改tom用户shell类型为csh
在这里插入图片描述
再把/etc/shell里的csh删除
在这里插入图片描述
shell类型不存在所以无法登录了
在这里插入图片描述
改回去就能登录了
在这里插入图片描述
把bash删除
在这里插入图片描述
root有一票肯定就不受影响在这里插入图片描述
在这里插入图片描述
修改shel,就又可以登录了

在这里插入图片描述
登录成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
**
sudo
visudo
lastb失败登录信息
aide aide软件包提供的工具
tcpdmatch 自制工具 测试hosts.allow策略的**
ssh配置,端口转发,两个选项比较重要 L D
ssh服务的各种配置文件格式,选项,比如限制用户登录的超限时长,最大并发链接数多少
ssh之后又dropbear编译安装
aide 检查数据完整性是否修改
sudo 授权用户登录
tcp_wrapper hosts.allow hosts.deny
PAM

这些命令用于查看和检查系统的配置和日志文件。以下是每个命令的简要说明: 1. `cat /etc/pam.d/system-auth`: 显示 `/etc/pam.d/system-auth` 文件的内容,该文件用于管理系统级身份验证和授权。 2. `cat /etc/pam.d/sshd`: 显示 `/etc/pam.d/sshd` 文件的内容,该文件用于管理 SSH 服务的身份验证和授权。 3. `cat /etc/profile`: 显示 `/etc/profile` 文件的内容,该文件是一个全局配置文件,用于设置用户环境变量和执行系统级别的脚本。 4. `cat /etc/passwd`: 显示 `/etc/passwd` 文件的内容,该文件包含了系统中所有用户的基本信息,但不包含密码。 5. `cat /etc/shadow`: 显示 `/etc/shadow` 文件的内容,该文件包含了系统中用户的加密密码。 6. `cat /etc/group`: 显示 `/etc/group` 文件的内容,该文件包含了系统中用户组的信息。 7. `cat /etc/hosts.equiv`: 显示 `/etc/hosts.equiv` 文件的内容,该文件用于定义可信任主机列表,允许这些主机使用 rsh 或 rlogin 进行远程登录。 8. `cat /etc/hosts.rhosts`: 显示 `/etc/hosts.rhosts` 文件的内容,该文件用于定义远程主机和用户之间的信任关系。 9. `ps aux | grep telnet`: 列出所有正在运行的进程,并过滤出包含 "telnet" 关键字的进程。 10. `ps aux | grep rlogin`: 列出所有正在运行的进程,并过滤出包含 "rlogin" 关键字的进程。 11. `ps aux | grep ftp`: 列出所有正在运行的进程,并过滤出包含 "ftp" 关键字的进程。 12. `cat /etc/ssh/sshd_config`: 显示 `/etc/ssh/sshd_config` 文件的内容,该文件包含了 SSH 服务器的配置选项。 13. `umask`: 显示当前用户的默认文件权限掩码。 14. `ls -l /etc/passwd`: 显示 `/etc/passwd` 文件的详细信息,包括权限、所有者和修改时间等。 15. `ls -l /etc/group`: 显示 `/etc/group` 文件的详细信息,包括权限、所有者和修改时间等。 16. `ls -l /etc/shadow`: 显示 `/etc/shadow` 文件的详细信息,包括权限、所有者和修改时间等。 17. `ls -l /etc/xinetd.conf`: 显示 `/etc/xinetd.conf` 文件的详细信息,该文件是 xinetd 服务的配置文件。 18. `ls -l /etc/sudoers`: 显示 `/etc/sudoers` 文件的详细信息,该文件用于配置 sudo 命令的权限。 19. `ls -l /etc/httpd.conf`: 显示 `/etc/httpd.conf` 或 `/etc/apache2/apache2.conf` 文件的详细信息,这些文件是 Apache HTTP 服务器的配置文件。 20. `ls -l /etc/httpd-mpm.conf`: 显示 `/etc/httpd-mpm.conf` 文件的详细信息,该文件定义了 Apache MPM(多处理模块)的配置选项。 21. `ls -l /etc/conf/tomcat-users.xml`: 显示 `/etc/conf/tomcat-users.xml` 文件的详细信息,该文件包含了 Tomcat 服务器的用户配置。 22. `ls -l /etc/conf/web.xml`: 显示 `/etc/conf/web.xml` 文件的详细信息,该文件是 Java Web 应用程序的配置文件。 23. `ls -l /etc/conf/server.xml`: 显示 `/etc/conf/server.xml` 文件的详细信息,该文件是 Tomcat 服务器的主配置文件。 24. `ls -l /etc/my.cnf`: 显示 `/etc/my.cnf` 或 `/etc/mysql/my.cnf` 文件的详细信息,这些文件是 MySQL 数据库服务器的配置文件。 25. `ls -l /var/mysqllog/logbin.log`: 显示 `/var/mysqllog/logbin.log` 文件的详细信息,该文件是 MySQL 数据库二进制日志的位置。 26. `ps aux | grep syslogd`: 列出所有正在运行的进程,并过滤出包含 "syslogd" 关键字的进程。 27. `ps aux | grep rsyslogd`: 列出所有正在运行的进程,并过滤出包含 "rsyslogd" 关键字的进程。 28. `service syslog status`: 显示 syslog 服务的状态。 29. `service rsyslog status`: 显示 rsyslog 服务的状态。 30. `ps aux | grep audit`: 列出所有正在运行的进程,并过滤出包含 "audit" 关键字的进程。 31. `service auditd status`: 显示 auditd 服务的状态。 32. `ps aux | grep ssh`: 列出所有正在运行的进程,并过滤出包含 "ssh" 关键字的进程。 33. `ls -l /var/log/messages`: 显示 `/var/log/messages` 文件的详细信息,该文件包含了系统的一般日志消息。 34. `ls -l /var/log/secure`: 显示 `/var/log/secure` 文件的详细信息,该文件包含了安全相关的日志消息。 35. `ls -l /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的详细信息,该文件包含了审计日志。 36. `tail -20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 37. `tail -20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 38. `tail -n 20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 39. `tail -n 20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 40. `cat /etc/logrotate.conf`: 显示 `/etc/logrotate.conf` 文件的内容,该文件用于配置日志文件的轮转。 41. `cat /etc/rsyslog.conf`: 显示 `/etc/rsyslog.conf` 文件的内容,该文件是 rsyslog 服务的配置文件。 42. `auditctl -s`: 显示当前系统上启用的审计规则。 43. `auditctl -l`: 列出当前系统上的所有审计规则。 44. `lsof -i:21`: 列出所有正在使用端口 21(FTP)的进程和文件。 45. `lsof -i:22`: 列出所有正在使用端口 22(SSH)的进程和文件。 46. `lsof -i:23`: 列出所有正在使用端口 23(Telnet)的进程和文件。 请注意,某些命令可能需要管理员权限才能运行,且需要小心处理敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值