要在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解析問題。
限制用戶登錄的IP地址在linux系統中是一個常見的安全需求,尤其是在服務器對外提供服務時。通過配置PAM模塊中的pam_access.so,我們可以靈活地實現對特定用戶或用戶組從指定IP地址登錄的控制。
配置前的準備
首先,確認你的系統支持pam_access模塊。大多數主流Linux發行版(如centos、ubuntu)都默認包含這個模塊。你可以查看 /etc/pam.d/sshd 或 /etc/pam.d/login 等文件是否存在 account required pam_access.so 這一行作為判斷依據。
如果沒有啟用,可以手動添加。例如在SSH登錄中啟用:
account required pam_access.so
添加后保存并重啟sshd服務即可生效。
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解析延遲的問題。
基本上就這些。配置過程不復雜,但容易忽略細節,尤其是規則順序和測試環節。只要邏輯清晰,就能有效提升系統的安全性。