[AWS LAMP] 크롤링 즉시 차단 방법
AWS Lightsail 방화벽은 기본적으로 ‘허용(Allow)’ 규칙만 추가할 수 있고, 특정 IP만 콕 집어 차단하는 ‘거부(Deny/DROP)’ 기능이 없습니다. 제가 이전 답변에서 혼동을 드려 정말 죄송합니다. 올려주신 화면처럼 Lightsail 웹 콘솔에서는 특정 IP를 수동으로 블랙리스트에 등록할 수 없습니다.
따라서 Lightsail 환경에서는 웹 콘솔이 아닌 인스턴스 내부(SSH)에서 직접 방화벽 명령어를 입력하여 크롤러를 차단해야 합니다.
방법 1. 인스턴스 내부 방화벽(iptables)으로 즉시 차단하기 (추천)
SSH 터미널창을 열고 아래 명령어를 한 줄씩 복사해서 붙여넣기(Enter) 하시면 서버 단에서 즉시 접근이 거부됩니다.
bash
# 1. 문제의 크롤러 IP 2개를 즉시 차단합니다.
sudo iptables -I INPUT -s 122.136.188.132 -j DROP
sudo iptables -I INPUT -s 55.21.44.205 -j DROP
# 2. 방화벽 규칙이 잘 적용되었는지 목록을 확인합니다.
sudo iptables -L -v -n
- 효과: 이렇게 하면 아파치(Apache) 서버까지 요청이 도달하지 않고 리눅스 커널 수준에서 트래픽을 완전히 버리기 때문에 서버 부하가 즉시 사라집니다.
- 참고:
iptables명령어는 서버를 재부팅하면 초기화되므로, 우선 급한 불을 끄신 뒤 아래 ‘방법 2’를 병행하시는 것을 추천합니다.
방법 2. Bitnami Apache 설정에서 IP 영구 차단하기
서버가 재부팅되어도 계속 차단 상태를 유지할 수 있도록 Bitnami Apache 설정 파일에 직접 거부 규칙을 넣는 방법입니다.
- SSH 터미널에서 아래 명령어를 입력해 비트나미 공통 설정 파일을 엽니다.
sudo nano /opt/bitnami/apache/conf/vhosts/htaccess/default-htaccess.conf- 파일의 가장 맨 위에 아래 내용을 그대로 복사해서 붙여넣습니다.
<RequireAll>Require all grantedRequire not ip 122.136.188.132Require not ip 추가할 IP</RequireAll>Ctrl + O(저장) ->Enter->Ctrl + X(종료)를 눌러 창을 빠져나옵니다.- 수정한 아파치 설정을 적용하기 위해 서버를 재시작합니다.
sudo /opt/bitnami/ctlscript.sh restart apache
💡 근본적인 해결책 권장
현재 로그에 찍힌 크롤러는 단순한 데이터 수집이 아니라, 존재하지 않는 다양한 주소를 무작위로 쑤셔보며 웹 사이트의 취약점을 탐색하는 악성 스캔 공격을 수행하고 있습니다. 오늘 이 IP들을 막아도 내일 다른 IP로 또 들어올 가능성이 매우 높습니다.
Lightsail 인스턴스 앞단에 Cloudflare(무료 플랜)를 연결하시면, 이러한 비정상적인 봇 트래픽을 알아서 감지하고 자동으로 차단(CAPTCHA 인증 요구)해 주므로 매번 IP를 수동으로 막지 않아도 됩니다.
[aws lamp] 외부 서비스나 API에 의존하지 않고 서버 안에서 100% 자급자족하는 자체 PHP 이미지 캡차(captcha) 구현 방법 예제




