KH정보 교육원 일지 IT

Ubuntu에서 Snort IDS 구성

SY0809 2021. 4. 5. 17:34
728x90

sudo apt-get update

sudo apt-get upgrade

apt-get install ubuntu-desktop

 

Ubuntu 부팅시 시간 오래걸리는 문제 해결

vi /etc/systemd/system/network-online.target.wants/networking.service 

TimeoutStartSec=5min  ---> 5sec  

 

Snort 설치

apt-get -y install flex bison build-essential checkinstall libpcap-dev libpcre3-dev libmysqlclient-dev libnetfilter-queue-dev iptables-dev libdnet-dev 

 

소스 컴파일 작업 디렉토리 생성

mkdir -p /root/snort-install 

cd /root/snort-install 

 

libdnet 컴파일 설치

wget http://ftp.psu.ac.th/pub/snort/libdnet-1.12.tgz 

tar zxvf libdnet-1.12.tgz 

cd libdnet-1.12 

./configure "CFLAGS=-fPIC" //빌드(컴파일) 할  옵션을 지정하는 과정 

make    //실제 컴파일(빌드) 과정 

checkinstall -y    //CheckInstall will build a .deb package and install it.  

dpkg -l |grep libdnet   //패키지 설치 확인 

ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1 

 

DAQ 컴파일 및 설치

cd /root/snort-install 

wget https://www.snort.org/downloads/archive/snort/daq-2.0.6.tar.gz 

tar zxvf daq-2.0.6.tar.gz 

cd daq-2.0.6 

./configure 

make 

checkinstall -y       //CheckInstall will build a .deb package and install it. 

dpkg -l |grep daq 

 

Snort 설치

cd /root/snort-install 

wget https://www.snort.org/downloads/archive/snort/snort-2.9.13.tar.gz 

tar zxvf snort-2.9.13.tar.gz 

cd /root/snort-install/snort-2.9.13 

./configure --enable-sourcefire --disable-open-appid 

make 

checkinstall -y       //CheckInstall will build a .deb package and install it. 

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

ldconfig -v   // 라이브러리 재설정 

snort -V   //설치 확인(버전 체크) 

snort // 그냥 한번 실행시켜봄… 로깅모드...그냥 패킷만 수집 

 

Snort 설정 

 

mv /root/snort-install/snort-2.9.13/etc/* /etc/snort 

vi /etc/snort/snort.conf 

ipvar HOME_NET 21.5.70.0/24  //보호할 네트워크주소

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 

 

탐지 로그를 남길 디렉토리 생성

 

mkdir -p /var/log/snort 

 

Snort 실행시 오류 대처

 

HTTP 전처리기 설정에서 처리할 수 없는 오류 발생 

 

325줄 주석처리 (맨앞에 # 추가)  --> webroot no  제거 

324번줄 \(BackSlash) 제거 

 

파일/디렉토리가 없어서 발생하는 문제 해결 

 

- touch /etc/snort/rules/white_list.rules --> 파일이 없어서 snort 실행시 에러발생 

- touch /etc/snort/rules/black_list.rules --> 파일이 없어서 snort 실행시 에러발생 

- mkdir /usr/local/lib/snort_dynamicrules  --> 디렉토리가 없어서 snort 실행시 에러발생 

 

탐지  추가 

 

다운받은 Registered Rules에 포함된 룰이 부실하므로 추가적으로 다운로드하여 추가한다 

cd /etc/snort/rules 

$RULE_PATH 를 확인하여 복사해준다. 

cp icmp.rules /etc/snort/rules 

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Large ICMP Packet"; dsize:>800;  \ 

       reference:arachnids,246; classtype:bad-unknown; sid:499; rev:4;) 

wget https://raw.githubusercontent.com/eldondev/Snort/master/rules/icmp.rules 
스노트 구동 
snort --daq pcap --daq-mode passive -c /etc/snort/snort.conf -A full -l /var/log/snort -K ascii 

 

공격자(칼리 리눅스)
  • ping -s 1000 VictimIP -> icmp 메시지 크기를 1000바이트로 지정 
  • 탐지 확인 

    tail -f /var/log/snort/alert 

    탐지된 내역 -->  [**] [1:499:4] ICMP Large ICMP Packet [**]