账号安全控制
一、賬號安全控制
1.系統賬號清理 將非登陸用戶的Shell設為/sbin/nologin或者/bin/falsh usermod -s /sbin/nologin 用戶名
鎖定長期不使用的賬號 usermod -L 用戶名 鎖定用戶賬戶 passwd -l 用戶名 鎖定用戶密碼 passwd -S 用戶名 查看用戶狀態
刪除無用賬號 userdel [-r] 用戶名 刪除用戶-r宿主目錄一起刪除
鎖定賬號文件passwd、shadow chattr +i /etc/passwd /etc/shadow 鎖定文件 lsattr /etc/passwd /etc/shadow 查看文件狀態 chattr -i /etc/passwd /etc/shadow 解鎖文件
演示:
?
2.密碼安全控制 2.1設置密碼有效期 方法一:修改密碼配置文件適用于新建用戶 vim /etc/login.defs …… PASS_MAX_DAYS 30 方法二:適用于已有用戶 [root@localhost ~]# chage -M 30 用戶 [root@localhost ~]# cat /etc/shadow | grep 用戶
方法一演示:
?
?
?
方法二演示:
?
?
2.2要求用戶下次登錄時修改密碼
chage -d 0 lisi 強制在下次登陸時更改密碼
cat /etc/shadow | grep 用戶 shadow文件中的第三個字段被修改為0
演示:
?
??
?
3.命令歷史限制 減少記錄的命令條數 [root@localhost ~]# vim /etc/profile #編輯profile文件 export HISTSIZE=20 #保存20條歷史記錄 [root@localhost ~]# source /etc/profile #執行一次配置文件,讓配置文件生效
演示:
?
??
?
登錄時自動清空命令歷史 [root@localhost ~]#vi ~/.bashrc [root@localhost ~]#echo " " > ~/.bash_history
演示:
?
?
重新啟動后可以看到之前的命令全部清空了
?
?
4.終端自動注銷
閑置600秒后自動注銷
vim /etc/profile #編輯profile文件 export TMOUT=600 #設定時間600秒 [root@localhost ~]# source /etc/profile #調用配置文件
?
?
二、su命令
1.使用su命令切換用戶
■用途及用法 用途:Substitute User,切換用戶格式 su -目標用戶
■密碼驗證 root→任意用戶,不驗證密碼普通用戶→其他用戶,驗證目標用戶的密碼 [root@localhost ~]$ su - root 帶-選項表示將使用目標用戶的登陸Shell環境 口令: [root@localhost ~]# whoami root
2.禁止用戶使用su命令 第一步:將允許使用su命令的用戶加入wheel組 gpasswd -a 用戶 wheel #添加用戶到wheel組中 grep wheel /etc/group #確定wheel組成員
?
?
第二步:啟用pam_wheel認證模塊 在/etc/pam.d/su文件里設置禁止用戶使用su命令
vim /etc/pam.d/su 編輯/etc/pam.d/su文件 2 // auth sufficient pam_rootok.so
... 6 // #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命令。
演示:
?
??
?
3.查看su操作記錄 安全日志文件:/var/log/secure cat /var/log/secure 查看su命令操作記錄
?
?
三、Linux中的PAM安全認證
Linux-PAM是linux可插拔認證模塊,是一套可定制、可動態加載的共享庫,使本地系統管理員可以隨意選擇程序的認證方式。PAM使用/etc/pam.d/下的配置文件,來管理對程序的認證方式。應用程序調用相應的PAM配置文件,從而調用本地的認證模塊,模塊放置在/lib64/security下,以加載動態庫的形式進行認證。比如使用su命令時,系統會提示輸入root用戶的密碼,這就是su命令通過調用PAM模塊實現的。 1.PAM認證原理 一般遵循的順序 Service(服務)—>PAM(配置文件)—>pam_*.soPAM首先確定哪一項服務,然后加載相應的PAM配置文件,最后調用PAM認證模塊進行安全認證用戶訪問服務器的時候,服務器的某一個服務程序把用戶的請求發送到PAM模塊進行認證同的應用程序所對應的PAM 模塊也是不同的
如果想查看某個程序是否支持 PAM 認證,可以用 ls 命令進行查看/etc/pam.d/。 示例:查看su是否支持PAM模塊認證 ls /etc/pam.d | grep su
?
?
2.PAM認證的構成 每一行都是獨立的認證過程 每一行可以區分為三個字段:認證類型、控制類型、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模塊的參數:
根據所使用的模塊進行添加
傳遞給模塊的參數,參數可以有多個,之間用空格分隔開
3.控制標記的補充說明 required:表示該行以及所涉及模塊的成功是用戶通過鑒別的【必要條件】。換句話說,只有當對應于應用程序的所有帶required標記的模塊全部成功后,該程序才能通過鑒別。同時,如果任何帶required標記的模塊出現了錯誤,PAM并不立刻將錯誤消息返回給應用程序,而是在所有此類型模塊都調用完畢后才將錯誤消息返回調用他的程序。 反正說白了,就是必須將所有的此類型模塊都執行一次,其中任何一個模塊驗證出錯,驗證都會繼續進行,并在執行完成之后才返回錯誤信息。這樣做的目的就是不讓用戶知道自己被哪個模塊拒絕,通過一種隱蔽的方式來保護系統服務。就像設置防火墻規則的時候將拒絕類的規則都設置為drop樣,以致于用戶在訪問網絡不成功的時候無法準確判斷到底是被拒絕還是目標網絡不可達。
requisite:與required相仿,只有帶此標記的模塊返回成功后,用戶才能通過鑒別。不同之處在于其一旦失敗就不再執行堆中后面的其他模塊,并且鑒別過程到此結束,同時也公立即返回錯誤信息。與上面的required相比,似乎要顯得更光明正大一些。
sufficient:表示該行以及所涉及模塊驗證成功是用戶通過鑒別的【充分條件】。也就是說只要標記為sufficient的模塊一旦驗證成功,那么PAM便立即向應用程序返回成功結果而不必嘗試任何其他模塊。即便后面的層疊模塊使用了requisite或者required控制標志也是一樣。當標記為sufficient的模塊失敗時,sufficient模塊會當做optional對待。因此擁有sufficient標志位的配置項在執行驗證出錯的時候并不公導致整個驗證失敗,但執行驗證成功之時則大門敞開。所以該控制位的使用務必慎重。
optional:他表示即便該行所涉及的模塊驗證失敗用戶仍能通過認證。在PAM體系中,帶有該標記的模塊失敗后將繼續處理下一模塊。也就是說即使本行指定的模塊驗證失敗,也允許用戶享受應用程序提供的服務。使用該標志,PAM框架會忽略這個模塊產生的驗證錯誤,繼續順序執行下一個層疊模塊。
四.PAM安全認證流程
?
1、required驗證失敗時仍然繼續,但返回Fail 2、requisite驗證失敗則立即結束整個驗證過程,返回Fail 3、sufficient驗證成功則立即返回,不再繼續,否則忽略結果并繼續 4、optional不用于驗證,只顯示信息(通常用于session類型)
四、使用sudo機制提升權限(sudo) 用途:以其他用戶身份(如root)執行授權的命令 用法:sudo 授權命令
1.配置sudo授權 visudo 或者 vim /etc/sudoers 注意:保存退出時必須執行:wq!才能保存
2.授權格式 語法格式: 用戶 主機名=命令程序列表 用戶 主機名=(用戶) 命令程序列表
用戶:直接授權指定的用戶名,或采用“%組名”的形式(授權一個組的所有用戶)。
主機名:使用此規則的主機名。沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則代表所有主機
(用戶):用戶能夠以何種身份來執行命令。此項可省略,缺省時以root用戶的身份來運行命令
命令程序列表:允許授權的用戶通過sudo方式執行的特權命令,需填寫命令程序的完整路徑,多個命令之間以逗號“,”進行分隔。ALL則代表系統中的所有命令
?
?
這邊我們給lisi提升權限
[root@localhost ~]# vim /etc/sudoers
?
?
3.查看sudo操作記錄 需啟用 Defaults logfile 配置 默認日志文件:/var/log/sudo
啟用sudo操作日志 visudo Defaults logfile = /var/log/sudo
?
這里我們進/var/log目錄下查看發現沒有sudo日志文件,因為這邊沒有執行sudo命令沒有產生日志文件
?
?
?
4.別名的創建
用戶別名 User_Alias 主機別名 Host_Alias 命令別名 Cmnd_Alias
Jerry localhost=/sbin/,!/sbin/reboot,!/sbin/poweroff 通配符“”表示所有,取反符號“!”表示排除
%whell ALL=NOPASSWD:ALL 表示wheel組成員無需驗證密碼即可使用sudo執行任何命令
使用關鍵字 User_Alias Host_Alias Cmnd_Alias 來進行設置別名(別名必須為大寫) User_Alias USERS=Tom,Jerry,Mike 用戶的別名users包括:Tom,Jerry,Mike Host_Alias HOSTS=localhost,bogon 主機別名hosts包括:localhost,bogon Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel USERS HOSTS=CMNDS 用戶組 主機組 = 命令程序列表
?
?
五、開關機安全控制
1.調整BIOS引導設置 將第一引導設備設為當前系統所在硬盤禁止從其他設備(光盤、U盤、網絡)引導系統將安全級別設為setup,并設置管理員密碼
2.GRUB限制 使用grub2-mkpasswd-pbkdf2生成密鑰修改/etc/grub.d/00_header文件,添加密碼記錄生成新的grub.cfg配置文件
2.1 限制修改GRUB引導參數 通常情況下在系統開機進入GRUB 菜單時,按 e 鍵可以查看并修改GRUB 引導參數,這對服務器是一個極大的威脅。可以為 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 文件
這邊沒有設置密碼就可以進入GRUB菜單,對系統產生威脅。
?
?
1.根據提示設置密碼
?
2.修改/etc/grub.d/00_header文件,添加密碼記錄
?
3.生成新的grub.cfg文件
?
4.重啟進入GRUB菜單看到需要輸入密碼了
?
六、終端登錄安全控制
1.限制root只在安全終端登錄 安全終端配置:/etc/securetty
[root@localhost ~]# vim /etc/securetty #tty5 #禁止root用戶從終端tty5,tty6登錄 #tty6
2.禁止普通用戶登錄 建立/etc/nologin文件刪除nologin文件或重啟后即恢復正常
touch /etc/nologin #禁止普通用戶登錄 rm -rf /etc/nologin #取消登錄限制
總結
- 上一篇: LINUX 三剑客之awk
- 下一篇: nginx优化服务