1. 애플리케이션 계층 DDoS 공격의 특징
애플리케이션 계층(7계층/http 계층) DDoS 공격은 일반적으로 설계를 통해 대상 시스템의 취약점을 더 잘 악용할 수 있는 트로이 목마 프로그램에 의해 시작됩니다. 예를 들어, 많은 수의 동시 요청을 처리할 수 없는 시스템의 경우 세션을 유지하기 위해 많은 수의 연결을 설정하고 주기적으로 소수의 데이터 패킷을 보내는 것만으로는 시스템의 리소스가 고갈되어 작업을 수행할 수 없게 됩니다. DDoS 목적을 달성하기 위해 새로운 연결 요청을 수락합니다. 다른 공격에는 대규모 데이터 패킷을 전송하기 위해 다수의 연결 요청을 보내는 것이 포함됩니다. 공격은 트로이 목마 프로그램에 의해 시작되기 때문에 공격자는 짧은 시간 내에 많은 수의 연결을 빠르게 구축하고 많은 수의 요청을 발행할 수 있습니다.
다음은 DDoS 특성 중 일부입니다. 이러한 특성을 사용하여 DDoS(포함하되 이에 국한되지 않음)에 저항할 수 있습니다.
공격은 비교적 고정된 일부 IP 또는 IP 세그먼트에서 발생하는 경우가 많으며 각 IP의 수는 다음과 같습니다. 실제 사용자 연결 및 요청 수입니다. (참고: 이러한 요청이 모두 DDoS 공격을 의미하는 것은 아닙니다. NAT를 사용하는 많은 네트워크 아키텍처에서 많은 클라이언트는 게이트웨이의 IP 주소를 사용하여 공용 네트워크 리소스에 액세스합니다. 그러나 그럼에도 불구하고 그러한 요청의 수와 수는 연결 수도 DDOS 공격보다 훨씬 적습니다. )
공격은 트로이 목마에 의해 전송되고 목적은 서버에 과부하를 주는 것이므로 요청 빈도는 트로이목마의 공격보다 훨씬 높습니다. 평범한 사람.
user-agent는 일반적으로 비표준 값입니다.
referer는 때때로 공격과 쉽게 연관되는 값입니다.
2. ddos 공격에 저항하려면 nginx 및 nginx plus를 사용하세요.
위에서 언급한 것과 결합하여 nginx와 nginx plus는 Ddos 공격을 효과적으로 방어하는 데 사용할 수 있는 많은 기능을 가지고 있으며 입구 액세스 트래픽을 조정하고 트래픽을 제어함으로써 Ddos 공격에 저항할 수 있습니다. 백엔드 서버에 대한 역방향 프록시.
1. 요청 속도를 제한하세요
nginx와 nginx plus의 연결 요청을 실제 사용자 요청의 합리적인 범위 내에서 설정하세요. 예를 들어 일반 사용자가 2초마다 로그인 페이지를 요청할 수 있다고 생각한다면 nginx가 2초마다 클라이언트 IP로부터 요청을 받도록 설정할 수 있습니다(이는 대략 분당 30개의 요청에 해당).
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { ... location /login.html { limit_req zone=one; ... } }
`limit_req_zone` 명령은 요청 상태의 특정 키 값을 저장하기 위해 1이라는 공유 메모리 영역을 설정합니다. 위의 예에서는 클라이언트 IP($binary_remote_addr)입니다. 위치 블록의 `limit_req`는 하나의 공유 메모리 영역을 참조하여 /login.html에 대한 액세스를 제한합니다.
2. 연결 수를 제한하세요
실제 사용자 요청의 합리적인 범위 내에서 nginx 및 nginx plus에 대한 연결 수를 설정하세요. 예를 들어 클라이언트 IP당 /store에 대한 연결을 10개 이하로 설정할 수 있습니다.
limit_conn_zone $binary_remote_addr zone=addr:10m; server { ... location /store/ { limit_conn addr 10; ... } }
`limit_conn_zone` 명령은 특정 키 값(위 예에서는 클라이언트 IP($binary_remote_addr))의 상태를 저장하기 위해 addr이라는 공유 메모리 영역을 설정합니다. 위치 블록의 `limit_conn`은 addr 공유 메모리 영역을 참조하여 /store/에 대한 최대 연결 수를 10으로 제한합니다.
3. 느린 연결 종료
slowlris와 같은 일부 DDoS 공격은 다수의 연결을 설정하고 주기적으로 일부 데이터 패킷을 전송하여 세션을 유지함으로써 공격 목적을 달성합니다. . 묻다. 이 경우 느린 연결을 닫음으로써 공격에 저항할 수 있습니다.
`client_body_timeout` 명령은 클라이언트 요청 읽기에 대한 시간 제한을 정의하는 데 사용되고 `client_header_timeout` 명령은 클라이언트 요청 헤더 읽기에 대한 시간 제한을 설정하는 데 사용됩니다. 이 두 매개변수의 기본값은 60초이며 다음 명령을 통해 5초로 설정할 수 있습니다.
server { client_body_timeout 5s; client_header_timeout 5s; ... }
4. IP 블랙리스트 설정
공격이 특정 IP 주소에서 오는 것으로 판단되면, 블랙리스트에 추가되면 nginx는 더 이상 요청을 수락하지 않습니다. 예를 들어 공격이 123.123.123.1부터 123.123.123.16까지의 IP 주소 범위에서 발생한다고 판단한 경우 다음과 같이 설정할 수 있습니다.
location / { deny 123.123.123.0/28; ... }
또는 공격이 여러 IP 주소에서 발생한다고 판단한 경우: 123.123 .123.3, 123.123.123.5 및 123.123.123.7과 같이 설정할 수 있습니다:
location / { deny 123.123.123.3; deny 123.123.123.5; deny 123.123.123.7; ... }
5. IP 허용 목록 설정
웹사이트에서 특정 IP 또는 IP 세그먼트에 대한 액세스만 허용하는 경우 허용을 사용할 수 있습니다. 지정한 IP 주소에만 액세스를 제한하는 명령을 조합하여 거부합니다. 다음과 같이 192.168.1.0 세그먼트의 인트라넷 사용자만 액세스를 허용하도록 설정할 수 있습니다.
location / { allow 192.168.1.0/24; deny all; ... }
deny 명령은 허용으로 지정된 IP 세그먼트를 제외한 다른 모든 IP의 액세스 요청을 거부합니다.
6. 트래픽 피크 감소를 위해 캐싱 사용
nginx의 캐싱 기능을 켜고 특정 캐싱 매개변수를 설정하면 공격으로 인한 트래픽을 줄이고 백엔드 서버에 대한 요청 부담도 줄일 수 있습니다. 다음은 몇 가지 유용한 설정입니다.
proxy_cache_use_stale`의 업데이트 매개변수는 nginx에게 캐시된 객체를 업데이트할 시기를 알려줍니다. 백엔드에 대한 업데이트 요청만 필요하며, 캐시가 유효한 동안에는 객체에 대한 클라이언트 요청이 백엔드 서버를 방문할 필요가 없습니다. 파일에 대한 빈번한 요청을 통해 공격이 수행될 경우 캐싱을 사용하면 백엔드 서버에 대한 요청 수를 크게 줄일 수 있습니다.
proxy_cache_key ` 命令定义的键值通常包含一些内嵌的变量(默认的键值 $scheme$proxy_host$request_uri 包含了三个变量)。如果键值包含 `$query_string` 变量,当攻击的请求字符串是随机的时候就会给 nginx 代理过重的缓存负担,因此我们建议一般情况下不要包含 `$query_string` 变量。
7. 屏蔽特定的请求
可以设置 nginx、nginx plus 屏蔽一些类型的请求:
针对特定 url 的请求
针对不是常见的 user-agent 的请求
针对 referer 头中包含可以联想到攻击的值的请求
针对其他请求头中包含可以联想到攻击的值的请求
比如,如果你判定攻击是针对一个特定的 url:/foo.php,我们就可以屏蔽到这个页面的请求:
location /foo.php { deny all; }
或者你判定攻击请求的 user-agent 中包含 foo 或 bar,我们也可以屏蔽这些请求:
location / { if ($http_user_agent ~* foo|bar) { return 403; } ... }
http_name 变量引用一个请求头,上述例子中是 user-agent 头。可以针对其他的 http 头使用类似的方法来识别攻击。
8. 限制到后端服务器的连接数
一个 nginx、nginx plus 实例可以处理比后端服务器多的多的并发请求。在 nginx plus 中,你可以限制到每一个后端服务器的连接数,比如可以设置 nginx plus 与 website upstream 中的每个后端服务器建立的连接数不得超过200个:
upstream website { server 192.168.100.1:80 max_conns=200; server 192.168.100.2:80 max_conns=200; queue 10 timeout=30s; }
`max_conns` 参数可以针对每一个后端服务器设置 nginx plus 可以与之建立的最大连接数。`queue` 命令设置了当每个后端服务器都达到最大连接数后的队列大小,`timeout` 参数指定了请求在队列中的保留时间。
9. 处理特定类型的攻击
有一种攻击是发送包含特别大的值的请求头,引起服务器端缓冲区溢出。nginx、nginx plus 针对这种攻击类型的防御,可以参考
[using nginx and nginx plus to protect against cve-2015-1635]
)
10. 优化nginx性能
ddos 攻击通常会带来高的负载压力,可以通过一些调优参数,提高 nginx、nginx plus 处理性能,硬抗 ddos 攻击,详细参考:
[tuning nginx for performance]
三、识别ddos攻击
到目前为止,我们都是集中在如何是用 nginx、nginx plus 来减轻 ddos 攻击带来的影响。如何才能让 nginx、nginx plus 帮助我们识别 ddos 攻击呢?`nginx plus status module` 提供了到后端服务器流量的详细统计,可以用来识别异常的流量。nginx plus 提供一个当前服务状态的仪表盘页面,同时也可以在自定义系统或其他第三方系统中通过 api 的方式获取这些统计信息,并根据历史趋势分析识别非正常的流量进而发出告警。
위 내용은 Nginx 및 Nginx Plus를 사용하여 DDOS 공격에 저항하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Nginx와 Apache의 주요 아키텍처 차이점은 Nginx가 이벤트 중심의 비동기 비 블로킹 모델을 채택하는 반면 Apache는 프로세스 또는 스레드 모델을 사용한다는 것입니다. 1) NGINX는 이벤트 루프 및 I/O 멀티플렉싱 메커니즘을 통해 고유 한 연결을 효율적으로 처리하며, 정적 컨텐츠 및 리버스 프록시에 적합합니다. 2) Apache는 다중 프로세스 또는 다중 스레드 모델을 채택하는데,이 모델은 매우 안정적이지만 자원 소비가 높으며 풍부한 모듈 확장이 필요한 시나리오에 적합합니다.

Nginx는 동시 및 정적 컨텐츠가 높은 반면 Apache는 복잡한 구성 및 동적 컨텐츠에 적합합니다. 1. Nginx는 교통량이 많은 시나리오에 적합한 동시 연결을 효율적으로 처리하지만 동적 컨텐츠를 처리 할 때 추가 구성이 필요합니다. 2. Apache는 복잡한 요구에 적합하지만 동시성 성능이 좋지 않은 풍부한 모듈과 유연한 구성을 제공합니다.

Nginx와 Apache는 각각 고유 한 장점과 단점이 있으며 선택은 특정 요구에 기초해야합니다. 1.NGINX는 비동기 비 블로킹 아키텍처로 인해 높은 동시 시나리오에 적합합니다. 2. Apache는 모듈 식 설계로 인해 복잡한 구성이 필요한 저소성 시나리오에 적합합니다.

NginXunit은 여러 프로그래밍 언어를 지원하고 동적 구성, 제로 다운 타임 업데이트 및 내장로드 밸런싱과 같은 기능을 제공하는 오픈 소스 응용 프로그램 서버입니다. 1. 동적 구성 : 다시 시작하지 않고 구성을 수정할 수 있습니다. 2. 다국어 지원 : Python, Go, Java, PHP 등과 호환됩니다. 3. 제로 다운 타임 업데이트 : 서비스를 중단하지 않는 응용 프로그램 업데이트를 지원합니다. 4. 내장로드 밸런싱 : 요청을 여러 응용 프로그램 인스턴스에 배포 할 수 있습니다.

NginxUnit은 다국어 프로젝트 및 동적 구성 요구 사항에 적합한 Apachetomcat, Gunicorn 및 Node.js 내장 HTTP 서버보다 낫습니다. 1) 여러 프로그래밍 언어를 지원하고, 2) 동적 구성 재 장전을 제공합니다. 3) 확장 성과 신뢰성이 높은 프로젝트에 적합한 내장로드 밸런싱 기능.

NginxUnit은 모듈 식 아키텍처 및 동적 재구성 기능으로 응용 프로그램 성능 및 관리 가능성을 향상시킵니다. 1) 모듈 식 설계에는 마스터 프로세스, 라우터 및 응용 프로그램 프로세스가 포함되어 효율적인 관리 및 확장을 지원합니다. 2) 동적 재구성을 통해 CI/CD 환경에 적합한 런타임시 구성을 완벽하게 업데이트 할 수 있습니다. 3) 다국어 지원은 언어 런타임의 동적로드를 통해 구현되어 개발 유연성을 향상시킵니다. 4) 고성능은 이벤트 중심 모델과 비동기 I/O를 통해 달성되며 높은 동시성에서도 효율적으로 유지됩니다. 5) 응용 프로그램 프로세스를 분리하고 응용 프로그램 간의 상호 영향을 줄임으로써 보안이 향상됩니다.

NginxUnit을 사용하여 여러 언어로 응용 프로그램을 배포하고 관리 할 수 있습니다. 1) nginxunit을 설치하십시오. 2) Python 및 PHP와 같은 다른 유형의 응용 프로그램을 실행하도록 구성하십시오. 3) 응용 프로그램 관리에 동적 구성 기능을 사용하십시오. 이러한 단계를 통해 응용 프로그램을 효율적으로 배포하고 관리하고 프로젝트 효율성을 향상시킬 수 있습니다.

Nginx는 높은 동시 연결을 처리하는 데 더 적합한 반면 Apache는 복잡한 구성 및 모듈 확장이 필요한 시나리오에 더 적합합니다. 1.NGINX는 고성능 및 낮은 자원 소비로 유명하며 높은 동시성에 적합합니다. 2. Aapache는 안정성과 풍부한 모듈 확장으로 유명하며 복잡한 구성 요구에 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
