Suricata로 트래픽 탐지

empty·2021년 7월 30일
0

SURICATA

목록 보기
1/2

Suricata 란?

Snort를 대체하기 위해 2010년 미국 국토안보부가 비영리 단체인 OISF를 설립하여 만든 프로그램이다. Suricata는 크게 아래의 역할을 수행한다.

  • IDS (Intrusion Detection System : 침입 탐지 시스템)
  • IPS (Intrusion Prevention System : 침입 방지 시스템)
  • NSM (Network Security Monitoring)

⇒ 패킷 스니핑, 패킷 로깅, 침입 탐지 기능을 갖고있음.

Snort가 갖고있던 대부분의 기능을 갖고있고 Snort의 기능외에 추가된 기능으로는 아래와 같다.

  • Protocol Identification
    • 포트번호를 지정 안하고 Protocol의 Name으로 Rule 지정가능
  • HTTP Normalizer & Parser
    • 7계층 (응용프로그램 계층)의 프로토콜 인식 가능
  • File Identification
    • 네트워크 패킷에서 전송되는 파일을 탐지

특징

  • 멀티 스레딩으로 동작
  • 알아보기 쉬운 YAML 형식으로 Configuration 설정

Suricata 설치

  • OS : Ubuntu20.04

    1. Repository 설치

      apt-get install software-properties-common -y
      add-apt-repository ppa:oisf/suricata-stable
      apt-get update -y
    2. Suricata 패키지 설치

      apt-get install suricata
    3. 버전확인

      suricata -V
      This is Suricata version 6.0.2 RELEASE
  • OS : CentOS 7

    • 컴파일 설치

      1. 의존성 패키지 설치

        yum -y install epel-release gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel  tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel
      2. Suricata 패키지 다운로드

        wget https://www.openinfosecfoundation.org/download/suricata-6.0.3.tar.gz
        tar -xvzf suricata-6.0.3.tar.gz
      3. 컴파일 설치

        cd suricata-6.0.3
        
        # 빌드
        ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua
        
        # 컴파일
        make
        
        # 설치
        make install-full
        
        # 모듈 업데이트
        ldconfig
        • make install-full로 설치할 경우 Create/Setup에 필요한 모든 디렉토리 및 suricata.yaml 파일과 최신 ruleset도 함께 설치
    • rpm 설치

      yum install epel-release yum-plugin-copr
      yum copr enable @oisf/suricata-6.0
      yum install suricata
      
      suricata-update

Suricata Rule 설정

Suricata에서는 네트워크 패킷을 Rule 기반으로 탐지를 하게된다. 사용자가 직접 Rule을 커스터마이징하여서 원하는 네트워크 트래픽만 탐지를할 수있다. 여기서는 커스터마이징까지는 하지않고 Suircata에서 일반적으로 많이 사용하는 기본 Rule을 사용한다.

해당 Rule은 Suricata와 함께 번들로 제공되고 Suricata 설치 시 함께 설치된다.

  1. 'Emerging Threats Open' Rule 사용

    /etc/suricata/rules에 있는 rule 파일들을 다운로드하고 하나의 단일 rule파일로 만들어준다.

    suricata-update
  2. Rule Path 재지정

    vi /etc/suricata/suricata.yaml
    default-rule-path: /var/lib/suricata/rules
    rule-files:
      - suricata.rules

포트포워딩 설정 후 시작

인바운드와 아웃바운드의 영역이 구분되어있는 구성에서 트래픽을 Suricata로 포워딩해주기 위한 작업

  1. 커널 파라미터 수정

    vi /etc/sysctl.conf
    ...
    #net.ipv4.ip_forward=1       # 해당 라인의 주석을 해제한다.
    
    net.ipv4.ip_forward=1
  2. iptables 설정

    iptables -t nat -A POSTROUTING -o enp2s0f0 -j MASQUERATDE
    
    # 포워딩 적용 확인
    iptables -t nat -nvL
  3. Suricata 시작

    suricata -c /etc/suricata/suricata.yaml -i enp2s0f0 -D

Suricata shutdown 스크립트

Suricata를 종료하기 위해서는 PID를 찾아서 직접 kill해야 하는데 너무 귀찮다.
간편하게 종료하기 위한 종료 스크립트이다.

pidfile=/var/run/suricata.pid
pid=`cat $pidfile 2> /dev/null`

if [ "$pid" == "" ]; then
  echo "suricata is not running."
else
  kill -9 $pid
  echo "suricata process killed forcefully, process id = $pid."
  rm -rf $pidfile
fi

chmod +x 잊지말자.

0개의 댓글