前言
在linux系統中,root賬戶是有全部管理權限的,一旦root賬戶密碼外泄,對于服務器而言將是致命的威脅;出于安全考慮,通常會限制root賬戶的登陸,改為配置普通用戶登陸服務器后su切換到root賬戶使用,這種方式較為安全,限制root賬戶登陸的方式有多種,本文主要介紹如何通過linux-PAM限制賬戶登陸;
PAM模塊簡介
Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認證模塊,Linux-PAM是一套適用于Linux的身份驗證共享庫系統,它為系統中的應用程式或服務提供動態身份驗證模塊支持,它提供了對所有服務進行認證的中央機制,在Linux中,PAM是可動態配置的,本地系統管理員可以自由選擇應用程式如何對用戶進行身份驗證,
由此可知PAM可以對linux系統的賬戶做驗證,我們通過PAM模塊可以對linux系統內的賬戶進行登陸限制;PAM下的功能模塊較多,此次主要講述通過pam_listfile.so模塊限制賬戶登陸的方法
pam_listfile.so模塊可以實作基于"用戶/組,主機名/IP,終端"的訪問控制,訪問控制依靠PAM組態檔中的控制選項和一個自定義的組態檔來實作的,而且除了針對上述訪問源的控制之外,還能夠控制到ruser,rhost,所屬用戶組和登錄shell,
訪問控制的配置方法
下面說下基于用戶的訪問控制的配置方法:
/etc/pam.d/目錄下是PAM組態檔所在路徑,/etc/pam.d/sshd和/etc/pam.d/login 兩個檔案是本次要修改的檔案;/etc/pam.d/sshd對應的是sshd登陸的組態檔,/etc/pam.d/login對應的是管理終端登陸的組態檔;
我們先在/etc/pam.d/sshd檔案中增加一行如下資訊:
auth required pam_listfile.so item=user sense=deny file=/etc/pam.d/denyuser onerr=succeed
此行表示用戶通過管理終端登陸主機的時候,會呼叫pam_listfile.so模塊來驗證用戶是否可以登錄;pam_listfile.so中配置的item=user表示基于用戶;sense=deny表示拒絕;file=/etc/pam.d/denyuser則是定義了一個denyuser的檔案;此行的含義是denyuser檔案中的用戶拒絕通過ssh系統;
此處對pam_listfile.so模塊配置做下說明:
格式分為五個部分:分別是item、sense、file、onerr以及apply,
其中:
item=[tty|user|rhost|ruser|group|shell]__:定義了對哪些列出的目標或者條件采用規則,顯然,這里可以指定多種不同的條件,
onerr=succeed|fail_:定義了當出現錯誤(比如無法打開組態檔)時的預設回傳值,_
sense=allow|deny_:定義了當在組態檔中找到符合條件的專案時的控制方式,如果沒有找到符合條件的專案,則一般驗證都會通過,_
file=filename_:用于指定組態檔的全路徑名稱,_
apply=user|@group__:定義規則適用的用戶型別(用戶或者組),
測驗效果
我們在云主機中添加此配置測驗下效果;
編輯下/etc/pam.d/sshd檔案添加上述資訊:(資訊需要添加到auth的第一行之前,否則不會生效)

在/etc/pam.d目錄下創建denyuser檔案,并寫入root;

之后測驗下使用root賬戶ssh登錄云主機,提示密碼被拒絕;

在服務器內查看/var/log/secure檔案,日志中顯示的登陸錯誤為:

根據日志可以看出root登陸不上是被pam_listfile限制了;
如果想限制其他用戶,可以在denyuser檔案中將要限制的用戶名添加下,添加后對應用戶的登陸也會被限制;
下面在通過在/etc/pam.d/login組態檔添加限制,login檔案控制的是終端登陸,云主機通過控制臺的遠程連接功能登陸屬于終端登陸;

調整后通過遠程終端vnc連接后,使用root賬戶登陸無法正常;說明配置已經生效,


以上是通過linux-PAM的pam_listfile.so模塊限制賬戶登陸的方法,我們可以靈活運用此模塊限制主機內的賬戶登陸情況,加強主機的安全性,
作者:馬寅初
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514152.html
標籤:其他
上一篇:通過linux-PAM實作禁止root用戶登陸的方法
下一篇:RIP基礎
