当前位置:首页 » 密码管理 » pam加密

pam加密

发布时间: 2023-03-31 16:15:06

linux认证的概念

Linux认证的概念

RHCA(Red Hat Certified Architect),是RedHat公司在2004年推出的顶级认证,也是Linux界公认的操作系统最高级认证。下面是我整理的关于Linux认证的概念,欢迎大家参考!

Linux用户认证方法简介

当今IT环境中,任何计算机系统都要充分考虑设计、使用和运行过程中的安全性。所以在目前主流操作系统的各个环节当中都增加了很多安全方面的功能和特性,而在众多的安全特性和功能中有相当多的技术是确保用户鉴别和身份认证方面的安全性的。

所谓用户鉴别,就是用户向系统以一种安全的方式提交自己的身份证明,然后由系统确认用户的身份是否属实的过程。换句话说,用户鉴别是系统的门户,每个用户进入到系统之前都必须经过鉴别这一道关。 而所谓认证安全,简而言之就是计算机系统确认了用户是经过授权的合法用户之后才能允许访问。安全认证最常用的方式是比对用户输入和预存于数据库中的密码。

不过在用户进行身份鉴别和安全认证的过程中,肯定会涉及几个核心问题。例如:

如何真正实现正确鉴别用户的真实身份?

在鉴别用户合法身份之后,如何确定用户可以对哪些资源进行访问?

如何控制用户以何种方式来访问计算机资源?

如何对用户的安全访问随时随地按需调整?

上述这些问题都是在设计鉴别和认证程序过程中需要充分考虑和精心设计的。而在Linux类的操作系统中,这些问题的处理实际上有一套完整的流程和机制。

在Linux类的操作系统中,最初用户鉴别过程就像各种Unix操作系统一样:系统管理员为用户建立一个帐号并为其指定一个口令,用户用此指定的口令登录之后重新设置自己的口令,这样用户就具有了一个只有它自己知道的口令或者密码。一般情况下,用户的身份信息在Linux系统中存放在/etc/passwd文件当中,这实际上是一个拥有简单格式的数据库表,通过":"作为分隔符分隔出多个字段,其中包括用户的名称、用户ID、组ID、用户说明、主目录和登录使用的shell等相关信息。而用户口令经过加密处理后存放于/etc/shadow 文件中。也是一个格式类似的数据库表,除了用户名和经过加密之后的密码之外,还包括多个对密码有效期进行定义的字段,包括密码有效时间、密码报警时间等。

用户登录的时候,登录服务程序提示用户输入其用户名和口令,然后将口令加密并与/etc/shadow 文件中对应帐号的加密口令进行比较,如果口令相匹配,说明用户的身份属实并允许此用户访问系统。这种思想基于只有用户自己知道它的口令,所以输入的口令是正确的话,那么系统就认定它是所声称的那个人。

在Linux类操作系统中,定义用户信息和密码信息的字段和格式都需要符合标准的Linux Naming Service Switch定义,即NSS定义。因此用户信息只要保证满足NSS规范,就可以来源于本地passwd和shadow之外的其它信息数据库和认证源。所以在此基础上还派生出一些其它认证解决方案。例如NIS、LDAP等,都可作为存放用户信息的数据库,而存放用户口令或者鉴别用户身份的数据库,可以采用专用于网络环境的Kerberos以及智能卡鉴别系统等方式。

这一整套的鉴别和认证方案貌似无懈可击,但是将这种解决方案真正应用到操作系统中的话就会发现一些问题:

第一,在操作系统上所包含的认证不仅仅只涉及到系统登录和访问,在系统外围往往提供了众多的应用程序,相当多的应用程序在访问过程中是有认证需求的。那么是否需要针对每一个应用程序都得加入认证和鉴别的功能?如果要,那么无论从程序的开发和使用管理角度来讲,工作量都将成倍增加;如果不要,则系统级的用户鉴别和安全认证与应用程序没有任何关系,意味着不管用户是否需要登录系统,但是对应用程序的访问都将缺乏最基本的安全性。

第二,如果针对每一个应用程序都开发用户鉴别和认证的功能,那么一旦发现所用的.算法存在某些缺陷或想采用另一种鉴别和认证方法时,开发者或者用户都将不得不重写(修改或替换)应用程序,然后重新编译原程序。

所以,尤其是当实现鉴别功能的代码以通常方法作为应用程序一部分一起编译的时候,上述问题将十分突出。很明显,传统的身份鉴别和用户认证方式一旦整合到实际的操作系统中,在实用当中缺乏灵活性。

鉴于以上原因,Linux操作系统的开发者和设计人员开始寻找一种更佳的替代方案:一方面,将鉴别功能从应用中独立出来,单独进行模块化的设计,实现和维护;另一方面,为这些鉴别模块建立标准的应用程序接口即API,以便众多的应用程序能方便地使用它们提供的各种功能;同时,鉴别机制对上层用户(包括应用程序和最终用户)要求一定要是透明的,这样可以对使用者隐藏其中比较复杂的实现细节。

可插拔认证模块PAM的基本概念

事实上直到1995年的时候,SUN的研究人员才提出了一种满足以上需求的方案,这就是可插拔认证模块(Pluggable Authentication Mole--PAM)机制,并首次在其操作系统 Solaris 2.3上部分实现。

可插拔认证模块(PAM)机制采用模块化设计和插件功能,使用户可以轻易地在应用程序中插入新的认证模块或替换原先的组件,同时不必对应用程序做任何修改,从而使软件的定制、维持和升级更加轻松。因为认证和鉴别机制与应用程序之间相对独立。所以应用程序可以通PAM API来方便地使用PAM提供的各种鉴别功能而不必了解太多的底层细节。此外PAM的易用性也较强,主要表现在它对上层屏蔽了鉴别和认证的具体细节,所以用户不必被迫学习各种各样的鉴别方式,也不必记住多个口令;又由于它实现了多鉴别认证机制的集成问题,所以单个程序可以轻易集成多种鉴别机制,如Kerberos和Diffie - Hellman等认证机制,但用户仍可以用同一个口令登录而且感觉不到采取了各种不同的鉴别方法。

在广大开发人员的努力下,各版本的UNIX系统陆续增加和提供了对PAM应用的支持。其中Linux-PAM是专门为Linux操作系统实现的,众多的Linux操作系统包括Caldera、Debian、Turbo、Red Hat、SuSE 及它们的后续版本都提供对PAM的支持。而FreeBSD从3.1版本也开始支持PAM。而且除了具体实现方法上多少有些不同外,各种版本Unix系统上PAM的框架是相同的。所以我们在这里介绍的Linux的PAM框架知识具有相当的普遍性,而且在下文介绍其框架过程中可以看到,我们并没有刻意区分Unix PAM与Linux PAM这两个技术术语。

PAM的分层体系结构

PAM 为了实现其插件功能和易用性,采取了分层设计思想。就是让各鉴别模块从应用程序中独立出来,然后通过PAM API作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中"插入"所需要的鉴别功能模块,从而真正实现了在认证和鉴别基础上的随需应变。实际上,这一思路也非常符合软件设计中的"高内聚,低耦合"这一重要思想。

PAM 的体系如下简图所示:

从上面的结构图可以看出,PAM 的API起着承上启下的作用,它是应用程序和认证鉴别模块之间联系的纽带和桥梁:当应用程序调用PAM API 时,应用接口层按照PAM配置文件的定义来加载相应的认证鉴别模块。然后把请求(即从应用程序那里得到的参数)传递给底层的认证鉴别模块,这时认证鉴别模块就可以根据要求执行具体的认证鉴别操作了。当认证鉴别模块执行完相应的操作后,再将结果返回给应用接口层,然后由接口层根据配置的具体情况将来自认证鉴别模块的应答返回给应用程序。

上面描述了PAM的各个组成部分以及整体的运作机理。下面将对PAM中的每一层分别加以介绍。

第一层:模块层。模块层处于整个PAM体系结构中的最底层,它向上为接口层提供用户认证鉴别等服务。也就是说所有具体的认证鉴别工作都是由该层的模块来完成的。对于应用程序,有些不但需要验证用户的口令,还可能要求验证用户的帐户是否已经过期。此外有些应用程序也许还会要求记录和更改当前所产生的会话类的相关信息或改变用户口令等。所以PAM在模块层除了提供鉴别模块外,同时也提供了支持帐户管理、会话管理以及口令管理功能的模块。当然,这四种模块并不是所有应用程序都必需的,而是根据需要灵活取舍。比如虽然login可能要求访问上述所有的四种模块,但是su可能仅仅需要使用到鉴别模块的功能即可。至于如何取舍则涉及到接口层的PAM API和配置文件,这部分内容将在后文中加以介绍。

第二层:应用接口层。应用接口层位于PAM结构的中间部分,它向上为应用程序屏蔽了用户鉴别等过程的具体细节,向下则调用模块层中的具体模块所提供的特定服务。由上图可以看出,它主要由PAM API和配置文件两部分组成,下面将逐一介绍。

PAM API可以分为两类:一类是用于调用下层特定模块的接口,这类接口与底层的模块相对应,包括:

鉴别类接口:pam_authenticate()用于鉴别用户身份,pam_setcred()用于修改用户的私密信息。

帐号类接口:pam_acct_mgmt()用于检查受鉴别的用户所持帐户是否有登录系统许可,以及该帐户是否已过期等。

会话类接口:包括用于会话管理和记帐的 pam_open_session()和 pam_close_session()函数。

口令类接口:包括用于修改用户口令的 pam_chauthtok()。

第二类接口通常并不与底层模块一一对应,它们的作用是对底层模块提供支持以及实现应用程序与模块之间的通信等。具体如下:

管理性接口: 每组 PAM 事务从 pam_start()开始,结束于 pam_end()函数。接口 pam_get_item()和 pam_set_item()用来读写与 PAM 事务有关的状态信息。同时,能够用 pam_str()输出 PAM 接口的出错信息。

应用程序与模块间的通讯接口:在应用程序初始化期间,某些诸如用户名之类的数据可以通过 pam_start()将其存放在PAM接口层中,以备将来底层模块使用。另外底层模块还可以使用 pam_putenv()向应用程序传递特定的环境变量,然后应用程序利用pam_getenv()和pam_getenvlist()读取这些变量。

用户与模块间的通讯接口:pam_start()函数可以通过会话式的回调函数,让底层模块通过它们读写模块相关的鉴别信息,比如以应用程序所规定的方式提示用户输入口令。

模块间通讯接口:尽管各模块是独立的,但是它们仍然能够通过pam_get_item()和pam_set_item()接口共享某些与鉴别会话有关的公用信息,诸如用户名、服务名、口令等。此外,这些API还可以用于在调用pam_start()之后,让应用程序修改状态信息。

读写模块状态信息的接口:接口pam_get_data()和pam_set_data()用以按照PAM句柄要求访问和更新特定模块的信息。此外,还可以在这些模块后附加一个清除数据函数,以便当调用 pam_end()时清除现场。

由于 PAM 模块随需加载,所以各模块始化任务在第一次调用时完成。如果某些模块的清除任务必须在鉴别会话结束时完成,则它们应该使用 pam_set_data()规定清除函数,这些执行清除任务的函数将在应用程序调用 pam_end()接口时被调用。

;

❷ Linux服务器的安全防护都有哪些措施

一、强化密码强度
只要涉及到登录,就需要用到密码,如果密码设定不恰当,就很容易被黑客破解,如果是超级管理员(root)用户,如果没有设立良好的密码机制,可能给系统造成无法挽回的后果。
很多用户喜欢用自己的生日、姓名、英文名等信息来设定,这些方式可以通过字典或者社会工程的手段去破解,因此建议用户在设定密码时,尽量使用非字典中出现的组合字符,且采用数字与字符、大小写相结合的密码,增加密码被破译的难度。
二、登录用户管理
进入Linux系统前,都是需要登录的,只有通过系统验证后,才能进入Linux操作系统,而Linux一般将密码加密后,存放在/etc/passwd文件中,那么所有用户都可以读取此文件,虽然其中保存的密码已加密,但安全系数仍不高,因此可以设定影子文件/etc/shadow,只允许有特殊权限的用户操作。
三、账户安全等级管理
在Linux操作系统上,每个账户可以被赋予不同的权限,因此在建立一个新用户ID时,系统管理员应根据需要赋予该账号不同的权限,且归并到不同的用户组中。每个账号ID应有专人负责,在企业中,如果负责某个ID的员工离职,该立即从系统中删除该账号。
四、谨慎使用"r"系列远程程序管理
在Linux操作系统中,有一系列r开头的公用程序,如rlogin、rcp等,非常容易被不法分子用来攻击我们的系统,因此千万不要将root账号开放给这些公用程序,现如今很多安全工具都是针对此漏洞而设计的,比如PAM工具,就可以将其有效地禁止掉。
五、root用户权限管理
root可谓是Linux重点保护对象,因为其权利是最高的,因此千万不要将它授权出去,但有些程序的安装、维护必须要求是超级用户权限,在此情况下,可以利用其他工具让这类用户有部分超级用户的权限。sudo就是这样的工具。
六、综合防御管理
防火墙、IDS等防护技术已成功应用到网络安全的各个领域,且都有非常成熟的产品,需要注意的是:在大多数情况下,需要综合使用这两项技术,因为防火墙相当于安全防护的第一层,它仅仅通过简单地比较IP地址/端口对来过滤网络流量,而IDS更加具体,它需要通过具体的数据包(部分或者全部)来过滤网络流量,是安全防护的第二层。综合使用它们,能够做到互补,并且发挥各自的优势,最终实现综合防御。
酷酷云服务器为您诚意解答,服务器租户的选择,酷酷云值得信赖。

❸ 通信原理里PAM和PCM的区别及联系

1、编码不同:

用采样脉冲幅度反映被测参量的方法称为脉冲幅度调制( PAM),用一组编码脉冲来反映被测参量,则被称为脉冲编码调制 ( PCM)。

2、量化不同:

用脉冲幅度表达信号的强弱,但是PCM是已经量化的数据,而PAM还没有量化。离散信号经过量化归属到个档次的幅度中比如我们有2V,4V,6,V,8V四个档次的归类,并且规定1V~3V之间的PAM离散信号就归类到2V的档次中去,一次类推,通过比较给每个PAM信号进行归类,这就是量化。

3、表示不同:

将量化了的信号进行编码,编码是一种认为规定的过程比如我们规定2V用00表示,4V用01表示,6V用10表示,而8V用11来表示,这样就把阶梯信号和二进制信号有了一种对应关系,顺着这种对应关系,可以得到刚才量化了的信号的二进制代码,这就是PCM编码得到了可以在存储器中存储的数字信号。

4、处理不同:

平时要求的转换比特率的求法可以从它的转换过程得出计算方法。一个PAM信号对应一个档次,而一个档次对应几个比特的数字是在编码中体现的,例子中就是一个档次对应两个比特,假设这种对应关系是1对N个比特,对模拟信号的采样率是F,也就是1秒钟有F个PAM信号,这F个PAM信号就要被转换成F*N个比特,所以比特率就是F*N了。

对于完成转换的数字信号,我们如何处理呢?有的是被放进存储器中存储了,有的是到CPU中进行计算,加密等处理了。

❹ 安全计算环境linux-身份鉴别技术 2021-03-06

安全计算环境linux- 身份鉴别 技术

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换

要求解读

Linux系或统的用户鉴别过程与其他UNIX系统相同:系统管理员为用户建立一个账户并为其指定一个口令,用户使用指定的口今登录后重新配置自己的自已的口令,这样用户就具备一个私有口令。etc/password文件中记录用户的属性信息,包括用户名、密码、用户标识、组标识等信息。现在Linux系统中不再直接保存在/etc/password文件中,通常将password文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然,shadow文件是不能被普通用户读取的,只有超级用户才有权读取。

Linux中的/etc/login.defs是登录程序的配置文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。如果/etc/pam.d/system-auth文件里有相同的选项,则以/etc/pam.d/system-auth里的设置为准,也就是说/etc/pam.d/system-aut的配置优先级高于/etc/login.defs。

Linux系统具有调用PAM的应用程度认证用户。登示服务、屏保等功能,其中一个重要的文件使是etc/pam.d/system-auth(在Kedhat Cent0s 和Fedora系上)。/etc/pam.d/system-auth或/etc/login.defs中的配置优先级高于其他地方的配置。

另外,root用户不受pam认证规则的限制,相关配置不会影响root用户的密码,root用户可以随意设置密码的。login.defs文件也是对root用户无效的。

测评方法

1)访谈系统管理员系统用户是否已设置密码,并查看登录过程中系统账户是否使用了密码进行验证登录。

2)以有权限的账户身份登录操作系统后,使用命令more查看/etc/shadow文件,核查系统是否存在空口令账户

3)使用命令more查看/etc/login. defs文件,查看是否设置密码长度和定期更换要求

#more /etc/login. defs

使用命令more查看/etc/pam.d/system-auth文件。查看密码长度和复杂度要求

4)检查是否存在旁路或身份鉴别措施可绕过的安全风险

预期结果和主要证据

1)登录需要密码

2)不存在空口令账户

3)得出类似反馈信息,如下:

PASS MAX_DAYS 90 #登录密码有效期90天

PASS MIN_DAYS 0 #登录密码最短修改时间,增加可以防止非法用户短期更改多次

PASS MIN_LEN 7 #登录密码最小长度7位

PASS WARN_AGE 7 #登录密码过期提前7天提示修改

4)不存在绕过的安全风险

b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施

要求解读

Linux系统具有调用PAM的应用程度认证用户、登录服务、屏保等功能,其中一个重要的文件便/etc/pam.d/system-auth ,Redhat5以后版本使用pam_tally2.so模块控制用户密码认证失败的次数上限,可以实现登录次数、超时时间,解锁时间等。

着只是针对某个程序的认证规则,在PAM目录(/etc/pam d)下形如sshd、login 等等的对应各程序的认证规则文件中进行修改。若所有密码认证均应用规则, 可直接修改system_auth文件

测评方法

1)系统配置并启用了登录失败处理功能

2)以root身份登录进入Linux, 查看文件内容:

# cat /ete/pam.d/system -auth或根据linux版本不同在common文件中

3)查看/etc/profile中的TIMEOUT环境变量,是否配置超时锁定参数

预期结果和主要证据

得出类似反馈信息,如下:

1)和2)查看登录失败处理功能相关参数,/etc/pam.d/system—auth文件中存在"account required /lib/security/pam_tally.so deny=3

no_ magic root reset" ;

3)记录在文件/etc/profile中设置了超时锁定参数,在profile下设置TMOUT= 300s

c) 当进行远程管理时,应采取必要措施、防止鉴别信息在网络传输过程中被窃听

要求解读

  Linux提供了远程访问与管理的接口,以方便管理员进行管理操作,网络登录的方式也是多样的,例如可以使用Telnet登录,也可以使用SSH登录。但是,Telnet不安全。I因为其在教据传输过程中,账户与密码均明文传输,这是非常危险的。黑客通过一些网络对嗅探工是能够轻易地的窃取网络中明文传输的账户与密码,因此不建议通过Telnet协议对服务器进行远程管理。针对Telnet协议不安全这种情况,可以在远程登录时使用SSH协议。其原理跟Telnet类似,只是其具有更高的安全性。SSH是一个运行在传输控制层上的应用程序,与Telnet相比,它提供了强大的认证与加密功能,可以保证在远程连接过程中,其传输的数据是加密处理过的。因此保障了账户与口令的安全

测评方法

  访谈系统管理员,进行远程管理的方式。

1)以root身份登录进入Linux查看是否运行了sshd服务,service - status-all | grep sshd

查看相关的端口是否打开,netstat -an|grep 22

若未使用SSH方式进行远程管理,则查看是否使用了Telnet 方式进行远程管理

service - -status-all|grep running,查看是否存在Telnet服务

2)可使用wireshark等抓包工具,查看协议是否为加密

3)本地化管理,N/A

预期结果和主要证据

1)使用SSH方式进行远程管理,防止鉴别信息在传输过程中被窃听,Telnet默认不符合

2)通过抓包工具,截获信息为密文,无法读取,协议为加密

3) N/A本地管理

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

解读

对于第三级及以上的操作系统要求采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

测评方法

访谈和核查系统管理员在登录操作系统的过程中使用了哪些身份鉴别方法,是否采用了两种或两种以上组合的鉴别技术,如口令教字证书Ukey、令牌、指纹等,是否有一种鉴别方法在鉴别过程中使用了密码技术

预期结果和主要证据

除口令之外,采用了另外一种鉴别机制,此机制采用了密码技术,如调用了密码机或采取SM1-SM4等算法

热点内容
安卓手游脚本语言 发布:2025-05-17 19:53:07 浏览:21
找圈算法 发布:2025-05-17 19:49:19 浏览:410
数据库的存取方法 发布:2025-05-17 19:48:36 浏览:125
androidapp测试 发布:2025-05-17 19:48:19 浏览:389
如何修改iphone密码修改 发布:2025-05-17 19:47:31 浏览:509
发现了致富密码是什么意思 发布:2025-05-17 19:45:42 浏览:416
耐存储的纸 发布:2025-05-17 19:43:35 浏览:931
java什么是栈 发布:2025-05-17 19:28:58 浏览:499
开拓者交易云服务器配置 发布:2025-05-17 19:19:47 浏览:12
编程2e8 发布:2025-05-17 19:19:04 浏览:420