본문 바로가기
모의해킹 및 악성코드 분석/스노트(Snort) 실습

스노트(Snort) 실습 1. 우분투(Ubuntu_16.04)에 Snort 설치

by kkmin93 2021. 8. 10.
반응형

 

 

노트(Snort) 실습 1. 우분투(Ubuntu_16.04)에 Snort 설치

목 차
1. 우분투(Ubuntu_16.04) .ova 다운로드
2. 우분투(Ubuntu_16.04) Snort 설치
3. 우분투(Ubuntu_16.04) Snort 룰 테스트

 

1. 우분투(Ubuntu_16.04) .ova 다운로드

 

Linux VM Images - Download VirtualBox and VMware Images

 

www.linuxvmimages.com

[ 그림 1-1. 우분투(Ubuntu 16.04 다운로드 ]

  • 다운로드가 완료된 압축파일을 해제하면 .ova 확장자 파일을 VMware에서 열어주면 우분투 설치는 완료된다.

 

2. 우분투(Ubuntu_16.04) Snort 설치

 1) 기본 패키지 설치 진행

  • $sudo su
  • #apt-get update
  • #apt-get ugrade
  • #apt-get install make
  • #apt-get install make install
    • 에러가 발생하는 경우 우분투(Ubuntu) 재시작 진행
    • #shutdown -h now

[ 그림 2-1. apt-get update 시 에러발생 ]

 

 2) Snort 설치 전 필수 소프트웨어(의존성 패키지) 설치 진행

  • #apt-get install -y gcc libpcre3-dev zlib1g-dev libluajit-5.1-dev
  • #apt-get install libpcap-dev openssl libssl-dev libnghttp2-dev libdumbnet-dev
  • #apt-get install bison flex libdnet autoconf libtool

 

 3) Snort 다운로드

 

  ① 임시 다운로드 폴더 생성

  • #mkdir ~/snort_src && cd ~/snort_src

 

  ② Snort 자체는 데이터 수집 라이브러리(DAQ)를 사용하여 패킷 캡처 라이브러리에 대한 추상 호출을 만든다.

  • #wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
  • #tar -xvzf daq-2.0.7.tar.gz
  • #cd daq-2.0.7

 

  ③ DAQ를 자동 재구성하는 추가 단계 진행. autoconf 및 libtool이 설치되어 있어야 한다.

  • #autoreconf -f -i

 

  ④ 설정 스크립트를 디폴트 값으로 실행하고 make로 프로그램을 컴파일하고 마지막으로 DAQ를 설치한다.

  • #./configure && make && make install

 

  ⑤ wget으로 Snort 소스코드를 다운로드하며 Snort 다운로드 페이지에서 최신 버전 번호를 입력한다.

 

[ 그림 2-2. Snort 홈페이지에서 버전 확인 ]

 

  • #cd ~/snort_src
  • #wget https://www.snort.org/downloads/snort/snort-2.9.18.tar.gz

 

  ⑥ 다운로드가 완료되면 소스를 추출하고 새 디렉터리로 변경한다.

  • #tar -xvzf snort-2.9.18.tar.gz
  • #cd snort-2.9.18

  ⑦ sourcefire를 활성화한 상태에서 설치를 구성하고 make를 실행하고 make install을 실행한다.

  • #./configure --enable-sourcefire && make && make install

 

 4) NIDS 모드에서 실행하도록 Snort 구성

 

  ① 시스템에 대해 Snort를 구성해야하며, 공유 라이브러리 업데이트 진행

  • #ldconfig

  ② 우분투(Ubuntu)의 Snort는 /usr/local/bin/snort 디렉터리 설치되기 때문에 /usr/sbin/snort에 대한 심볼릭 링크를 만드는 것이 좋다.

  • #ln -s /usr/local/bin/snort /usr/sbin/snort

 

 5) 사용자 이름 및 폴더 구조 설정

 

  ① root 엑세스 없이 우분투(Ubuntu)에서 Snort를 안전하게 실행하려면 권한이 없는 새 사용자와 데몬을 실행할 새 사용자 그룹을 만든다.

  • #groupadd snort
  • #useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

 

  ② Snort 구성을 수용할 폴더 구조를 생성

  • #mkdir -p /etc/snort/rules
  • #mkdir /var/log/snort
  • #mkdir /usr/local/lib/snort_dynamicrules

 

  ③ 생성한 디렉토리에 대한 권한을 설정한다.

  • #chmod -R 5775 /etc/snort
  • #chmod -R 5775 /var/log/snort
  • #chmod -R 5775 /usr/local/lib/snort_dynamicrules
  • #chown -R snort:snort /etc/snort
  • #chown -R snort:snort /var/log/snort
  • #chown -R snort:snort /usr/local/lib/snort_dynamicrules

 

  ④ 화이트리스트와 블랙리스트 및 로컬 규칙에 대한 새로운 파일을 생성한다.

  • #touch /etc/snort/rules/white_list.rules
  • #touch /etc/snort/rules/black_list.rules
  • #touch /etc/snort/rules/local.rules

 

  ⑤ 다운로드 폴더에서 구성 파일을 복사한다.

  • #cp ~/snort_src/snort-2.9.16/etc/*.conf* /etc/snort
  • #cp ~/snort_src/snort-2.9.16/etc/*.map /etc/snort

 

  ⑥ Snort 설정 파일 수정

  • #vi /etc/snort/snort.conf
변경 전 변경 후
ipvar HOME_NET any ipvar HOME_NET [탐지할 목적지 IP]
ipvar EXTERNAL_NET any ipvar EXTERNAL_NET [탐지할 출발지 IP]
var RULE_PATH ../rules var RULE_PATH /etc/snort/rules
var SO_RULE_PATH ../so_rules var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH ../preproc_rules var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH ../rules var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH ../rules var BLACK_LIST_PATH /etc/snort/rules

 

  ⑦ Snort가 사용자 정의 규칙을 로드할 수 있도록 local.rules의 주석 처리를 제거한다.

  • #vi /etc/snort/snort.conf
  • :/local.rules --> '#' 제거

  ⑧ sed 명령을 사용하여 불필요한 부분을 주석처리 진행 후 테스트 모드를 활성화하여 구성을 테스트한다.

  • #sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf
  • #snort -T -c /etc/snort/snort.conf

[ 그림 2-3. sed 명령으로 주석처리 하지 않을 시 에러 발생 ]
[ 그림 2-5. Snort 버전확인 가능한 모습 ]

 

 

3. 우분투(Ubuntu_16.04) Snort 룰 테스트

 1) 사용자 지정 탐지 규칙 경고를 local.rules 파일에 추가

  • #vi /etc/snort/rules/local.rules
    • alert icmp any any -> 192.168.0.135 any (msg:"ICMP TEST"; sid:10000001;)
  • #snort -v -c /etc/snort/rules/local.rules

[ 그림 3-1. Snort에서 ICMP 패킷을 탐지한 모습 ]
[ 그림 3-2. /var/log/snort/alert에 탐지된 로그 ]

반응형