如何實現Linux用戶登錄IP限制 pam_access模塊配置

要在linux中限制用戶登錄ip需使用pam_access模塊,具體步驟如下:1. 確認系統已加載pam_Access.so模塊,可通過檢查/etc/pam.d/sshd或/etc/pam.d/login文件是否存在“account required pam_access.so”實現;2. 編輯/etc/security/access.conf配置規則,格式為“permission : users : origins”,如“- root : all except 192.168.1.0/24”表示root僅允許來自該網段的登錄;3. 若用于ssh限制,需確保該模塊已在/etc/pam.d/sshd中添加,并重啟sshd服務生效;此外注意規則順序、測試避免被鎖、考慮本地登錄及dns解析問題。

如何實現Linux用戶登錄IP限制 pam_access模塊配置

限制用戶登錄的IP地址在linux系統中是一個常見的安全需求,尤其是在服務器對外提供服務時。通過配置PAM模塊中的pam_access.so,我們可以靈活地實現對特定用戶或用戶組從指定IP地址登錄的控制。

如何實現Linux用戶登錄IP限制 pam_access模塊配置

配置前的準備

首先,確認你的系統支持pam_access模塊。大多數主流Linux發行版(如centosubuntu)都默認包含這個模塊。你可以查看 /etc/pam.d/sshd 或 /etc/pam.d/login 等文件是否存在 account required pam_access.so 這一行作為判斷依據。

如何實現Linux用戶登錄IP限制 pam_access模塊配置

如果沒有啟用,可以手動添加。例如在SSH登錄中啟用:

account required pam_access.so

添加后保存并重啟sshd服務即可生效。

如何實現Linux用戶登錄IP限制 pam_access模塊配置


1. 修改 access.conf 文件

核心配置位于 /etc/security/access.conf 文件中。該文件定義了允許或拒絕哪些用戶從哪些主機登錄的規則。

格式如下:

permission : users : origins
  • permission:+ 表示允許,- 表示拒絕。
  • users:用戶名或組名(組名前面加 @)。
  • origins:允許/拒絕的IP地址、網絡段或域名。

舉個例子:

- root : ALL EXCEPT 192.168.1.0/24 + deploy : 192.168.1.100 - @admin : 10.0.0.0/8

上面這段配置的意思是:

  • root 用戶只能從 192.168.1.0/24 網絡段登錄,其他來源一律禁止;
  • deploy 用戶只能從 192.168.1.100 登錄;
  • admin 組的所有成員不能從 10.0.0.0/8 網絡段登錄。

注意:規則是按順序匹配的,一旦命中某條規則就不再繼續判斷。


2. 應用到SSH登錄場景

如果你希望限制只通過SSH遠程登錄的情況,需要確保在 /etc/pam.d/sshd 中已經加載了 pam_access.so 模塊。

打開文件:

sudo vi /etc/pam.d/sshd

加入這一行(如果不存在):

account required pam_access.so

保存退出,并重啟ssh服務:

sudo systemctl restart sshd

這樣,當用戶嘗試通過SSH連接時,就會受到 access.conf 中規則的限制。


3. 常見問題與注意事項

  • 規則順序很重要:越靠前的規則優先級越高。建議把最嚴格的規則放在前面。
  • 測試環境先驗證:修改完配置后不要立刻斷開當前連接,新開一個終端窗口測試是否還能登錄,避免把自己鎖在外面。
  • 不要遺漏本地登錄:如果你限制了root用戶訪問,但又沒有為root設置白名單IP,可能導致無法遠程管理。
  • 支持通配符和DNS解析:可以使用 ALL、LOCAL、UNKNOWN 等關鍵字,也可以寫域名,但要注意DNS解析延遲的問題。

基本上就這些。配置過程不復雜,但容易忽略細節,尤其是規則順序和測試環節。只要邏輯清晰,就能有效提升系統的安全性。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享