文章目錄
- 一、賬號安全控制
- 1、系統賬號清理
- 2、密碼安全控制
- 3、命令歷史限制
- 4、終端自動注銷
- 二、使用su命令切換用戶
- 1、限制用戶使用su命令
- 三、linux中的PAM安全認證
- 四、PAM 認證原理:
- 五、使用sudo機制提權
- 1、配置sudo授權
- 2、語法格式
- 3、別名創建
- 六、開關機安全控制
- 1、GRUB限制
一、賬號安全控制
1、系統賬號清理
●將非登陸用戶的Shell設為/sbin/nologin或者/bin/falsh
usermod -s /sbin/nologin 用戶名
●鎖定長期不使用的賬號
usermod -L 用戶名 鎖定用戶賬戶
passwd -l 用戶名 鎖定用戶密碼
passwd -S 用戶名 查看用戶狀態
●洗掉無用的賬號
userdel -r 用戶名 洗掉用戶及其宿主目錄
●清空一個賬號密碼
passwd -d 用戶名 清空賬戶密碼
●鎖定賬號檔案passwd、shadow
chattr +i /etc/passwd /etc/shadow 鎖定檔案
lsattr /etc/passwd /etc/shadow 查看檔案狀態
chattr -i /etc/passwd /etc/shadow 解鎖檔案

得出結論,由于/etc/passwd和/etc/shadow都存放的用戶賬號資訊,所以兩個缺一不可,少一個都無法創建用戶與更改密碼
2、密碼安全控制
chage -M 日期 用戶 設定用戶密碼有效期
chage -E xxxx-xx-xx 設定過期日期

●設定密碼有效期
●要求用戶下次登陸時修改密碼
vi /etc/login.defs 修改密碼組態檔適用于新建用戶
……
PASS_MAX_DAYS 30
[root@localhost ~]# chage -M 30 用戶
[root@localhost ~]# cat /etc/shadow | grep 用戶

●強制下次登陸更換密碼
chage -d 0 用戶 強制在下次登陸時更改密碼
cat /etc/shadow | grep 用戶 shadow檔案中的第三個欄位被修改為0
3、命令歷史限制
●減少記錄的命令條數
/etc/profile這個檔案是系統全域變陣列態檔,可以通過重啟系統或者執行source /etc/profile命令使檔案被讀取多載,
[root@localhost ~]# vi /etc/profile #編輯全域變陣列態檔
export HISTSIZE=200 #輸入export HISTZIZE=200
[root@localhost ~]# source /etc/profile #相當于使/etc/profile內的命令多載一遍

●登陸時自動清空歷史命令
~/.bashrc檔案中的命令會在每次打開新的bash shell時(也包括登錄系統)被執行
echo " " > ~/.bash_history

4、終端自動注銷
閑置600秒后自動注銷,與上方減少歷史條數類似,不再演示
vi /etc/profile #編輯全域變陣列態檔
export TMOUT=600 #輸出timeout=600
二、使用su命令切換用戶
●用途及用法
用途:Substitute User,切換用戶
格式 su -目標用戶
●密碼驗證
①root→任意用戶,不驗證密碼
②普通用戶→其他用戶,驗證目標用戶的密碼
su - root 帶-選項表示將使用目標用戶的登陸Shell環境
1、限制用戶使用su命令
①將允許使用su命令的用戶加入wheel組
②啟用pam_wheel認證模塊
●su命令具有安全隱患:
su命令使得每個用戶都具有反復嘗試其他用戶的登陸密碼,若是root用戶,則風險更大,
所以需要加強su命令的使用控制,可以借助PAM認證模塊,僅允許極個別指定用戶可使用su命令進行切換,
[root@localhost ~]# gpasswd -a admin wheel 將用戶“admin”加入到whell組中
在/etc/pam.d/su檔案里設定禁止用戶使用su命令
vim /etc/pam.d/su
auth sufficient pam_rootok.so
............
#auth required pam_wheel.so use_uid
...........

【1】以上兩行是默認狀態(即開啟第一行,注釋第二行),這種狀態下是允許所有用戶間使用su命令進行切換的,
【2】兩行都注釋也是允許所有用戶都能使用su命令,但root下使用su切換到其他普通用戶需要輸入密碼;如果第一行不注釋,則root使用su切換普通用戶就不需要輸入密碼
(pam_rootok.so模塊的主要作用是使uid為0的用戶,即 root用戶能夠直接通過認證而不用輸入密碼)
【3】如果開啟第二行,表示只有root用戶和wheel組內的用戶才可以使用su命令,
【4】如果注釋第一行,開啟第二行,表示只有wheel組內的用戶才能使用su命令,root用戶也被禁用su命令,
例:
1、首先,我們創建兩個新用戶并給與他們密碼讓他們可以使用,然后我們發現,root用戶可以隨意切換至任何用戶,而其他用戶切換至root用戶則需要輸入密碼,正確即可切換,將admin1用戶加入wheel組中,

2、我們進入編輯/etc/pam.d/su檔案中找到下圖匹配行,將auth前的注釋#號洗掉即可啟用該欄位

3、這下我們再來試一下用戶與root用戶之間來回切換,發現,加入wheel組中的admin1用戶輸入正確密碼后依舊可以切換至root用戶,而admin2用戶即使密碼輸對,也無法切換,顯示su:拒絕權限,

說明啟用/etc/pam.d/su檔案中那一行后,就會僅允許root和wheel組中的成員使用su命令
三、linux中的PAM安全認證
●Linux-PAM是linux可插拔認證模塊,是一套可定制、可動態加載的共享庫,使本地系統管理員可以隨意選擇程式的認證方式,
●PAM使用/etc/pam.d/下的組態檔,來管理對程式的認證方式,應用程式呼叫相應的PAM組態檔,從而呼叫本地的認證模塊,模塊放置在/lib64/security下,以加載動態庫的形式進行認證,比如使用su命令時,系統會提示輸入root用戶的密碼,這就是su命令通過呼叫PAM模塊實作的,
●查看su操作記錄
安全日志檔案:/var/log/secure
cat /var/log/secure
四、PAM 認證原理:
1.PAM 認證一般遵循的順序:Service(服務)→PAM(組態檔)→pam_*.so;(認證模塊)
2.PAM認證首先要確定哪一項應用服務,然后加載相應的PAM的組態檔(位于/etc/pam.d下),最后呼叫認證模塊(位于 /lib64/security/下)進行安全認證,
3.用戶訪問服務器的時候,服務器的某一個服務程式把用戶的請求發送到PAM模塊進行認證,不同的應用程式所對應的PAM 模塊也是不同的,
如果想查看某個程式是否支持 PAM 認證,可以用 ls 命令進行查看/etc/pam.d/,

●PAM的組態檔中的每一行都是一個獨立的認證程序,它們按從上往下的順序依次由PAM模塊呼叫

●第一列代表PAM認證模塊型別
①auth:對用戶身份進行識別,如提示輸入密碼,判斷是否為root,
②account:對賬號各項屬性進行檢查,如是否允許登錄系統,帳號是否已經過期,是否達到最大用戶數等,
③password:使用用戶資訊來更新資料,如修改用戶密碼,
④session:定義登錄前以及退出后所要進行的會話操作管理,如登錄連接資訊,用戶資料的打開和關閉,掛載檔案系統,
●第二列代表PAM控制標記
①required:表示需要回傳一個成功值,如果回傳失敗,不會立刻將失敗結果回傳,而是繼續進行同型別的下一驗證,所有此型別的模塊都執行完成后,再回傳失敗,
②requisite:與required類似,但如果此模塊回傳失敗,則立刻回傳失敗并表示此型別失敗,
③sufficient:如果此模塊回傳成功,則直接向程式回傳成功,表示此類成功,如果失敗,也不影響這型別的回傳值,
④optional:不進行成功與否的回傳,一般不用于驗證,只是顯示資訊(通常用于 session 型別),
⑤include:表示在驗證程序中呼叫其他的PAM組態檔,比如很多應用通過完整呼叫/etc/pam.d/system-auth(主要負責用戶登錄系統的認證作業)來實作認證而不需要重新逐一去寫配置項,
●第三列代表PAM模塊,默認是在/lib64/security/目錄下,如果不在此默認路徑下,要填寫絕對路徑,
●第四列代表PAM模塊的引數,這個需要根據所使用的模塊來添加,

五、使用sudo機制提權
●sudo是一個授權命令
用途:以其他用戶身份(如root)執行授權的命令
1、配置sudo授權
● visudo或者vi /etc/sudoers(此檔案的默認權限為 440,保存退出時必須執行“:wq!”命令來強制操作)

2、語法格式
用戶 主機名=命令程式串列
用戶 主機名=(用戶) 命令程式串列
①用戶:直接授權指定的用戶名,或采用“%組名”的形式(授權一個組的所有用戶),
②主機名:使用此規則的主機名,沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機
③(用戶):用戶能夠以何種身份來執行命令,此項可省略,預設時以root用戶的身份來運行命令
④命令程式串列:允許授權的用戶通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,多個命令之間以逗號“,”進行分隔,ALL則代表系統中的所有命令
例子分析 :
admin ALL=/sbin/ifconfig #說明admin在所有主機上擁有ifconfig權限
admin1 localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff #通配符“*”表示所有、取反符號“!”表示排除 #說明admin1擁有除了重啟和關機的所有權限
%wheel ALL=NOPASSWD: ALL #表示wheel組成員無需驗證密碼即可使用sudo執行任何命令
admin2 ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killall #說明admin2用戶不需要輸入密碼即可執行kill和killall命令
1、首先查詢主機名稱:hellolee,然后查詢命令ifconfig絕對路徑/sbin/ifconfig,然后進入配置sudo授權,大G跳到最后一行,輸入admin hellolee=/sbin/ifconfig,接下來請看圖中注釋,


●啟動sudo操作日志
visudo #進入編輯
Defaults logfile = /var/log/sudo #將該命令添加至最后一行:wq保存并退出即可
3、別名創建
用戶別名 User_Alias
主機別名 Host_Alias
命令別名 Cmnd_Alias
例子分析:
User_Alias USERS=admin,admin1,admin2 用戶的別名users包括:admin,admin1,admin2
Host_Alias HOSTS=localhost,hellolee 主機別名hosts包括:localhost,hellolee
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS 相當于:用戶組 主機組 = 命令程式串列
例:這邊我換成白底,會更容易看一下,原本黑底配藍字看不清
1、首先我們設定sudo授權

2、我們進入之后可以看到,visudo內原本就有別名格式,我們直接復制粘貼拿過來用就行了

3、我即將要設定排除重啟和關機的命令,來復制會話中which查詢一下完整路徑

4、這邊再在visudo中插入,具體描述看下圖

5、驗證,設定成功

六、開關機安全控制
●調整BIOS引導設定
①將第一引導設備設為當前系統所在硬碟
②禁止從其他設備(光碟、U盤、網路)引導系統
③將安全級別設為setup,并設定管理員密碼
1、GRUB限制
①使用grub2-mkpasswd-pbkdf2生成密鑰
②修改/etc/grub.d/00_header檔案,添加密碼記錄
③生成新的grub.cfg組態檔
限制更改 GRUB 引導引數
1、通常情況下在系統開機進入GRUB 選單時,按 e 鍵可以查看并修改GRUB 引導引數,這對服務器是一個極大的威脅,


2、可以為 GRUB 選單設定一個密碼,只有提供正確的密碼才被允許修改引導引數,
grub2-mkpasswd-pbkdf2 #根據提示設定GRUB 選單的密碼
PBKDF2 hash of your password is grub.pbkdf2…… #省略部分內容為經過加密生成的密碼字串
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
vim /etc/grub.d/00_header
cat << EOF
set superusers="root" #設定用戶名為root
password_pbkdf2 root grub.pbkdf2…… #設定密碼,省略部分內容為經過加密生成的密碼字串
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的 grub.cfg 檔案
1、為grub組態檔生成一個根據演算法加密的密碼字串,根據提示設定grub選單密碼

2、編輯/etc/grub.d/00_header檔案

3、找到GRUB組態檔,先進行一個備份,防止出現問題,然后再重新生成一個新的grub選單,重新虛擬機

4、這時再重啟或開機按e也無法進入查看修改grub引導引數,需要輸入用戶與密碼,對我們的服務器形成一個基本的保護

●禁止 root 用戶登錄
在 Linux 系統中,login 程式會讀取/etc/securetty 檔案,以決定允許 root 用戶從哪些終端(安全終端)登錄系統,
vi /etc/securetty
#tty5 想要不讓在哪個終端登陸就在該終端前加注釋#
tty6
●禁止普通用戶登錄
login 程式會檢查/etc/nologin 檔案是否存在,如果存在,則拒絕普通用戶登錄系統(root 用戶不受限制),
touch /etc/nologin #創建/etc/nologin檔案即禁止普通用戶登錄
rm -rf /etc/nologin #洗掉該檔案即取消登錄限制
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229348.html
標籤:其他
上一篇:DNS域名服務
