16views
Fail2Ban은 서버 로그를 실시간으로 감시하여 비밀번호 무차별 대입 공격(Brute-force Attack)을 시도하는 악성 IP를 자동으로 차단해 주는 필수 보안 도구입니다. 복사-붙여넣기만으로 서버 보안을 강화해 보세요.
0. 환경 및 사전 요구 사항
- OS: Ubuntu 22.04 LTS
- 권한:
sudo권한이 있는 사용자 또는root - 목표: SSH 접속 시도를 모니터링하고, 반복 실패 시 해당 IP를 자동 차단.
1. 사전 준비 (System Update)
설치 전 패키지 목록을 최신화하여 의존성 문제를 방지합니다.
Bash
# 패키지 인덱스를 업데이트하고 시스템을 업그레이드합니다.
sudo apt update && sudo apt upgrade -y
2. Fail2Ban 설치 (Installation)
우분투 기본 저장소에 Fail2Ban이 포함되어 있어 설치가 매우 간단합니다.
Bash
# Fail2Ban 패키지를 설치합니다.
sudo apt install fail2ban -y
# 설치 직후 서비스가 실행 중인지 확인합니다.
sudo systemctl status fail2ban
3. 설정 및 구성 (Configuration)
중요: 원본 설정 파일(jail.conf)을 직접 수정하면 업데이트 시 초기화될 수 있습니다. 반드시 jail.local 복사본을 만들어 설정해야 합니다.
Step 1: 설정 파일 복사
Bash
# 사용자 정의 설정을 위한 로컬 설정 파일을 생성합니다.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Step 2: 설정 파일 편집
기본 차단 정책을 설정합니다.
Bash
# 편집기로 설정 파일을 엽니다.
sudo vi /etc/fail2ban/jail.local
[수정 가이드]
[DEFAULT] 섹션에서 아래 항목들을 찾아 환경에 맞게 수정하세요.
- ignoreip: 차단하지 않을 IP (본인의 PC나 관리자 IP)를 등록합니다.
ignoreip = 127.0.0.1/8 ::1 <YOUR_IP_ADDRESS>
- bantime: 접속 차단 지속 시간 (기본값 10m = 10분). 하루 종일 차단하려면
1d로 설정.bantime = 1d
- findtime: 실패 횟수를 카운트할 시간 범위.
findtime = 10m
- maxretry: 최대 로그인 실패 허용 횟수. (이 횟수를 넘으면 차단됨)
maxretry = 5
[SSH 보호 활성화 확인]
파일 내용 중 [sshd] 섹션을 찾아 enabled = true가 되어 있는지 확인합니다. (Ubuntu 22.04에서는 기본적으로 활성화되어 있을 수 있습니다.)
Ini, TOML
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
4. 서비스 실행 및 검증
설정을 마쳤으면 서비스를 재시작하고 정상 작동을 확인합니다.
Bash
# 변경된 설정을 적용하기 위해 서비스를 재시작합니다.
sudo systemctl restart fail2ban
# 서비스가 부팅 시 자동으로 시작되도록 설정합니다.
sudo systemctl enable fail2ban
# Fail2Ban 클라이언트 도구를 통해 현재 상태를 확인합니다.
sudo fail2ban-client status
출력 결과에 Number of jail: 1 그리고 Jail list: sshd가 보이면 정상입니다.
심화 검증 (SSH 감옥 상태 확인):
Bash
# SSH 감옥(Jail)의 상세 상태를 확인합니다. (현재 차단된 IP 확인 가능)
sudo fail2ban-client status sshd
5. 마무리 및 트러블슈팅 Tip 💡
- Tip 1: 실수로 내 IP가 차단되었을 때 (차단 해제)관리자가 비밀번호를 틀려 차단당했다면 다른 IP로 접속하거나 콘솔에서 아래 명령어로 해제할 수 있습니다.
Bash# 특정 IP의 차단을 수동으로 해제합니다.sudo fail2ban-client set sshd unbanip <UNBAN_IP_ADDRESS> - Tip 2: 로그 확인Fail2Ban이 어떤 IP를 왜 차단했는지 보려면 로그를 확인하세요.
Bashtail -f /var/log/fail2ban.log - Tip 3: “Job for fail2ban.service failed” 에러 발생 시설정 파일(jail.local)에 오타가 있을 가능성이 높습니다.
특히 ignoreip 작성 시 IP 사이는 **공백(Space)**으로 구분해야 합니다 (콤마 사용 주의).
이제 귀하의 서버는 무차별적인 로그인 시도로부터 안전하게 보호됩니다! 추가적으로 SSH 포트 번호 변경 가이드가 필요하시면 말씀해 주세요. 보안을 한 단계 더 높일 수 있습니다.
add a comment






