溫馨提示×

Ubuntu Apache2如何配置防盜刷

小樊
55
2025-05-30 15:55:09
欄目: 智能運維

在Ubuntu上配置Apache2以防止防盜刷,通常涉及以下幾個方面:

  1. 限制請求頻率:使用mod_evasive模塊來限制單個IP地址在一定時間內的請求數量。
  2. 驗證用戶身份:使用HTTP基本認證或OAuth等機制來驗證用戶身份。
  3. 使用驗證碼:在敏感操作前要求用戶輸入驗證碼。
  4. 記錄和監控日志:定期檢查服務器日志,發現異常行為。

以下是具體步驟:

1. 安裝和配置mod_evasive

mod_evasive是一個用于防止DDoS攻擊和防盜刷的模塊。

安裝mod_evasive

sudo 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

2. 使用HTTP基本認證

你可以為敏感目錄或文件設置HTTP基本認證。

創建密碼文件

sudo htpasswd -c /etc/apache2/.htpasswd username

按照提示輸入密碼。-c選項表示創建新文件,如果文件已存在,可以去掉-c選項。

配置Apache

編輯/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

3. 使用驗證碼

你可以使用第三方庫如reCAPTCHA來添加驗證碼。

安裝libapache2-mod-php7.4(如果尚未安裝)

sudo apt-get install libapache2-mod-php7.4

配置PHP

編輯/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.";
    }
}
?>

4. 記錄和監控日志

定期檢查Apache日志文件,發現異常行為:

sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log

你可以使用工具如fail2ban來自動封禁惡意IP地址。

安裝fail2ban

sudo 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以防止防盜刷。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女