본문 바로가기
Network

snort를 이용한 IDS 구축

by 슬픈 야옹이 2023. 5. 25.

목차

1. snort

2. snort 설치

3. snort 실행

 

 

 

 

1. snort

snort는 네트워크 상에서 패킷을 모니터링 및 분석하는 프로그램으로, IDS의 구성 중 A-Box에 해당한다.

IDS의 구성

킹버거님 늘 감사합니다^^

 

 

 

 

 

 

2. snort 설치

2-1. 관련 패키지 설치

 

# yum install -y libdnet-devel openssl-devel pkgconfig gcc flex bison zlib* libpcap* pcre* libpcap-devel libpcre3-devel libnetfilter-queue-devel iptables-devel libdnet* tcpdump

 

 

 

2-2. daq 설치

 

centos 7 기준 epel 리포지토리에서 제공한다.

# yum install -y daq daq-devel daq-modules libnghttp2

 

libnet에 대해 심볼릭 링크를 생성한다.

# ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1

 

 

2-3. snort 설치

rpm 파일을 다운받는다. 경로는 변경될 수 있다.

snort 홈페이지에 올라와 있으니 안될 경우 직접 링크를 찾으면 된다.

 

# wget https://snort.org/downloads/snort/snort-2.9.20-1.centos.x86_64.rpm

 

 

 

 

 

 

2-4. 환경 설정

snort 실행에 필요한 기본 디렉터리 및 퍼미션 rule 파일을 설정 및 생성한다.

# mkdir /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
# chmod -R 700 /etc/snort
# chmod -R 700 /var/log/snort
# chmod -R 700 /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

 

snort 테스트를 위해 간단한 rule을 local.rules에 추가한다.

# vi /etc/snort/rules/local.rules

===========================================================================

alert icmp any any -> $HOME_NET any (msg:"ICMP TEST"; sid:10000001; rev:001;)

=============================================================================

 

local.rules

 

 

sid는 1000000 이전까지는 snort에서 예약한 sid이므로, 1000000 이후의 번호로 설정한다.

 

rev는 rule의 버전 정보로, rule을 수정했을 경우 더 큰 값으로 변경해야 한다.

 

 

 

 

 

2-5. snort.conf 파일 설정

 

snort.conf 파일은 수정 전 반드시 백업받기를 권장한다.

복잡한 설정들이 많고 이것을 잘못 설정하면 snort가 제대로 동작하지 않기 때문에,

conf 파일을 백업해두지 않으면 프로그램을 밀고 새로 깔아야 하는 번거로운 상황이 자주 발생하기 때문이다.

백업 파일. 이름은 임의로 붙였다.

 

# vi /etc/snort/snort.conf

다음 내용들을 찾아 수정
====================================================
...
...
ipvar HOME_NET 192.168.11.0/24 (snort의 네트워크 주소)
ipvar EXTERNAL_NET !$HOME_NET 
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
output unified2: filename snort.log, limit 128
...
...
====================================================

 

 

snort.conf(1)

 

snort.conf(2)

 

snort.conf(3)

 

 

snort.conf(4)

 

 

 

 

 

 

 

3. snort 실행

snort를 실행하고 동작을 확인한다.

여기서는 ICMP에 대해 "ICMP TEST"라는 메시지로 alert가 뜨는지 설정했으므로 이를 확인한다.

 

# snort -i [NIC] -A console -c /etc/snort/snort.conf

 

 

# snort -i ens32 -A console -c /etc/snort/snort.conf

snort 실행

 

ping을 보내 icmp 패킷을 발생시키면

 

 

다음과 같이 알림이 뜬다.

 

 

 

 

'Network' 카테고리의 다른 글

Cisco Switch 운영에 필요한 기본 개념  (0) 2023.03.23