RH442的教材里有一章是讲/etc/security/limits.conf里的相关配置的,不过limits.conf确实没什么好讲的,基本上都被国内的Linux工作者给普及烂了,一般机器装好第一件事先改这个。所以从本篇开始,准备索性把/etc/security里的所有相关配置文件都过一遍。本篇要提到的是/etc/security/access.conf ,该文件的配置的功能和tcp_wrappers 类似,所以这里将两者结合起来来讲。

一、/etc/security/access.conf

该配置文件对应的模块是pam_access.so,这个模块的作用是控制文件访问的,具体可以通过man pam_access 查看。通过查看该帮忙信息可以了解到,仅仅在/etc/security/access.conf 中做配置是对主机没有影响 的,还需要服务对应的pam配置中增加required 请求调用pam_access.so模块才行。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

示例1:限制用户访问某个终端

1# vim /etc/pam.d/login
2auth required pam_access.so (增加该行)
3# vim /etc/security/addess.conf
4- : student : tty3 (增加该行)

示例2:限制用户从某个IP ssh登录

1# vim /etc/pam.d/sshd
2auth required pam_access.so  (增加该行)
3# vim /etc/security/access.conf
4-:All:192.168.119.120  (增加该行,–代表拒绝)#

当上面这个配置完成后,再通过ssh进行连接时,会在/var/log/secure日志中收到如下日志信息:

1server0 sshd[12642]: pam_access(sshd:auth): access denied for user `root' from `desktop0.example.com'

二、tcp_wrappers

TCP Wrapper的机制,是在防火墙之后的一道安全控制屏障。其主要针对网络服务,比如sshd,sendmail,vsftpd等等,其控制文件为/etc/hosts.allow和/etc/hosts.deny。可以通过如下两种方法验证某相可执行文件是否支持tcp wrapper:

1# ldd $(which domainname) | grep libwrap 或
2# strings -f <service-program> | grep hosts_access

其执行流程图如下:

tcp_wrappers
tcp_wrappers

其配置示例如下:

1sshd:ALL EXCEPT .361way.com EXCEPT trusted.361way.com
2vsftpd:ALL

三、其他

其实除了上面提到的,像sshd、ftp、samba等服务自身在参数里也支持访问控制的。这里以ssh服务为例,可以在/etc/ssh/sshd.conf中增加如下配置实现访问控制:

1allowusers root@ip

就拿上面提到的access.conf(即pam_access.so)知名度并没有tcp_wrapper大,而且平时大多数加固时也不会修改这个文件。因为其配置起来没有 tcp_wrapper容易 。不过就像很多篇博文里我所提到的,在linux下实现某一个功能的方法是多样的,并不一定局限一两种方法,多知道一种方法也不是坏事。