1、帳號安全基本措施
一、系統帳號清理
- 將非登陸用戶的shell設爲/sbin/nologin
usermod -s /sbin/nologin 用戶名
- 鎖定長期不使用的帳號
usermod -L 用戶名 passwd -l 用戶名 passwd -S 用戶名
- 刪除無用的帳號
userdel 【-r】用戶名
- 鎖定帳號文件passwd、shadow
chattr +i /etc/passwd /etc/shdow #鎖定文件 chattr -i /etc/passwd /etc/shdow #解鎖文件 lsattr /etc/passwd /etc/shdow #查看狀態
用戶帳號文件/etc/shadow
默認只有root用戶可以讀取shadow文件中的內容,且不容許直接編輯該文件中的內容。
linux
**字段1:**用戶帳號的名稱
**字段2:**使用MD5加密的密碼字串信息,若爲"*"或「!!」表示此用戶不能登陸到系統,若爲空字段表示此用戶無需密碼便可登陸系統。
**字段3:**上次修改密碼的時間,表示從1970年01月01日算起到最近一次修改密碼時間隔的天數(18445)
**字段4:**密碼的最短有效天數,自本次修改密碼後,必須至少通過該天數才能再次修改密碼。默認值爲0,表示不進行限制
**字段5:**密碼的最長有效天數,自本次修改密碼後,通過該天數之後必須再次修改密碼。默認值爲99999,表示不進行限制(99999)
**字段6:**提早多少天警告用戶密碼將過時,默認值爲7(7)
**字段7:**在密碼過時以後多少天禁用此用戶
**字段8:**賬號失效時間,此字段指定了用戶做廢的天數(從1970年01月01日起計算),默認值爲空,表示帳號永久可用。
**字段9:**保留字段(未使用)
注:字段七、八、9使用較少,通常使用默認,瞭解便可
shell
二、密碼安全控制
- 設置密碼有效期
- 要求用戶下次登陸時修改密碼
vim /etc/login.defs #修改密碼配置文件(適用於新建用戶) chage -M 30 lisi #適用於已有用戶 chage -d 0 zhangsan #強制在下次登陸時更改密碼(shadow文件中的第三個字段被修改成0)
新用戶vim /etc/login.defs 設置密碼有效期
最多多少天后必須改密碼
密碼的最長有效天數改成30
新建用戶wangwu能夠看到第五字段變爲30
vim
已有用戶 chage -M 30 zhangsan
沒改前仍是默認99999
執行命令chage -M 30 zhangsan後第五字段變爲30
安全
下次登陸強制改密碼
三、命令歷史的限制
vi /etc/profile 找到(HISTSIZE=1000)1000就是顯示保留的命令行數,減小命令行數就改此數值。 export HISTSIZE=數值,當前用戶環境下生效,重啓失效。
1)vi /etc/profile減小命令行數
舉例改成20行
source /etc/profile調用配置,讓修改配置生效
查看歷史命令能夠看到只有20行
bash
2)export HISTSIZE=數值減小命令行數
舉例5行
服務器
3)登陸時自動清空歷史命令
vim ~/.bashrc echo " " > ~/.bash_history
四、終端自動註銷
vim /etc/profile #編輯profie文件 TMOUT=600 #600秒閒置,終端註銷 soure /etc/profile #執行一次配置文件,讓配置文件生效
2、su命令
1)切換用戶
su 目標用戶
root用戶su其餘用戶不須要輸密碼
普通用戶su其餘用戶須要輸密碼
網絡
2)限制使用su命令的用戶
第一步:將容許使用su命令的用戶加入wheel組session
gpasswd -a 用戶 wheel #添加用戶到wheel組中 grep wheel /etc/group #肯定wheel組成員
第二步:啓用pam_wheel認證模塊
ui
vim /etc/pam.d/su #編輯/etc/pam.d/su文件 auth sufficient pam_rootok.so #pam_rootok.so模塊的主要做用是使uid爲0的用戶root可以直接經過認證而不用輸入密碼 ... #省略部分 auth required pam_wheel.so use_uid #pam_wheel.so做用是讓wheel組內的用戶使用su命令,其餘人(包括root)沒法使用su命令 每種狀態的解釋: 兩行都註釋:全部用戶都能使用su命令,切換時root和普通用戶都須要密碼驗證 開啓第一行,註釋第二行:(默認狀態)容許全部用戶間使用su命令進行切換的,切換時,root不須要密碼,其餘用戶須要密碼。 註釋第一行,開啓第二行:只有wheel組內的用戶才能使用su命令,root用戶也沒法切換。 兩行都開啓:只有root用戶和wheel組內的用戶纔可使用su命令。
初始
加密
-
兩行都註釋:全部用戶都能使用su命令,切換時root和普通用戶都須要密碼驗證
-
開啓第一行,註釋第二行:(默認狀態)容許全部用戶間使用su命令進行切換的,切換時,root不須要密碼,其餘用戶須要密碼。(前面有不演示了)
-
註釋第一行,開啓第二行:只有wheel組內的用戶才能使用su命令,root用戶也沒法切換。
- 兩行都開啓:只有root用戶和wheel組內的用戶纔可使用su命令。
3)查看su操做記錄
cat /var/log/secure #安全日誌文件/var/log/secure
會看就行
3、PAM安全認證
su命令的安全隱患
- 默認狀況下,任何用戶都容許使用su命令,有機會反覆嘗試其餘用戶(如root)的登陸密碼,帶來安全風險
- 爲了增強su命令的使用控制,可藉助於PAM認證模塊,只容許極個別用戶使用su命令進行交換
PAM可插拔式認證模塊
- 是一種高效並且靈活便利的用戶級別的認證方式
- 也是當前linux服務器廣泛使用的認證方式
PAM認證原理
1.PAM 認證通常遵循的順序:Service(服務)→PAM(配置文件)→pam_*.so;(認證模塊)
2.PAM認證首先要肯定哪一項應用服務,而後加載相應的PAM的配置文件(位於/etc/pam.d下),最後調用認證模塊(位於 /lib64/security/下)進行安全認證。
3.用戶訪問服務器的時候,服務器的某一個服務程序把用戶的請求發送到PAM模塊進行認證。
4.不一樣的應用程序所對應的PAM 模塊也是不一樣的。
這裏想看某個程序是否支持PAM認證,能夠用ls命令查看/etc/pam.d/。
PAM認證的構成
查看某個程序是否支持PAM模塊認證
示例:查看su是否支持PAM模塊認證 ls /etc/pam.d | grep su
查看su的PAM配置文件
cat /etc/pam.d/su
- 每一行都是一個獨立的認證和過程,它們按從上往下的順序依次由PAM模塊調用
- 每行都有三個分區:認證類型、控制類型、PAM模塊、PAM模塊參數
認證模塊類型 第一列
auth:對用戶身份進行識別,如提示輸入密碼,判斷是否爲root。
account:對帳號各項屬性進行檢查,如是否容許登陸系統,賬號是否已通過期,是否達到最大用戶數等。
password:使用用戶信息來更新數據,如修改用戶密碼。
session:定義登陸前以及退出後所要進行的會話操做管理,如登陸鏈接信息,用戶數據的打開和關閉,掛載文件系統。
控制類型第二列
required:須要返回一個成功值,若是返回失敗,不會馬上將失敗結果返回,而是繼續進行同類型的下一驗證,全部此類型的模塊都執行完成後,再返回失敗。該行以及所涉及模塊的成功是用戶經過鑑別的必要條件
requisite:與required相似,但若是此模塊返回失敗,則馬上返回失敗並表示此類型失敗。
sufficient:若是此模塊返回成功,則無論後面的驗證,直接向程序返回成功,表示驗證經過,若是返回失敗,則能夠當作optional。(慎用)
optional:不進行成功與否的返回,通常不用於驗證,只是顯示信息(一般用於 session 類型)。無論成功、失敗,繼續下一模塊的驗證,且此模塊的服務也能享用。
include :表示在驗證過程當中調用其餘的PAM配置文件。好比不少應用經過完整調用/etc/pam.d/system-auth(主要負責用戶登陸系統的認證工做)來實現認證而不須要從新逐一去寫配置項。
PAM模塊第三列
第三列表明PAM模塊,默認是在/lib64/security/目錄下,若是不在此默認路徑下,要填寫絕對路徑。
PAM模塊的參數
第四列表明PAM模塊的參數,這個須要根據所使用的模塊來添加。
PAM安全認證流程
required:驗證失敗時仍然繼續進行同類型的下一驗證,全部此類型的模塊都執行完成後,返回失敗
requisite:驗證失敗則當即結束整個驗證過程返回失敗
sufficient:若是此模塊返回成功,則無論後面的驗證,直接向程序返回成功,表示驗證經過,若是返回失敗,則能夠當作optional。(慎用)
optional:不進行成功與否的返回,通常不用於驗證,只是顯示信息(一般用於 session 類型)。無論成功、失敗,繼續下一模塊的驗證,且此模塊的服務也能享用。
4、sudo
sudo是一種受權命令。以其餘用戶身份(如root)執行受權的命令
配置命令:
visudo 或者 vim /etc/sudoers(此文件的默認權限爲 440,保存退出時必須執行「:wq!」命令來強制操做) 記錄格式:用戶 主機名=命令程序列表
語法格式:
用戶 主機名=命令程序列表 用戶 主機名=(用戶) 命令程序列表
解釋:
用戶:直接受權指定的用戶名,或採用「%組名」的形式(受權一個組的全部用戶)。
主機名:使用此規則的主機名。沒配置過主機名時可用localhost,有配過主機名則用實際的主機名,ALL則表明全部主機
(用戶):用戶可以以何種身份來執行命令。此項可省略,缺省時以root用戶的身份來運行命令
命令程序列表:容許受權的用戶經過sudo方式執行的特權命令,需填寫命令程序的完整路徑,若是不知道路徑能夠用「which」查,多個命令之間以逗號「,」進行分隔。ALL則表明系統中的全部命令;通配符「*」表示全部、取反符號「!」表示排除
舉例 lisi 可用 ifconfig
visudo編輯最後面加上 (用戶 主機名=命令程序列表)
啓動sudo操做日誌
visudo #進入編輯 Defaults logfile = /var/log/sudo #將該命令添加至最後一行:wq保存並退出便可
進入visudo編輯 G 可直接到最後一行
別名建立
使用關鍵字 User_Alias、Host_Alias、Cmnd_Alias 來進行設置別名(別名必須爲大寫) 多個信息須要用「,」隔開。 User_Alias JISHU=用戶名1,用戶名2,用戶名3 #用戶別名,JISHU表明後面三個用戶 Host_Alias HELLO=localhost,lisi #主機別名 Cmnd_Alias CMN=/sbin/*,!/sbin/useradd,!/sbin/userdel #命令別名(除了這些命令其餘都能用) USERS HOSTS=CMNDS #使用別名編寫受權
命令文件前"!"都得是英文格式,中文格式會報錯。
配置好驗證下
sudo -l 能夠查看當前用戶sudo受權
5、開關機安全
1)調整BIOS引導設置
(1)將第一引導設備設爲當前系統所在硬盤。
(2)禁止從其餘設備(光盤、U盤、網絡)引導系統,將對應的項設置爲「disabled」。
(3)將安全級別設爲setup,並設置管理員密碼。
二、GRUB限制
grub2-mkpasswd-pbkdf2 #使用grub2-mkpasswd-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 #修改/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 文件
init 6重啓
6、終端登陸
一、限制root用戶
linux系統啓動時,login程序會讀取 /etc/securetty文件(安全終端配置文件),決定容許root用戶從哪些終端登陸。因此想要限制須要編輯 /etc/securetty文件。root用戶默承認以使用全部終端,不容許哪幾個終端登陸直接編輯 /etc/securetty 找到終端前面加」#「註釋掉。
二、限制普通用戶
login 程序會檢查/etc/nologin 文件是否存在,若是存在,則拒絕普通用戶登陸系統(root 用戶不受限制)
touch /etc/nologin #禁止普通用戶登陸 rm -rf /etc/nologin #取消登陸限制
普通用戶沒法登陸了,root用戶能夠登陸。刪除nologin文件後,恢復正常。重啓也能夠恢復正常,但在實際狀況下,公司內部不會讓你重啓服務器,因此須要刪除文件。