BMC pam认证的使用

1.说明

1.1 文档参考资料

  • https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_ADG.html
  • http://www.fifi.org/doc/libpam-doc/html/pam_appl-3.html
  • pdf文档: https://fossies.org/linux/Linux-PAM-docs/doc/adg/Linux-PAM_ADG.pdf
  • linux-pam 中文文档
  • pam 旧文
  • pam教程: https://thelinuxcode.com/linux_pam_tutorial/
  • redhat介绍pam: https://www.redhat.com/sysadmin/pluggable-authentication-modules-pam
  • http://uw714doc.sco.com/en/SEC_pam/pam-4.html
  • https://docs.freebsd.org/fr/articles/pam/#pam-sample-module
  • pam体系架构

1.2 代码实现参考

可以参考一份googleTFA实例代码: https://github.com/google/google-authenticator-libpam

1.3 pam架构

在这里插入图片描述

在这里插入图片描述

2.在ubuntu上测试2FA

实验机器版本:
在这里插入图片描述
使用验证App,名称为:authenticator(苹果手机):
在这里插入图片描述
在这里插入图片描述

2.1 编译与安装以及验证

下载代码:https://github.com/google/google-authenticator-libpam. 需要提前在linux主机上安装程序:

# sudo apt-get install autoconf automake libtool
# sudo apt install libpam0g-dev
# sudo apt install qrencode

接着安装代码:

# ./bootstrap.sh
# ./configure
# make
# sudo make install

编译安装完成后,打印信息如下:
在这里插入图片描述
安装完成之后,执行命令:

# google-authenticator

可以看到QR code:
在这里插入图片描述
在这里插入图片描述
修改文件:/etc/ssh/sshd_config内容:

ChallengeResponseAuthentication yes  //默认为no

修改文件:/etc/pam.d/sshd内容:

auth required pam_google_authenticator.so

重启启动ssh服务:

# sudo /etc/init.d/ssh restart

接着登录ssh,可以看到:
在这里插入图片描述

2.2 添加nullok参数验证

在以上配置的基础上,修改文件/etc/pam.d/sshd内容为:

...
auth required pam_google_authenticator.so nullok
...

重启ssh服务:

# sudo /etc/init.d/ssh restart

此时,登录仍然需要2FA密码.
在这里插入图片描述
看一下目录 ~/.google_authenticator文件,存在以下内容:

N6DXZP4C2LHUYQSGMSWSXKCI34
" RATE_LIMIT 3 30 1728267304
" WINDOW_SIZE 17
" DISALLOW_REUSE 57608909
" TOTP_AUTH
24389978
41946909
49420241
17552925
43255031

在这里插入图片描述
删除文件~/.google_authenticator:

# sudo rm ~/.google_authenticator

重启ssh服务。再次登录,可以看到不需要2FA了。
在这里插入图片描述
当然,作为对比,可以将nullok去掉,继续本节的测试,发现是没办法登录的。

3.基于SSH实现自己的SPI内容

根据pam体系架构SSH已然将API函数实现了。如果需要增加一个新的验证功能函数,只需要实现SPI部分。

参考测试源码: https://gitee.com/wit_yuan/wityuan_pamtest

编译代码:

# make

拷贝生成的库文件:

sudo cp libpam_wityuan.so /usr/lib/x86_64-linux-gnu/security/

在文件/etc/pam.d/sshd中添加:

...
auth required libpam_wityuan.so
...

重启SSH,然后登录SSH,可以看到如下测试效果:
在这里插入图片描述

3.BMC自定义使用PAM认证

BMC实现自己的PAM认证方法,可以采取如下步骤:

  • 1.建立so,定义SPI
  • 2.在目录/etc/pam.d/下创建service文件,例如mytfa
  • 3.使用如下结构使用pam认证
pam_start()
pam_set_item()
pam_get_item()
pam_authenticate();
pam_end();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis基础二(spring整合redis)

Springboot整合Redis 一、Springboot整合redis ​ redis可以通过使用java代码来实现 第一部分文档中 在终端操作redis的所有命令,Spring已经帮我们封装了所有的操作,所以变得很简单了。 ​ Spring专门提供了一个模块来进行这些操作的封装,这…

【Linux】详解Linux下的工具(内含yum指令和vim指令)

文章目录 前言1. Linux下软件安装的方式2. yum2.1 软件下载的小知识2.2 在自己的Linux系统下验证yum源的存在2.3 利用yum指令下载软件2.4 拓展yum源(针对于虚拟机用户) 3. vim编辑器3.1 vim是什么?3.2 如何打开vim3.2 vim各模式下的讲解3.2.1…

Oracle中ADD_MONTHS()函数详解

文章目录 前言一、ADD_MONTHS()的语法二、主要用途三、测试用例总结 前言 在Oracle数据库中,ADD_MONTHS()函数用于在日期中添加指定的月数。 一、ADD_MONTHS()的语法 ADD_MONTHS(date, n) 其中,date是一个日期值,n是一个整数值&#xff0c…

基于vue框架的大学生学业预警系统设计与实现53ify(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,公告信息,成绩信息,科目,学分信息,考勤信息,教师 开题报告内容 基于Vue框架的大学生学业预警系统设计与实现开题报告 一、研究背景与意义 随着高等教育的普及与深入,大学生群体规模日益扩大,其学业管理成…

百元头戴式耳机哪款口碑爆棚+质价比高?2024耳机最强推荐攻略!

在2024年的耳机市场中,百元头戴式耳机凭借其亲民的价格和出色的性能,成为了众多消费者的首选。随着技术的不断进步,这一价位段的耳机不仅在音质上有了显著提升,还在舒适度、降噪能力以及续航时间等方面表现出色。那百元头戴式耳机…

CAN XL协议标准在CANoe中的应用

众所周知,CAN通信技术在汽车领域中,有着非常广泛的应用。从1991年,第一代经典CAN在奔驰S级轿车中首次应用;到2011年,开始第二代CAN总线(即CAN FD)的开发;如今,ISO 11898-…

MyBatis 操作数据库入门

目录 前言 1.创建springboot⼯程 2.数据准备 3.配置Mybatis数据库连接信息 4.编写SQL语句,进行测试 前言 什么是MyBatis? MyBatis是⼀款优秀的 持久层 框架,⽤于简化JDBC的开发 Mybatis操作数据库的入门步骤: 1.创建springboot⼯程 2.数…

kwin- 插件加载绘制流程

1. 配置文件的作用具体是做什么的? 相当于用户强制设置了特效的开关,对于没有写在配置文件里的特效,会检测默认加载值,确定是否加载。写在了文件里的会根据返回的值,来加载特效。 2. 为什么配置文件没有写&#xff0c…

【自用】王道文件管理强化笔记

文章目录 操作系统引导:磁盘初始化文件打开过程角度1文件的打开过程角度2 内存映射的文件访问 操作系统引导: ①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机) ②)将磁盘的第一块–主引导记录读入内存&…

【Ubuntu】git

文章目录 1.配置SSH key2. 基础知识操作命令1分支branch 如果对git命令使用不熟悉,推荐一个非常棒的git在线练习工具 Learn Git Branching。 https://m.runoob.com/git/git-basic-operations.html 1.配置SSH key ssh-keygen -t rsa -C "YOUR EMAIL"完成…

markdown 中启用音频支持

markdown 中启用音频支持 markdown 默认不支持音频文件&#xff0c;我们通过 html 标签渲染 flask项目 其中音频文件放在 /static/audios/vad_example.wav markdown 内容如下&#xff1a; ## 音频播放器示例 <audio controls ><source src"vad_example.wav…

Flink源码剖析

写在前面 最近一段时间都没有更新博客了&#xff0c;原因有点离谱&#xff0c;在实现flink的两阶段提交的时候&#xff0c;每次执行自定义的notifyCheckpointComplete时候&#xff0c;好像就会停止消费数据&#xff0c;完成notifyComplete后再消费数据&#xff1b;基于上述原因…

力扣16~20题

题16&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 双指针法&#xff0c;和15题差不多&#xff0c;就是要排除了&#xff0c;如果total<target则排除了更小的&#xff08;left右移&#xff09;&#xff0c;如果total>target则排除了更大的&#xff08;rig…

kafka的成神秘籍(java)

kafka的成神秘籍 kafka的简介 ​ Kafka 最初是由Linkedin 即领英公司基于Scala和 Java语言开发的分布式消息发布-订阅系统&#xff0c;现已捐献给Apache软件基金会。Kafka 最被广为人知的是作为一个 消息队列(mq)系统存在&#xff0c;而事实上kafka已然成为一个流行的分布式流…

【mmengine】配置器(config)(进阶)继承与导出,命令行修改配置

一、配置文件的继承 1.1 继承机制概述 新建optimizer_cfg.py: optimizer dict(typeSGD, lr0.02, momentum0.9, weight_decay0.0001)新建runtime_cfg.py: device "cuda" gpu_ids [0, 1] batch_size 64 epochs 100 num_workers 8新建resnet50.py: _base_ […

Vue 路由设置

为了防止遗忘&#xff0c;记录一下用Vue写前端配置路由时的过程&#xff0c;方便后续再需要用到时回忆。 一、举个例子 假如需要实现这样的界面逻辑&#xff1a; 在HomePage中有一组选项卡按钮用于导航到子页面&#xff0c;而子页面Page1中有一个按钮&#xff0c;其响应事件是…

笔记-stm32移植ucos

文章目录 一、UCOS的基础知识1.1 前后台系统:1.2 RTOS系统可剥夺型内核:前后台系统和RTOS系统 1.3 UCOS系统简介学习方法 二、ucossii移植Step1&#xff1a;在工程中建立存放UCOSS代码的文件夹UCOSIIStep2:向CORE文件夹添加文件Step3:向Config文件夹添加文件Step4:向port文件夹…

LLM4Rec最新工作: 字节发布用于序列推荐的分层大模型HLLM

前几个月 Meta HSTU 点燃各大厂商对 LLM4Rec 的热情&#xff0c;一时间&#xff0c;探索推荐领域的 Scaling Law、实现推荐的 ChatGPT 时刻、取代传统推荐模型等一系列话题让人兴奋&#xff0c;然而理想有多丰满&#xff0c;现实就有多骨感&#xff0c;尚未有业界公开真正复刻 …

vscode中配置python虚拟环境

python虚拟环境作用 Python虚拟环境允许你为每个独立的项目创建一个隔离的环境&#xff0c;这样每个项目都可以拥有自己的一套Python安装包和依赖&#xff0c;不会互相影响。实际使用中&#xff0c;可以在vscode或pycharm中使用虚拟环境。 1.创建虚拟环境的方法&#xff1a; …

【NLP自然语言处理】01-基础学习路径简介

目的&#xff1a;让大家能够在 AI-NLP 领域由基础到入门具体安排&#xff1a; NLP介绍 文本预处理RNN 及其变体&#xff08;涉及案例&#xff09;Transformer 原理详解迁移学习 和 Bert 模型详解 &#xff08;涉及案例&#xff09;特点&#xff1a; 原理 实践每个文章会有练习…