개발노트

고즐의 개발 및 서버 개발 노트

DB 서버 보안 강화 실전 가이드: fail2ban과 Telegram 알림까지 완벽 적용

# DB보안 # fal2ban # MariaDB보호 # 서버침입차단 # 텔레그램알림

Security 2025.12.11 12일 전 26 회 읽음 2



DB 서버 보안 강화가 반드시 필요한 이유

DB 서버는 해킹 시도가 가장 많이 발생하는 영역이며, 포트 스캔과 무차별 로그인 공격에 항상 노출되어 있다. 특히 3306 포트를 외부에 개방한 경우 공격 빈도는 수십 배로 증가한다. 안전한 서비스 운영을 위해서는 서버 보안 등급을 높이고, 공격 시도를 자동으로 차단하는 체계가 필수적이다.

일반적인 웹호스팅 환경에서는 DB 보안이 제한적이거나 자동 차단 기능이 부족한 경우가 많다. 자체적으로 서버를 운용하거나 VPS 환경을 사용한다면 보안 정책을 직접 구축해야 하며, 이 과정에서 가장 효과적인 도구가 바로 fail2ban이다.


DB 서버가 공격받는 대표적인 이유

DB는 인증 기능이 있기 때문에 해커가 접근만 가능하면 비밀번호 대입 공격을 지속할 수 있다. 특히 특정 계정이 ‘%’로 등록되어 있거나 3306 포트가 전체에 개방되어 있다면 위험도는 급격히 상승한다.

  • 전세계에서 자동화된 포트 스캔이 지속적으로 유입됨
  • 비밀번호 추정(Brute-force) 공격이 몇 초 단위로 시도됨
  • 취약한 계정이 있다면 즉시 데이터 탈취로 이어질 위험

따라서 실전 보안 정책은 "탐지 → 자동 차단 → 알림" 구조로 설계해야 한다.


fail2ban의 역할과 동작 방식

fail2ban은 로그를 기반으로 공격 시도를 탐지하고, 특정 패턴이 일정 횟수 이상 발생하면 해당 IP를 자동으로 차단한다. DB, SSH, Apache 같은 주요 서비스의 공격을 효과적으로 막아준다.


fail2ban이 제공하는 핵심 기능

  • 지정된 로그에서 인증 실패 패턴 자동 감지
  • 정해진 횟수 초과 시 공격 IP를 방화벽에 즉시 등록하여 차단
  • 지정된 시간 동안 재접속 차단 및 자동 해제
  • 다양한 서비스(SSh, NGINX, MariaDB) 확장 가능

DB 서버 기준 가장 중요한 기능은 ‘인증 실패 횟수 감지 → IP 밴(ban)’ 구조다. 무차별 대입 공격을 초기에 원천 차단할 수 있다.


fail2ban 설치 및 기본 설정

Rocky Linux 9.x 환경을 기준으로 하며, MariaDB 서버 로그 경로는 /var/log/mariadb/mariadb.log 을 사용한다.


fail2ban 설치

sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban


MariaDB 로그 필터 생성

MariaDB의 인증 실패 로그 패턴을 인식하도록 전용 필터를 생성한다.

sudo vi /etc/fail2ban/filter.d/mariadb-auth.conf
[Definition]
failregex = ^.*Access denied for user .* from <HOST>.*$
ignoreregex =


MariaDB 전용 jail 설정

sudo vi /etc/fail2ban/jail.d/mariadb.conf
[mariadb]
enabled = true
port    = 3306
filter  = mariadb-auth
logpath = /var/log/mariadb/mariadb.log
backend = auto
maxretry = 5
bantime = 36000
findtime = 600


텔레그램 알림 연동으로 실시간 감지 가능

공격 발생 시 즉시 알림을 받을 수 있으면, 인지 속도가 빨라지고 위험 대응도 신속해진다. fail2ban은 텔레그램 Bot API와 쉽게 연동할 수 있다.


텔레그램 액션 생성

sudo vi /etc/fail2ban/action.d/telegram.conf
[Definition]

actionstart =
actionstop  =
actioncheck =

actionban = /usr/bin/curl -s -X POST 
  https://api.telegram.org/bot<bot_token>/sendMessage 
  -d chat_id=<chat_id> 
  -d text="DB 접속 시도 차단됨nIP: <ip>n규칙: <name>"

actionunban = /usr/bin/curl -s -X POST 
  https://api.telegram.org/bot<bot_token>/sendMessage 
  -d chat_id=<chat_id> 
  -d text="DB 차단 해제됨nIP: <ip>n규칙: <name>"

[Init]

bot_token과 chat_id는 본인이 사용하는 값으로 교체한다.


jail에 텔레그램 알림 적용

action = telegram


fail2ban 작동 확인

  • 서비스 실행 상태 확인: systemctl status fail2ban
  • jail 목록 확인: fail2ban-client status
  • MariaDB jails 상세 확인: fail2ban-client status mariadb
  • /var/log/fail2ban.log 에서 밴 내역 확인 가능

모든 설정이 정상이라면 자동 차단과 텔레그램 알림이 실시간으로 동작한다.


정리 및 결론

DB 서버는 다른 어떤 자원보다 공격 위험이 높다. fail2ban을 적용하면 브루트포스 공격을 자동으로 차단할 수 있으며, 텔레그램 알림을 통해 즉시 대응이 가능하다. 서버 이전이나 보안 등급 상향 작업 전에 반드시 구축해야 하는 필수 보안 정책이다.

fail2ban과 Telegram 연동은 구축 난이도에 비해 보안 효과가 매우 크다. 특히 외부 연결이 많은 서비스나 호스팅 이전을 계획 중이라면, 이를 사전에 적용해 두는 것이 안전한 운영의 출발점이다.

문의답변