一起學shell(十一)之安全的shell指令碼:起點

餘二五發表於2017-11-07

#———————————————————-# 
# ====> 紅色字型 -特指煮酒個人所見。加粗則為需要重點注意。 #
# ====> 藍色加粗 -特指與本文相關人員,包括參與修正的朋友。 #
# ====> 煮酒品茶 -Http://cwtea.blog.51cto.com          #
#———————————————————-#

 一起學shell(十一)之安全的shell指令碼:起點

煮酒品茶:安全性shell指令碼提示、限制性shell、特洛伊木馬、為shell指令碼設定setuid:壞主意,ksh93與特權模式。這章基本上是完全抄吧,因為這是原作的純經驗,也不敢自己去隨便修改。

以下都是重點:

bin目錄設定保護

確認$PATH下的每一個目錄都只有它的擁有者可以寫入,其餘任何人都不能,同樣的道理也應應用於bin目錄裡的所有程式。

寫程式前,先想清楚

花點時間想想,你想要做的是什麼,該如何實行。

應對所有輸入引數檢查其有效性

如果你期待的是數字,那麼驗證拿數字。

對所有可返回錯誤的命令,檢查錯誤處理程式碼

不在預期內的失敗情況,很可能是有問題的強迫失敗,導致指令碼出現不當的行為。

不要信任傳進來的環境變數

如果它們被接下來的命令(例如TZPATHIFS)使用時,請檢查並重設為已知的值。

從已知的地方開始

在指令碼開始時,請切cd到已知目錄,這麼一來,接下來的任何相對路徑名稱才能指到已知位置。請確認cd操作成功

[root@localhost new]# cd ~ ||exit 1

在命令上使用完整路徑

這麼做使你才能知道自己使用的是哪個版本,無須理會$PATH設定

使用syslog保留審計跟蹤

當使用該輸入時,一定將使用者輸入引用起來

如:“$1”“$*”,這麼做可以防止居心不良的使用者輸入作超出範圍的計算與執行

勿在使用者輸入上使用eval

甚至在引用使用者輸入之後,也不要使用eval將它交給shell再處理,如果使用者讀了你的指令碼,發現你在使用eval,就能輕鬆地利用這個指令碼進行任何破壞。

利用通配字元展開的結果

你可以將空格、分號、反斜槓等放在檔名裡,讓棘手的事情交給系統管理員處理,

檢查使用者輸入是否有meta字元

如果使用eval$(….)裡的輸入,請檢查是否有像$`這類的meta字元

檢測你的程式碼,並小心閱讀它

尋找是否有可被利用的漏洞與錯誤,把所有壞心眼的想法都考慮進去,小心研究你的程式碼,試著找出破壞它的方式,再修正你發現的所有問題。

留意竟爭條件

攻擊者是不是可以在你的指令碼里的任兩個命令之間執行任意命令,這對安全性是否有危害,如果是,換個方式處理你的指令碼。

對符號性連線心存懷疑

chmod檔案或是編輯檔案時,檢查它是否真的是一個檔案,而非連線到某個關鍵性系統檔案的符號連線(利用[ -L file] [-h file])檢測file是否為符號性連線。

找其他人重新檢查你的程式,看看是否有問題。

通常另一雙眼睛才能找出原作者在程式設計上陷入的盲點。

儘可能用setgid而不要用setuid

使用新的使用者而不是root

如果你必須使用setuid訪問一組檔案,請考慮建立一個新的使用者,非root的使用者做這件事並設定setuid給它。

儘可能限制使用setuid的程式碼

限制性shell

是將使用者置於嚴格限制檔案寫入移動的環境中,使用者多半是使用訪客帳號

變更工作目錄:cd是沒有作用的。如果嘗試使用它,會收到錯誤資訊

不允許重定向輸入到檔案:重定向運算子>,>|,<>,>>都不被允許,這點不包含exec的使用。

指定新值給環境變數ENV,FPATH,PATH.SHELl或試圖以typeset改變它們的屬性。

標題任何帶有斜槓(、)的命令路徑名稱,shell權執行在$PATH裡找到的命令。

使用builtin命令,增加新的內建命令。

 

特洛伊木馬

shell指令碼設定setuid壞主意

為使用者設定一個使用者ID這是一個特殊限位。

Ksh93與特權模式

特權模式設計就是為了對付setuidshell指令碼,這是一個set -o選項,無論何時當shell執行之指令碼已設定setuid伴時,shell便會自動輸入它,也就是說,當有效使用者ID與實際使用者ID不同時。

煮酒品茶:到這裡其實大章就已經看完了,很多東西其實還都沒完全懂,所以還需要翻閱多次,從讀指令碼到評論指令碼最後到寫指令碼的過程是要慢慢來的。這章的內容寫的非常深入我心,一個好的指令碼就是要把所有未知和有害的因素考慮進去。故,努力吧。

<>

本文轉自 煮酒品茶 51CTO部落格,原文連結:http://blog.51cto.com/cwtea/881515,如需轉載請自行聯絡原作者


相關文章