分享

linux ssh只允许指定的用户登录

 科技强我 2018-05-09

 linux ssh只允许指定的用户登录的方法按大类分有两种,一种是通过pam模块配置,一种是通过sshd配置文件配置,这里对这两大类做下说明。

一、pam模块控制法

1、pam_access.so模块法

在/etc/pam.d/sshd文件中增加如下两行内容

  1. account required pam_access.so
  2. account include system-auth

上面的配置表示在ssh认证中启用该模板,pam_access.so模块的具体工作行为根据配置文件/etc/security/access.conf来决定。该配置文件涉及到的几个字段意义如下:

第一个字段:权限(permission),使用“+”表示授予权限,用“-”表示禁止权限。
第二个字段:用户(user),定义了用户、组以及用“@”表示的在不同主机上的同名用户和同一主机上不同名用户。
第三个字段:访问发起方(origins),定义了发起访问的主机名称、域名称、终端名称。

具体示例为:

  1. #禁止非root用户通过tty1访问相关服务
  2. #-:ALL EXCEPT root:tty1
  3. #禁止除了wheel、shutdown以及sync之外的所有用户访问相关服务
  4. #-:ALL EXCEPT wheel shutdown sync:LOCAL
  5. #禁止wheel用户通过.win.tue.nl之外的其它它终端访问相关服务
  6. #-:wheel:ALL EXCEPT LOCAL .win.tue.nl
  7. # 禁止下面的用户从任何主机登录。其它用户可以从任意地方访问相关服务
  8. #-:wsbscaro wsbsecr wsbspac wsbsym wscosor wstaiwde:ALL
  9. # root用户允许通过cron来使用tty1到tty6终端访问相关服务
  10. #+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
  11. # 用户root允许从下面的地址访问相关服务
  12. #+ : root : 192.168.200.1 192.168.200.4 192.168.200.9
  13. #+ : root : 127.0.0.1
  14. # 用户root可以从192.168.201.网段访问相关服务
  15. #+ : root : 192.168.201.
  16. # 用户root可以从.foo.bar.org中任何主机访问相关服务
  17. #+ : root : .foo.bar.org
  18. # 用户root不允许从任何主机访问相关服务
  19. #- : root : ALL
  20. # 用户@nis_group和foo可以从任何主机访问相关服务
  21. #+ : @nis_group foo : ALL
  22. # 用户john只能从127.0.0.0/24来对本机相关服务进行访问
  23. #+ : john : 127.0.0.0/24
  24. # 用户john可以通过ipv4和ipv6的地址对本机相关服务进行访问
  25. #+ : john : ::ffff:127.0.0.0/127
  26. # 用户john可以通过ipv6的地址访问本机相关服务
  27. #+ : john : 2001:4ca0:0:101::1
  28. # 用户john可以通过ipv6的主机IP地址来访问本机
  29. #+ : john : 2001:4ca0:0:101:0:0:0:1
  30. # 用户john可以通过ipv6的IP地址和掩码来访问相关服务
  31. #+ : john : 2001:4ca0:0:101::/64
  32. # 开放所有用户对本机所有相关服务的访问
  33. #- : ALL : ALL

2、pam_listfile.so模块

pam_listfile.so模块的功能和pam_access.so模块类似,目标也是实现基于用户/组,主机名/IP,终端的访问控制。不过它实现的方式和pam_access.so会稍微有些不同,因为它没有专门的默认配置文件。访问控制是靠pam配置文件中的控制选项和一个自定义的配置文件来实现的。而且除了针对上述访问源的控制之外,还能够控制到ruser,rhost,所属用户组和登录shell。所以有些用户认为它的功能似乎比pam_access.so更加灵活和强大一些。

使用pam_listfile.so模块配置的格式分为五个部分:分别是item、sense、file、onerr以及apply。 其中:

  • item=[tty|user|rhost|ruser|group|shell]:定义了对哪些列出的目标或者条件采用规则,显然,这里可以指定多种不同的条件。
  • onerr=succeed|fail:定义了当出现错误(比如无法打开配置文件)时的缺省返回值。
  • sense=allow|deny:定义了当在配置文件中找到符合条件的项目时的控制方式。如果没有找到符合条件的项目,则一般验证都会通过。
  • file=filename:用于指定配置文件的全路径名称。
  • apply=user|@group:定义规则适用的用户类型(用户或者组)。

而至于file文件的写法就简单了,每行一个用户或者组名称即可。

例如,ssh的拒绝和允许就有两种书写方式:

/etc/pam.d/sshd文件中增加如下内容:

  1. auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail

在/etc/sshusers文件中增加如下内容:

  1. zhangsan
  2. lisi

这就表示,只允许zhangsan、lisi两个人通过ssh登陆。当然也可以反其道而行之,指定不允许登陆的用户,相应用sshd文件就改为

  1. auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed

也可以以组的方式进行控制

  1. auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail

这就要在/etc/security/allow_groups文件中增加内容,如

  1. root
  2. zhangsan
  3. lisi

总结:上面提到的两个pam模块,不但但用于sshd服务,对于其他调用pam模块的应用同样适用,如ftp。

二、sshd_config配置方式

在sshd_config中设置AllowUsers,格式如

  1. AllowUsers a b c

重启sshd服务,则只有a、b、c 3个用户可以登陆。这种方式相对简单,不过可配置项较少,而且只适用于ssh服务。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多