设为首页 收藏本站
查看: 1065|回复: 0

[经验分享] Linux-PAM & PAM-MySQL的总结

[复制链接]

尚未签到

发表于 2018-9-29 08:43:44 | 显示全部楼层 |阅读模式
  1、理论知识
  1.1、PAM模块
  1.1.1、PAM的介绍
  Pluggable Authentication Modules简称PAM,是一个微缩的可插入认证模块(PAM is an acronym for Pluggable Authentication Modules)
  1.1.2、PAM的结构
DSC0000.png

  1)模块层(PAM服务模块) - PAM结构最底层
  作用:为接口层提供用户鉴别等服务
-- 验证用户名、密码、账号是否过期等  
-- 完成账户管理、会话管理和口令管理等
  2)应用程序接口层(PAM API) - PAM结构中间层
  作用:
-- 向上屏蔽用户鉴别等过程的细节  
-- 向下调用模块层的具体模块提供特定的服务
  接口分类:
  接口与模块相对应类型(调用下层特定接口):
-- 鉴别类接口  
-- pam_authenticate() 鉴别用户
  
-- pam_setcred() 修改用户密码信息
  
-- 账号类接口
  
-- pam_acct_mgmt() 鉴别用户账号是否有权限登录以及账号是否过期
  
-- 会话类接口
  
-- pam_open_session()
  
-- pam_close_session()
  
-- 口令类接口
  
-- pam_chauthok()
  接口与模块不相对应(对底层模块提供支持以及实现应用程序与模块的通讯):
-- 管理性接口  
-- pam_start() 标记PAM事务开始
  
-- pam_end() 标记PAM事务结束
  
-- pam_get_item() 获取PAM事务状态信息
  
-- pam_set_item() 设置PAM事务状态信息
  
-- pam_str() 输出PAM事务错误信息
  
-- 应用程序与模块间通讯接口
  
-- pam_start() 应用程序初始化可调用此函数存放用户名之类的信息到PAM接口层
  
-- pam_putenv() 向应用程序传递特定的环境变量
  
-- pam_getenv() 获取应用程序环境变量
  
-- pam_getenvlist() 获取应用程序环境变量
  
-- 用户与模块间的通讯接口
  
-- pam_start()函数可通过会话式回调函数,让底层模块通过他读写模块相关的鉴别信息
  
-- 模块间通讯接口
  
-- 相互独立的模块可通过调用 pam_get_item()与pam_set_item()共享某些与鉴别会话有关的公共信息。
  
-- 读写模块状态信息接口
  
-- 接口pam_get_data()和pam_set_data()用于按照PAM句柄要求获取和设置特定的模块信息。
3)应用程序层 - PAM结构最上层  
灵活调用中间层的各种鉴别功能接口
  1.1.3、PAM验证文件配置目录
ls /etc/pam.d/  显示如下:
chfn                 newrole           runuser            ssh-keycat  
chsh                 other             runuser-l          su
  
config-util          passwd            smartcard-auth     sudo
  
crond                password-auth     smartcard-auth-ac  sudo-i
  
fingerprint-auth     password-auth-ac  smtp               su-l
  
fingerprint-auth-ac  remote            smtp.postfix       system-auth
  
login                run_init          sshd               system-auth-ac
  如上所示,其中sshd是sshd服务的验证文件(定义验证规则,服务找不到相应的验证文件则会与other匹配)
  1.1.4、验证文件的语法
  1)PAM的格式
  vim编辑/etc/pam.d/sshd
  配置文件如下:
#%PAM-1.0  
auth       required     pam_sepermit.so
  
auth       include      password-auth
  
account    required     pam_nologin.so
  
account    include      password-auth
  
password   include      password-auth
  
# pam_selinux.so close should be the first session rule
  
session    required     pam_selinux.so close
  
session    required     pam_loginuid.so
  
# pam_selinux.so open should only be followed by sessions to be executed in the user context
  
session    required     pam_selinux.so open env_params
  
session    optional     pam_keyinit.so force revoke
  
session    include      password-auth
  由以上可知PAM验证文件格式分为四列:
module_type   control_flag   module_path   module_optional  2)module-type(模块类型)
-- auth(验证模块) - 用于验证用户或设置/销毁凭证  
-- account(账户管理模块) - 执行访问、账户及凭证有效期、密码限制/规则等操作
  
-- session(会话管理模块) - 初始化或终止会话
  
-- passwd(密码模块) - 执行密码更改或更新操作
  3)control-flag(控制标记)
-- required - 模块须有返值才通过验证,成功继续下一模块;失败需待同一stack中所有模块执行完才返值到应用程序  
-- requisite - 模块须有返值才通过验证,成功继续下一模块;失败将不再执行同一stack内任何模块而返值给应用程序
  
-- sufficient - 模块返成功值则通过验证,成功则停止执行;失败值可忽略,继续执行下一模块
  
-- optional - 模块可选,模块返值对认证不起关键作用,无论成败都继续执行下一模块,返值一般被忽略
  
-- include -
  4)module-path(模块路径)
  模块的位置查找
find / -name pam_sepermit.so  显示如下:
/lib64/security/pam_sepermit.so  如上所示:
  模块位于“/lib64/security/”目录下(可只写模块名称,32位系统位置不同)
  5)module-optional(模块选项,可选)
  常见公用选项如下:
-- debug - 该模块调用syslog()将调试信息写入系统日志  
-- no_warn - 该模块不向应用程序发送警告信息
  
-- use_first_pass - 使用同一stack首次获取的密码(不向用户提示)
  
-- try_first_pass - 尝试使用同一stack首次获取的密码(不通过则向用户提示)
  
-- use_mapped_pass - 使用映射过的密码(不向用户提示)
  
-- expose_account - 允许该模块显示用户账号等信息
  1.2、PAM-MySQL的介绍
  ----------------------------------------------------------------------
  参阅资料:
  Linux-PAM的简介:
  http://drops.wooyun.org/tips/1288
  http://www.iyunv.com/os/201303/198419.html
  http://os.51cto.com/art/200510/9034.htm
  http://my.oschina.net/lionel45/blog/110512
  动态链接库的概念:
  http://www.cnblogs.com/TianFang/archive/2013/01/19/2867296.html
  pam-mysql官网:
  http://pam-mysql.sourceforge.net/
  yum源:
  https://fedoraproject.org/wiki/EPEL



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603538-1-1.html 上篇帖子: MySQL主从失败 错误Got fatal error 1236 下篇帖子: ubuntu下安装mysql 报错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表