1. 程式人生 > 其它 >Linux系統賬號安全和登入控制

Linux系統賬號安全和登入控制

一、賬號安全基本措施

1、系統賬號清理

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

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

1.2鎖定長期不使用的賬號

 usermod -L   lili		#鎖定賬戶方式一
 usermod -Ulili		#解鎖賬戶方式一
 passwd -l lili     #鎖定賬戶方式二
 passwd -u   lili#解鎖賬戶方式二

1.3刪除無用的賬號

userdel [-r] 使用者名稱

1.4鎖定賬號檔案 passwd、shadow

chattr +i /etc/passwd /etc/shadow
#鎖定檔案

Isattr /etc/passwd /etc/shadow
#檢視狀態

chattr -i /etc/passwd /etc/shadow
#解鎖檔案

chattr +i 命令解釋:

設定了`i'屬性的檔案不能進行修改:你既不能刪除它, 也不能給它重新命名,你不能對該檔案建立連結, 而且也不能對該檔案寫入任何資料.
只有超級使用者可以設定或清除該屬性.

修改使用者密碼(兩種方法)

echo 密碼 | passwd --stdin 使用者名稱

passwd 使用者名稱

1.5 例項操作

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

1.5.2鎖定長期不使用的賬號

1.5.3刪除無用的賬號

1.5.4 鎖定賬號檔案 passwd、shadow

2、密碼安全控制

2.1 方法一:修改密碼配置檔案 (密碼配置檔案為/etc/login.defs)——針對新使用者,已有使用者不能更改

格式:

vim /etc/login.defs    #直接進去修改配置檔案

PASS_MAX_DAYS   30   #密碼有效期
PASS_MIN_DAYS   0    #最小修改密碼時間間隔
PASS_MIN_LEN    5    #設定密碼的長度
PASS_WARN_AGE   7    #密碼過期提前多久進行警告

2.1.1 例項操作

  

2.2 方法二:修改已有使用者的密碼有效期——chage命令

格式:

chage 【選項】使用者名稱  
#舉例:chage -M 30 lili 修改密碼有效期為30
chage -d 0 lili 修改指定密碼的最後修改時間,0表示下次登入要修改密碼

chage 命令解釋

chage命令用於密碼實效管理,該是用來修改帳號和密碼的有效期限。它可以修改賬號和密碼的有效期  

2.2.1 例項操作

3、命令歷史記錄限制

  • 減少記錄的命令條數;
  • 登入時自動清空命令歷史 ;
  • 系統預設儲存1000條歷史命令記錄;
  • history -c 命令只可以臨時清除記錄(其實所有的檔案都還儲存在.bash_history),重啟後記錄還在。

3.1對歷史命令的數量進行限制

vim /etc/profile		         #修改配置檔案
export HISTSIZE=200		   #修改命令歷史記錄數量最大為200,前面新增export為全域性有效
source /etc/profile 			  #重新整理配置檔案,立即生效

3.2設定登入時自動清空命令歷史

vim .bashrc 					#修改.bashrc配置檔案(每次切換bash都執行)
或
vim /etc/profile				#修改/etc/profile配置檔案(執行一次)
echo " " > ~/.bash_history		

3.3 例項操作

3.3.1對歷史命令的數量進行限制

3.3.2設定登入時自動清空命令歷史

 

4、終端自動登出

  • 閒置 [ n ] 秒後自動登出。(n為數字)

4.1 格式

vim /etc/profile	            #編輯/etc/profile檔案
export TMOUT=60		#設定全域性自動登出時間

4.2 例項操作(設定閒置60秒後自動登出)  

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

5.1用途和格式

  • 用途:Substitute User,切換使用者
  • 格式:su - 目標使用者(橫槓“ - ”代表切換到目標使用者的家目錄)

5.2.密碼驗證

  • root - - - >任意使用者,不驗證密碼
  • 普通使用者- - - >其他使用者,驗證目標使用者的密碼
  • 帶 “ - ” 表示將使用目標使用者的登入Shell環境

5.3 格式詳情

切換使用者
 su - zhangsan			#root切換普通使用者
 su - root			     #普通使用者切換其他使用者

檢視當前登入的使用者
 whoami					#顯示當前登入的使用者

5.4 例項操作

  

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

  • 將允許使用su命令的使用者加入wheel組中;
  • 啟用pam_wheel 認證模組

6.1 操作步驟格式:

gpasswd -a zhangsan wheel	                    #將希望可以使用su命令的使用者加入到wheel組中
vim /etc/pam.d/su			                     #編輯/etc/pam.d/su配置檔案
auth  required  pam_wheel.so use_uid		#將此行的註釋取消即可,表示在wheel組的成員可以使用su命令,其他成員則不能使用su命令

6.2 例項操作

  

7、Linux中的PAM安全認證

7.1.su命令的安全隱患

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

7.2.PAM(Pluggable Authentication Modules)可插拔式認證模組

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

7.3.PAM認證原理:

  • PAM認證一般遵循的順序: Service (服務) --> PAM (配置檔案) --> pam_*.so;,
  • PAM認證首先要確定哪一項應用服務,然後載入相應的PAM的配置檔案(位於/etc/pam.d下),最後呼叫認證模組(位於/lib64/security/下)進行安全認證。
  • 使用者訪問伺服器的時候,伺服器的某一個服務程式把使用者的請求傳送到PAM模組進行認證。不同的應用程式所對應的PAM模組也是不同的。
  • 如果想檢視某個程式是否支援PAM認證,可以用ls命令進行檢視/etc/pam.d/。
  • PAM的配置檔案中的每一行都是一個獨立的認證過程,它們按從上往下的順序依次由PAM模組呼叫.

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

8.1sudo命令的用途及用法

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

8.2.配置sudo授權

  • visudo或者vi /etc/sudoers(此檔案沒有寫的許可權,儲存時必須 wq!強制執行操作)
  • 記錄格式:使用者 主機名=命令程式列表
  • 可以使用萬用字元“ * ”號任意值和“ !”號進行取反操作。
  • 許可權生效後,有5分鐘的閒置時間,超過5分鐘沒有操作則需要再輸入密碼。

8.3 操作格式

使用者 主機名=命令程式列表
使用者 主機名=(使用者)命令程式列表
zhangsan ALL=(root) /sbin/ifconfig	

sudo -l #查詢授權的sudo操作
  • 使用者: 直接授權指定的使用者名稱,或採用“&組名"的形式(授權一個組的所有使用者)。
  • 主機名:使用此規則的主機名。沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機。
  • (使用者):使用者能夠以何種身份來執行命令。此項可省略,預設時以root使用者的身份來執行命令。
  • 命令程式列表:允許授權的使用者通過sudo方式執行的特權命令,需填寫命令程式的完整路徑,多個命令之間以逗號“,"進行分隔。ALL則代表系統中的所有命令
  • 執行呼叫格式為(使用者名稱 網路中的主機=(執行命令的目標使用者) 執行的命令範圍)

8.4 啟用sudo操作日誌

  • 需啟用Defaults logfile配置
  • 預設日誌檔案:/var/log/sudo
  • 操作:/etc/sudoers末尾新增Defaults logfile="/var/log/sudo"

8.5 例項操作

8.5.1 wheel組的成員可以操作sudo,而非wheel組則不可以,查詢原因

8.5.2 設定指定使用者可以使用sudo指定的命令,並測試

8.5.2.1 進入vim /etc/sudoers ,將wheel組許可權加“#”號註釋,並在末尾新增配置,最後強制儲存並退出

8.5.2.2 進行測試

8.5.3 設定執行sudo命令時不需要輸入密碼,並測試

8.5.4在/car/log下建立sudo日誌檔案,用來儲存使用者使用的sudo命令記錄,並測試

二、系統引導和登入控制

1、開關機安全控制

1.1 調整BIOS引導設定

將第一引導裝置設為當前系統所在硬碟;
禁止從其他裝置(光碟、 U盤、網路)引導系統;
將安全級別設為setup,並設定管理員密碼。

1.2.GRUB限制

使用grub2-mkpasswd-pbkdf2生成金鑰;
修改/etc/grub.d/00_ header檔案中, 新增密碼記錄;
生成新的grub.cfg配置檔案。

1.3 限制更改GRUB引導引數

通常情況下在系統開機進入GRUB選單時,按e鍵可以檢視並修改GRUB引導引數,這對伺服器是一個極大的威脅。可以為GRUB選單設定一個密碼,只有提供正確的密碼才被允許修改引導引數

1.4 例項操作

2、限制root只在安全終端登入

在Linux系統中,login 程式會讀取/etc/securetty檔案,以決定允許root 使用者從哪些終端(安全終端)登入系統

修改此配置檔案:vim /etc/ securetty

2.1 終端介紹

  • 安全終端配置:/etc/securetty
  • tty1~ 6是文字型控制檯,tty7 是X Window圖形顯示管理器。可以通過CtrI+Alt+F1 (F1-F7鍵) 切換到對應的登入控制檯

注:按ctrl+Alt+F1回到圖形化介面

2.2 例項操作

2.2.1 設定不允許root使用者使用tty5和tty6終端登入

2.2.2 設定完成後,重啟主機,進行切換終端測試是否可以登入

2.2.3 再次修改配置檔案,允許root使用者可以在tty6終端登入,並測試

3、禁止普通使用者登入

login程式會檢查/etc/nologin檔案是否存在,如果存在,則拒絕普通使用者登入系統(root 使用者不受限制)

操作方法:

第一步:建立/etc/nologin檔案

第二步:刪除nologin檔案或重啟後恢復正常

3.1、例項操作

3.1.1 建立檔案,並進行測試

3.1.2 刪除檔案,並進行測試