linux高级安全PAM使用
2013-09-12 20:03
183 查看
大家好,关于PAM的使用,有的接触不到,他们配置的地方也不是经常出现,这是我的学习笔记,想分享给大家,有些地方逻辑性很强需要多看我基本上都有注释。
PAM 身份验证 及插即用 验证 模块
[root@xu /]# ldd /usr/sbin/sshd --------查看一个程序在运行的时调用那些库文件
[root@xu /]# ldd `which sshd` | grep pam
libpam.so.0 => /lib/libpam.so.0 (0x008ae000)
[root@xu /]# ls /lib/security/------pam所有功能插件
[root@xu /]# ls /etc/pam.d/-------一个程序使用什么pam模块 怎么使用都在这里
[root@xu /]# firefox /usr/share/doc/pam-0.99.6.2/html/Linux-PAM_SAG.html -----pam的配置手册
6.11 是用方法
6.25 是限制 描述
6.6 设置环境变量
-----------------------------
以login 为例子 怎么用的pam
pam 的难点 前俩列的关系
一个用户能不能验证成公 能不能登录进去 取决于前俩个 (auth account )
日志信息
tail -f /var/log/secure
第一列
auth ---- 管理用户名密码
account ---- 除用户名密码以外的对登录起取决性的其他因素条件(列如 某个时间断 某个网段)
password ----当用户对密码进行操作的时候用到他 (不该密码就没他什么事情)
session------- 进行会话的时候用到的 (当我打开一个程序的时候相当于建立了一次连接会话)
第二列
required ------ 必要条件 针对模块(模一个条件必须要成功,如果失败了 还继续往下执行,但是最终百分之百失败)
requisite----- 必要条件 针对模块(模块必须验证成功 如果失败了 ,停止验证 如果成功 继续走,看以后的 )
sufficient----- 充分条件 针对模快(如果一个模块成功 立即返回成功 如果失败 (忽略不计对最终结果不受影响))
otional--- - 可选条件 针对模块 (不管模块验证成功 失败 对最终结果没有影响)
include-------包含条件 针对文件( 不同模块调用相同的条件 把条件作一个公共文件) 跳过来之后只读相同类型的
-------------------------------------------
[root@xu ~]# cat /etc/shadow | grep user1
user1:!$1$hSYfRFbq$ST2mHoyu38nnvPx/kDMv90:15781:0:99999:7:::
auth 管的是前俩列
account 管的是 后面的
-----------------------------------------
第三行 模快 (第三行没有跳转的就是模块在手册里查是什么功能 如果跳转了就去看跳转的那个公共文件里对应的模块是什么功能)
login 配置文件里的模块
pam_securetty.so 安全的tty模块 -------对应的配置文件vim /etc/securetty 只有这里的终端 才是安全的终端
pam_nologin.so 阻止非管理员登录的模块 --- touch /etc/nologin 文件 所有普通帐号就不能登录
pam_access.so 访问控制模块
pam_time.so 时间控制模块
pam_echo.so 打印文本信息
auth 跳转文件里的模块
pam_env.so 设置环境变量模块 -------对应的配置文件 vim /etc/security/pam_env.conf 在这里设置环境变量
pam_unix.so 验证用户名密码模块 --pam核心模块负责passwd 找用户名 在shadow 里找密码的模块,在这里他验证的是前面的两行
pam_succeed_if.so uid >= 500 quiet(安静模式 不记录到日志) 判断是否成功的模块 判断uid 是否大于等于500
pam_deny.so 永远拒绝模块
account 跳转文件里的模块
pam_unix.so 验证用户名密码模块 ------这里他验证的是后面的
pam_permit.so 永远允许的模块
-------------------------------------------
login 的pam配置文件
[root@xu /]# vim /etc/pam.d/login
1 #%PAM-1.0
未知用户忽略
2 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securett(模块) y.so--以前的语法 必要条件
第一行只针对管理员模块 只针对管理员生效 模块不会验证普通用户vim /etc/securetty----只有这里的终端 才是安全的终端
3 auth include system-auth(公共文件) 跳转 vim /etc/pam.d/system-auth 里对应的配置
4 account required pam_nologin.so 必要条件 这个模块让你找 touch /etc/nologin 文件 所有普通帐号不能登
5 account include system-auth 继续跳转 vim /etc/pam.d/system-auth 里caaount对应的文件
6 password include system-auth
7 # pam_selinux.so close should be the first session rule
8 session required pam_selinux.so close
9 session optional pam_keyinit.so force revoke
10 session required pam_loginuid.so
11 session include system-auth
12 session optional pam_console.so
13 # pam_selinux.so open should only be followed by sessions to be executed in the user context
14 session required pam_selinux.so open
----------------------------
[root@xu ~]# vim /etc/pam.d/system-auth
1 #%PAM-1.0
2 # This file is auto-generated.
3 # User changes will be destroyed the next time authconfig is run.
4 auth required pam_env.so --------环境变量
5 auth sufficient pam_unix.so nullok try_first_pass -pam_nologin.so-第一次输入密码以后 往后第二次在验证他会尝试输入第一次的密码
6 auth requisite pam_succeed_if.so uid >= 500 quiet 安静
7 auth required pam_deny.so 拒绝模块
8
9 account required pam_unix.so --------只管 shadow 的前俩列
10 account sufficient pam_succeed_if.so uid < 500 quiet
11 account required pam_permit.so
12
13 password requisite pam_cracklib.so try_first_pass retry=3
14 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_a uthtok
15 password required pam_deny.so
16
17 session optional pam_keyinit.so revoke
18 session required pam_limits.so
19 session [success=1 default=ignore] pam_succeed_if.so service in crond qu iet use_uid
20 session required pam_unix.so
--------------------------
用户不需要密码
[root@xu /]# vim /etc/pam.d/login
设置用户名密码 如果成功直接通过 这个模块
2 auth sufficient pam_permit.so
7account sufficient pam_permit.so
---------------------------------
pam_access.so 访问控制模块
每个模块最后有这个提示
6.1.4. MODULE SERVICES PROVIDED
All services are supported. ---------旨的是auth account passwd session这里面都支持这个模块
vim /etc/pam.d/login
4 auth requisite pam_access.so
+代表 授权访问 -代表拒绝访问
vim /etc/security/access.conf
-: user1 : tty3
-: all : 192.168.1.0
----------------
pam_time.so 时间控制模块
vim /etc/pam.d/login
9 account required pam_time.so
格式
services;ttys;users;times
[root@xu /]# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200 user1 1点到两点才能登录
login ; tty3 ; user1 ; all
sshd ; * ; * ; al0100-0200
------------
pam_echo.so 打印文本信息
[root@xu ~]# cat > hello.txt <<EOF
> eeeeeeeeeeeee
> EOF
vim /etc/pam.d/login
4 auth optional pam_echo.so file=/root/hello.txt
-------------------------
注意 顺序问题 优先第一个起作用
模块是否支持
前两类的关系
本文出自 “history_xcy” 博客,请务必保留此出处http://historys.blog.51cto.com/7903899/1295252
PAM 身份验证 及插即用 验证 模块
[root@xu /]# ldd /usr/sbin/sshd --------查看一个程序在运行的时调用那些库文件
[root@xu /]# ldd `which sshd` | grep pam
libpam.so.0 => /lib/libpam.so.0 (0x008ae000)
[root@xu /]# ls /lib/security/------pam所有功能插件
[root@xu /]# ls /etc/pam.d/-------一个程序使用什么pam模块 怎么使用都在这里
[root@xu /]# firefox /usr/share/doc/pam-0.99.6.2/html/Linux-PAM_SAG.html -----pam的配置手册
6.11 是用方法
6.25 是限制 描述
6.6 设置环境变量
-----------------------------
以login 为例子 怎么用的pam
pam 的难点 前俩列的关系
一个用户能不能验证成公 能不能登录进去 取决于前俩个 (auth account )
日志信息
tail -f /var/log/secure
第一列
auth ---- 管理用户名密码
account ---- 除用户名密码以外的对登录起取决性的其他因素条件(列如 某个时间断 某个网段)
password ----当用户对密码进行操作的时候用到他 (不该密码就没他什么事情)
session------- 进行会话的时候用到的 (当我打开一个程序的时候相当于建立了一次连接会话)
第二列
required ------ 必要条件 针对模块(模一个条件必须要成功,如果失败了 还继续往下执行,但是最终百分之百失败)
requisite----- 必要条件 针对模块(模块必须验证成功 如果失败了 ,停止验证 如果成功 继续走,看以后的 )
sufficient----- 充分条件 针对模快(如果一个模块成功 立即返回成功 如果失败 (忽略不计对最终结果不受影响))
otional--- - 可选条件 针对模块 (不管模块验证成功 失败 对最终结果没有影响)
include-------包含条件 针对文件( 不同模块调用相同的条件 把条件作一个公共文件) 跳过来之后只读相同类型的
-------------------------------------------
[root@xu ~]# cat /etc/shadow | grep user1
user1:!$1$hSYfRFbq$ST2mHoyu38nnvPx/kDMv90:15781:0:99999:7:::
auth 管的是前俩列
account 管的是 后面的
-----------------------------------------
第三行 模快 (第三行没有跳转的就是模块在手册里查是什么功能 如果跳转了就去看跳转的那个公共文件里对应的模块是什么功能)
login 配置文件里的模块
pam_securetty.so 安全的tty模块 -------对应的配置文件vim /etc/securetty 只有这里的终端 才是安全的终端
pam_nologin.so 阻止非管理员登录的模块 --- touch /etc/nologin 文件 所有普通帐号就不能登录
pam_access.so 访问控制模块
pam_time.so 时间控制模块
pam_echo.so 打印文本信息
auth 跳转文件里的模块
pam_env.so 设置环境变量模块 -------对应的配置文件 vim /etc/security/pam_env.conf 在这里设置环境变量
pam_unix.so 验证用户名密码模块 --pam核心模块负责passwd 找用户名 在shadow 里找密码的模块,在这里他验证的是前面的两行
pam_succeed_if.so uid >= 500 quiet(安静模式 不记录到日志) 判断是否成功的模块 判断uid 是否大于等于500
pam_deny.so 永远拒绝模块
account 跳转文件里的模块
pam_unix.so 验证用户名密码模块 ------这里他验证的是后面的
pam_permit.so 永远允许的模块
-------------------------------------------
login 的pam配置文件
[root@xu /]# vim /etc/pam.d/login
1 #%PAM-1.0
未知用户忽略
2 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securett(模块) y.so--以前的语法 必要条件
第一行只针对管理员模块 只针对管理员生效 模块不会验证普通用户vim /etc/securetty----只有这里的终端 才是安全的终端
3 auth include system-auth(公共文件) 跳转 vim /etc/pam.d/system-auth 里对应的配置
4 account required pam_nologin.so 必要条件 这个模块让你找 touch /etc/nologin 文件 所有普通帐号不能登
5 account include system-auth 继续跳转 vim /etc/pam.d/system-auth 里caaount对应的文件
6 password include system-auth
7 # pam_selinux.so close should be the first session rule
8 session required pam_selinux.so close
9 session optional pam_keyinit.so force revoke
10 session required pam_loginuid.so
11 session include system-auth
12 session optional pam_console.so
13 # pam_selinux.so open should only be followed by sessions to be executed in the user context
14 session required pam_selinux.so open
----------------------------
[root@xu ~]# vim /etc/pam.d/system-auth
1 #%PAM-1.0
2 # This file is auto-generated.
3 # User changes will be destroyed the next time authconfig is run.
4 auth required pam_env.so --------环境变量
5 auth sufficient pam_unix.so nullok try_first_pass -pam_nologin.so-第一次输入密码以后 往后第二次在验证他会尝试输入第一次的密码
6 auth requisite pam_succeed_if.so uid >= 500 quiet 安静
7 auth required pam_deny.so 拒绝模块
8
9 account required pam_unix.so --------只管 shadow 的前俩列
10 account sufficient pam_succeed_if.so uid < 500 quiet
11 account required pam_permit.so
12
13 password requisite pam_cracklib.so try_first_pass retry=3
14 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_a uthtok
15 password required pam_deny.so
16
17 session optional pam_keyinit.so revoke
18 session required pam_limits.so
19 session [success=1 default=ignore] pam_succeed_if.so service in crond qu iet use_uid
20 session required pam_unix.so
--------------------------
用户不需要密码
[root@xu /]# vim /etc/pam.d/login
设置用户名密码 如果成功直接通过 这个模块
2 auth sufficient pam_permit.so
7account sufficient pam_permit.so
---------------------------------
pam_access.so 访问控制模块
每个模块最后有这个提示
6.1.4. MODULE SERVICES PROVIDED
All services are supported. ---------旨的是auth account passwd session这里面都支持这个模块
vim /etc/pam.d/login
4 auth requisite pam_access.so
+代表 授权访问 -代表拒绝访问
vim /etc/security/access.conf
-: user1 : tty3
-: all : 192.168.1.0
----------------
pam_time.so 时间控制模块
vim /etc/pam.d/login
9 account required pam_time.so
格式
services;ttys;users;times
[root@xu /]# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200 user1 1点到两点才能登录
login ; tty3 ; user1 ; all
sshd ; * ; * ; al0100-0200
------------
pam_echo.so 打印文本信息
[root@xu ~]# cat > hello.txt <<EOF
> eeeeeeeeeeeee
> EOF
vim /etc/pam.d/login
4 auth optional pam_echo.so file=/root/hello.txt
-------------------------
注意 顺序问题 优先第一个起作用
模块是否支持
前两类的关系
本文出自 “history_xcy” 博客,请务必保留此出处http://historys.blog.51cto.com/7903899/1295252
相关文章推荐
- Linux系统安全之pam后门安装使用详解
- linux高级安全ssh限制利用PAM
- Linux使用PAM锁定多次登陆失败的用户(含重置错误次数)
- Linux使用SSH安全登录
- linux安全和加密之SSL\TLS协议、CA、openssl的概述和使用
- linux下高级SSH安全技巧
- 在Linux下使用TCP封装器来加强网络服务安全
- 使用高级安全Windows防火墙控制应用程序流量
- linux工具之curl与wget高级使用
- 基于Linux安全验证添加自定义PAM模块
- Linux安全之——Ubuntu的iptable命令使用
- Linux使用PAM锁定多次登陆失败的用户(含重置错误次数)
- linux高级工具命令(三)使用gprof和oprofile查找性能瓶颈
- Linux服务器登陆安全设置,并使用ssh keys登陆
- linux下使用apache+svn+ssl配置安全版本控制平台
- Unix高级安全设置第三部分-LINUX系列
- linux 使用不安全的sprintf函数,存储字符越界导致程序莫名崩溃问题
- Linux 下使用 TCP 封装器来加强网络服务安全的技巧
- 高级Linux安全管理技巧?
- linux 下安全地使用rm命令