linux用戶權限管理(2)----如何限制用戶訪問終端?

PAM可插拔身份額認證模塊

簡介:
Linux-PAM(Pluggable Authentication Modules for Linux.基於Linux的插入式驗證模塊)是一組共享庫,使用這些模塊,系統管理者可以自由選擇應用程序使用的驗證機制。也就是說,勿需重新編譯應用程序就可以切換應用程序使用的驗證機制。甚至,不必觸動應用程序就可以完全升級系統使用的驗證機制。

主要作用於管理工具和相關命令

配置文件

PAM包含了一組動態可加載庫模塊,這些模塊控制單個應用程序如何驗證用戶
通過修改PAM配置文件,爲不同管理使用工具自定義安全要求。

配置文件都在/etc/pam.d中

[root@xiaoagiao pam.d]# ls
chfn              fingerprint-auth-ac  password-auth-ac  runuser            smtp.postfix  su-l            vmtoolsd
chsh              login                polkit-1          runuser-l          sshd          system-auth
config-util       other                postlogin         smartcard-auth     su            system-auth-ac
crond             passwd               postlogin-ac      smartcard-auth-ac  sudo          systemd-user
fingerprint-auth  password-auth        remote            smtp               sudo-i        vlock

每個配置文件都有一些模塊,大多數模塊在/usr/lib64/security下

在/usr/share/doc/pam-1.1.8/txts/以及html子目錄下是每個模塊的詳細描述

  • 以login文件爲例
[root@xiaoagiao pam.d]# cat login 
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so
#服務類型    控制標記      模塊名        參數
  • /usr/lib64/security/
[root@xiaoagiao security]# ls
pam_access.so    pam_faildelay.so  pam_listfile.so    pam_pwhistory.so       pam_succeed_if.so   pam_unix_session.so
pam_cap.so       pam_faillock.so   pam_localuser.so   pam_pwquality.so       pam_systemd.so      pam_unix.so
pam_chroot.so    pam_filter        pam_loginuid.so    pam_rhosts.so          pam_tally2.so       pam_userdb.so
pam_console.so   pam_filter.so     pam_mail.so        pam_rootok.so          pam_time.so         pam_warn.so
pam_cracklib.so  pam_ftp.so        pam_mkhomedir.so   pam_securetty.so       pam_timestamp.so    pam_wheel.so
pam_debug.so     pam_group.so      pam_motd.so        pam_selinux_permit.so  pam_tty_audit.so    pam_xauth.so
pam_deny.so      pam_issue.so      pam_namespace.so   pam_selinux.so         pam_umask.so
pam_echo.so      pam_keyinit.so    pam_nologin.so     pam_sepermit.so        pam_unix_acct.so
pam_env.so       pam_lastlog.so    pam_permit.so      pam_shells.so          pam_unix_auth.so
pam_exec.so      pam_limits.so     pam_postgresok.so  pam_stress.so          pam_unix_passwd.so
配置文件內容解析

服務類型

  1. auth:身份驗證管理(是否提供了有效的用戶名和密碼)
  2. account:賬戶管理,依據賬戶策略允許或拒絕訪問。例如,可依據時間,口令有效 期限或者受限用戶的列表來拒絕訪問。
  3. psaawd:密碼管理管理口令變更策略。
  4. session:會話管理,將設置應用於程序會話

控制標記

require 如果模塊運行成功,繼續執行下一個類型的規則,如果失敗,執行文件中下一個規則
requisite 如果模塊失敗,pam不會檢查任何其他規則並停止執行
sufficient 如果模塊正常運行,PAM就不再繼續執行這種類型的其他規則且結果會成功。如果檢查失敗,PAM會繼續檢查剩下的規則
optional PAM忽略該規則的成功或失敗
include 包括所註明的配置文件中相同type的所有指令;例如指令是password include system-auth,它將包括PAM system-auth文件中的所有口令指令

1.基於pam_securetty.so模塊限制root用戶登錄虛擬終端

/etc/securetty文件下包含了11個虛擬控制檯訪問指令,指定了允許root用戶登錄的tty設備,由/bin/login讀取

[root@xiaoagiao pam.d]# cat /etc/securetty 
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
ttyS0
ttysclp0
sclp_line0
3270/tty1
hvc0
hvc1
hvc2
hvc3
hvc4
hvc5
hvc6
hvc7
hvsi0
hvsi1
hvsi2
  1. 本文件只對root用戶做出限制,若全部註釋,root用戶不可登錄,普通用戶不受影響,可以在普通用戶下切換到root下。
  2. 若刪除該文件,則root,普通用戶都可登錄所有終端

2. 基於pam_listefilte.os模塊指定用戶可以登錄

實現只能root用戶登錄

  1. 在/etc/pam.d/login文件中添加 :
account required pam_nologin.so
  1. 創建文件 /etc/noligin:這個文件下的內容將在普通用戶登錄失敗後顯示。

結果:只有root用戶可以的登錄終端。

實現指定用戶可以登錄終端:

  1. 在/etc/pam.d/login文件中添加 :
account required pam_nologin.so
  1. 創建文件 /eyc/noligin:這個文件下寫入 pam_listfile.so模塊
auth required pam_listfile.so item=user sense=deny file=/etc/myuser/user onerr=secceed
  • 其中file文件指定了可以登錄的用戶名單
  1. 在/etc/myuser/user下寫入可以登錄的用戶名單

結果:只有名單中的用戶可以登錄終端,其餘用戶拒絕
注:也可以通過pam_wheel.so模塊實現對用戶訪問限制(在上一篇文章)

3. 基於pam_access.so模塊實現限制用戶登錄,限制用戶登錄位置

一般的,/etc/securetty文件控制的是root的登錄終端。比此文件更強大的是/etc/security/access.conf 文件,他控制所有用戶的訪問以及訪問位置

  • 要想使用access.config,需要在/etc/pam.d/login中添加pam_access.so模塊.
account required pam_access.so

access.conf文件

………………
# User "foo" and members of netgroup "nis_group" should be
# allowed to get access from all sources.
# This will only work if netgroup service is available.
#+:@nis_group foo:ALL
#
# User "john" should get access from ipv4 net/mask
#+:john:127.0.0.0/24
#
# User "john" should get access from ipv4 as ipv6 net/mask
#+:john:::ffff:127.0.0.0/127
#
# User "john" should get access from ipv6 host address
#+:john:2001:4ca0:0:101::1
#
# User "john" should get access from ipv6 host address (same as above)
#+:john:2001:4ca0:0:101:0:0:0:1
#
# User "john" should get access from ipv6 net/mask
#+:john:2001:4ca0:0:101::/64
#
# All other users should be denied to get access from all sources.
#-:ALL:ALL

文件內容
permission : users : origins

permission +或-,表示允許或訪問
users 用戶或組,all代表所有用戶
origins 登錄地點,(local:本地,all:所有地點,console:控制檯)

實現過程

  1. /etc/pam.d/login中加入
account required pam_access.so
  1. /etc/pam.d/sshd中加入同樣模塊
account required pam_access.so
  1. 修改/etc/security/asscss.conf文件
添加
+:root:ALL  #root可從任意位置進入
+:user1,user2:192.168.126 #允許user1,user2從192.168.126網段訪問
-:ALL:ALL  #其餘全部拒絕

結果:

  • root可從任何虛擬終端,僞終端登錄系統
  • user1,user2只能存在於192.168.42.1上的ssh客戶端登錄系統。
  • user3不能登錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章