這裡我們需要使用pam_access。pam_access是pam中處理用戶訪問控制的模塊,沒有使用pam前,linux對用戶的所有訪問控制都是借助hosts.allow, hosts.deny文件,實現所有服務的訪問控制,再加上usertty就是對用戶登陸控制(專門是針對login)。但是,隨著pam的應用
這裡我們需要使用pam_a
clearcase/" target="_blank" >ccess。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