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

安全计算环境linux-身份鉴别技术 2021-03-06,第1张

安全计算环境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= 300sc) 当进行远程管理时,应采取必要措施、防止鉴别信息在网络传输过程中被窃听 要求解读   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等算法

Linux认证的概念

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

Linux用户认证方法简介

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

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

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

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

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

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

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

上述这些问题都是在设计鉴别和认证程序过程中需要充分考虑和精心设计的。而在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 Module--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()接口时被调用。

建议 *** 作系统对登录的用户进行身份标识和鉴别,身份鉴别信息配置复杂度要求开启定期更换策略,避免使用弱口令,至少包含字母和数字,密码长度至少8位。密码最长适用90天,5次内不重复

整改方案:

对于密码的强度要求可以修改system-auth文件,vim /etc/pam.d/system-auth,修改如下:

建议 *** 作系统开启登录失败处理功能配置登录失败5次及锁定时间30分钟;

参数含义: 密码错误 5 次锁定 1800 秒

建议 *** 作系统对登录的用户分配账户和权限;

整改方案:

命令如下:

建议 *** 作系统启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;

整改方案:

建议 *** 作系统启用安全审计功能审计记录包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;

整改方案:

建议 *** 作系统启用安全审计功能并部署日志审计系统并对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;

整改方案:

建议 *** 作系统启用安全审计功能对审计进程进行保护,防止未经授权的中断,限制除审计员外的审计控制权限。

整改方案:

建议 *** 作系统遵循最小安装的原则,仅安装需要的组件和应用程序;

整改方案:

按照部署方案,删除每台机器上多余的应用即可。

建议 *** 作系统关闭不需要的系统服务、默认共享和高危端口,如FTP、DHCP等不必要服务

整改方案:

通过设定终端接入方式、网络地址范围等条件限制终端登录

需要登录虚拟机执行如下两句话才能ssh连接:

开机执行脚本


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8077041.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存