关于Linux PAM模块下的pam_listfile
讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。
下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳到下面的示例环节,看如何使用的,直接参考就行了。
名称
pam_listfile - 基于任意文件允许或拒绝服务
概要
pam_listfile.so item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [apply=[user|@group]] [quiet]
描述
pam_listfile 是一个 PAM(可插拔认证模块)模块,它提供了一种基于任意文件来允许或拒绝服务的方法。
该模块会根据指定的类型获取项目:
user:指定用户名,对应 PAM_USER;tty:指定请求所经过的终端名称,对应 PAM_TTY;rhost:指定发起请求的远程主机名称(如果有),对应 PAM_RHOST;ruser:指定发起请求的远程用户名(如果可用),对应 PAM_RUSER;group:指定用户所属的组;shell:指定用户的登录 shell。
然后在 file=filename 中查找该项目。filename 文件中每行列出一个项目。如果找到了该项目,则根据 sense 参数决定操作:
- 如果
sense=allow,则返回PAM_SUCCESS,使授权请求成功; - 如果
sense=deny,则返回PAM_AUTH_ERR,使授权请求失败。
如果遇到错误(例如,文件不存在或参数构造不良),则根据 onerr 参数决定处理方式:
- 如果
onerr=succeed,则返回PAM_SUCCESS; - 如果
onerr=fail,则返回PAM_AUTH_ERR或PAM_SERVICE_ERR(视情况而定)。
额外的参数 apply= 可以用来限制上述规则的应用范围,仅对特定用户 (apply=username) 或特定组 (apply=@groupname) 生效。此限制仅在使用 tty、rhost 和 shell 项目时有意义。
除了最后一个参数外,所有参数都应该是明确指定的;不要依赖任何默认行为。
此模块不会授予任何凭据。
选项
-
item=[tty|user|rhost|ruser|group|shell]要在文件中列出并检查的项目。 -
sense=[allow|deny]如果在文件中找到项目时应采取的操作;如果未找到项目,则执行相反的操作。 -
file=/path/filename包含每个项目一行的文件。文件需要是普通文件,并且不能是世界可写的。 -
onerr=[succeed|fail]如果发生异常情况(如无法打开文件)时应采取的操作。 -
apply=[user|@group]限制应用规则的用户类别。对于item=[user|ruser|group],这没有意义,但对于item=[tty|rhost|shell],它有意义。 -
quiet不将服务拒绝或缺少列表文件视为需要记录的错误。
提供的模块类型
提供所有模块类型(auth, account, password 和 session)。
返回值
-
PAM_AUTH_ERR认证失败。 -
PAM_BUF_ERR内存缓冲区错误。 -
PAM_IGNORE规则不适用于apply选项。 -
PAM_SERVICE_ERR服务模块中的错误。 -
PAM_SUCCESS成功。
示例-vsftpd黑名单:禁止某些用户访问ftp服务
# 拒绝 /etc/ftpusers 文件中列出的用户访问 ftp 服务
auth required pam_listfile.so \onerr=succeed item=user sense=deny file=/etc/vsftpd/ftpusers
注意,/etc/vsftpd/ftpusers 文件中列出的用户不允许访问 vsftp 服务。
示例-login白名单:只允许某些用户可以console登录用户
在 /etc/pam.d/login 中使用如下条目:
# 允许 /etc/loginusers 文件中列出的用户登录
auth required pam_listfile.so \onerr=fail item=user sense=allow file=/etc/loginusers
在这个例子中,所有被允许使用登录服务的用户都应该列在 /etc/loginusers 文件中。除非你明确尝试锁定 root 用户,否则确保将 root 列入 /etc/loginusers 文件,或者列出能够切换到 root 账户的用户。
示例-sshd黑名单:不允许某些用户通过ssh登录
前提:当前sshd配置了UsePAM yes。
在 /etc/pam.d/sshd中使用如下条目:
#%PAM-1.0
auth required pam_sepermit.soauth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshd.deny onerr=succeed
auth include password-auth
该文件禁止访问ssh的黑名单列表:/etc/ssh/sshd.deny
在/var/log/secure日志文件中会记录相关日志(如下是在auth和session模块分别实验的日志记录,都有效!):
pam_listfile(sshd_bak:session): Refused user user1 for service sshd
pam_listfile(sshd_bak:auth): Refused user user1 for service sshd
示例-su目标用户白名单:只允许su到某些用户
在 /etc/pam.d/sshd中使用如下条目:
auth required pam_wheel.so use_uid group=groupa
auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-groupa-access
该文件允许su切的白名单列表:/etc/security/su-groupa-access
如果文件中添加root,则只允许su切到root,如果su切到其他用户(包含本用户)也是不被允许的。
相关文章:
关于Linux PAM模块下的pam_listfile
讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳…...
OKHttp调用第三方接口,响应转string报错okhttp3.internal.http.RealResponseBody@4a3d0218
原因分析 通过OkHttp请求网络,结果请求下来的数据一直无法解析并且报错,因解析时String res response.body().toString() 将toString改为string即可!...
弱电与电力工程领域,如何通过工程项目管理软件提升效率
在弱电与电力工程领域,通过益企工程云等工程项目管理软件提升效率的方法主要体现在以下几个方面: 1.智能化管理 自动化流程:益企工程云通过自动化处理日常任务和流程,减少手动操作,提高工作效率。 智能预警ÿ…...
引领实时数据分析新时代:阿里云实时数仓 Hologres
在数字化和智能化转型的浪潮中,数据已成为企业决策和运营优化的重要资产。传统的数据仓库解决方案虽然在一定程度上能够帮助企业管理数据,但随着业务需求的不断变化,实时数据处理和高效分析的能力显得愈加重要。为了应对这一挑战,…...
什么是中间件中间件有哪些
什么是中间件? 中间件(Middleware)是指在客户端和服务器之间的一层软件组件,用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件,它可以在两个系统之间传递、处理、转换数据,以达到协…...
css中的部分文字特性
文章目录 一、writing-mode二、word-break三、word-spacing;四、white-space五、省略 总结归纳常见文字特性,后续补充 一、writing-mode 默认horizontal-tbwriting-mode: vertical-lr; 从第一排开始竖着排,到底部再换第二排,文字与文字之间从…...
PyQt5 UI混合开发,控件的提升
PromoteLabelTest.py 提升的类 import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent None):super().__init__(parent)self.setText("…...
IP查询于访问控制保护你我安全
IP地址查询 查询方法: 命令行工具: ①在Windows系统中,我们可以使用命令提示符(WINR)查询IP地址,在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息; ②在Linux系统中&…...
SpringBoot数据层解决方案
文章目录 1. 数据层解决方案2. 数据源技术 1. 数据层解决方案 现有数据层解决方案技术选型:Druid MyBatis-Plus MySQL 数据源:DruidDataSource持久化技术:MyBatis-Plus / MyBatis数据库:MySQL 下面的研究就分为三个层面进行研…...
前端数据模拟器 mockjs 和 fakerjs
功能:帮助前端生成随机数据,独立于后端单独开发 一、mockjs 安装:npm install mockjs 优点:官网是中文。 缺点:目前该库已经无人维护,也没人解决github上的bug。 官网 github地址 二、fakerjs 安装…...
Python 类 Class
在 Python 中,类(Class)是一种创建对象(Object)的模板,它允许我们定义对象的属性和方法。类是 Python 中实现面向对象编程(OOP)的核心结构。 定义一个类 定义一个类的基本语法如下…...
PHP语言的并发编程
PHP语言的并发编程 引言 随着互联网技术的迅速发展,Web 应用的复杂性和用户并发请求的增加,要求开发者在构建高性能应用时考虑并发编程。并发编程允许程序在同一时间执行多个任务,这对于处理高流量网站、API 和实时应用程序至关重要。虽然 …...
小米智能哑铃上市,代理 IP 视角下的智能健身新篇
在智能科技与健康生活深度融合的时代,小米以其敏锐的市场洞察力和强大的创新能力,不断拓展智能生态版图。米家智能哑铃的发布,无疑是其在智能健身领域的又一重要举措。而当我们从代理 IP 的独特视角来审视这一产品,会发现其中蕴含…...
业务日志设计
当一个项目足够大的时候,我们需要将统计系统完全独立出去,那么就无法避免数据采集的问题,我们可以在业务触发处增加log日志来记录当前变化的原始数据,提供统计系统进行采集 设计一个统计系统的日志记录机制时,主要需要…...
对话|全年HUD前装将超330万台,疆程技术瞄准人机交互“第一屏”
2024年,在高阶智驾进入快速上车的同时,座舱人机交互也在迎来新的增长点。Chat GPT、AR-HUD、车载投影等新配置都在带来新增量机会。 高工智能汽车研究院监测数据显示,2024年1-10月,中国市场(不含进出口)乘用…...
【论文笔记】QLoRA: Efficient Finetuning of Quantized LLMs
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: QLoRA: Efficient Finetun…...
计算机网络之---物理层的基本概念
物理层简介 物理层(Physical Layer) 是 OSI(开放系统互联)模型 中的第 1 层,它主要负责数据在物理媒介上的传输,确保原始比特(0 和 1)的传输不受干扰地从一个设备传送到另一个设备。…...
Burpsuite20241102macM1版安装
1、安装jdk11 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update brew install openjdk11 echo export PATH"/opt/homebrew/opt/openjdk11/bin:$PATH" >> ~/.zshrc source ~/.zshrc j…...
缓存常见问题
缓存问题: 1. 缓存穿透:访问一个不存在的缓存 2. 缓存击穿:大批用户访问热点数据的时候,热点数据缓存失效,大量访问数据库 3. 缓存雪崩:大批量缓存全部失效 Redis和Memcached区别: 1. Redi…...
C++ 入门第25天:线程池(Thread Pool)基础
往期回顾: C 学习第22天:智能指针与异常处理-CSDN博客 C 入门第23天:Lambda 表达式与标准库算法入门-CSDN博客 C 入门第24天:C11 多线程基础-CSDN博客 C 入门第25天:线程池(Thread Pool)基础 前…...
CompressO终极指南:免费开源视频压缩神器,一键释放95%存储空间
CompressO终极指南:免费开源视频压缩神器,一键释放95%存储空间 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mir…...
猫抓工具终极指南:如何快速捕获网页视频和音频资源
猫抓工具终极指南:如何快速捕获网页视频和音频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载网页上的视频和音频而…...
开源Windows系统优化工具:3分钟让你的电脑运行速度提升51%
开源Windows系统优化工具:3分钟让你的电脑运行速度提升51% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...
手把手教你用Cursor的.cursorrules文件,定制你的专属Python/React开发AI伙伴
用.cursorrules文件打造你的智能编程伙伴:Python/React开发者的终极配置指南 在当今快节奏的软件开发环境中,AI编程助手已经成为提升效率的必备工具。而Cursor作为其中的佼佼者,其真正的威力往往被大多数开发者所低估——通过精心设计的.curs…...
WPF Prism (四):深入理解EventAggregator的跨模块通信机制
1. EventAggregator的本质与核心价值 在WPF Prism框架中,EventAggregator(事件聚合器)就像现实世界中的邮局系统。想象一下:当模块A需要给模块B发送消息时,不需要知道对方住在哪个街区、门牌号是多少,只需把…...
ollama部署本地大模型|granite-4.0-h-350m在在线教育平台智能答疑中的应用
ollama部署本地大模型|granite-4.0-h-350m在在线教育平台智能答疑中的应用 1. 在线教育答疑的痛点与解决方案 在线教育平台最头疼的问题之一,就是学生随时提出的各种问题。传统的人工答疑方式存在明显瓶颈:老师回复不及时、夜间无人值守、重…...
Wan2.1-UMT5爬虫数据可视化实战:自动生成数据趋势分析视频
Wan2.1-UMT5爬虫数据可视化实战:自动生成数据趋势分析视频 你是不是也遇到过这种情况?辛辛苦苦用Python爬虫抓了一大堆数据,比如股票价格、社交媒体热度、电商销量,结果分析报告还是得靠手动截图、拼图,最后做个PPT或…...
LAMP环境搭建:从PHP安装到Apache与MySQL协同配置全指南
1. LAMP环境搭建基础准备 在开始搭建LAMP环境之前,我们需要先了解几个关键概念。LAMP是Linux、Apache、MySQL和PHP的首字母缩写,这四个组件共同构成了一个完整的动态网站运行环境。就像盖房子需要打地基一样,搭建LAMP环境也需要先做好准备工作…...
QQ音乐解码神器qmcdump:5分钟快速解锁加密音乐文件的完整指南
QQ音乐解码神器qmcdump:5分钟快速解锁加密音乐文件的完整指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump …...
轻松驾驭Minecraft世界:PCL启动器全方位使用指南
轻松驾驭Minecraft世界:PCL启动器全方位使用指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher(简称PCL)是一款…...
