您好,登錄后才能下訂單哦!
sudo用途:
sudo用于為普通用戶授權(quán),一句話:允許哪些用戶在哪些主機(jī)上登錄后以哪個用戶身份運(yùn)行哪些命令。類似Windows系統(tǒng)中的右鍵以管理員方式運(yùn)行。
一、sudo與su的區(qū)別
舉個例子,運(yùn)維部門來一位新人想交給他完成一些基本的軟件部署任務(wù),但又擔(dān)心他對系統(tǒng)架構(gòu)環(huán)境不熟而引發(fā)誤操作,此時讓他使用su命令直接切換高權(quán)限的管理賬號可能會風(fēng)險很大,而sudo的靈活授權(quán)就可以把權(quán)限限定到合理的范圍,從而降低風(fēng)險。
1. su 實(shí)際上就是以目標(biāo)用戶身份進(jìn)行登錄,執(zhí)行su命令切換用戶時必須知道目標(biāo)用戶的密碼,授權(quán)很不靈活,同時也帶來了用戶密碼泄露的安全風(fēng)險。
2. sudo 則是基于配置文件明確定義指定用戶中以執(zhí)行哪些命令,只是臨時進(jìn)行安全上下文切換,而不需要進(jìn)行用戶登錄切換。在執(zhí)行sudo 執(zhí)行命令時只需要輸入用戶自己的密碼即,而不需要知道安全上下文切換的目標(biāo)用戶密碼。
3. su與sudo都可以執(zhí)行用戶切換操作,但sudo必須在配置文件中明確定義才可以進(jìn)行賬號切換。
su 切換用戶
- su username:不完全切換,HOME不會變?yōu)槟繕?biāo)用戶的HOME目錄
- su - username:完全切換,HOME會變?yōu)槟繕?biāo)用戶的HOME目錄。
sudo切換用戶- sudo -i 切換為root用戶
- sudo -u 命令后跟切換的目標(biāo)用戶名
sudo的相關(guān)文件
1. sudo命令來源sudo-1.8.25p1-4.el8.x86_64軟件包。
2. 配置文件:存儲于/etc/sudoers,但支持模塊化配置獨(dú)立的配置模塊存儲于/etc/sudoers.d/目錄
3. 日志文件:sudo的操作記錄存儲于/var/log/secure文件中。
4. 時間探針:sudo的令牌超時機(jī)制是基于時間探針文件時間戳來判斷是否超時的,時間探針文件存儲于/run/sudo/ts/目錄下。
學(xué)習(xí)思路:
4個授權(quán)元素可以是明確的具體對象,也可以是將一組對象組織在一起的別名。
被授權(quán)用戶:進(jìn)程的發(fā)起者,可是將一組用戶名或組名組織在一個集合中,集合的名字就是對象別名 登錄主機(jī):可以是一個具體的IP地址,主機(jī)名稱,也可以是多個IP地址、主機(jī)名稱,網(wǎng)段組織一起的集合。 切換后的用戶身份:進(jìn)程的最終用戶,如果不填寫則默認(rèn)為root用戶,即被授權(quán)的用戶以任種身份來執(zhí)行后面的定義的Command。 command:可以是一系列相關(guān)命令的集合,如:將網(wǎng)絡(luò)管理類命令組織在一起定義別名。
以上三種元素的別名定義在配置文件中已有明確的范例,可以直接引用,在定義用戶別名時如果其成員中包含用戶組名,則必須使用%進(jìn)行引用。
最佳操作實(shí)踐:
二、sudo元素別名定義
元素別名可以理解為變量,別名定義有嚴(yán)格的格式要求,sudo中共有四種類型的別名:別名內(nèi)的成員對象類型受這四種類型的約束,且是必須在系統(tǒng)中存在的對象。
1. 定義語法原則:
a.語法:別名類型 名稱=對象1,對象2,對象3… b.別名可以是在大字母、數(shù)字、下劃線的組,注意必須是大寫字母 c.如果別名內(nèi)有多個成員,則用逗號分隔即可。 d.別名定義必須在同一行內(nèi),如果一行寫不下可以使用\進(jìn)行續(xù)行。 e.支持通配符書寫。
2. User_Alias :進(jìn)程起發(fā)始者
例:基于用戶或組名定義別名:User_Alias ADMINS = user1,user2,%admins
例:基于UID或GID定義別名:User_Alias ADMINS = #1023(UID), user2,%#1099(GID)
3. Host_Alias:登錄主機(jī)
成員對象可以是:IP地址、主機(jī)名、FQDN、CDIR格式網(wǎng)絡(luò)號 例:Host_Alias CDNSERVERS =192.168.39.7, 192.168.40.0/24, node1, notd2.microcisco.com
4. Runas_Alias:進(jìn)程執(zhí)行的最終用戶
Runas_Alias SRVMGMT=microcisco
5. Cmnd_Alias:被授權(quán)用戶允許執(zhí)行的命令集合
集合成員之間以逗號分隔,每個命令都書寫絕對路徑,命令支持通配符匹配,要執(zhí)行的命令如果有必須明確指定參數(shù),命令的參數(shù)同樣支持通配符匹配。
例1:【定義安裝命令集】Cmnd_Alias INSTALL= /bin/rpm, /usr/bin/up2date, /usr/bin/yum
例2:【基于通配符排除】Cmnd_Alias ADMINCMD = /usr/sbin/useradd,/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root
6. 默認(rèn)用戶與runas用戶
授權(quán)需求:定義授權(quán)模板用戶,將常用的權(quán)限都授予該模板用戶,將其他有權(quán)限需求的用戶只需要將該模板用戶作為默認(rèn)賬號,即可解決頻繁的授權(quán)工作。如果有新的權(quán)限需求則只需對授權(quán)模板用戶授權(quán)即可。
配置文件中可以定默認(rèn)用戶與runas用戶,使用sudo時可以使用-u 選項指定runas用戶,不加-u時使用默認(rèn)用戶,定義語法如下:
Defaults:microcisco runas_default=vmlab
microcisco IPMI=(tom,root) /usr/bin/cat /etc/shadow,NOPASSWD:SOFTWARE
三、sudo安全
1.sudo自身權(quán)限委派sudoedit
默認(rèn)sudo的配置文件/etc/sudoers權(quán)限440,屬主屬組為root,也就是這個文件其它用戶沒有任何權(quán)限,sudoedit則是用于授權(quán)哪個用戶可以編輯sudo配置文件,只需在授權(quán)規(guī)則中將sudoedit命令寫入執(zhí)行的command列表中即可。
2.sudo的訪問令牌生存周期
為用戶做sudo授權(quán)后,用戶執(zhí)行命令會要求輸入自己的用戶密碼,默認(rèn)情況此后的5分鐘之內(nèi)再用sudo執(zhí)行命令則不必再次輸入密碼,由次可見sudo也有類似的訪問令牌生存周期機(jī)制。
- sudo -V 可以查看令牌期限,字段為:Authentication timestamp timeout 默認(rèn)為5分鐘,原理是執(zhí)行sudo時通過檢測時間探針文件的時間戳來判斷訪問令牌是否過期,方法就是將執(zhí)行sudo的當(dāng)前時間與時間探針文件的時間戳對比,如果當(dāng)前時間大于時間探針文件時間戳并且超過了5分鐘,則認(rèn)為訪問令牌過期,需要重新認(rèn)證。
- 探針文件存儲于/run/sudo/ts目錄下。可以根據(jù)生產(chǎn)需求修改令牌生存周期,visudo編輯配置文件,在env_reset后添加超時時間如:env_reset,timesamp_timeout=1
- sudo-v 可以重置時間探針文件的時間戳
- sudo -k 通過重置密碼時間為1970年1月1日來作廢sudo的緩存令牌。使用戶在本次或下一次用sudo執(zhí)行命令時必須輸入密碼。
- sudo -K 通過冊除時間探針文件來作廢sudo的緩存令牌
3.使用sudo時取消輸用密碼過程
對于頻繁使用的命令在每次sudo令牌過期后重新輸入密碼會比較麻煩,在運(yùn)行shell腳本中涉及到sudo授權(quán)的命令時因要求輸入密碼也會打斷腳本的運(yùn)行。
NOPASSWD可以實(shí)現(xiàn)sudo免密執(zhí)行命令,但同時也存在安全隱患,一定要做好嚴(yán)格授權(quán)。如下圖所示
正確的授權(quán)方式
4.sudo 通配符匹配引發(fā)安全漏洞
wang ALL=(root) /bin/cat /var/log/messages
期望授權(quán)允許用戶wang,查看 /var/log/目錄下的messages開頭的文件。
安全威脅:sudo cat /var/log/messages /etc/shadow,結(jié)果可以查看shadow文件,在glob中代表任意長度任意字符,包括空格、/等。
5.sudo在安全實(shí)踐中的注意事項:
四、實(shí)驗(yàn)部分
1. 編輯默認(rèn)配置文件:visudo
2. 定義模塊化的配置文件:visudo -f /etc/sudoers.d/vmlab
3. 定義別名
4. 定義sudo默認(rèn)用戶
Defaults:microcisco runas_default=vmlab
sudo command 用戶默認(rèn)用戶執(zhí)行命令。
sudo -u username 用指定用戶執(zhí)行命令。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。