EQVPS

VPS에서 fail2ban으로 무차별 대입 공격 차단하는 방법

서버에 대한 끊임없는 비밀번호 추측을 멈추세요: fail2ban은 로그를 감시하며 로그인에 너무 많이 실패한 IP를 자동으로 차단합니다. 설치하고, SSH jail을 활성화하고, 차단 규칙을 조정하세요 — 명령 몇 개로.

다른 모든 것을 잠가 두어도, 봇은 포트 22에 대한 비밀번호 시도를 멈추지 않습니다 — 끊임없는 배경 소음이자 부하입니다. fail2ban은 로그를 감시하며 로그인에 너무 많이 실패한 IP를 자동으로 차단하므로, 공격자는 영원히 추측하는 대신 몇 번 시도한 뒤 차단됩니다. 설치는 간단하지만 로그 스팸은 크게 줄어듭니다.

1. fail2ban 설치

sudo apt update && sudo apt install -y fail2ban

2. 로컬 설정 만들기

기본 제공되는 jail.conf를 직접 편집하지 마세요 — jail.local에서 재정의하세요:

sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
# 스스로를 차단하지 마세요 — 집/사무실 IP를 추가하세요
ignoreip = 127.0.0.1/8 ::1
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
EOF

이렇게 하면 10분 안에 5번 로그인에 실패한 IP를 1시간 동안 차단합니다. 오타로 입력한 비밀번호 때문에 스스로 잠기지 않도록 자신의 IP를 ignoreip에 추가하세요.

3. 시작하고 부팅 시 활성화

sudo systemctl enable --now fail2ban

4. SSH jail 확인

sudo fail2ban-client status sshd

현재 차단된 IP가 몇 개인지 볼 수 있습니다 — 몇 분 안에 놀라운 숫자가 되는 경우가 많습니다.

차단 관리

sudo fail2ban-client set sshd unbanip 1.2.3.4   # 차단 해제
sudo fail2ban-client status                     # 모든 jail 목록
sudo systemctl reload fail2ban                  # 설정 변경 적용

솔직한 주의

다음 단계

fail2ban은 강화된 서버를 이루는 한 겹입니다. SSH 키 인증UFW 방화벽과 함께 조합하고, 무엇이든 인터넷에 노출하기 전에 전체 새 VPS 보안 체크리스트를 실행하세요.

자주 묻는 질문

fail2ban은 정확히 무엇을 하나요?

로그 파일(예: SSH auth 로그)을 감시해 같은 IP에서 반복되는 실패를 찾고, IP가 임계값을 넘으면 임시 방화벽 차단을 추가합니다. 하루 종일 포트 22를 두드리는 봇들은 몇 번 시도한 뒤 차단되며, 영원히 추측하도록 내버려 두지 않습니다. 자동으로 이루어지는 지속적인 보호입니다.

SSH 키를 쓰면 fail2ban이 여전히 필요한가요?

둘은 서로 다른 문제를 해결합니다. SSH 키는 추측을 사실상 불가능하게 만들고, fail2ban은 끝없는 시도의 소음과 부하를 막으며, 노출된 다른 서비스(메일, 웹 로그인)도 보호합니다. 키 전용 SSH라면 위험은 이미 낮지만, fail2ban은 저렴한 심층 방어이며 로그 스팸을 줄여줍니다.

fail2ban이 실수로 저를 차단할 수도 있나요?

네, 본인의 비밀번호를 여러 번 잘못 입력하면 그럴 수 있습니다 — bantime 동안 차단되었다가 자동으로 해제됩니다. 절대 스스로를 잠그지 않으려면 설정의 'ignoreip'에 자신의 IP를 추가하세요. 그리고 제공업체 콘솔(EQVPS는 제공)이 항상 다시 들어갈 방법이 된다는 걸 기억하세요.

누가 차단됐는지 보거나 IP 차단을 해제하려면요?

'sudo fail2ban-client status sshd'로 jail과 차단된 IP를 확인하세요. 차단을 해제하려면: 'sudo fail2ban-client set sshd unbanip 1.2.3.4'. 신뢰하는 IP를 영구적으로 추가하려면 ignoreip에 넣고 reload하세요.

bantime, findtime, maxretry는 무엇인가요?

maxretry는 허용되는 실패 횟수, findtime은 그 실패를 세는 시간 창, bantime은 차단이 지속되는 시간입니다. 예를 들어 10분 안에 5번 실패하면 1시간 차단이 발동합니다. 더 집요한 공격자에게는 bantime을 늘리세요(또는 더 긴 값으로 설정하세요).

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.