热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

浅析Linux的模块验证(1)

文章标题:浅析Linux的模块验证(1)。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  如今,更多的企业需要支持桌面Linux用户,尤其是名为高级用户(power user)的那类员工。Linux曾经是离经叛道的一种平台。尽管与一系列众多的网络与服务验证和访问机制兼容,并且能与微软Windows、Unix和Apple Macintosh等平台共享文件,但这种互操作性不是非常重要的一个因素。
  
  形势在变化。对企业环境的那些Linux用户而言,能够安全地与其他Linux用户和Windows用户共享文件仍意味着要为Linux记住一组口令,还要为其它平台记住一组口令。但现在有种比较好的办法:你可以将系统配置成Linux用户能够获得依托Windows NT Domain的安全验证。这样一来,用户就不需要Linux帐号和另一个NT Domain帐号。这将简化网络管理员的日常工作,使高级用户更满意。
  
  
  验证与帐号管理
  
  
  验证就是系统确认用户身份的过程。访问控制确定通过验证后允许什么。验证常与帐号联系在一起。所谓帐号一般就是与独特标识符相关的一系列信息。这种信息通常包括允许人们使用系统资源所需的数据。譬如,它提供了用户个人文件的位置或者是用户的实名。它可能包括环境变量和资源极限。我们主要着重于验证服务和协议。
  
  大多数新版本Linux使用了插入式验证模块(PAM),这是灵活验证的关键所在。PAM是一种ASP,目的在于使验证用户从而访问服务的过程模块化。它由Sun公司开发而成,应用于最新版本的Sun Solaris、IBM AIX、HP HP-UX和Apple Mac OS X,不过与各种免费操作系统结合使用最为广泛,包括Linux(尤其是Red Hat、Debian和SuSE)、FreeBSD和NetBSD。
  
  
  用于Red Hat的PAM
  
  
  我们将利用PAM系统介绍如何利用许多验证资源进行验证。但首先,不妨概述一下安装在Red Hat Linux 7.2系统上的PAM(同样技术应该适用于能够识别PAM的各种系统)。
  
  任何服务都可以使用PAM进行验证。服务只是代表用户进行验证应用的另一个名称而已,譬如login、FTP和POP。注意:若要使用PAM,必须专门编写服务。在Red Hat 7.2上,进行验证的所有应用都使用PAM。通过检查是否使用PAM库(libpam),就可以查明特定的可执行程序(如远程登录服务用来核查用户身份的login)是否可以使用PAM,方法就是输入“PAM库检查”图中所示的命令。注意:第二行就是指libpam。
   
  PAM库检查
  
  不过使问题稍稍复杂的是:即使某一应用可以通过PAM验证,不是说非这样不可,应用可以把这项功能作为配置选项。Samba和Apache都提供这功能,但并不一定要求使用PAM。
  
  对每种服务而言,/etc/pam.d/目录下有一个文件。该文件包含了这项服务如何获得验证和帐号信息的规则即指令,每行一条规则。"PAM服务配置样本"图显示了文件内容。
   
  PAM服务配置样本
  
  第三列的模块就是能够识别PAM的库,它可以实现某种验证机制。可选的第四列提供了验证模块变元。变化具有模块特定性,即随模块的不同而不同。模块就是执行用来确定规则允许还是拒绝访问的一种程序。
  
  PAM有四种模块:auth(验证)、account(帐号)、password(口令)和session(会话)。auth表明如果服务试图对用户进行验证,就要用到这行。如果服务需要帐号信息如userid,就要用到account。如果服务要改变用户的口令,就要用到password。就在用户登录之前、用户退出之后的瞬间,服务要用到session。这便于生成审查日志,但也可以用来建立各种环境参数或者装上网络磁盘驱动器。允许每一种模块多次出现,但要按顺序,除非其中一行有requisite的控制标志。
  
  控制标志有四种:requisite(必需)、required(要求)、sufficient(足够)和optional(可选)。requisite表明如果这条规则失败,就立即拒绝访问。required表明如果这规则失败,就拒绝访问,但继续为这类模块试用其余规则。sufficient表明如果这规则成功,允许访问;但如果失败,退回到另一个规则。optional则表明忽视该规则的结果,除非这类模块没有其它规则。optional通常用于同验证用户无关的额外配置(这种情形下,我们并不关心配置是否失败)。
  
  这些控制标志可能混淆不清。至于验证,它要求使用pam_unix PAM模块。该模块的变元允许空口令,指示系统使用MD5密码散列而不是简单的Unix crypt()散列,并使用影子口令(shadow password)系统。由于对验证而言这是唯一的一种模块,所以关于是否允许用户登录,它有最终决定权。
  
  至于帐号信息,pam_unix模块再次用到。它被标为sufficient,所以如果模块能够确定用户帐号,就停止处理。如果失败,PAM系统继续进行,并试用下一条帐号规则。这个被标为required,并使用pam_deny模块。该模块总是拒绝访问,所以倘若第一条规则无法确定用户的帐号信息,用户就被拒绝访问。更改口令的例子类似于帐号信息例子。
  
  至于确定会话要求,最后一个例子有两个属于required的规则。两个模块都要正确执行,才能允许用户会话。
  
  PAM模块位于Red Hat Linux 7.2上的/lib/security/目录内。有些模块具有多功能,原因在于它们可以为不止一种类型的模块提供机制。另一些只为单一类型提供机制。为了获得更大的灵活性,pam_stack模块为系统管理员配置多种服务以便统一验证提供了一种方法。该模块广泛应用于Red Hat Linux 7.2(见"默认登录配置")。
   
  默认登陆配置
  
  注意:针对每个类型的每条规则需要pam_stack模块,并为其提供了service=system-auth变元。这实际上是说“跳到system-auth PAM配置”,该配置可在/etc/pam.d/system-auth找到。所以如果登录程序试图验证用户,首先它会运行pam_security模块,进行检查,确保用户通过可信控制台登录(登录程序通常使用明文口令)。如果这样的话,它就跳到放在/etc/pam.d/system-auth的配置,如“默认系统验证配置”所示。
  
  默认系统验证配置
  
  使用这种系统验证配置进行验证的服务首先都将运行pam_env模块,以建立各种环境变量或检查某些先决要求。因为pam_env被标为required,系统必须报告成功(通常是这样,除非出现灾难性问题,譬如用户主目录丢失)。然后服务会运行pam_unix模块,提供类似Unix /etc/passwd的传统验证。因为pam_unix被标为sufficient,如果配置返回成功的结果,PAM就认可用户通过验证。不然,系统会进入到始终拒绝访问的pam_deny模块。
  
  使用这种系统验证配置获得帐号信息的服务也都将运行pam_unix,不过这回是确定用户名、用户身份号、组成员关系及类似Unix/etc/passwd的其它传统信息。该模块被标为required,不过因为是唯一的帐号行,它在默认状态下属于required。
  
  使用这种系统验证配置更改口令的服务首先将预期口令交由pam_cracklib模块控制,后者检查口令的强度。由于被标为required,如果模块拒绝口令,服务就被禁止更换口令。此后,预期口令传给pam_unix,它会更新传统的Unix /etc/passwd文件。如果此举失败,就拒绝更改口令。
推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • Kali Linux 简介
    KaliLinux是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所 ... [详细]
  • Linux神奇漏洞:长按回车键70秒 即可轻松拿到Root权限
    一般来说获取系统root权限是很困难的,尤其是加密系统中,但西班牙安全研究员hectormarco、ismaelripoll发现,linux系统下只需按住回车键70秒钟,就能轻 ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
author-avatar
拍友2502911223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有