
作為一個對網路安全知識相當有限的人,我想知道:運行 (1) MySQL 伺服器、(2) 一些具有任意服務的 docker 容器和 (3) apache 或 nginx 作為反向 DNS 是否「安全」 ,在標準家庭LAN 中,並將它們暴露給網際網路?我的網路設定非常簡單:一台路由器連接到互聯網,家裡的所有設備都直接連接到該路由器。我可以使用連接埠轉送和DDNS讓區域網路中的任何裝置都成為伺服器。目前沒有配置 DMZ,並且我沒有使用實體防火牆。
將 80 等連接埠轉送到此類 LAN 中的裝置是否安全,或者我是否應該避免在 DDNS 上註冊路由器的公共 IP?換句話說:所描述的設定是否可以 (1) 使連接埠轉送到的裝置容易受到攻擊(惡意軟體注入、資料竊取等),甚至 (2) 使 LAN 上沒有任何內容的其他裝置容易受到攻擊與伺服器有關嗎?
當然,這不是生產環境。我只是經常同時處理多個項目,我想從我家外面接觸到這些項目,而且我不想為 AWS、GCP 等支付大量費用。並且還部署一些我的Web 應用程式用於個人演示和測試目的。
答案1
[...]所描述的設定是否可以 (1) 使連接埠轉送到的裝置容易受到攻擊(惡意軟體注入、資料竊取等),甚至 (2) 使 LAN 上沒有任何東西的其他裝置容易受到攻擊與伺服器有關?
是的,是的。
安全嗎[?]
這可能是個人意見,具體取決於您所說的「安全」。然而,實際上,可能有兩件事需要考慮:
現代伺服器是不斷地在一系列自動漏洞利用腳本的攻擊下(這通常是大多數攻擊者針對受害者的方式)。
大多數威脅可以透過定期軟體更新、最低限度的預防措施和一些適當的安全設定(您可以合理研究)來緩解。
最重要的是,如果您確實走這條路,您將為您的網路扮演業餘系統管理員(可能讀取日誌、檢查軟體更新等)。如果您不介意擔任此角色,則使用家庭設定相對安全。否則,傳統的第三方服務可能會更快。
我的網路設定非常簡單:一台路由器連接到互聯網,家裡的所有設備都直接連接到該路由器。
透過正確的防火牆設置,這可以相對安全。也就是說,您可能想要專用一台便宜的 PC(舊的 PC,甚至可能是 Raspberry Pi)來執行防火牆任務,例如普夫感。
將 80 等連接埠轉送到此類 LAN 中的裝置是否安全,或者我是否應該避免在 DDNS 上註冊路由器的公共 IP?
這無疑是軼事,但多年來我一直在測試和個人使用中使用極其相似的設置,因此我從未遇到過安全問題。
具體關於 Apache/Nginx 和 MySQL,只是一些小花絮:
確保 Apache/Nginx 沒有充當開放代理(這很容易被濫用,並使您的伺服器成為目標)。這種危險通常可以透過一些簡單的配置命令來減輕(例如此處詳細介紹的 Apache)。
對於 Apache,我建議禁用 .htaccess 檔案。
對於 MySQL,一個大問題是使用基於瀏覽器的管理工具,例如 phpMyAdmin。與 WordPress 一樣,在查看日誌時,這是我見過的最受攻擊的軟體之一(可能是因為 SQL 注入可能非常強大)。任何連接到資料庫的網路應用程式都應該得到適當的保護,但運行這樣的工具(可能)會帶來麻煩。
請注意,上述內容與將資料庫伺服器存取權限限制為僅選定的本機電腦和有限的資料庫權限密切相關。
Web 應用程式防火牆 (WAF) 可協助緩解 SQL 注入攻擊。 CloudFlare 等第三方服務提供此類服務(目前每月 20 美元,還有其他功能)以獲得「一勞永逸」的解決方案。然而,透過 Apache 或 Nginx 使用以下模組自行添加此類功能相當容易模組安全。
最後,保護 Web 伺服器和 MySQL 的基礎知識有詳細記錄,並且通常很容易研究,例如「如何保護 Linux 上的 Apache」或「如何防止 SQL 注入攻擊」。這些都提出了常見的技巧,可以防止大多數惡意使用者破壞您的系統。
當然,您可以嘗試添加額外的安全性(例如真正的 DMZ),但這可能需要更多工作。