기술 가이드

Fedora 17에서 IPS(침입 방지 시스템) 설정하는 방법

5 min read 네트워크 보안 업데이트됨 24 Sep 2025
Fedora 17에서 Suricata IPS(Vuurmuur) 설정 가이드
Fedora 17에서 Suricata IPS(Vuurmuur) 설정 가이드

개요

Vuurmuur는 사람이 읽을 수 있는 규칙 문법을 iptables 명령으로 변환해주는 리눅스 방화벽 관리자입니다. 로그 보기, 트래픽 셰이핑, 연결 종료 등 기능을 제공합니다. Suricata는 멀티스레드 기반의 네트워크 IDS/IPS로, IDS와 IPS 모드를 지원하며 HTTP 스트림에서 파일을 추출하는 등 다양한 기능을 제공합니다.

이 문서는 Fedora 17 저장소에 포함된 패키지만 사용해 기능하는 IPS를 구성하는 방법을 제공합니다.

사전 준비

  • Fedora 17이 설치된 시스템과 관리자(root) 권한
  • 트래픽을 캡처할 물리적 또는 가상 인터페이스 이름(예: eth0)
  • 인터넷 연결(규칙 파일 다운로드에 필요)

중요: IPS는 잘못 구성하면 합법적 트래픽을 차단할 수 있습니다. 먼저 IDS(수동) 모드로 충분히 테스트하세요.

Vuurmuur와 Suricata 설치

다음 명령으로 Vuurmuur와 Suricata를 설치합니다:

yum install suricata Vuurmuur-daemon Vuurmuur-tui

설치가 끝나면 다음 섹션으로 넘어갑니다.

Suricata를 IDS(수동) 모드로 실행해 검증하기

IPS로 전환하기 전에 Suricata가 패킷을 올바르게 분석하는지 IDS 모드에서 확인합니다.

  1. Emerging Threats 무료 규칙을 Suricata 규칙 디렉터리로 가져옵니다:
cd /etc/suricata/
curl -O https://rules.emergingthreatspro.com/open/suricata/emerging.rules.tar.gz
tar xzvf emerging.rules.tar.gz
ln -s /etc/suricata/rules/reference.config /etc/suricata/reference.config
ln -s /etc/suricata/rules/classification.config /etc/suricata/classification.config
cp /etc/suricata/rules/suricata-1.2-prior-open.yaml /etc/suricata/suricata.yaml
  1. Suricata를 수동 모드로 실행합니다(예: 인터페이스 eth0):
suricata -c /etc/suricata/suricata.yaml -i eth0

몇 분간 실행한 뒤 /var/log/suricata/stats.log와 /var/log/suricata/http.log를 확인해 패킷이 정상적으로 분석되는지 확인합니다. 브라우저로 웹사이트를 열어 트래픽을 생성하는 것이 도움이 됩니다.

중요: 테스트 중에는 Suricata가 로그만 기록하고 트래픽을 차단하지 않습니다.

Vuurmuur를 사용해 Suricata로 트래픽 전달 준비하기

Suricata가 트래픽을 검사하려면 iptables 규칙으로 패킷을 Suricata로 전달해야 합니다. Vuurmuur로 방화벽을 관리합니다.

  1. vuurmuur_conf를 열고 “Rules”에서 새 규칙을 추가합니다:
accept service any from any to any log

이미지(화면 예시):

Vuurmuur에서 기본 허용 규칙을 추가한 화면

  1. 인터페이스를 Vuurmuur 설정에 추가합니다(예: eth0):

Vuurmuur에서 인터페이스 eth0를 추가한 화면

  1. rsyslog 구성을 조정해 Vuurmuur 로그가 제대로 기록되도록 합니다. /etc/rsyslog.conf에 다음 줄을 추가합니다:
*.debug /var/log/debug

그런 다음 rsyslog를 재시작합니다:

service rsyslog restart
  1. Vuurmuur 서비스를 시작하고 부팅 시 자동 시작되도록 설정합니다:
service vuurmuur start
systemctl enable vuurmuur.service

vuurmuur_conf의 로그 뷰어에서 트래픽이 흐르는지 확인합니다:

Vuurmuur 로그뷰어에 트래픽이 표시된 화면

Suricata로 트래픽 전달(IDS → IPS 전환)

모든 트래픽을 Suricata로 전달하려면 Vuurmuur 규칙을 nfqueue로 바꿉니다:

nfqueue service any from any to any

규칙을 변경한 뒤 vuurmuur_conf에서 변경 사항 적용(Apply changes)을 클릭하면 방화벽이 자동으로 업데이트됩니다. 로그뷰어는 nfqueue로 패킷을 전달하는 것을 보여줍니다:

Vuurmuur 로그에 nfqueue 전달이 표시된 화면

그다음 Suricata를 nfqueue 인라인 모드로 실행합니다(예: q 번호 0):

suricata -c /etc/suricata/suricata.yaml -q0

브라우저를 열어 트래픽이 흐르는지 확인하고 /var/log/suricata/stats.log, /var/log/suricata/http.log를 확인합니다. 예시 로그는 다음과 같습니다.

stats.log 예시(부분):

-------------------------------------------------------------------
Date: 10/8/2012 -- 17:20:08 (uptime: 0d, 01h 39m 02s)
-------------------------------------------------------------------
Counter                   | TM Name                   | Value
-------------------------------------------------------------------
decoder.pkts              | Decode1                   | 3147
... (생략)
detect.alert              | Detect                    | 0

http.log 예시(부분):

10/08/2012-17:24:02.447292 www.howtoforge.com [] / [] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [] 192.168.122.48:48396 -> 188.40.16.205:80

실행 중인 Suricata를 중단한 뒤 /etc/sysconfig/suricata 파일을 열어 서비스 옵션을 설정합니다:

OPTIONS="-q 0 -D --pidfile /var/run/suricata.pid"

그다음 서비스로 시작하고 부팅 시 자동 시작하도록 설정합니다:

service suricata start
systemctl enable suricata.service

특정 트래픽 차단하기

기본적으로 많은 규칙이 alert(경고)로 설정되어 있어 트래픽을 차단하지 않습니다. IPS로서 차단을 테스트하려면 설정을 변경해야 합니다.

  1. /etc/suricata/suricata.yaml 파일에서 stream 섹션을 찾아 inline을 yes로 설정합니다(스트림 재조립이 IPS에 맞게 동작하도록):
stream:
  memcap: 32mb
  checksum_validation: yes      # reject wrong csums
  inline: yes
  1. Suricata가 로드할 규칙 파일 목록에 local.rules를 추가합니다:
default-rule-path: /etc/suricata/rules/
rule-files:
 - local.rules
 - emerging-ftp.rules
 - emerging-policy.rules
  1. /etc/suricata/rules/ 디렉터리에 local.rules 파일을 만들고 다음 한 줄을 추가합니다(예시는 facebook.com 차단):
drop tcp any any -> any any (msg:"facebook is blocked"; content:"facebook.com"; http_header; nocase; classtype:policy-violation; sid:1;)
  1. Suricata를 재시작합니다:
service suricata restart

이제 브라우저에서 http://www.facebook.com/에 접속하면 요청이 타임아웃되거나 차단됩니다. /var/log/suricata/fast.log에 차단 로그가 기록됩니다:

10/06/2012-11:40:49.018377  [Drop] [] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57113 -> 173.252.100.16:80

중요: 실제 환경에서는 도메인 기반 차단 규칙은 우회 가능하며 HTTPS 트래픽에서는 SNI나 TLS 암호화로 인해 본 방식으로는 차단이 어렵습니다.

역할별 체크리스트

  • 네트워크 엔지니어

    • Suricata가 기대하는 인터페이스를 캡처할 수 있는지 확인
    • nfqueue와 Vuurmuur 규칙 검토
    • 성능(멀티스레딩, 메모리 상한) 모니터링
  • 보안 운영팀

    • 규칙(sid) 변경 로그와 변경 이력 관리
    • false-positive 알림 정책 수립
    • 차단 시의 사용자 알림/예외 처리 계획
  • 시스템 관리자

    • rsyslog와 로그 로테이션 설정
    • 서비스 자동 시작 설정(systemctl enable)
    • 규칙 파일 권한 및 업데이트 자동화 방법 검토

테스트 케이스와 수용 기준

  • IDS 모드

    • Suricata가 로그를 생성하고 http.log에 정상 접근 로그가 기록되어야 함
    • stats.log에 decoder.pkts 등 카운터가 증가해야 함
  • IPS 모드(차단 테스트)

    • local.rules로 지정한 패턴이 포함된 HTTP 요청은 Suricata에 의해 DROP되어야 함
    • /var/log/suricata/fast.log에 Drop 이벤트가 기록되어야 함

수용 기준: IDS 모드에서 오탐이 심하지 않으며, IPS 모드에서 의도한 패턴이 안정적으로 차단되는 경우 성공으로 판단합니다.

운영과 보안 하드닝 권장사항

  • 규칙 관리: 주기적으로 규칙 업데이트를 검사하되, 배포 전 테스트 환경에서 검증
  • 백업 및 롤백: suricata.yaml과 local.rules의 버전 관리(Git 혹은 구성 관리 도구) 유지
  • 로깅: 로그는 중앙 로깅 서버로 전송해 장기 보존 및 상관관계 분석에 사용
  • 성능: 트래픽이 많은 환경에서는 Suricata의 스레드 수, memcap, nfqueue 큐 길이를 조정
  • HTTPS: 암호화된 트래픽은 TLS 종료 지점에서 검사하거나 SNI/JA3 등 메타데이터 기반 탐지 고려

문제 발생 시 점검 목록

  • Suricata가 패킷을 받지 못함: Vuurmuur 규칙이 nfqueue로 설정되어 있는지 확인
  • 로그가 없음: rsyslog 설정과 /var/log/suricata/* 파일 권한 확인
  • 예상보다 많은 오탐: 규칙(특히 content/regex)을 세분화하고 테스트 범위를 좁힘
  • 성능 이슈: Suricata를 데몬(-D)으로 실행하고 멀티스레드 설정을 검토

대체 접근법 및 한계

  • 대체: iptables 직접 구성 + NFQUEUE를 사용하는 대신 여전히 Vuurmuur 같은 GUI/관리자 도구를 사용하면 규칙 관리가 편리합니다.
  • 한계: HTTPS 트래픽, 암호화된 애플리케이션 트래픽, 패킷 재조합 한계로 인해 일부 공격은 탐지/차단이 어렵습니다.

간단 용어집

  • IDS: 침입 탐지 시스템(수동으로 탐지, 차단하지 않음)
  • IPS: 침입 방지 시스템(능동적으로 트래픽을 차단)
  • nfqueue: 커널의 패킷을 사용자 공간으로 전달하기 위한 큐 메커니즘
  • inline: Suricata가 스트림을 재조립하여 IPS 동작을 수행하는 설정

추가 자료

  • Suricata User Guide
  • rule management with oinkmaster
  • Vuurmuur user guide

요약

이 가이드는 Fedora 17에서 Vuurmuur와 Suricata를 이용해 IDS에서 시작해 IPS로 전환하는 실제 절차를 제공합니다. 먼저 Suricata를 IDS 모드로 검증한 뒤 Vuurmuur 규칙을 nfqueue로 바꿔 Suricata가 트래픽을 검사하도록 하고, 마지막으로 local.rules에서 drop 규칙을 추가해 차단을 확인합니다. 운영 환경에서는 규칙 관리, 로깅, 성능 튜닝, HTTPS 한계에 대한 보완이 필요합니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

전기요금 절약 가이드 — 똑똑한 선택으로 비용 절감
에너지 절약

전기요금 절약 가이드 — 똑똑한 선택으로 비용 절감

앱 사용성 기본 가이드 — 직관적 UX 만들기
UX

앱 사용성 기본 가이드 — 직관적 UX 만들기

YouTube 시청기록 확인·삭제·일시중지 가이드
프라이버시

YouTube 시청기록 확인·삭제·일시중지 가이드

컴퓨터용 만화책 리더: CDisplay vs ComicRack
Software

컴퓨터용 만화책 리더: CDisplay vs ComicRack

Amazon Prime Video 오류 'Something went wrong' 완전 해결 가이드
트러블슈팅

Amazon Prime Video 오류 'Something went wrong' 완전 해결 가이드

앱 종료 없이 전화 받기 — Call PopOut 사용법
모바일 앱

앱 종료 없이 전화 받기 — Call PopOut 사용법