在Ubuntu上配置Apache2以防止防盜刷,通常涉及以下幾個方面:
mod_evasive模塊來限制單個IP地址在一定時間內的請求數量。以下是具體步驟:
mod_evasivemod_evasive是一個用于防止DDoS攻擊和防盜刷的模塊。
mod_evasivesudo apt-get update
sudo apt-get install libapache2-mod-evasive
mod_evasive編輯/etc/apache2/mods-enabled/evasive.conf文件(如果不存在,可以創建一個):
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
DOSHashTableSize:哈希表的大小。DOSPageCount:單個頁面在指定時間內的最大請求數。DOSSiteCount:單個網站在指定時間內的最大請求數。DOSPageInterval:頁面請求的時間間隔(秒)。DOSSiteInterval:網站請求的時間間隔(秒)。DOSBlockingPeriod:被封禁的時間(秒)。sudo a2enmod evasive
sudo systemctl restart apache2
你可以為敏感目錄或文件設置HTTP基本認證。
sudo htpasswd -c /etc/apache2/.htpasswd username
按照提示輸入密碼。-c選項表示創建新文件,如果文件已存在,可以去掉-c選項。
編輯/etc/apache2/sites-available/your-site.conf文件,添加以下內容:
<Directory /var/www/html/protected>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
啟用站點并重啟Apache:
sudo a2ensite your-site.conf
sudo systemctl restart apache2
你可以使用第三方庫如reCAPTCHA來添加驗證碼。
libapache2-mod-php7.4(如果尚未安裝)sudo apt-get install libapache2-mod-php7.4
編輯/etc/php/7.4/apache2/php.ini文件,確保以下行未被注釋:
extension=curl
extension=gd
重啟Apache:
sudo systemctl restart apache2
在你的HTML表單中添加reCAPTCHA:
<form action="submit_form.php" method="post">
<!-- 其他表單字段 -->
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<input type="submit" value="Submit">
</form>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
在submit_form.php中驗證驗證碼:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=" . $_POST['g-recaptcha-response']);
$responseData = json_decode($response);
if ($responseData->success) {
// 驗證碼正確,處理表單數據
} else {
// 驗證碼錯誤,顯示錯誤信息
echo "Invalid CAPTCHA.";
}
}
?>
定期檢查Apache日志文件,發現異常行為:
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
你可以使用工具如fail2ban來自動封禁惡意IP地址。
fail2bansudo apt-get install fail2ban
fail2ban編輯/etc/fail2ban/jail.local文件,添加以下內容:
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[apache-auth]
enabled = true
filter = apache-auth
action = iptables-multiport[name=Apache, port="http,https", protocol=tcp]
logpath = /var/log/apache2/access.log
重啟fail2ban:
sudo systemctl restart fail2ban
通過以上步驟,你可以在Ubuntu上配置Apache2以防止防盜刷。