>  기사  >  시스템 튜토리얼  >  회피 모듈은 애플리케이션 계층 DOS 공격으로부터 웹사이트를 보호합니다.

회피 모듈은 애플리케이션 계층 DOS 공격으로부터 웹사이트를 보호합니다.

WBOY
WBOY앞으로
2024-04-30 17:34:14887검색

웹사이트를 오프라인 상태로 만들 수 있는 공격 방법은 다양합니다. 더 복잡한 방법에는 데이터베이스 및 프로그래밍에 대한 기술적 지식이 필요합니다. 더 간단한 방법은 "Denial Of Service"(DOS) 공격으로 알려져 있습니다. 이 공격 방법의 이름은 일반 고객이나 웹 사이트 방문자의 정상적인 서비스 요청을 거부하려는 의도에서 유래되었습니다.

evasive 模块保护您的网站免受应用层 DOS 攻击

일반적으로 DOS 공격에는 두 가지 형태가 있습니다.

    OSI 모델의 세 번째 및 네 번째 계층, 즉 네트워크 계층 공격
  1. OSI 모델의 7개 계층, 즉 애플리케이션 계층 공격
DOS 공격의 첫 번째 유형인 네트워크 계층은 대량의 정크 트래픽이 웹 서버로 흘러갈 때 발생합니다. 스팸 트래픽이 네트워크의 처리 능력을 초과하면 웹사이트가 다운됩니다.

두 번째 유형의 DOS 공격은 애플리케이션 계층에서 발생하며 정크 트래픽이 아닌 합법적인 서비스 요청을 악용합니다. 페이지 요청 수가 웹 서버의 용량을 초과하면 합법적인 방문자라도 웹 사이트를 사용할 수 없습니다.

이 문서에서는 애플리케이션 계층 공격 완화에 중점을 둘 것입니다. 네트워크 계층 공격을 완화하려면 상당한 양의 사용 가능한 대역폭과 업스트림 공급자의 협력이 필요하지만 일반적으로 네트워크 서버 구성으로는 불가능합니다.

일반 웹 서버를 구성하면 웹 페이지를 애플리케이션 계층 공격으로부터 최소한 어느 정도 보호할 수 있습니다. Cloudflare는 최근

[1] 네트워크 계층 공격 수가 감소하는 반면 애플리케이션 계층 공격 수는 증가하고 있다고 보고 [2]하므로 이러한 형태의 공격을 예방하는 것이 중요합니다.

이 글에서는 zdziarski

[3]가 개발한 Apache2 모듈 mod_evasive[4]을 사용하는 방법을 소개합니다.

또한 mod_evasive는 수백 개의 사용자 이름과 비밀번호 조합을 시도하여 공격자의 추측 시도(예: 무차별 대입 공격)를 차단합니다.

mod_evasive는 각 IP 주소의 요청 수를 기록합니다. 이 숫자가 해당 IP 주소에 대한 여러 임계값 중 하나를 초과하면 오류 페이지가 나타납니다. 오류 페이지에는 합법적인 방문에 응답할 수 있는 온라인 웹사이트보다 훨씬 적은 리소스가 필요합니다.

Ubuntu 16.04에 mod_evasive를 설치하세요

Ubuntu 16.04의 기본 소프트웨어 라이브러리에는 "libapache2-mod-evasive"라는 mod_evasive가 포함되어 있습니다. apt-get을 사용하여 설치를 완료할 수 있습니다:

으아아아

이제 mod_evasive를 구성해야 합니다.

구성 파일은 /etc/apache2/mods-available/evasive.conf에 있습니다. 기본적으로 모든 모듈 설정은 설치 후 주석 처리됩니다. 따라서 모듈은 구성 파일이 수정될 때까지 웹 사이트 트래픽을 방해하지 않습니다.

으아아아

매개변수의 첫 번째 부분의 의미는 다음과 같습니다.

  • DOSHashTableSize - 웹사이트에 액세스하고 있는 IP 주소의 현재 목록과 해당 요청 수입니다.
  • DOSPageCount - 특정 시간 간격 내 각 페이지에 대한 요청 수입니다. 시간 간격은 DOSPageInterval에 의해 정의됩니다.
  • DOSPageInterval - mod_evasive는 페이지 요청의 시간 간격을 계산합니다.
  • DOSSiteCount - DOSPageCount와 동일하지만 동일한 IP 주소에서 사이트 내의 모든 페이지에 대한 요청 수를 계산합니다.
  • DOSSiteInterval - mod_evasive는 웹사이트 요청의 시간 간격을 계산합니다.
  • DOSBlockingPeriod - IP 주소가 블랙리스트에 등록된 시간(초)입니다.

위에 표시된 기본 구성을 사용하는 경우 다음과 같은 경우 IP 주소가 블랙리스트에 추가됩니다.

  • 동일한 페이지를 초당 두 번 이상 요청합니다.
  • 초당 50개 이상의 다양한 페이지를 요청하세요.

IP 주소가 이 임계값을 초과하면 10초 동안 블랙리스트에 등록됩니다.

긴 시간이 아닐 수도 있지만 mod_evasive는 항상 블랙리스트에 등록된 IP 주소에 대한 페이지 요청을 모니터링하고 블랙리스트 시작 시간을 재설정합니다. IP 주소가 계속해서 웹 사이트를 DOS로 시도하는 한, 해당 IP 주소는 항상 블랙리스트에 올라 있습니다.

나머지 매개변수는 다음과 같습니다.

  • DOSEmailNotify - DOS 공격 정보 및 IP 주소 블랙리스트를 수신할 이메일 주소입니다.
  • DOSSystemCommand - DOS 공격이 감지되면 실행되는 명령입니다.
  • DOSLogDir - mod_evasive용 임시 파일을 저장하는 데 사용되는 디렉터리입니다.
mod_evasive
구성

默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(DOSSystemCommand 除外)的注释,如下所示:

<IfModule mod_evasive20.c>
   DOSHashTableSize   3097
   DOSPageCount       2
   DOSSiteCount       50
   DOSPageInterval    1
   DOSSiteInterval    1
   DOSBlockingPeriod  10

   DOSEmailNotify       JohnW@example.com
   #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
   DOSLogDir            "/var/log/mod_evasive"
</IfModule>

必须要创建日志目录并且要赋予其与 apache 进程相同的所有者。这里创建的目录是 /var/log/mod_evasive ,并且在 Ubuntu 上将该目录的所有者和组设置为 www-data ,与 Apache 服务器相同:

mkdir /var/log/mod_evasive
chown www-data:www-data /var/log/mod_evasive

在编辑了 Apache 的配置之后,特别是在正在运行的网站上,在重新启动或重新加载之前,最好检查一下语法,因为语法错误将影响 Apache 的启动从而使网站宕机。

Apache 包含一个辅助命令,是一个配置语法检查器。只需运行以下命令来检查您的语法:

apachectl configtest

如果您的配置是正确的,会得到如下结果:

Syntax OK

但是,如果出现问题,您会被告知在哪部分发生了什么错误,例如:

AH00526: Syntax error on line 6 of /etc/apache2/mods-enabled/evasive.conf:
DOSSiteInterval takes one argument, Set site interval
Action 'configtest' failed.
The Apache error log may have more information.

如果您的配置通过了 configtest 的测试,那么这个模块可以安全地被启用并且 Apache 可以重新加载:

a2enmod evasive
systemctl reload apache2.service

mod_evasive 现在已配置好并正在运行了。

测试

为了测试 mod_evasive,我们只需要向服务器提出足够的网页访问请求,以使其超出阈值,并记录来自 Apache 的响应代码。

一个正常并成功的页面请求将收到如下响应:

HTTP/1.1 200 OK

但是,被 mod_evasive 拒绝的将返回以下内容:

HTTP/1.1 403 Forbidden

以下脚本会尽可能迅速地向本地主机(127.0.0.1,localhost)的 80 端口发送 HTTP 请求,并打印出每个请求的响应代码。

你所要做的就是把下面的 bash 脚本复制到一个文件中,例如 mod_evasive_test.sh

#!/bin/bash
set -e

for i in {1..50}; do
        curl -s -I 127.0.0.1 | head -n 1
done

这个脚本的部分含义如下:

  • curl - 这是一个发出网络请求的命令。
    • -s - 隐藏进度表。
    • -I - 仅显示响应头部信息。
  • head - 打印文件的第一部分。
    • -n 1 - 只显示第一行。

然后赋予其执行权限:

chmod 755 mod_evasive_test.sh

在启用 mod_evasive 之前,脚本运行时,将会看到 50 行 “HTTP / 1.1 200 OK” 的返回值。

但是,启用 mod_evasive 后,您将看到以下内容:

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
...

前两个请求被允许,但是在同一秒内第三个请求发出时,mod_evasive 拒绝了任何进一步的请求。您还将收到一封电子邮件(邮件地址在选项 DOSEmailNotify 中设置),通知您有 DOS 攻击被检测到。

mod_evasive 现在已经在保护您的网站啦!


위 내용은 회피 모듈은 애플리케이션 계층 DOS 공격으로부터 웹사이트를 보호합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제