무차별 대입 및 플러드 방어
MyPanel은 무거운 WAF 없이도 상호 보완적인 두 개의 계층으로 비밀번호 추측(무차별 대입)과 요청 플러드(애플리케이션 계층)로부터 서버를 보호합니다.
- Fail2ban — 시스템 수준에서 공격 IP를 자동으로 차단합니다.
- nginx 속도 제한 — 웹사이트별로 요청 플러드를 제한합니다.
Fail2ban — 자동 IP 차단
섹션 제목: “Fail2ban — 자동 IP 차단”무차별 대입 방어 메뉴를 엽니다. 패널이 Fail2ban을 시각적으로 관리합니다.
- 개요 타일 — Fail2ban 설치/실행 여부, jail 개수, 현재 차단된 총 IP 수.
- 원클릭 무차별 대입 방어 — 안전한 기본값으로 권장 jail 세트를 활성화하는 단일 토글:
sshd— SSH 비밀번호 추측.nginx-http-auth— 잘못된 HTTP Basic 인증 비밀번호.nginx-limit-req— nginx 속도 제한 초과(아래 속도 제한 계층과 연동).nginx-botsearch— 악성 URL 스캔.
- 차단 시간(
bantime, 예:10m,1h,1d)과 최대 재시도 횟수(maxretry)를 조정합니다. - jail별 현재 차단된 IP 목록과 각 항목의 차단 해제 버튼(본인이 잠겼을 때 사용).
패널은 설정을 별도의 파일(/etc/fail2ban/jail.d/mypanel.local)에 기록하며 — 시스템 설정은 절대 건드리지 않고 — Fail2ban을 다시 로드합니다. 다시 로드가 실패하면 패널은 이전 설정을 복원합니다.
웹사이트별 속도 제한
섹션 제목: “웹사이트별 속도 제한”각 웹사이트 안에서 Nginx → 속도 제한 탭을 엽니다. 활성화하면 요청 플러드(L7)를 제한하고 비밀번호 추측(예: wp-login.php)을 늦출 수 있습니다.
- 3가지 프리셋 — 완화 / 보통 / 엄격 — 또는 직접 설정:
- IP당 초당 동적 요청 수(rate).
- 짧은 급증을 위한 Burst 허용치.
- IP당 동시 연결 수(conn).
- 정적 자산(이미지, CSS, JS, 폰트 등)은 카운트에서 제외되므로 파일이 많은 일반 페이지 로드가 잘못 차단되지 않습니다(
429).
한도를 초과하면 nginx는 **429 Too Many Requests**를 반환합니다. Fail2ban의 nginx-limit-req jail은 이러한 429 이벤트를 읽어 해당 IP를 완전히 차단합니다 — 두 계층이 서로를 강화합니다.