Linux 리눅스 서버 보안 강화 – Fail2Ban으로 SSH 자동 차단 시스템 구축기
페이지 정보

본문
우분투 서버 보안 강화 – Fail2Ban으로 SSH 자동 차단 시스템 구축기
리눅스 서버를 운영하는 입장에서 가장 신경 써야 하는 부분은 바로 보안입니다.
특히 외부로 열려 있는 SSH 포트는 공격의 1순위가 되며, 생각보다 빠르게, 그리고 끊임없이 공격이 들어옵니다.
왜 Fail2Ban을 도입했는가?
저는 현재 수만 건의 데이터를 보유한 웹 서비스를 운영 중이며,
검색 엔진에 데이터가 잘 노출되다 보니 자연스럽게 해외에서도 서버에 접근하려는 시도가 많아졌습니다.
특히 중국, 중동, 유럽 등 다양한 국가에서 SSH 포트에 무차별 대입 공격이 시도되었고, 하루 수백 건 이상 sshd
로그가 쌓이기 시작했죠.
특이한 점은, 시스템적으로 root
계정으로 SSH 접속이 가능해야 하는 상황이었기 때문에 일반적인 방법처럼 PermitRootLogin no
로 막을 수 없었습니다.
고민 끝에 내린 선택 – 자동 차단 + 모니터링
단순히 포트를 바꾸거나 IP를 수동으로 차단하는 방식은 근본적인 해결책이 되지 않았습니다.
그래서 저는 Fail2Ban을 활용하여 다음과 같은 전략을 세웠습니다:
-
SSH 포트는 열어두되, 로그인 실패가 일정 횟수를 넘기면 자동 차단
-
특정 국가 또는 고정 IP는 예외 처리
-
차단 이력과 시도를 모니터링하여 분석
이 방식으로 전환한 뒤에는 하루 수천 회의 접속 시도 중 실제로 유효한 공격은 모두 자동으로 걸러지게 되었고,
서버는 안정적이면서도 보안성 높은 상태를 유지할 수 있었습니다.
Fail2Ban 설치 및 설정 방법
1. Fail2Ban 설치
[code] sudo apt update sudo apt install fail2ban -y [/code]
설치 후 서비스는 자동으로 시작됩니다.
2. 설정 파일 구성
Fail2Ban의 기본 설정 파일은 /etc/fail2ban/jail.conf
이지만, 업데이트로 덮어씌워지는 것을 방지하기 위해 복사하여 사용합니다.
[code] sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local [/code]
파일 맨 아래에 다음 설정을 추가합니다:
[code] [sshd] enabled = true port = ssh backend = systemd logpath = %(sshd_log)s maxretry = 5 findtime = 600 bantime = 43200 [/code]
-
maxretry
: 실패 허용 횟수 (예: 5번 실패 시 차단) -
findtime
: 실패 감지 시간 (10분 = 600초) -
bantime
: 차단 지속 시간 (12시간 = 43200초)
3. 관리자 IP 예외 처리
고정 IP가 있다면 ignoreip
옵션으로 차단 대상에서 제외할 수 있습니다.
[code] ignoreip = 127.0.0.1 203.0.113.55 [/code]
4. Fail2Ban 재시작 및 상태 확인
설정을 적용하기 위해 서비스를 재시작합니다.
[code] sudo systemctl restart fail2ban [/code]
Fail2Ban 전체 상태 확인:
[code] sudo fail2ban-client status [/code]
특정 jail(예: sshd)의 상태 확인:
[code] sudo fail2ban-client status sshd [/code]
5. 차단 로그 확인
실시간으로 어떤 IP가 차단되는지 확인하려면 다음 명령어를 사용합니다.
[code] sudo tail -f /var/log/fail2ban.log [/code]
6. 수동 차단 해제
잘못 차단된 IP가 있다면 다음 명령으로 해제할 수 있습니다.
[code] sudo fail2ban-client set sshd unbanip 203.0.113.25 [/code]
운영 이후의 변화
Fail2Ban을 적용한 이후, 하루에도 수백에서 수천 회 이상 들어오던 SSH 브루트포스 시도는
모두 자동으로 차단되었고, 서버 리소스는 눈에 띄게 안정되었습니다.
특히 저는 웹사이트에 약 10만 개 이상의 데이터를 등록해 놓은 상태이기 때문에
검색 엔진 크롤링에 의해 노출도 많고, 그에 따른 무차별 접속 시도도 많은 상황입니다.
그런 환경에서도 Fail2Ban은 운영에 방해가 되지 않으면서도 강력한 방어선이 되어주었습니다.
마무리
Fail2Ban은 복잡한 설정 없이도 시스템 로그를 감시하고, 의심스러운 IP를 자동으로 차단해주는 매우 강력한 보안 툴입니다.
특히 root 계정을 반드시 SSH로 접속해야 하는 상황처럼 일반적인 보안 가이드라인을 따르기 어려운 환경에서도
Fail2Ban은 가장 현실적이면서도 효과적인 대안이 됩니다.
보안은 막는 것만이 능사가 아닙니다.
열어야 할 곳은 열되, 감시하고 대응할 수 있는 체계를 갖추는 것, 그것이 실전 운영자의 전략입니다.
- 이전글Fail2Ban + Telegram 연동으로 실시간 차단 알림 받기 25.04.01
- 다음글tar로 디렉토리 압축 및 백업 25.03.28
댓글목록
등록된 댓글이 없습니다.