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

访问控制大师,使用pam来支持login的访问控制

文章标题:访问控制大师,使用pam来支持login的访问控制。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  这里我们需要使用pam_access。pam_access是pam中处理用户访问控制的模块,没有使用pam前,linux对用户的所有访问控制都是借助hosts.allow, hosts.deny文件,实现所有服务的访问控制,再加上usertty就是对用户登陆控制(专门是针对login)。但是,随着pam的应用,usertty已经不再使用了,虽然login的man里还会提到。
  
  现在我们看看如何利用pam_access对个别用户进行登陆访问控制(对所有使用login的都有效),首先,我们需要的是访问控制的配置文件,这个文件在/etc/security/access.conf。整个文件的格式都是: 权限:用户(可多个并用空格隔开):源访问点。下面对每个区域简单说明:
  权限(permission) 这一位可以是+/-。其中+表示允许访问,-表示禁止访问;
  
  用户(users) 这是指定用户名,用户组名或网络用户组名,指定的是多个要用空格隔开。对于指定网络用户组名时,网络用户组名应指定用户组所在的源访问点并用@和用户组名分开。除此以外,还可以用ALL指定所有的和EXCEPT指定特殊例外的用户。
  
  源访问点(Origins) 这是指定用户域中原访问点。这里可指定用户访问的ttyname,hostname,domainname或ip。其中domainname是指以.开头的主机名,例如,.downsky.net就是指定downsky.net这个域。在这里可以使用ALL和EXCEPT的关键字,也也指定LOCAL。
  下面我们看看一些例子,如果你先限制一些用户在某些主机的登陆权限,我们提供登陆服务的主机叫linux,下面我们看看access.conf的配置情况:
  
  1. # access.conf file
  2. -:ALL:.foo.com .hacker.org
  3. -:ALL EXCEPT root: tty1
  4. +:ALL EXCEPT root:192.168.1.
  5. +:root user:.downsky.net
  6. -:chase:192.168.2.
  7. -:ALL:ALL
  
  从以上的配置文件可以看到,第二行拒绝所有从域名.foo.com和.hacker.org的登陆访问;第三行拒绝除root以外的用户从控制台登录访问;第四行允许除root外所有的用户从192.168.1.的网段登录访问。第五行允许root和user用户组中的成员从downsky.net登录访问。第六行拒绝用户chase从192.168.2网段的登录访问,第七行拒绝其它的登录访问...
  现在我们只要在/etc/pam.d/login的文件里加上下面一行
  
  account required /lib/security/pam_access.so
  就可以使login使用pam_access来对用户进行登陆访问控制了。整个login的文件如下
  auth requisite /lib/security/pam_unix.so nullok #set_secrpc
  auth required /lib/security/pam_securetty.so
  auth required /lib/security/pam_nologin.so
  #auth required /lib/security/pam_homecheck.so
  auth required /lib/security/pam_env.so
  auth required /lib/security/pam_mail.so
  account required /lib/security/pam_unix.so
  account required /lib/security/pam_access.so
  password required /lib/security/pam_pwcheck.so nullok
  password required /lib/security/pam_unix.so nullok use_first_pass use_authtok
  session required /lib/security/pam_unix.so none # debug or trace
  session required /lib/security/pam_limits.so
  
  如果被拒绝的用户登陆本主机的话就会出现下面的输出结果
  linux login: chase
  Password:
  Permission denied
  Connection closed by foreign host.
  
  我们还可以从/var/log/messages得到pam_access的日志,对应上面的情况我们从message得到如下的日志:
  
  Apr 25 12:50:25 linux pam_access[13916]: access denied for user `chase' from `192.168.2.78'
  Apr 25 12:50:25 linux login[13916]: Permission denied
  
  
推荐阅读
  • Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ... [详细]
  • Kodi(原名XBMC)是一款由XBMC基金会开发的免费开源媒体播放器应用,支持多种操作系统和硬件平台。该软件以其强大的多媒体处理能力和用户友好的界面受到广泛欢迎。 ... [详细]
  • 本文详细分析了一个生产系统中遇到的 Apache Axis2 403 Forbidden 错误,并提供了具体的排查步骤和解决方案。 ... [详细]
  • Linux环境下的PHP7安装与配置指南
    本文详细介绍了如何在Linux操作系统中安装和配置PHP7,包括检查当前PHP版本、升级PHP以及配置MySQL支持等步骤,适合后端开发者参考。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • Linux 文件系统结构详解
    本文详细介绍了Linux操作系统的文件系统结构,包括其独特的树状目录体系、根目录的作用、目录与磁盘分区的关系等,并对各主要目录的功能进行了深入解析。 ... [详细]
  • HTTP(超文本传输协议)是互联网上用于客户端和服务器之间交换数据的主要协议。本文详细介绍了HTTP的工作原理,包括其请求-响应机制、不同版本的发展历程以及HTTP数据包的具体结构。 ... [详细]
  • 本文探讨了Thrift作为一款支持多语言的服务开发框架,其在体积、功能、扩展性以及多协议支持等方面的显著优势。特别地,Thrift作为一种RPC(远程过程调用协议)框架,非常适合用于构建可扩展且低耦合的分布式服务系统。文章通过多种编程语言对Thrift服务进行了性能测试,并提供了详细的测试结果。 ... [详细]
  • 本文详细介绍了如何利用go-zero框架从需求分析到最终部署至Kubernetes的全过程,特别聚焦于微服务架构中的网关设计与实现。项目采用了go-zero及其生态组件,涵盖了从API设计到RPC调用,再到生产环境下的监控与维护等多方面内容。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • VMware 15.5.7 中文版激活方法
    本文提供了一种有效的方法来激活 VMware 15.5.7 的中文版本,同时介绍了如何利用最新的激活码进行操作,确保用户能够顺利使用。 ... [详细]
  • HDFS数据读写流程详解
    本文详细解析了HDFS(Hadoop分布式文件系统)中的数据读写过程,包括从客户端发起请求到最终完成数据传输的每一个关键步骤。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • 本文提供了多种有效的方法来解决RPC(远程过程调用)服务器不可用的问题,包括通过修改注册表、使用SC命令以及利用故障恢复控制台等技术手段。 ... [详细]
author-avatar
宝贝缘缘儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有