1. 程式人生 > 其它 >系統安全及應用(一)

系統安全及應用(一)

目錄:

一、賬號安全基本措施

1、系統賬號清理

2、密碼安全控制

3、命令歷史限制

4、終端自動登出

二、使用SU命令切換使用者

1、用途及用法

2、驗證密碼

3、限制使用SU命令的使用者

4、檢視SU操作記錄

三、Linux中的PAM安全認證

1、SU命令的安全隱患

2、PAM(Pluggable Authentication Modules)可插拔式認證模組

3、PAM認證原理

4、PAM認證的構成

5、PAM安全認證的流程

四、sudo機制提升許可權

1、sudo命令的用途及用法

2、配置sudo授權

3、檢視sudo操作記錄

4、檢視授權的sudo操作

總結

一、賬號安全基礎措施

1、系統賬號清理

●將非登入使用者的Shell設為/sbin/nologin

1 usermod-s/sbin/nologin 使用者名稱

●鎖定長期不使用的賬號

passwd -l 使用者名稱
usermod -L 使用者名稱
passwd -S 使用者名稱

●刪除無用的賬號

userdel 【-r】使用者名稱

●鎖定賬號檔案passwd、shadow

chattr +i /etc/passwd /etc/shadow     ##鎖定檔案
 
lsattr /etc/passwd /etc/shadow        ##檢視情況
 
chattr-i /etc/passwd /etc/shadow      ##解鎖檔案 

2、密碼安全控制

設定密碼有效期

要求使用者下次登入時修改密碼

適用於新建使用者:
vi /etc/login.defs

適用於已有使用者:
chage -M xx xx

強行在下次登入時更改密碼:
chage -d 0 xxx

3、命令歷史限制

減少命令的記錄條數

vi /etc/profile

登入時自動清空歷史命令

vi .bashrc
echo " " > ~/.bash_history

登入時自動清空命令歷史:
vi .bashrc
echo " " > ~/.bash_history

4、終端自動登出

閒置XX秒後自動登出

二、使用su命令切換使用者

1、su命令用途及用法

用途:切換使用者

格式:su - 目標使用者名稱

2、密碼驗證

root——》任意使用者,不驗證密碼

普通使用者——》其他使用者,驗證目標使用者的密碼

3、限制使用su命令的使用者

將允許使用su命令的使用者加入wheel組

啟用pam_wheel認證模組

gpasswd -a lili wheel
#新增授權使用者zhangsan 到wheel組中
groups lili

vim /etc/pam.d/su 
auth required pam_wheel.so use_uid 
#去掉此行開頭的註釋

啟用pam_wheel認證以後,未加入到wheel組內的其他使用者將無法使用su命令

4、檢視su操作記錄

安全日誌檔案∶/var/log/secure

三、Linux中的PAM安全認證

1、su命令的安全隱患

  • 預設情況下,任何使用者都允許使用su命令,有機會反覆嘗試其他使用者(如root)的登入密碼,帶來安全風險
  • 為了加強su命令的使用控制,可藉助於PAM認證模組,只允許極個別使用者使用su命令進行切換

2、PAM(Pluggable Authentication Modules)可插拔式認證模組

  • 是一種高效而且靈活便利的使用者級別的認證方式
  • 也是當前Linux伺服器普遍使用的認證方式

3、PAM認證原理

一般遵循的順序

●Service(服務)→PAM(配置檔案)→pam_*.so

首先要確定哪一項服務,然後載入相應的PAM的配置檔案(位於/etc/pam.d下),最後呼叫認證檔案(位於/lib64/security 下)進行安全認證

使用者訪問伺服器時,伺服器的某一個服務程式把使用者的請求傳送到PAM模組進行認證

不同的應用程式所對應的PAM模組是不同的

4、PAM認證的構成

檢視某個程式是否支援PAM認證,可以用Is命令

●示例∶ 檢視su是否支援PAM模組認證

ls /etc/pam.d | grep su

■檢視su的PAM配置檔案∶ cat /etc/pam.d/su

●每一行都是一個獨立的認證過程

●每一行可以區分為三個欄位

  • 認證型別
  • 控制型別
  • PAM模組及其引數

第一列代表PAM認證模組型別

auth∶ 對使用者身份進行識別,如提示輸入密碼,判斷是否為root。

account∶ 對賬號各項屬性進行檢查,如是否允許登入系統,帳號是否已經過期,是否達到最大用 戶數等。 password∶ 使用使用者資訊來更新資料,如修改使用者密碼。

session∶ 定義登入前以及退出後所要進行的會話操作管理,如登入連線資訊,使用者資料的開啟和關閉,掛載檔案系統。

第二列代表PAM控制標記

reguired∶ 表示需要返回一個成功值, 如果返回失敗,不會立亥將失敗結果返回,而是繼續進行同型別的下一一驗證,所有此型別的模組都執行完成後,再返回失敗。

requisite∶ 與required類似,但如果此模組返回失敗,則立刻返回失敗並表示此型別失敗。

sufficient∶ 如果此模組返回成功,則直接向程式返回成功,表示此類成功, 如果失敗, 也不影響這型別的返回值。 optional∶不進行成功與否的返回,一般不用於驗證,只是顯示資訊(通常用於 session 型別)。

include∶ 表示在驗證過程中呼叫其他的PAM配置檔案。比如很多應用通過完整呼叫/etc/pam.d/system-auth(主要負責使用者登入系統的認證工.作)來實現認證而不需要重新逐一去寫配置項。

第三列代表PAM模組,預設是在/1ib64/security/ 目錄下,如果不在此預設路徑下, 要填寫約對路徑。

同一個模組,可以出現在不同的模組型別中,它在不同的型別中所執行的操作都不相同,這是由於每個模組針對不同的模組型別編制了不同的執行函式。

第四列代表PAM模組的引數,這個需要根據所使用的模組來新增。傳遞給模組的引數。引數可以有多個,之間用空格分隔開。

5、PAM安全認證流程

控制型別也稱做Control Flags,用於PAM驗證型別的返回結果

1.required驗證失敗時仍然繼續,但返回Fail

2.requisite驗證失敗則立即結束整個驗證過程,返回Fail

3.sufficient驗證成功則立即返回,不再繼續,否則忽略結果並繼續

4.optional不用於驗證,只顯示資訊(通常用於session型別)

required : 表示該行以及所涉及模組的成功是使用者通過鑑別的[必要條件]。換句話說,只有當對應於應用程式的所有帶requi red標記的模組全部成功後,該程式才能通過鑑別。同時,如果任何帶requi red標記的模組出現了錯誤,PAM並不立刻將錯誤訊息返回給應用程式,而是在所有此型別模組都呼叫完畢後才將錯誤訊息返回呼叫他的程式 說白了,就是必須將所有的此型別模組都執行一次,其中任何一個模組驗證出錯,驗證都會繼續進行,並在執行完成之後才返回錯誤資訊。這樣做的目的就是不讓使用者知道自已被哪個模組拒絕,通過一種隱蔽的方式來保護系統服務。就像設定防火牆規則的時候將拒絕類的規則都設定為drop-樣,以致於使用者在訪問網路不成功的時候無法準確判斷到底是被拒絕還是目標網路不可達 requisite: 與required相仿, 只有帶此標記的模組返回成功後,使用者才能通過鑑別。不同之處在於其一旦失敗就不再執行堆中後面的其他模組,並且鑑別過程到此結束,同時也會立即返回錯誤資訊。與上面的required相比,似乎要顯得更光明正大一-些 sufficient: 表示該行以及所涉及模組驗證成功是使用者通過鑑別的[充分條件]。也就是說只要標記為sufficient的模組一旦驗證成功,那麼PAM便立即嚮應用程式返回成功結果而不必嘗試任何其他模組。即便後面的層疊模組使用了requisite或者required控制標誌也是一樣。當標記為sufficient的模組失敗時,sufficient模 塊會當做optional對待。因此擁有sufficient標誌位的配置項在執行驗證出錯的時候並不會導致整個驗證失敗,但執行驗證成功之時則大門]敞開。所以該控制位的使用務必慎重 optional: 表示即便該行所涉及的模組驗證失敗使用者仍能通過認證。在PAM體系中,帶有該標記的模組失敗後將繼續處理下一模組。也就是說即使本行指定的模組驗證失敗,也允許使用者享受應用程式提供的服務。使用該標誌,PAM框架會忽略這個模組產生的驗證錯誤,繼續順序執行下一個層疊模組

四、使用sudo機制提升許可權

1、sudo命令的用途及用法

  • 用途∶ 以其他使用者身份(如root)執行授權的命令
  • 用法:sudo 授權命令

2、配置sudo授權

  • visudo或者vi /etc/sudoers
  • 記錄格式 :使用者 主機名=命令程式列表
使用者: 直接授權指定的使用者名稱,或採用“。組名"的形式(授權一個組的所有使用者) 主機名: 使用此規則的主機名。沒配置過主機名時可localhost,有配過主機名則用實際的主機名,ALI則代表所有主機 (使用者): 使用者能夠以何種身份來執行命令。此項可省略,預設時以root使用者的身份來執行命令 命令程式列表: 允許授權的使用者通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,多個命令之間以逗號“,”進行分隔。ALL則代表系統中的所有命令

注:帶有感嘆號的意思為 不可以執行這個操作


使用關鍵字User_ Alias、Host_ Alias、Cmnd_ Alias 來進行設定別名( 別名必須為大寫)

User_Alias USERS=Tom, Jerry, Mike

Host_Alias HOSTS=localhost, bogon

Cmnd_Alias CMNDS=/ sbin/ ifconfig, /usr/ sbin/useradd,/usr/sbin/ userdel

USERS HOSTS=CMNDS

USERS HOSTS=NOPASSWD:CMNDS
#執行過程不需要驗證密碼

3、檢視sudo操作記錄

cat /var/log/sudo

4、檢視授權的sudo操作

sudo -l

初次使用sudo時需驗證當前使用者的密碼,預設超時時長為5分鐘,在此期間不再重複驗證密碼

總結
1.賬號安全基本措施 1)&& 鎖定賬號檔案 passwd、shadow • chattr +i /etc/passwd /etc/shadow
&&檢視狀態
• Isattr /etc/passwd /etc/shadow &&解鎖檔案
• chattr -i /etc/passwd /etc/shadow 2) 密碼安全控制 • 適用於新建使用者
vi /etc/login.defs • 適用於已有使用者
chage -M xx xx • 強行在下次登入時更改密碼
chage -d 0 xxx 3)命令歷史限制 • 減少記錄的命令條數
vi /etc/profile • 登入時自動清空命令歷史
vi .bashrc
echo " " > ~/.bash_history 4) 終端自動登出 vi /etc/profile 2.限制使用su命令的使用者 • 將允許使用su命令的使用者加入wheel組
vim /etc/pam.d/ su
• 啟用pam_ wheel認證模組 檢視su操作記錄
安全日誌檔案:/var/log/secure 3.Linux中的PAM安全認證 •PAM使用/etc/pam.d/下的配置檔案,來管理對程式的認證方式 • 如果想檢視某個程式是否支援PAM 認證,可以用ls命令進行檢視/etc/ pam.d/ • PAM的配置檔案中的每一行都是一個獨立的認證過程,它們按從上往下的順序依次由PAM模組呼叫 4.sudo機制提升許可權 1)記錄格式:使用者 主機名=(使用者)命令程式列表
Tom ALL=/ sbin/ ifconfig 2) 使用關鍵字User_ Alias、Host_ Alias、Cmnd_ Alias 來進行設定別名( 別名必須為大寫) 3)檢視sudo操作記錄
• 需啟用Defaults logfile配置
• 預設日誌檔案: /var/log/sudo 4)檢視授權的sudo操作
sudo -l