互聯網和技術徹底改變了我們的世界,從支付賬單到享受在線購物。顯然,我們正在體驗創新技術對日常生活的影響。但是,就這些沖動的趨勢正在轉向激烈的技術而言,我們更容易受到安全威脅。
一家網絡安全公司最近遇到了 3.6 億個被盜信用卡帳戶(在網絡黑市上待售)的威脅。這不是唯一的威脅;有許多攻擊是以前檢測到的,而且毫無疑問會發生在我們身邊。因此,必須保持最大的安全性,以確保您的機密客戶詳細信息保持安全。此外,它還可以幫助您節省因消費者訴訟而可能給您帶來的數百萬美元損失。
在這篇博文中,我積累了一些事實,可以幫助您防止基于 LAMP 的服務器受到漏洞的侵害。LAMP 是最流行的 Web 開發框架之一,由四個組件組成,即Linux、Apache、My SQL和 PHP,它們以分層的方式構建。每一層都支持整個軟件堆棧的關鍵部分。
保護您的服務器免受惡意攻擊
正是出于這個原因,您的 Apache Web 服務器不可避免地得到了完美的配置、維護和監控,因此它不會暴露在漏洞之下。在此博客中,您可以看到保護專用服務器托管可以遵循的一般準則,以及為減輕此類攻擊造成的損害而應考慮的重要步驟。
保護 Web 服務器安全的步驟
對于裝有 Apache 的服務器
- 按照下面列出的步驟隱藏 Apache 版本號和其他敏感信息:
添加或編輯以下兩個指令,它們存在于 httpd.conf 文件中
服務器簽名關閉
服務器令牌產品
服務器簽名出現在 Apache Web 服務器生成的頁面底部,例如 404 頁面、目錄列表等。
Server Tokens Prod 指令基本上用于確定 Apache 將在服務器 HTTP 響應標頭中放入什么。
- 確保您的 Apache 版本在其自己的用戶帳戶和組下運行。添加一個單獨的用戶“Apache”,然后修改 httpd.conf 中的給定指令以將 apache 作為自己的用戶運行是最佳方式。
用戶 apache組 apache
- 確保任何用戶都不能訪問 Web 根目錄之外的文件。
<Directory />?Order Deny,Allow?Deny from all?Options None?AllowOverride None?</Directory>?<Directory /html>?Order Allow,Deny允許所有</Directory>
注意:當我們在上面的代碼中設置“Options None”和“AllowOverride”None 時,它??只會關閉服務器的所有選項和覆蓋。現在,您可以為每個需要選項或覆蓋的目錄顯式添加它們。
- 關閉目錄瀏覽,然后跟隨符號鏈接和CGI 執行。您可以通過 Directory 標記內的 Options 指令執行此操作。
只需使用即可關閉所有選項
選項無
盡管如此,如果您想關閉很少的幾個,請在 Options 指令中用空格分隔每個選項:
選項 -ExecCGI -FollowSymLinks -Indexes
- 安裝modsecurity
Modsecurity 是一個 Apache 附加模塊,通過它可以檢測和防止 http 攻擊。如果您的 Web 開發人員忘記添加輸入驗證,這是防止 SQL 注入的最佳方法。如果開發人員未能識別和阻止信息泄露問題(例如泄漏詳細的錯誤消息、社會安全號碼或信用卡號碼),信息也可能被泄露
按照這些方法安裝 mod-security
在 CentOS 上:
百勝安裝mod_security
在 Ubuntu 上:
apt-get 安裝 mod_security。
服務 httpd 重新啟動
- 禁用在Apache Web 服務器上啟用的所有不需要的模塊。
要搜索已安裝的模塊,您可以運行以下命令:
grep LoadModule httpd.conf
以下是一些通常啟用但您甚至不需要它們的模塊的列表。
mod_imap
mod_include
mod_info
mod_userdir
模組狀態
mod_cgi
mod_autoindex。
要禁用它們,請在每個模塊前添加一個 # 符號
- 降低默認設置為 300 秒的超時值。降低此值有助于降低拒絕服務攻擊的潛在影響。
超時 45
-
限制大請求
要減輕拒絕服務攻擊的影響,請限制可以在 http 請求中發送的正文數量。如果您不需要大量上傳,那么您可以通過以下指令將其限制為 1MB。
限制請求正文 1048576
9. ?應用程序和數據庫安全對于防止 SQL 注入從編碼不良的網站中提取數據至關重要。以下是如何防止它。
- 確保您的 Joomla、WordPress 和 Drupal 等 Web 應用程序是最新的。
- 訂閱錯誤更新和漏洞報告。
- 避免對文件或文件夾的 word 可寫 777 權限。
- 定期通過掃描您的網絡包來檢查病毒或感染。
- 如果您使用的是 MySQL 或 MariaDB,請運行 MySQL 安全安裝腳本。
- 如果您的應用程序需要您存儲敏感信息,如用戶名、密碼、信用卡數據等,請確保使用數字證書方法對所有通信進行加密。
對于帶有 PHP 的服務器
1.?以獨立用戶而不是Apache 模塊運行 PHP 。如果將 php 作為 Apache 模塊安裝,則 php 腳本根據 Apche 用戶權限運行,并且更容易受到安全漏洞攻擊。
安裝 php 的一個不錯的選擇是使用 php-fpm 一個 fastcgi 進程管理器,它使您能夠以單獨的用戶身份運行和管理 php 腳本。
- 始終使用 POST 方法傳遞重要參數,如用戶名、密碼、信用卡信息等。
- 始終驗證表單和文本輸入,因為存在跨站點腳本編寫的風險,允許黑客通過簡單地上傳包含惡意代碼的文件在您的服務器上運行惡意代碼。
- 通過php.ini文件隱藏PHP版本,添加以下內容
Vim /etc/php.ini
expose_php = 關閉
- 將所有 php 錯誤記錄到一個文件中,而不是在網站上
display_errors = 關閉
log_errors = 開
error_log = /var/log/httpd/php_error.log
使用 MySQL 或 MariaDB進行專用或VPS 托管
- 運行 MySQL 安全安裝
安裝 MySQL 后運行 mysql_secure_installation 腳本
sudo /usr/bin/mysql_secure_installation
此代碼將提示您添加 MySQL root 密碼,鎖定對 localhost 的 root 訪問并刪除任何不需要的數據庫,如測試數據庫。
- 通過登錄到您的 MySQL 服務器來保護 MySQL,并確保所有 MySQL 用戶都有密碼。此外,刪除不需要的用戶(如果有)。僅授予授權用戶訪問權限。
上述所有步驟和程序有助于確保您客戶的數據保持安全并遠離所有惡意行為。