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檔案或重啟後恢復正常