身为一名合格root管理员的基本防范措施 Linux系统安全及应用
系統(tǒng)安全及應(yīng)用
- 一.賬號安全基本措施
- ① 系統(tǒng)賬號清理
- ② 密碼安全控制
- ③ 命令歷史限制
- ④ 終端自動注銷
- 二.SU命令切換用戶
- ① 用途及用法
- ② 驗證密碼
- ③ 限制使用su命令的用戶
- ④ 查看su操作記錄
- 補充
- 三.Linux中的PAM安全認證
- ① su命令的安全隱患
- ② PAM(Pluggable Authentication Modules)可插拔式認證模塊
- ③ PAM認證原理
- ④ 認證流程
- 四.sudo機制提升權(quán)限
- ① sudo命令的用途及用法
- ② 配置sudo授權(quán)
- ③ 查看sudo操作記錄
- ④ 查看授權(quán)的sudo操作
- 總結(jié)
一.賬號安全基本措施
① 系統(tǒng)賬號清理
? 將非登錄用戶的Shell設(shè)為/sbin/nologin
usermod -s /sbin/nologin 用戶名? 鎖定長期不使用的賬號
usermod -L 用戶名 passwd -l 用戶名? 刪除無用的賬號
userdel [-r] 用戶名? 鎖定賬號文件 passwd、shadow
chattr +i /etc/passwd /etc/shadow #鎖定文件并查看狀態(tài)Isattr /etc/passwd /etc/shadow #查看chattr -i /etc/passwd /etc/shadow #解鎖文件
② 密碼安全控制
? 設(shè)置密碼有效期
? 要求用戶下次登錄時修改密碼
適用于新建用戶:
vi /etc/login.defs
適用于已有用戶:
chage -M xx xx
強行在下次登錄時更改密碼:
chage -d 0 xxx
③ 命令歷史限制
? 減少記錄的命令條數(shù)
vi /etc/profile
? 登錄時自動清空命令歷史
vi .bashrc
echo " " > ~/.bash_history
減少記錄的命令條數(shù):
vi /etc/profile
登錄時自動清空命令歷史:
vi .bashrc
echo " " > ~/.bash_history
④ 終端自動注銷
閑置360秒后自動注銷
vi /etc/profile
二.SU命令切換用戶
① 用途及用法
? 用途: Substitute User,切換用戶
? 格式: su-目標用戶
② 驗證密碼
? root>任意用戶,不驗證密碼
?普通用戶→其他用戶,驗證目標用戶的密碼
③ 限制使用su命令的用戶
? 將允許使用su命令的用戶加入wheel組
? 啟用pam_ wheel認證模塊
④ 查看su操作記錄
安全日志文件:/var/log/secure
補充
在/etc/ pam. d/su文件里設(shè)置禁止用戶使用su命令
vim /etc/pam.d/ su
2// auth sufficient pam_ rootok. so
6// #auth required pam_ wheel.so use_ uid
a) 以上兩行是默認狀態(tài)(即開啟第一-行,注釋第二行),這種狀態(tài)下是允許所有用戶間使用su命令進行切換的
b) 兩行都注釋也是運行所有用戶都能使用su命令,但root.下使用su切換到其他普通用戶需要輸入密碼;
如果第一行不注釋,則root使用su切換普通用戶就不需要輸入密碼(pam_ rootok. so模塊的主要作用是使uid為0的用戶,即root用戶能夠直接通過認證而不用輸入密碼)
c) 如果開啟第二行,表示只有root用戶和wheel組內(nèi)的用戶才可以使用su命令
d) 如果注釋第一行,開啟第二行,表示只有wheel組內(nèi)的用戶才能使用su命令,root用戶也被禁用su命令
gpasswd -a lili wheel #添加授權(quán)用戶zhangsan 到wheel組中 groups lilivim /etc/pam.d/su auth required pam_wheel.so use_uid #去掉此行開頭的注釋啟用pam_wheel認證以后,未加入到wheel組內(nèi)的其他用戶將無法使用su命令三.Linux中的PAM安全認證
PAM使用/etc/pam.d/下的配置文件,來管理對程序的認證方式
應(yīng)用程序調(diào)用相應(yīng)的PAM配置文件,從而調(diào)用本地的認證模塊,模塊放置在/lib64/security下以加載動態(tài)庫的形式進行認證。比如使用su命令時,系統(tǒng)會提示輸入root用戶的密碼,這就是su命令通過調(diào)用PAM模塊實現(xiàn)的
① su命令的安全隱患
? 默認情況下,任何用戶都允許使用su命令,有機會反復(fù)嘗試其他用戶(如root) 的登錄密碼,帶來安全風(fēng)險
? 為了加強su命令的使用控制,可借助于PAM認證模塊只允許極個別用戶使用su命令進行切換
② PAM(Pluggable Authentication Modules)可插拔式認證模塊
? 是一種高效而且靈活便利的用戶級別的認證方式
? 是當(dāng)前Linux服務(wù)器普遍使用的認證方式
③ PAM認證原理
1.PAM認證一般遵循的順序:Service(服務(wù))–>PAM(配置文件)–>pam_*.so
2.PAM認證首先要確定哪一項應(yīng)用服務(wù),然后加載相應(yīng)的PAM的配置文件(位于7etc/pam.d下),最后調(diào)用認證模塊(位于/lib64/security/下)進行安全認證
3.用戶訪問服務(wù)器的時候,服務(wù)器的某–個服務(wù)程序把用戶的請求發(fā)送到PAM模塊進行認證。不同的應(yīng)用程序所對應(yīng)的PAM模塊也是不同的
4.不同的應(yīng)用程序所對應(yīng)的PAM模塊是不同的
? 如果想查看某個程序是否支持PAM 認證,可以用ls命令進行查看/etc/ pam.d/
? PAM的配置文件中的每一行都是一個獨立的認證過程,它們按從上往下的順序依次由PAM模塊調(diào)用
第一列代表PAM認證模塊類型
auth: 對用戶身份進行識別,如提示輸入密碼,判斷是否為root
account: 對賬號各項屬性進行檢查,如是否允許登錄系統(tǒng),帳號是否已經(jīng)過期,是否達到最大用戶數(shù)等
password: 使用用戶信息來更新數(shù)據(jù),如修改用戶密碼
session: 定義登錄前以及退出后所要進行的會話操作管理,如登錄連接信息,用戶數(shù)據(jù)的打開和關(guān)閉,掛載文件系統(tǒng)
第二列代表PAM控制標記
required: 表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結(jié)果返回,而是繼續(xù)進行同類型的下一驗證,所有此類型的模塊都執(zhí)行完成后,再返回失敗
requisite: 與required類似,但如果此模塊返回失敗,則立刻返回失敗并表示此類型失敗
sufficient: 如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響這類型的返回值
optional: 不進行成功與否的返回,一般不用于驗證,只是顯示信息(通常用于session 類型)
include: 表示在驗證過程中調(diào)用其他的PAM配置文件。比如很多應(yīng)用通過完整調(diào)用/etc/pam.d/system-auth(主要負責(zé)用戶登錄系統(tǒng)的認證工作)來實現(xiàn)認證而不需要重新逐一去寫配置項
第三列代表PAM模塊
默認是在/lib64/security/目錄下,如果不在此默認路徑下,要填寫絕對路徑
同一個模塊,可以出現(xiàn)在不同的模塊類型中,它在不同的類型中所執(zhí)行的操作都不相同,這是由于每個模塊針對不同的模塊類型編制了不同的執(zhí)行函數(shù)
第四列代表PAM模塊的參數(shù)
這個需要根據(jù)所使用的模塊來添加傳遞給模塊的參數(shù)。參數(shù)可以有多個,之間用空格分隔開
④ 認證流程
控制類型也稱做Control Flags,用于PAM驗證類型的返回結(jié)果
1.required驗證失敗時仍然繼續(xù),但返回Fail
2.requisite驗證失敗則立即結(jié)束整個驗證過程,返回Fail
3. sufficient驗證成功則立即返回,不再繼續(xù),否則忽略結(jié)果并繼續(xù)
4.optional不用于驗證,只顯示信息
(通常用于session類型)
required : 表示該行以及所涉及模塊的成功是用戶通過鑒別的[必要條件]。換句話說,只有當(dāng)對應(yīng)于應(yīng)用程序的所有帶requi red標記的模塊全部成功后,該程序才能通過鑒別。同時,如果任何帶requi red標記的模塊出現(xiàn)了錯誤,PAM并不立刻將錯誤消息返回給應(yīng)用程序,而是在所有此類型模塊都調(diào)用完畢后才將錯誤消息返回調(diào)用他的程序
說白了,就是必須將所有的此類型模塊都執(zhí)行一次,其中任何一個模塊驗證出錯,驗證都會繼續(xù)進行,并在執(zhí)行完成之后才返回錯誤信息。這樣做的目的就是不讓用戶知道自已被哪個模塊拒絕,通過一種隱蔽的方式來保護系統(tǒng)服務(wù)。就像設(shè)置防火墻規(guī)則的時候?qū)⒕芙^類的規(guī)則都設(shè)置為drop-樣,以致于用戶在訪問網(wǎng)絡(luò)不成功的時候無法準確判斷到底是被拒絕還是目標網(wǎng)絡(luò)不可達
requisite: 與required相仿, 只有帶此標記的模塊返回成功后,用戶才能通過鑒別。不同之處在于其一旦失敗就不再執(zhí)行堆中后面的其他模塊,并且鑒別過程到此結(jié)束,同時也會立即返回錯誤信息。與上面的required相比,似乎要顯得更光明正大一-些
sufficient: 表示該行以及所涉及模塊驗證成功是用戶通過鑒別的[充分條件]。也就是說只要標記為sufficient的模塊一旦驗證成功,那么PAM便立即向應(yīng)用程序返回成功結(jié)果而不必嘗試任何其他模塊。即便后面的層疊模塊使用了requisite或者required控制標志也是一樣。當(dāng)標記為sufficient的模塊失敗時,sufficient模 塊會當(dāng)做optional對待。因此擁有sufficient標志位的配置項在執(zhí)行驗證出錯的時候并不會導(dǎo)致整個驗證失敗,但執(zhí)行驗證成功之時則大門]敞開。所以該控制位的使用務(wù)必慎重
optional: 表示即便該行所涉及的模塊驗證失敗用戶仍能通過認證。在PAM體系中,帶有該標記的模塊失敗后將繼續(xù)處理下一模塊。也就是說即使本行指定的模塊驗證失敗,也允許用戶享受應(yīng)用程序提供的服務(wù)。使用該標志,PAM框架會忽略這個模塊產(chǎn)生的驗證錯誤,繼續(xù)順序執(zhí)行下一個層疊模塊
四.sudo機制提升權(quán)限
① sudo命令的用途及用法
用途:以其他用戶身份(如root)執(zhí)行授權(quán)的命令
用法:sudo 授權(quán)命令
② 配置sudo授權(quán)
? visudo 或者 vi /etc/sudoers此文件的默認權(quán)限為440,保存退出時必須執(zhí)行 “:wq!”命令來強制操作
? 記錄格式:用戶 主機名=(用戶)命令程序列表
用戶: 直接授權(quán)指定的用戶名,或采用“。組名"的形式(授權(quán)一個組的所有用戶)
主機名: 使用此規(guī)則的主機名。沒配置過主機名時可localhost,有配過主機名則用實際的主機名,ALI則代表所有主機
(用戶): 用戶能夠以何種身份來執(zhí)行命令。此項可省略,缺省時以root用戶的身份來運行命令
命令程序列表: 允許授權(quán)的用戶通過sudo方式執(zhí)行的特權(quán)命令,需填寫命令程序的完整路徑,多個命令之間以逗號“,”進行分隔。ALL則代表系統(tǒng)中的所有命令
樣例一:
Tom ALL=/ sbin/ ifconfigJerry localhost=/sbin/*, ! /sbin/ reboot, ! /sbin/ poweroff 通配符*"表示所有、取反符號、!”表示排除%wheel ALL=NOPASSWD:ALL 表示wheel組成員無需驗證密碼即可使用sudo執(zhí)行任何命令Mike ALL= (root) NOPASSWD: /bin/kill, /usr/bin/killall
注:帶有感嘆號的意思為 不可以執(zhí)行這個操作
注:加入wheel組,可以使用sudo執(zhí)行任何命令
樣例二:
使用關(guān)鍵字User_ Alias、Host_ Alias、Cmnd_ Alias 來進行設(shè)置別名( 別名必須為大寫)
User_Alias USERS=Tom, Jerry, MikeHost_Alias HOSTS=localhost, bogonCmnd_Alias CMNDS=/ sbin/ ifconfig, /usr/ sbin/useradd,/usr/sbin/ userdelUSERS HOSTS=CMNDSUSERS HOSTS=NOPASSWD:CMNDS #執(zhí)行過程不需要驗證密碼
注:這里我只是讓這兩位小情侶只能執(zhí)行 添加用戶和重啟操作
③ 查看sudo操作記錄
? 需啟用Defaults logfile配置
? 默認日志文件: /var/log/sudo
注:這里進入的編輯模式一樣是執(zhí)行 visudo
④ 查看授權(quán)的sudo操作
sudo -l
初次使用sudo時需驗證當(dāng)前用戶的密碼,默認超時時長為5分鐘,在此期間不再重復(fù)驗證密碼
總結(jié)
1.賬號安全基本措施
? 鎖定賬號文件 passwd、shadow
? chattr +i /etc/passwd /etc/shadow
鎖定文件并查看狀態(tài)
? Isattr /etc/passwd /etc/shadow
查看
? chattr -i /etc/passwd /etc/shadow
解鎖文件
? 密碼安全控制
? 適用于新建用戶
vi /etc/login.defs
? 適用于已有用戶
chage -M xx xx
? 強行在下次登錄時更改密碼
chage -d 0 xxx
? 命令歷史限制
? 減少記錄的命令條數(shù)
vi /etc/profile
? 登錄時自動清空命令歷史
vi .bashrc
echo " " > ~/.bash_history
? 終端自動注銷
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模塊調(diào)用
4.sudo機制提升權(quán)限
? 記錄格式:用戶 主機名=(用戶)命令程序列表
Tom ALL=/ sbin/ ifconfig
? 使用關(guān)鍵字User_ Alias、Host_ Alias、Cmnd_ Alias 來進行設(shè)置別名( 別名必須為大寫)
? 查看sudo操作記錄
? 需啟用Defaults logfile配置
? 默認日志文件: /var/log/sudo
? 查看授權(quán)的sudo操作
sudo -l
總結(jié)
以上是生活随笔為你收集整理的身为一名合格root管理员的基本防范措施 Linux系统安全及应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS hack:针对IE6,IE7,f
- 下一篇: Android——基本组件-2