❓ 이상한 요청 발견
클라이언트가 존재하지 않는 경로로 POST 및 GET 요청을 보내왔고, 서버가 404 오류를 반환
들어온 요청:
/hello.world?ADd+allow_url_include=1+ADd+auto_prepend_file=php://input/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php/vendor/phpunit/phpunit/Util/PHP/eval-stdin.php/Core/Skin/Login.aspx분석:
❓ 민감한 파일 접근 시도
아래와 같은 숨김 파일 및 디렉토리에 대한 접근 시도 로그도 찍힘.
/.env/.git/config/favicon.ico✅ nginx 설정에서 PHP 및 숨김 파일에 대한 접근 차단
PHP 파일에 대한 외부 접근 차단:
location ~ \.php$ {
deny all;
}
✅ Fail2Ban 설치 및 구성
1. Fail2Ban 설치
sudo apt-get update
sudo apt-get install fail2ban
/etc/fail2ban/filter.d/nginx-block.conf 파일 생성 및 다음 내용 추가[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/\.env|/\.git/config).*HTTP.*"
/etc/fail2ban/jail.local 파일에 다음 내용 추가[nginx-block]
enabled = true
filter = nginx-block
action = iptables[name=NGINX-BLOCK, port=http, protocol=tcp]
logpath = /var/log/nginx/access.log
maxretry = 1
bantime = -1
# 1시간 차단의 경우 bantime = 3600
설명:
enabled = true: Jail 활성화
filter = nginx-block: 앞서 생성한 필터 사용
maxretry = 1: 1회 감지 시 즉시 차단
bantime = -1: 영구 차단
sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status nginx-block