Security

保護由 Perl 寫入的全球可寫 .shtml 文件的最佳方法?

  • August 28, 2020

Perl 腳本

我有一個在舊的 Debian 6 伺服器上執行的 Perl 腳本(直到我移動到新伺服器),它在 .shtml 文件中打開一個可編輯窗格,只接受來自單個使用者的Creole標記輸入,並寫入兩個使用者可編輯的 . shtml 文件,並在保存編輯後的 .shtml 文件時製作每個文件的備份副本。.shtml 文件權限為606-rw----rw-.

編輯後,非技術使用者必須輸入密碼才能觸發腳本,並且(在不太可能的情況下,他會這樣做)“腳本”標籤以純文字形式出現。

在切換伺服器之前,這些伺服器曾經在suEXEC其下執行(我沒有設置也不想使用),但現在它們需要更改權限才能執行。

可寫文件

這兩個可編輯的 .shtml 文件是 SSI,virtualHost 塊設置為IncludesNoExec.

使用者目錄中沒有 .htaccess 文件public_html,唯一的其他使用者只進行過簡單的 HTML 編輯並且沒有其他知識,我在cgi-bin上面的public_html文件夾中管理腳本,使用者目錄中的所有文件都是所有者/組使用者名。

我的問題,考慮到上述情況:

  1. 如果文件權限是606/有什麼我應該注意的-rw----rw-嗎?
  2. 現在我還能做些什麼來進一步保護這樣一個舊的 Debian 伺服器?

我已經考慮將伺服器埠從 22 更改為更高的埠,我已經在另一台伺服器上完成了這項工作,但是對於在這個舊伺服器上執行的幾個站點,我還無法訪問他們的 DNS 或遠端登錄設置,所以這還不是一個選擇。像許多人一樣,我並不是真正的伺服器管理員,但在我的共同開發人員去世時必須維護一些東西。

最重要的問題是:

  • 誰執行腳本?
  • 誰可以修改腳本?

從您的描述看來,該應用程序是一個 HTML 表單,而您的程序是一個 CGI 腳本。因此,當使用者點擊“送出”按鈕時,該腳本由 HTTP 伺服器守護程序使用者啟動。

如果此 CGI 腳本或其他腳本受到損害,您不希望修改您的腳本。所以該腳本只能由HTTP daemon 使用者讀取+執行,並且文件的所有者必須是另一個使用者,所以daemon 使用者不能更改權限。

.shtml 文件必須由守護程序讀寫,並且不屬於守護程序。腳本絕不能刪除它們,而只是重寫它們的內容。

儲存腳本和 .shtml 文件的目錄不得為 HTTP 守護程序使用者可寫或擁有。

引用自:https://serverfault.com/questions/1018410