linux ssh只允许指定的用户登录
linux ssh只允许指定的用户登录的方法按大类分有两种,一种是通过pam模块配置,一种是通过sshd配置文件配置,这里对这两大类做下说明。
一、pam模块控制法
1、pam_access.so模块法
在/etc/pam.d/sshd文件中增加如下两行内容
1account required pam_access.so
2account 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文件中增加如下内容:
1auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
在/etc/sshusers文件中增加如下内容:
1zhangsan
2lisi
这就表示,只允许zhangsan、lisi两个人通过ssh登陆。当然也可以反其道而行之,指定不允许登陆的用户,相应用sshd文件就改为
1auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
也可以以组的方式进行控制
1auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail
这就要在/etc/security/allow_groups文件中增加内容,如
1root
2zhangsan
3lisi
总结:上面提到的两个pam模块,不但但用于sshd服务,对于其他调用pam模块的应用同样适用,如ftp。
二、sshd_config配置方式
在sshd_config中设置AllowUsers,格式如
1AllowUsers a b c
重启sshd服务,则只有a、b、c 3个用户可以登陆。这种方式相对简单,不过可配置项较少,而且只适用于ssh服务。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/ssh-access-user-control/3137.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.