LINUX控制用户的登录地点以及PAM的用法

Linux_PAM安全认证_sudo_安全控制 PAM安全认证一.Linux中的PAM安全认证1.su命令的安全隐患2.PAM(Pluggable Authentication Modules)可插拔式认证模块二.PAM认证原理三. PAM认证得构成1.查看某个程序是否支持PAM认证,可以用Is命令2. 查看su的PAM配置文件: cat /etc/pam.d/su四. PAM安全认证流程 一.Linux中的PAM安全认证 Linux-PAM, 是linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。PA 阅读详情

控制用户的登录地点

文件/etc/secruity/access.conf可控制用户登录地点,为了使用access.conf,必须在文件/etc/pam.d/login中加入下面行:

account required /lib/security/pam_access.so

access.conf文件的格式:

permission : users : origins

其中:

permission:可以是 “+”或“-”,表示允许或拒绝。
user:可以是用户名、用户组名,如果是all则表示所有用户。
origins:登录地点。local表示本地,all表示所有地点,console表示控制台。另外,origins也可以是某一网络。

后面两个域中加上 except是“除了”的意思。例如:除了用户wheel、shutdown、sync禁止所有的控制台登录:

-:ALL EXCEPT wheel shutdown sync:console

root账户的登录地点不在access.conf文件中控制,而是由/etc/securetty文件控制。

必须保证/etc/pam.d/login有下面这行:

auth       required     pam_securetty.so

etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,你可以编辑/etc/securetty且注释掉如下的行。

   # tty2
  # tty3
  # tty4
  # tty5
  # tty6

这时,root仅可在tty1终端登录。

关于PAM的一些解释

热身:

何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供用户名和口令,而后登入进程据此以检验登入的合法性---确认您就是该用户。还有除口令认证之外的其他认证形式,而且口令的存储方式也是各不相同的。

1、说明

A、PAM可加载目标文件(模块)是在RedHat Linux系统中它们被放在了/lib/security目录下
B、PAM库本地系统配置文件/etc/pam.conf OR /etc/pam.d/目录下的一些配置文件来设置

2、# more login

#%PAM-1.0
auth       required     pam_securetty.so 
    用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
    提供标准的UNIX nologin登录认证。如果/etc/nologin文件存在,则只有root用户可以登录,其他用户登录时只会得到/etc/nologin文件的内容。如果/etc/nologin不存在,则该模块没有作用。
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so
# ls -l /dev/pts/1
crw--w----  1 root tty 136, 1 May 15 21:19 /dev/pts/1
# ls -l /dev/pts/2
crw--w----  1 test tty 136, 2 May 15 21:20 /dev/pts/2
  用户登陆时,它将TTY设备权限改成该用户所有,当用户退出时,将TTY设备权限改为root所有。
# pam_selinux.so open should be the last session rule
session    required     pam_selinux.so multiple open
login要做两件事,首先查询用户,然后为用户提供所需服务,例如提供一个shell程序。
通常,login会提示用户输入密码。然后对密码进行校验,这项任务就是Linux-PAM完成的。

上例中三个required连续使用, 即便第一个模块失败了,也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其更容易突破认证。可以将“required”改成“requisite”来修改这种认证方式。如果有任何“requisite”模块以失败返回,整个PAM认证将终止再调用其它模块也以失败返回。

3、pam_unix认证模块

所属类型: account; auth; password; session

功能描述:该模块是标准UNIX认证模块pam_unix的替代模块。

在作为auth类型使用时,此时该模块可识别的参数有debug、audit、use_first_pass、try_first_pass、nullok、nodelay,主要功能是验证用户密码的有效性,在缺省情况下(即不带任何参数时),该模块的主要功能是禁止密码为空的用户提供服务;

auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        required      /lib/security/$ISA/pam_deny.so

在作为account类型使用时,此时该模块可识别的参数有debug、audit,该模块主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务;

account     required      /lib/security/$ISA/pam_unix.so
account     sufficient    /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account     required      /lib/security/$ISA/pam_permit.so

在作为password类型使用时,此时该模块可识别的参数有debug、 audit、 nullok;、not_set_pass、use_authtok、try_first_pass、use_first_pass、md5、bigcrypt、shadow、nis、

remember,该模块完成让用户更改密码的任务;

password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5
shadow
password    required      /lib/security/$ISA/pam_deny.so

在作为session类型使用时,此时该模块没有可识别的参数,该模块仅仅完成记录用户名和服务名到日志文件的工作。

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so

可带参数:

debug:将调试信息写入日志
audit:记录更为信息的信息
nullok:缺省情况下,如果用户输入的密码为空,则系统能够不对其提供任何服务。但是如果使用参数,用户不输入密码就可以获得系统提供的服务。同时,也允许用户密码为空时更改用户密码。 ?
nodelay:当用户认证失败,系统在给出错误信息时会有一个延迟,这个延迟是为了防止。黑客猜测密码,使用该参数时,系统将取消这个延迟。通常这是一个1秒钟的延迟。
try_first_pass:在用作auth模块时,该参数将尝试在提示用户输入密码前,使用前面一个堆叠的auth模块提供的密码认证用户;在作为password模块使用时,该参数是为了防止用户将密码更新成使用以前的老密码。
use_first_pass:在用作auth模块时,该参数将在提示用户输入密码前,直接使用前面一个堆叠的auth模块提供的密码认证用户;在作为password模块使用时,该参数用来防止用户将密码设置成为前面一个堆叠的password模块所提供的密码。
no_set_pass:使密码对前后堆叠的password模块无效。
use_authok:强制使用前面堆叠的password模块提供的密码,比如由pam_cracklib模块提供的新密码。
md5:采用md5对用户密码进行加密。
shadow:采用影子密码。
unix:当用户更改密码时,密码被放置在/etc/passwd中。
bigcrype:采用DEC C2算法加密用户密码。
nis:使用NIS远处过程调用来设置新密码。
remember=x:记录x个使用过的旧密码,这些旧密码以MD5方式加密后被保存在/etc/security/opasswd文件中。
broken_shadow:在作为account使用时,该参数用来忽略对影子密码的读错误。
likeauth:未知。

配置实例:

参考/etc/pam.d/system-auth

设置密码中的常见错误信息?
         ⑴当用户输入的密码字符数太少时:
BAD PASSWORD: it's WAY too short
    ⑵当用户输入的密码相同字符太多时:
BAD PASSWORD: it does not contain enough DIFFERENT characters
    ⑶当用户输入的密码为某英文单词时:
BAD PASSWORD: it is based on a dictionary word
    ⑷当用户在“(current) UNIX password:”提示后输入的现有密码错误时:passwd: Authentication token manipulation error
    ⑸当用户两次输入的密码不相同时:Sorry, passwords do not match passwd: Authentication information cannot be recovered
    ⑹当用户输入的密码未被系统接受时:
passwd: Authentication token manipulation error

example 1

auth       required     pam_securetty.so
    只用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。
telnet 服务使用PAM的login进行用户身份验证,#more /etc/pam.d/login便能看到此行,要让root不受限制远程login,第一种方法注销此处这一行,另一种在 /etc/securetty文件中加入诸如pts/n(1-n);

同理如果想限制root使用ssh远程进入系统,只需在/etc/pam.d/sshd文件中加入这行;auth       required     pam_securetty.so即可。

example 2

account    required     pam_access.so
    pam_access是pam中处理用户访问控制的模块,没有使用pam前,linux对用户的所有访问控制都是借助hosts.allow, hosts.deny文件,实现所有服务的访问控制,再加上usertty就是对用户登陆控制(专门是针对login)。
    一种是直接修改/etc/security/access.conf
另一种是使用参数accessfile=/path/to/file.conf
例如修改access.conf文件:
+:root:ALL //root从任意位置连入系统
+:redhat:164.70.12.//redhat只能从这个网段连入
-:ALL:ALL 其余DENY
然后 # vi /etc/pam.d/sshd
加入这一行 account    required     pam_access.so

example 3

限制用户LOGIN次数
在/etc/security/limits.conf :
加入redhat           -       maxlogins       3
然后 # vi /etc/pam.d/sshd
加入这一行session    required     pam_limits.so
则同一用户至多3-1次login入系统

example 4

限制用户LOGIN时间
# vi /etc/security/time.conf加入以下一行
sshd;*;redhat;!Tu2200-2230
# vi /etc/pam.d/sshd 加入以下一行
account    required     pam_time.so
则redhat每星期二晚上22:00-22:30不能使用SSH来login系统。

example 5

用户访问控制
# vi /etc/pam.d/vsftpd 加入以下一行

auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# vi /etc/ftpusers .......

 


本博原创,如转载请注明出处: http://blog.vfocus.net,谢谢。

持久化:利用Linux PAM创建后门 PAM(Pluggable Authentication Modules)是Linux系统中用于身份验证的模块化框架。通过利用PAM,可以创建一个后门来绕过系统的认证机制,从而获得未经授权的访问权限。 要创建一个后门,首先需要编写一个自定义的PAM模块,该模块可以在用户登录时执行特定的操作,例如绕过密码验证或者添加一个额外的认证方式。接着,将这个自定义的PAM模块加载到系统中,并配置PAM以在用户登录时使用该模块。 通过这种方式,攻击者可以在系统中创建一个隐藏的后门,同时绕过正常的认证流程, 阅读详情

相关推荐

从0到1:.NET 9 OpenAPI全攻略!Swagger vs Scalar UI谁更强?

OpenAPI:.NET 9的智能文档革命 本文深入解析.NET 9的OpenAPI支持,对比Swagger UI与Scalar UI的优劣,提供实战代码示例: 一键生成:AddOpenApi()+MapOpenApi()快速生成标准文档 UI工具对决: Swagger UI功能全面但复杂 Scalar UI简约现代,原生支持cURL/HTTPie 进阶技巧: XML注释增强文档可读性 自定义Transformer实现文档动态修改 🔥核心价值:.NET 9的OpenAPI方案显著降低API文档维护成本,开

java专栏 1427

linux控制用户的登录地点以及PAM的用法

控制用户的登录地点 文件/etc/secruity/access.conf可控制用户登录地点,为了使用access.conf,必须在文件/etc/pam.d/login中加入下面行: account required /lib/security/pam_access.so access.conf文件的格式: permission : users : origins 其中: permis...

weixin_30375247的博客 264

Lattice CrosslinkNx LIFCL-40实战解析:MIPI D-PHY硬核IP配置与CSI-2数据解析全流程

本文详细解析了Lattice CrosslinkNx LIFCL-40 FPGA中MIPI D-PHY硬核IP的配置与CSI-2数据解析全流程。通过实战案例,介绍了硬件环境搭建、寄存器配置、数据包结构解析及视频流重构技巧,帮助开发者快速掌握高速图像采集系统的设计与优化方法。

weixin_29159613的博客 198

/etc/pam.d/login Linux-PAM认证方式

https://blog.youkuaiyun.com/panfelix/article/details/21010299/ 在linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等 在linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。 linux各个发行版中,PAM使用的验

wgz7747147820的博客 3988

论文笔记:基于对比学习的半监督分类学习方法

论文阅读笔记_CCSSL

weixin_46224126的博客 3312

国密https握手协议抓包及流程详解

使用的密码套件清单-Cipher Suite,这里服务器端选择了ECC_SM4_CBC_SM3密码套件,也就是SM2公钥算法、SM4-CBC分组密码算法和SM3杂凑算法。具体来说,这里SM2算法密钥交换算法,SM4是加密算法(SM4-CBC)、SM3是校验算法(国标要求为HMAC-SM3)。服务器的加密证书:加密证书中在同样在扩展字段中KeyUsage标识出KeyEncipherment为true和dataEncipherment为true,即数字证书中包含的公钥可用来做密钥加密密钥和数据密钥。

ryanzzzzz的博客 5847

常用的Linux可插拔认证模块(PAM)应用举例(一)

上一篇文章《Linux可插拔认证模块(PAM)的配置文件、工作原理与流程》我们介绍了常用的Linux可插拔认证模块(PAM)的配置文件、工作原理和流程,下面我们将通过一些实际配置和例子来说明pam的各种常用模块的作用以及使用方法。\pam_access.so模块\pam_access.so模块主要的功能和作用是根据主机名(包括普通主机名或者FQDN)、IP地址和用户实现全面的访问控制。pam_ac...

cpongo5 476

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3485

CentOS 8 限制用户登录,防止SSH爆破

CentOS 8 限制用户登录,防止SSH爆破

qq_43744773的博客 3104

【CANoe】CAPL_UDS安全算法dll制作

使用UDS进行刷写时,需要27服务解密后,才能正确执行刷写,本文提供两种制作27解密dll的方法,用于CANoe的CAPL脚本中。

星Yeah 的博客 1万+

深度学习图神经网络 (GNN) —— 处理图结构数据(六十九)

本文系统介绍了图神经网络(GNN)的核心概念、主流模型及其应用。主要内容包括: GNN基础:阐述了图结构数据的特性(节点数不定、连接不规则),以及GNN相比CNN/RNN的优势在于处理非欧式空间的图数据。 核心机制:重点讲解了消息传递框架(MPNN),通过聚合邻居信息迭代更新节点表示,并分析了GCN的归一化邻接矩阵计算和GAT的注意力权重机制。 典型模型: GCN:基于归一化邻接矩阵的特征传播 GAT:引入注意力机制区分邻居重要性 GraphSAGE:通过采样解决大图扩展性问题 GIN:理论表达能力最强的图

hello.reader 300

Linux-PAM认证方式

在linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等 在linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。 linux各个...

weixin_33831673的博客 661

4.4 直流无刷电机(BLDC):控制器硬件设计

摘要 本文详细阐述了直流无刷电机(BLDC)控制器的硬件设计要点。控制器硬件主要包括微处理器单元、功率驱动模块、信号检测电路、通信接口和电源管理模块。在微处理器选型方面,分析了ARM Cortex-M系列、DSP等架构的适用场景,并对比了不同处理器的性能参数。功率驱动模块设计重点包括栅极驱动电路、逆变桥热管理和电流保护机制。信号检测部分介绍了位置传感器接口和模拟信号调理技术。此外,还讨论了通信接口设计、电源管理方案以及硬件布局与EMC设计规范。最后强调了硬件测试验证的重要性,包括故障注入测试等验证方法。整体

技术工作者 183

linux pam 解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁

在Linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁。了解PAMLinux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。在Linux中,PAM是可动态...

weixin_29682291的博客 3732

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

多次登录失败用户被锁定及使用Pam_Tally2解锁

在linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁。 了解PAM Linux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。PAM应用在许多程序与服务上,比如登录程序

qq_41847721的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

linux用户解锁pam_tally,多次登录失败用户被锁定及使用Pam_Tally2解锁

在linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁。了解PAMLinux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。在Linux中,PAM是可动态...

weixin_30979229的博客 7861

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【PAM】Linux登录认证限制

PAM 提供了一个模块化的认证系统,它由一系列模块和规则组成,来决定用户如何被认证、账户如何管理、密码如何处理以及如何管理用户会话。PAM 系统的设计使得它可以根据需要轻松增加或修改认证方式,而不会影响系统上的应用程序。

一如既往 1758

通过linux-PAM实现禁止root用户登陆的方法

在linux系统中,root账户是有全部管理权限的,一旦root账户密码外泄,对于服务器而言将是致命的威胁;出于安全考虑,通常会限制root账户的登陆,改为配置普通用户登陆服务器后su切换到root账户使用,这种方式较为安全,限制root账户登陆的方式有多种,本文主要介绍如何通过linux-PAM限制账户登陆。

京东科技开发者 1793

linux中pam认证解析

首先了解一下,什么是linux的pam认证呢? pam认证机制:简单来说就是linux系统采取的这一种对不同用户以及系统中的不同服务进行的安全认证机制。 认证流程:linux系统首先确定所需认证的服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。 举个例子,我们登陆的时候,会向 PAM 发出验证要求的通知...

学无止境 6587

suse账号解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁

在Linux系统中,用户多次登录失败会被锁定,一段时间内将不能再登录系统,这是一般会用到Pam_Tally2进行账户解锁。了解PAMLinux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。在Linux中,PAM是可动态...

weixin_33648811的博客 4540

linux命令行如何修改删除pam,linux系统之pam模块

一、pam简介Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制. 这种方式下,就算升级本地认证机制,也不用修改程序. PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在...

weixin_42351606的博客 2364

Linux账号安全控制与PAM认证模块

这里写目录标题一、账号安全控制1.1、系统账号清理①、将非登录用户的Shell设为/sbin/nologin②、锁定长期不使用的账号④、解锁账号⑤、删除无用的账号⑥、锁定账号文件 passwd、shadow1.2、密码安全控制①、设置密码有效期**②、要求用户下次登录时修改密码③、命令历史限制④、终端自动注销⑤、切换用户:su⑥、限制使用su命令切换用户二、PAM认证模块 一、账号安全控制 1.1、系统账号清理 ①、将非登录用户的Shell设为/sbin/nologin usermod -s /sbin/n

ShiXiao0121的博客 7597

Linux--PAM机制

一、PAM是什么? 二、PAM模块设置语法 2.1 /etc/pam.d/里面的配置文件 2.1.1第一个字段:验证类别(Type) 2.1.2第二个字段:验证的控制标识(control flag) 三、常用模块简介 总结

TYJhhxx的博客 5504

Linux PAM 四大认证模块详解 Linux-PAM 模块用法总结

linux PAM 认证模块

xiliang_pan的专栏 345

Linux系统的PAM模块认证文件含义说明总结

在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。 一、PAM模块介绍 Linux-P...

久伴你逍遥风的博客 5873
上一篇: linux /etc/security/limits.conf的相关说明(转帖)
下一篇: 素数
com_d_d
博客等级 码龄17年 7粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值