一.Linux身份验证

1.用户与系统管理员

    >用户分为系统管理员与普通管理用户两大类。

           >每个用户在系统中都有唯一的用户名,是用户使用系统的凭证。

    >系统管理员(System Manager) 又称之为超级用户,账号为"root",也叫根用户,拥有系统操作最高行使权。

        >在系统中具有最高权限,主要负责系统管理工作。

    >普通用户的账号可以随意取,通常的要求是不能以数字和下划线作为第一个字符。

    >每个用户除了有个人用户身份外,多个用户可以组成用户组。

        >同一个用户组的用户都享有组的权限

    >无论是用户还是用户组,Linux系统都会分配一个唯一的识别码。

        >用户识别码为UserID,用户组识别码为GroupID。

2.进入与退出系统

    >用户通过用户帐号和用户密码进入操作系统。
    >进入系统有两种方式远程登录进入和本地直接进入。

>无论哪种方式当Linux准备好可以允许登入时用户屏幕显示系统提示符“login:”此时用户在“login”后输入用户帐号。

>在用户正确输入用户帐号后出现“passwd:”此时用户在“passwd:”后输入用户密码。

 >如果用户帐号和用户密码准确无误则成功进入系统出现系统提示符“$”或“%”
    >如果是超级用户则出现系统提示符“#”

>Linux不会给出候选用户,以免别人猜测你的密码。

>Linux不会显示密码输入的反馈,这样其他人看不到你输入了多少位的密码。

>处于安全考虑,如果你是远程连接,不正确的登录次数太多,大部分系统会断开连接。

>用户名和密码必须区分大小写。

>在Linux系统中每支持一个用户远程登录会消耗系统1MB左右的内存,

>用户退出系统可以将消耗的内存归还,还可以避免系统记帐日志继续记录,以及用户帐号被他人利用用     户文件遭到破坏等现象的发生。
    >退出系统的方法:
       > "exit"、"logout"或"Ctrl-D键"。
       >用户退出系统后出现“login:”供用户再次进入系统使用。
       >注意exit、logout、Ctrl-D三种退出方式的区别是logout是用户这次使用环境注销exit和Ctrl-D是退出这次特定的Shell进程

/etc/passwd用户数据文件格式详解:

/etc/passwd的影子文件/etc/shadow文件格式详解:

1.“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2.“口令”字段存放的是加密后的用户口令字长度为13个字符。如果为空则对应用户没有口令登录时不需要口令,如果含有不属于集合{./0-9A-Za-z}中的字符则对应的用户不能登录。
3.“最后一次修改时间”表示的是从某个时刻起到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在Linux中这个时间起点是1970年1月1日。
4.“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5.“最大时间间隔”指的是口令保持有效的最大天数。
6.“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7.“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8.“失效时间”字段给出的是一个绝对的天数如果使用了这个字段那么就给出相应账号的生存期。期满后该账号就不再是一个合法的账号也就不能再用来登录了。

Linux PAM验证机制

UNIX环境下的身份验证机制一直就是简单地把用户和他们在/etc/passwd文件里的配置项关联起来而已。很多鉴别功能模块都有一个缺陷实现鉴别功能的代码通常作为应用程序的一部分而编译。这就直接导致了一个问题如果发现所用算法存在某些缺陷或者想用另一种鉴别方法时,用户将不得不重写(修改或者替换)然后重新编译源程序。为了改善这些问题人们开始思考其他的方法。至此嵌入式认证模块(Pluggable Authentication Modules)应运而生了。PAM即(Pluggable Authentication-Modules)可插入式身份验证模块最初是由Sun公司发明的Sun把它作为一种验证用户身份的灵活方法。Linux-PAM是一组共享库使用这些模块系统管理者可以自由选择应用程序使用的验证机制。也就是说勿需重新编译应用程序就可以切换应用程序使用的验证机制。甚至不必触动应用程序就可以完全升级系统使用的验证机制。

Linux-PAM的分层体系结构:

第一层模块层
模块层处于整个结构的最底层它向上为接口层提供
鉴别模块    auth         负责认证和授权
帐户管理    account    跟认证无关的账号检测机制
会话管理    session     建立之会之前或之后需要做一些侦测机制
口令管理    password 用户在修改密码时要完成的检测
第二层应用接口层
应用接口层位于PAM 结构的中间部分它向上为应用程序屏蔽了用户鉴别等过程的具体细节向下调用模块层中的具体模块所提供的特定服务。
一类是用于调用下层特定模块的接口这类接口与底层的模块相对应
鉴别类接口pam_authenticate用于鉴别用户pam_setcred用于修改用户的秘密信息。
帐号类接口pam_acct_mgmt检查受鉴别的用户所持帐户是否有权登陆系统以及该帐户是否已过期等。
会话类接口包括用于会话管理和记帐的pam_open_session和pam_close_session函数。
口令类接口包括用于修改用户口令的pam_chauthtok
第二类接口不与底层模块一一对应它们的作用是对底层模块提供支持及应用程序与模块之间的通信等。
管理性接口如事务从pam_start()开始结束于pam_end()函数。
应用程序与模块间的通讯接口:如:pam_putenv()
用户与模块间的通讯接:如:pam_start()。
模块间通讯接口尽管各模块是独立的,但是他们仍然能够通过pam_get_item()
读写模块状态信息的接口:如:接口pam_get_data()。

PAM配置文件:

>PAM库由本地的系统配置文件:

   >/etc/pam.d/目录下的一些配置文件来设置

>PAM文档的最详细的本地资料:

>/usr/share/doc/pam-1.1.1/txts/    详细的模块说明

># /usr/share/doc/pam-1.1.1/html/ PAM相关的说明

应用程序使用pam
对于需要使用PAM的程序需要在/etc/pam.d目录中为其设置配置文件。比如系统ftp服务vsftpd,它的PAM配置文件是:

/etc/pam.d/vsftpd

配置文件的语法
service-name module-type control-flag module-path arguments
Service-name为入口分配的服务名。常是给定应用程序的会话名。如vsftpd。
modle-type四种类型的模块auth account   session password
control-flag

required requisite sufficient optional
1、required

当使用此控制标志时当验证失败时仍然会继续进行其下的验证过程,它会返回一个错误信息,但是由于它不会由于验证失败而停止继续验证过程;因此用户不会知道是哪个规则项验证失败。
2、requisite

此控制标志与required的验证方式大体相似但只要某个规则项验证失败则立即结束整个验证过程并返回错误信息使用此关键字可以防止一些通过暴力猜解密码的***但是由于它会返回信息给用户它也有可能将系统的用户结构信息透露给***者配置
3、sufficient

只要有此控制标志的一个规则项验证成功那么PAM构架将会立即终止其后所有的验证并且不论其前面的required标志的项没有成功验证它依然将被忽略然后验证通过。
4、optional

表明对验证的成功或失败都是可有可无的所有的都会被忽略。(通常用于session类型)复杂的控制标志能够让管理员可以指定在验证过程中发生某种事件时可
以执行的动作。这些控制标志用方括号包括起来并由一系列的value=action 所构成每个值之间用空格分开。
第四列是Module-arguments

用来为引用的模块指定特殊的选项多个选项之间可以通过空格隔开还可在选项中使用""来输入嵌套的命令或字串当选项超过一行时用“\”符号连接下一行。

常见PAM模块

pam_securetty该模块用来控制root用户只可以从包含在/etc/securetty文件中的终端登录系统。

pam_shell认证模块如果用户的shell在/etc/shells中列出则允许用户进行验证如果/etc/passwd中没有指定shell则缺省使用/bin/sh。

综合案例应用:

1./etc/pam.d/sshd限制用户hadoop使用172.16.0.1的登陆

配置过程:
# vim /etc/pam.d/login
account    required     pam_access.so accessfile=/etc/system_login.conf
# vim /etc/system_login.conf
-:hadoop:172.16.0.1

2./etc/pam.d/suLinux系统下禁止非WHEEL用户使用su命令

配置过程:
方法1:wheel组也可指定为其它组,编辑/etc/pam.d/su添加如下两行
# vim /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel方法2:编辑/etc/pam.d/su将如下行#符号去掉
# vim /etc/pam.d/su
auth required pam_wheel.so use_uid #去掉注释启用
# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs #追加至最后一行

3./etc/pam.d/sshd禁止所有用户登陆系统

配置过程:
# vim /etc/pam.d/sshd
auth       required    pam_access.so    accessfile=/etc/sshd_login.conf
# vim /etc/sshd_login.conf
-:ALL:ALL

4.综合应用案例实现:

(1)只允许root从本地登录
(2)并且只允许samlee用户从172.16.100.8远程登录
(3)其他用户不允许登录本系统

配置过程:
# vim /etc/pam.d/sshd
auth       required    pam_access.so    accessfile=/etc/sshd_login.conf
# vim /etc/sshd_login.conf
+:root:LOCAL
+:samlee:172.16.100.8
-:ALL:ALL

以上是Linux用户安全及Linux PAM验证机制所有内容

转载于:https://blog.51cto.com/gzsamlee/1767883

Linux用户安全及Linux PAM验证机制相关推荐

  1. LINUX PAM验证机制

    一.PAM简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写和)重新编译一个包含PAM功能的应用程序,就可以改变它 ...

  2. linux+用户的shell,linux更换用户_更改linux用户登录shell的方法

    摘要 腾兴网为您分享:更改linux用户登录shell的方法,幸福钱庄,小学英语,我和你,万科物业等软件知识,以及光大app,视频解码包,dns修改软件,天天小说阅读器,微信跳一跳,企业管家,蚂蚁邦, ...

  3. linux用户权限简介,Linux用户及权限管理

    [文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...

  4. 退出linux用户登录命令,Linux系统中用户的登入登出命令详解

    loginlogin 命令:使用户放弃现在的使用的身份,重新登录系统.也可以在后面加入用户,在直接输入密码,登录系统 例: 复制代码 代码如下: [root@localhost test]# logi ...

  5. linux用户自动输入密码,Linux自动输入密码登录用户

    每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...

  6. linux系统用户和普通用户,适合普通Linux用户的五大Linux发行版

    有人经常问我的三个问题是: 我会推荐新用户使用哪些Linux发行版? 普通用户应该使用哪些Linux发行版(未必以那种方式来问,但大体雷同)? 我使用哪些Linux发行版? 我在本文中旨在回答第二个问 ...

  7. linux用户解锁pam_tally,Linux使用PAM锁定多次登陆失败的用户(含重置错误次数)...

    修改如下文件: /etc/pam.d/sshd    (远程ssh) /etc/pam.d/login    (终端) 在第一行下即#%PAM-1.0的下面添加: auth    required   ...

  8. linux用户恢复正常,Linux系统用户口令安全恢复方法

    Linux系统用户口令安全恢复方法 2007-09-07 eNet&Ciweek 有许多原因可能导致用户口令的遗失,这对系统管理员而言,可能不是一个问题,只要以root账号登录,再用passw ...

  9. Linux用户口令安全策略,Linux 控制用户口令安全策略

    一.控制用户口令长度.有效期 /etc/login.defs 文件主要是控制密码有效期的文件,密码的复杂度的判断是通过pam模块控制来实现的,具体的模块是pam_cracklib # vi /etc/ ...

最新文章

  1. 简述SHELL全局环境变量与局变环境变量
  2. COM中的IDL语言的难点之接口指针
  3. MacOS 安装monkey教程
  4. java比go难学_为什么Go比Java快这么多?看完这个例子就懂
  5. CBV装饰校验的三种方式session
  6. Weights and Measures(贪心+动态规划)
  7. LeetCode MySQL 1454. 活跃用户(连续dense_rank排名函数)
  8. php新闻删除功能设计,php原生开发新闻站之删除新闻
  9. PyTorch之torch.nn.CrossEntropyLoss()
  10. java接口自动化测试
  11. 【基因芯片】差异表达分析的基本原理与方法
  12. FileIO - java
  13. LED驱动芯片AiP650
  14. 分支定界法需要注意的是什么
  15. 周期函数的导数周期(含证明)
  16. 2022年研究一下PC微信 HOOK 技术(版本:3.4.5.27)
  17. PhpExcel读取Excel表格中的数据
  18. Oracle培训——学习笔记——目录
  19. 5.步进电机开发基本概念总结
  20. 《python编程快速上手 让繁琐工作自动化》第一章习题答案

热门文章

  1. 中国石油大学《钢结构》第二阶段在线作业
  2. 炸!1024我的故事,一个写了两年博客的大厂码农!
  3. Flyback Converter电源基本电路分析
  4. DNS预解析dns-prefetch是什么及怎么使用
  5. python练习题,使用爬虫爬取百度百科内置BeautifulSoup安装方法
  6. 管人管事必用的9个杀手锏
  7. 站长号文库:什么是云存储?
  8. 【真的】git pull --all 或 git fetch --all取到自己本地所有分支的最新内容
  9. 2016年各大安卓渠道最新商务合作通讯录
  10. OpenGL ES 实现实时音频的可视化