공격 막는방법좀 알려주셔요

공격 막는방법좀 알려주셔요

QA

공격 막는방법좀 알려주셔요

본문

 awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head -20
    414 111.111.111.111
    395 111.111.111.112
    330 111.111.111.113
    198 111.111.111.114
    179 111.111.111.115
 

 

계속 이런식의 공격이 들어옵니다. 

이 공격 효과적으로 막으려면 어떻게 하면 될까요 ㅠ.ㅠ

fail2ban을 써도 막아지질않네유 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 3

최적의 방안은 Cloudflare와 서버단 방어를 병행하는 복합적 전략을 적용하는 것입니다.

먼저, Cloudflare WAF에서 GeoIP 차단 및 Rate Limiting을 설정하여

일본·홍콩의 과도한 요청을 차단하고, User-Agent 및 Referer 필터링을 추가합니다.

그다음, 서버에서 X-Forwarded-For 기반으로 Cloudflare를 경유한 원본 IP를 필터링하여

불필요한 접근을 막고, 특정 국가 대역을 제한합니다.

또한, Fail2Ban과 iptables 자동화 스크립트를 활용해

일정 횟수 이상 요청하는 악성 IP를 자동 차단하며,

이를 크론 작업으로 실행해 지속적인 모니터링과 차단이 이루어지도록 합니다.

ModSecurity 또는 Cloudflare "Under Attack Mode" 활성화로 비정상적인 요청을 방어하고,

필요한 경우 CDN을 통한 트래픽 우회로 서버 부하를 분산하는 것이 효과적입니다.

 

 다시 말해, Cloudflare의 보호 기능 + 서버단 차단 + 자동화된 Fail2Ban 및 iptables 방어,

이와 같이 결합하시면, ~   아래는 설정 예시들을 찾아 정리해 보았습니다.

*Cloudflare 대시보드 → Security → WAF → Custom Rules에서 아래 설정 추가

Rule: Country IS Japan OR Country IS Hong Kong

Action: Block (또는 Challenge)

*Rate Limiting 설정

Rule: Country IS Japan OR Hong Kong AND Requests per minute > 50

Action: Block or JS Challenge

*/etc/apache2/conf-available/remoteip.conf (또는 httpd.conf) 설정 추가

RemoteIPHeader X-Forwarded-For

Require ip 173.245.48.0/20

Require ip 103.21.244.0/22

Require not ip 133.0.0.0/8 # 일본 대역 차단

Require not ip 119.28.0.0/16 # 홍콩 대역 차단

- 적용 후 Apache 재시작

systemctl restart apache2

*/etc/nginx/nginx.conf 또는 해당 server {} 블록 내 설정 (nginx 서버)

set_real_ip_from 103.21.244.0/22;

real_ip_header X-Forwarded-For;

if ($remote_addr ~* "133\.") {

return 403;

}

if ($remote_addr ~* "119\.28\.") {

return 403;

}

- 적용 후 Nginx 재시작

systemctl restart nginx

*/etc/fail2ban/jail.local 파일 수정

[apache-cloudflare]

enabled = true

port = http,https

filter = apache-cloudflare

logpath = /var/log/apache2/access.log

bantime = 3600 # 1시간 차단

findtime = 60 # 60초 내에

maxretry = 50 # 50번 이상 요청 시 차단

- 적용 후 Fail2Ban 재시작

systemctl restart fail2ban

*/root/block_attack_ips.sh 파일 생성

#!/bin/bash

LOG_FILE="/var/log/apache2/access.log"

BLOCK_LIST="/root/blocked_ips.txt"

# 일본·홍콩 IP 중 100회 이상 요청하는 IP 차단

awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | awk '$1 > 100' | grep -E "133\.|119\.28\." | awk '{print $2}' > $BLOCK_LIST

# iptables로 차단

while IFS= read -r ip; do

iptables -A INPUT -s "$ip" -j DROP

done < "$BLOCK_LIST"

*크론 작업으로 10분마다 실행

crontab -e

. . .

*/10 * * * * /bin/bash /root/block_attack_ips.sh

*설치 후 기본적인 공격 차단 활성화 (CentOS)

yum install mod_security

systemctl restart httpd

*/etc/httpd/conf.d/mod_security.conf 설정 추가

SecRule REQUEST_HEADERS:User-Agent "curl|python|bot" "id:1001,phase:1,t:none,log,deny,status:403,msg:'Suspicious Bot Detected'"

흠 웹 사이트의 DNS를 클라우드 플레어로 변경하여 트래픽을 먼저 Cloudflare에서 처리하도록 하셔는데도 디도스공격 방어가 않되던가요?

그리고 또한 설정아이피에 대한 모든 트레픽을 차단 해보시기 바랍니다.
sudo iptables -A INPUT -s 111.111.111.111 -j DROP
sudo iptables -A INPUT -s 111.111.111.112 -j DROP
sudo iptables -A INPUT -s 111.111.111.113 -j DROP
sudo iptables -A INPUT -s 111.111.111.114 -j DROP
sudo iptables -A INPUT -s 111.111.111.115 -j DROP

그리고 자동화 로 스크립트로 정의해놓으시면됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 95
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT