ubuntu

Ubuntu Apache2如何配置防盗刷

小樊
44
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>

启用模块

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
看了该问题的人还看了