nsswitch & pam
nsswitch & pam
nsswitch是名称解析框架服务,pam是认证框架服务
对主机来说,有两个功能可能用到框架性服务
1、名称解析:
name: id
2、认证服务:验证当前请求获取资源的人或标识,如何进行认证?基于什么认证?
nsswitch: network service switch 网络服务转换,作用是调整网络服务名称解析机制
解析库:
文件、MySQL、NIS、LDAP、DNS
通用框架,与上述各存储交互的实现:
配置文件:/usr/lib64/libnss*, /lib64/libnss*


配置文件
db: store1, store2, ... //数据库和存储位置
每种存储中查找的结果状态:STATUS => success | notfound | unavail | tryagain
对应于每种状态参数的行为:ACTION => return | continue
例如:host: files nis [NOTFOUND=return] dns //找host,默认先找files,再找nis,如果nis服务存在,但服务中没这个条目,则返回NOTFOUND,不会找dns,作用:只有nis不可用才找dns,如果没有nis这个服务,也不会找dns
# getent database [entry]

pam:pluggable authentication module 插入式认证模块
pam也是一个通用框架,有自己对应的认证库
认证库(密码存储位置):
文件、MySQL、LDAP、NIS
通用框架,与各存储交互的实现,以及多种辅助性功能:
/lib64/security/
配置文件:/etc/pam.conf
/etc/pam.d/*.conf
通常每个应用使用一个单独的配置文件;
配置文件中每行定义一种检查规则;
格式:
type control module-path module-arguments

格式:type control module-path module-arguments
type:检查功能类别
auth: 账号的认证和授权
account:与账号管理相关的非认证功能
password:用户修改密码时密码检查规则
session:用户获取到服务之前或使用服务完成之后要进行的一些附加性操作
control:同一种功能的多个检查之间如何进行组合;
有两种实现机制:
1、使用一个关键词来定义;例如sufficient,required, requisite;
2、使用一或多个"status=action"形式的组合表示
简单机制:
- required //表示本次检查如果成功,起不到决定性作用,继续检查后面的选项,如果检查没成功,结果就过不了,但依然要检查后面几条,
- requisite //检查通过,继续后面的检查,检查不通过,一票否决权,后面不再检查,直接返回结果
- sufficient //充分条件,检查通过,后续不再检查,直接通过,如果没通过,不起决定性作用,依然检查后面
- optional //可选,无论检查是否通过,都不起决定作用,只做参考
- include //包含指定文件中同一个类别中的规则的,
复杂机制:[status1=action1,status2=action2,....]
status:返回状态
action: ok, done, die, ignore, bad, reset
ok:表示检查通过,一票通过权
done:通过就通过了,但没有一票通过权
die:一票否决权
bad:检查不通过,结果不通过,但是继续检查
ignore:忽略
module-path: 模块路径
/lib64/security: 此目录下的模块引用时可使用相对路径;
module-arguments: 模块参数
模块:
(1) pam_shells.so
(2) pam_limits.so
模块通过读取配置文件完成用户对系统资源的使用控制
/etc/security/limits.conf
/etc/security/limits.d/*
<domain> <type> <item> <value>
<domain>:
username
@group
*: 所有用户
<type>
soft:用户可以自我调整,但无论如何都不可超过硬限制
hard:由root设定,通过kernel强制生效;
-:二者同时限定;
<item> //对哪类资源做限制
nofile(num of file): 所能够同时打开的最大文件数量;
nproc: 所能够同时运行的最大进程数量;
msqqueue:使用的POSIX消息队列能够占用的最大内存空间;
sigpending:所能够使用的最大信号数量;
<value>
ulimit -n #:文件数量
ulimit -u #:进程数量
练习:
(1) 限制centos用户只能够在worktime通过ssh远程连接本机;
(2) 限制只有distro组内的用户可ssh到本机;
nsswitch & pam的更多相关文章
- TCP_Wrappers & PAM & Nsswitch服务
cpwrapper:工作在第四层(传输层),能够对有状态连接的服务进行安全检测并实现访问控制的工具.部分功能上跟iptables重叠. 对于进出本主机访问某特定服务的连接基于规则进行检查的一个访问控制 ...
- Linux UserSpace Back-Door、Rootkit SSH/PAM Backdoor Attack And Defensive Tchnology
catalog . 引言 . Pam后门 . SSH后门 . Hijacking SSH . Hijacking SSH By Setup A Tunnel Which Allows Multiple ...
- Samba nsswitch/pam_winbind.c文件输入验证漏洞
漏洞名称: Samba nsswitch/pam_winbind.c文件输入验证漏洞 CNNVD编号: CNNVD-201312-047 发布时间: 2013-12-05 更新时间: 2013-12- ...
- PAM认证机制详情
PAM(Pluggable Authentication Modules)认证机制详情 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.介绍PAM PAM(Plugga ...
- Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...
- nis,nfs,pam小结
最近一周总算把nis/nfs配置起来,中间各种被坑,这里简单记录一下: 主要参考两个大牛的文章,柏青哥,鸟哥 配置完之后的功能是可以连接任意一台主机,所有主机之间共享HOME目录,而且每人都有一定的限 ...
- linux pam 控制模式
工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...
- Arch Linux sudo: PAM authentication error: Module is unknown [Solved!]
问题描述: 我的 Arch Linux 已经用了快半年多,由于 Arch Linux 的滚挂问题,我从没有直接升级过系统.软件版本以及库自然落后了一些. 就在我准备需要用到 NFS 时,挂载网络文件系 ...
- centos7下安装vsftpd与PAM虚拟用户
Vsftp与PAM虚拟用户 使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 设置开机启动 chkconfig vsftpd on 创建一个保存 ...
随机推荐
- python XML文件解析:用xml.dom.minidom来解析xml文件
python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...
- 异常检测LOF
局部异常因子算法-Local Outlier Factor(LOF)在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据.异常检测也是数据挖掘的一个方向,用于反作弊 ...
- leaflet:调用arcgis切片地图服务
var mymap = L.map('mapid').setView([31.59, 120.29], 7); L.tileLayer('http://map.geoq.cn/ArcGIS/rest/ ...
- JMX堆栈分析
线程堆栈: 线程堆栈也称线程调用堆栈,是虚拟机中线程(包括锁)状态的一个瞬间快照,即系统在某一个时刻所有线程的运行状态,包括每一个线程的调用堆栈,锁的持有情况.虽然不同的虚拟机打印出来的格式有些不同, ...
- B/S开发介绍
b/s 的优势: 1.开发成本低 2.管理维护简单 3.产品升级便利 4.对用户的培训费用低 5.用户使用方便,出现故障的概率小 b/s 的不足: 1.安全性不足 2.客户端不能随心变化,受浏览器限制
- P2P原理及UDP穿透简单说明(转)
源: P2P原理及UDP穿透简单说明
- kivy中bind的使用
一般在kivy中使用bind()来绑定回调函数,所谓回调函数,个人理解就是一个预先定义好的方法, 因为APP是静态的, 需要等待用户进行操作, 特定的操作背后都绑定了特定的回调函数, 一般有两种类型: ...
- centos7.2 开机启动脚本
vim ~/.bashrc 然后最后一行添加 source /etc/profile 一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例):sys ...
- redmine3.2 的部署
安装libyaml [root@ ~]#wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz -O /dist/dist/yaml-0.1 ...
- 11: python中的轻量级定时任务调度库:schedule
1.1 schedule 基本使用 1.schedule 介绍 1. 提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中. 2. 不过,一个小的定时脚本,要用 ...