Linux

用於生產的安全 LAMP 伺服器

  • July 24, 2013

保護 Linux、Apache、MySQL、PHP 伺服器(甚至 Perl)以供生產使用的過程是什麼?

除了為 Linux 設置 MySQL 密碼和 root 密碼外,還應該採取哪些其他(可能不那麼明顯)步驟?

另外,如果我變得更加偏執,我可以採取哪些步驟,這通常是不必要的?

這是用於基本的單站點使用,但必須是安全的。

這些建議不在我的腦海中,並不打算全面。

查看 Bastille,它是一系列在 Linux 中實現最佳實踐的腳本。

不要通過純文字協議發送身份驗證數據。例如,禁用 FTP。如果您通過 Apache 發送身份驗證數據,請使用 SSL。

禁用並刪除任何不必要的軟體,包括 GUI 界面。

審核設置了 SUID 位的所有文件並刪除。(這將嚴重限制非 root 能力。了解每個單獨更改的含義。)

審計公共可寫目錄並刪除可寫位。(別管 /tmp 了。)

避免以 root 身份執行任何守護程序。

詳細研究所有偵聽套接字的多使用者軟體,以了解最佳安全實踐。

避免將使用者添加到系統是最好的方法之一。多使用者系統需要更多地關注細節。

執行密碼標準。例如:最少 10 個字元,非字母數字字元,使用字母和數字。這是為了在密碼文件洩露的情況下使暴力破解更加困難。通過系統強制執行。

在 5 次失敗的身份驗證嘗試後鎖定使用者,至少鎖定 10 分鐘。維護密碼歷史記錄,以便使用者無法使用過去的 5 個密碼。

如果您有更大的環境,則使用具有多個子網的網路隔離來隔離風險是絕對必要的。如果環境較小,建議在本地系統上執行防火牆以限制暴露。例如,只允許 SSH 連接到您的 IP。tcpwrappers 也可以用於額外的層。(/etc/hosts.allow, /etc/hosts.deny)

當然,還要讓所有軟體保持最新。特別是面向公眾的守護程序。

使用 SSH:

  • 禁用 SSH 協議 1
  • 僅允許 root 身份驗證without-password(僅密鑰對)

使用阿帕奇:

  • 禁用任何不需要的模組
  • 禁用 .htaccess 和公共目錄
  • 禁用 FollowSymlink 和任何不必要的選項
  • 如果不需要,請不要安裝 PHP。

使用 MySQL:

  • 禁用預設使用者。
  • 不要使用萬用字元主機。
  • 請務必為每個使用者設置唯一的主機。
  • 除非必要,否則不要聽 tcp。(異常不可避免。)
  • 盡可能限制應用程序使用者權限。(SELECT、INSERT、UPDATE、DELETE 非常適合寫入,SELECT 適合讀取)

我建議專門研究 php.ini 的安全性調整。預設情況下,它是風險更高的軟體。

巴士底獄

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