서버 운영 시 공격(무차별대입,brute force)
페이지 정보
본문
SSH나 메일 서버로 들어오는 Brute-Force(무차별 대입) 공격은 자동화된 봇이 수많은 계정명/비밀번호 조합을 시도해 접근권을 획득하려는 공격입니다. 개인·중소규모 서버에서도 빈번하게 발생하며, 성공하면 데이터 유출·스팸 송신·서비스 중단 등 심각한 피해로 이어질 수 있습니다. 아래 글은 공격의 원리, 징후, 그리고 현실적으로 적용 가능한 단계별 방어(설정·도구·운영 관행)를 정리하였습니다.
1) Brute-Force 공격이란? (간단한 원리)
-
공격자는 인터넷을 스캔해 포트(예: SSH 22, SMTP 25/587/465)를 연 서버를 찾습니다.
-
자동화 스크립트(봇넷 포함)가 계정(usernames) 목록과 자주 쓰이는 비밀번호(또는 사전)를 대입합니다.
-
일정 횟수 이상의 시도로 접근에 성공하면 공격자는 쉘 접근이나 메일 릴레이 권한을 획득합니다.
-
획득한 권한으로 추가 침투(백도어 설치), 스팸 발송, 암호화폐 채굴 등을 수행합니다.
핵심: 사람이 직접 하는 공격이 아니라 봇이 반복·병렬로 시도하므로 유효한 방어 없이 서비스만 열어두면 시간문제입니다.
2) 흔한 징후(탐지 포인트)
-
인증 실패 로그 증가:
/var/log/auth.log,/var/log/secure에 실패(FAILED) 항목이 짧은 시간에 급증. -
원격 IP가 여러 곳에서 다수의 계정에 실패 시도.
-
메일 서버의 큐(queued) 급증 또는 외부로 대량 발송됨.
-
서버 리소스(특히 CPU·네트워크) 비정상적 증가.
-
알려지지 않은 계정이 생성되거나 crontab, /tmp에 이상 파일 생성.
로그 기반 탐지는 가장 기본이므로 반드시 중앙로그/모니터링(예: rsyslog, ELK, Promtail+Loki 등)을 도입하세요.
3) 우선 적용해야 할 기본 방어(꼭 할 것부터)
-
암호 기반 인증 금지 → 공개키(SSH key)만 허용
-
/etc/ssh/sshd_config에서: 공개키는
~/.ssh/authorized_keys에만 등록.
PasswordAuthentication noPermitRootLogin noPubkeyAuthentication yes-
관리자/루트 직접 로그인 비허용
-
PermitRootLogin no로 설정하고 일반 계정 +sudo사용.
-
-
강력한 비밀번호 정책(메일 계정 포함)
-
길이, 복잡도, 재사용 금지, 정기 변경(불필요한 빈도는 피함).
-
-
포트 변경(포트 히딩)은 보조책
-
22 → 비표준 포트로 변경하면 스크립트 잡음은 줄지만 근본 방어는 아님.
-
-
패치·업데이트 유지
-
OpenSSH, Postfix/Dovecot 등 관련 소프트웨어는 최신 보안 패치 적용.
-
4) 메일 서버(SMTP/IMAP/POP) 특화 방어
-
인증 사용 강제(STARTTLS/TLS)
-
TLS로 인증 암호화. 포트 587/465 사용 권장.
-
-
스팸·릴레이 방지
-
SMTP 릴레이는 인증된 사용자와 내부 IP로 제한.
-
외부로의 대량 발송 모니터링 및 발송 쿼터 설정.
-
-
SPF / DKIM / DMARC 설정
-
도메인 인증으로 스푸핑/피싱 피해 완화.
-
-
로그인 실패 차단(메일도 fail2ban으로 모니터링 가능)
-
Greylisting / RBL(Realtime Blackhole Lists): 악성 발송 IP를 자동적으로 필터링.
5) 추가 방어 및 고급 기법
-
IP 화이트리스트(관리자) + 차단 리스트 적용: 외부 접근이 극히 제한적이면 가장 안전.
-
포트 노킹 또는 VPN 전용 접속: SSH 접근을 내부망 또는 VPN을 통해서만 허용.
-
공개키 대신 인증서 기반 SSH (OpenSSH Certificate Authority): 대규모 환경에서 관리 편의성과 보안성 향상.
-
다중 인증(2FA): 가능하면 SSH-OTP(예: Google Authenticator) 또는 하드웨어 키 사용(비밀번호 금지와 병행).
-
침해대응 계획: 침해 시 계정 변경, 백업 검증, 악성 스크립트 제거, 법적·운영 보고 루틴 준비.
6) 운영 관행 — 사람 때문에 뚫리는 것을 줄이는 법
-
불필요한 계정·서비스는 제거/비활성화.
-
SSH 키 관리를 중앙화(키 사용 이력·만료 관리).
-
정기적인 로그 리뷰와 알람(로그인 실패 급증 시 SMS/메일 경고).
-
백업은 오프라인 또는 원격지에 보관(랜섬·내부유출 대비).
-
직원·사용자에게 무차별 대입 위험 및 비밀번호 관리 교육 실시.
7) 침해 의심 시 즉각 조치 체크리스트
-
의심 IP 차단(iptables 또는 방화벽).
-
모든 관리자 비밀번호와 키 재발급/교체.
-
로그(SSH, mail, syslog) 원본 보존 후 포렌식.
-
의심 파일/크론/서비스 제거 및 재설치 고려.
-
외부 신고(필요 시) 및 고객 통지 프로세스 점검.
마무리(권장 우선순위)
-
PasswordAuthentication → 즉시 비활성화(공개키 전환).
-
Fail2ban/iptables로 자동 차단 설정.
-
메일은 TLS + 인증 필수화, SPF/DKIM/DMARC 적용.
-
로그 중앙화 및 알람 체계 구축.
-
정기 점검과 사용자 교육.
내용은 아래 관련 링크를 참조해 주세요.