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的更多相关文章

  1. TCP_Wrappers & PAM & Nsswitch服务

    cpwrapper:工作在第四层(传输层),能够对有状态连接的服务进行安全检测并实现访问控制的工具.部分功能上跟iptables重叠. 对于进出本主机访问某特定服务的连接基于规则进行检查的一个访问控制 ...

  2. 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 ...

  3. Samba nsswitch/pam_winbind.c文件输入验证漏洞

    漏洞名称: Samba nsswitch/pam_winbind.c文件输入验证漏洞 CNNVD编号: CNNVD-201312-047 发布时间: 2013-12-05 更新时间: 2013-12- ...

  4. PAM认证机制详情

    PAM(Pluggable Authentication Modules)认证机制详情 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.      一.介绍PAM PAM(Plugga ...

  5. Linux可插拔认证模块(PAM)的配置文件、工作原理与流程

    PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...

  6. nis,nfs,pam小结

    最近一周总算把nis/nfs配置起来,中间各种被坑,这里简单记录一下: 主要参考两个大牛的文章,柏青哥,鸟哥 配置完之后的功能是可以连接任意一台主机,所有主机之间共享HOME目录,而且每人都有一定的限 ...

  7. linux pam 控制模式

    工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...

  8. Arch Linux sudo: PAM authentication error: Module is unknown [Solved!]

    问题描述: 我的 Arch Linux 已经用了快半年多,由于 Arch Linux 的滚挂问题,我从没有直接升级过系统.软件版本以及库自然落后了一些. 就在我准备需要用到 NFS 时,挂载网络文件系 ...

  9. centos7下安装vsftpd与PAM虚拟用户

    Vsftp与PAM虚拟用户 使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 设置开机启动 chkconfig vsftpd on 创建一个保存 ...

随机推荐

  1. Java8函数式编程探秘

    引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...

  2. Python 构造一个可接受任意数量参数的函数

    为了能让一个函数接受任意数量的位置参数,可以使用一个* 参数 在这个例子中,rest 是由所有其他位置参数组成的元组.然后我们在代码中把它当成了一个序列来进行后续的计算

  3. 转:C#线程系列讲座(1) BeginInvoke和EndInvoke方法

    转载自:http://www.cnblogs.com/levin9/articles/2319248.html 开发语言:C#3.0IDE:Visual Studio 2008本系列教程主要包括如下内 ...

  4. Django后端项目---- Rest Framework(2)

    一.认证(补充的一个点) 认证请求头 #!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import API ...

  5. Python进阶【第一篇】:Python简介

    Python简介 1.Python的由来 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 2.C 和 Python.Ja ...

  6. 【react】兄弟组件的通信方式,传统非redux

    很多用过redux开发的朋友们都知道,一般兄弟组件通信可以使用redux. redux也是近期在挤时间学习中.可能也不是很懂,说不定是有错误的理解,若有.现在虽然自己搭建了一个react+router ...

  7. kivy中文

    from kivy.config import Config Config.set('kivy', 'default_font', [ 'msgothic', 'DroidSansFallback.t ...

  8. fjwc2019 D1T3 不同的缩写(dinic+trie+dfs)

    #180. 「2019冬令营提高组」不同的缩写 乍看之下没有什么好的方法鸭.......于是考虑暴力. 长度?二分似乎可行. 于是我们二分最长子串的长度(设为$len$),蓝后暴力查找. 先在每个串内 ...

  9. RMAN入门——简介

    RMAN(Recovery Manager)   1.简介 RMAN(Recovery Manager)是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件.归档日志和控制文件 ...

  10. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...