Suricata 설치 및 DOS공격 탐지

2023. 12. 9. 22:06Network

 

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
    • 네트워크 패킷에서 전송되는 파일을 탐지

 

Suricata에서 요구되는 종속성 설치 

 

 

수리카타를 컴파일하기 위해 필요한 종속성 설치 (시간 조금 걸림)

 

apt-get install rustc cargo make libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 make libmagic-dev libjansson-dev libjansson4 pkg-config

 

수리카카는 기본적으로 IDS로 동작함 

IPS 기능을 포함하려면 아래 패키지도 설치

 

apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0

 

그리고 python3-pip 패키지 설치, suricata rule 업데이트 위한 suricata-update 설치

apt-get install python3-pip
pip3 install --upgrade suricata-update
ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

 

 

Suricata 설치

 

wget으로 suricata 6.0.3버전 다운로드 후, 압출 풀기

wget https://www.openinfosecfoundation.org/download/suricata-6.0.3.tar.gz
tar -xvzf suricata-6.0.3.tar.gz

 

압축을푼 디렉터리로 들어가 configure입력

cd suricata-6.0.3
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

 

make로 컴파일 후

make install로 suricata 설치

make
make install-full

 

모든 rule 파일 설치

make install-rules

수리카타 룰 경로 : /var/lib/suricata/rules/suricata.rules

 

 

 

Suricata 대상 ip설정 

 

 

vi /etc/suricata/suricata.yaml 

HOME_NET에 탐지 대상 ip를 입력해준다(설치중인 vm의 ip)

 

suricata 테스트

 

 

테스트전 suricata가 수신하는 네트워크 인터페이스에서 패킷 오프로드 기능을 비활성화해야함

ethtool 패키지를 설치하고, 패킷 오프로드 비활성화 시킴

apt-get install ethtool
ethtool -K eth0 gro off lro off

 

 

룰 파일 기본경로 /var/lib/suricata/rules/ 로 이동 후 , test.rules 파일 작성

cd /var/lib/suricata/rules
vi test.rules

 

룰이 잘 적용됐는지 테스트를 위해 ICMP 패킷발생시 alert하는 룰을 작성

alert icmp any any -> $HOME_NET any (msg:"ICMP 연결 시도"; sid:1000002; rev:1;)

 

 

/etc/suricata 경로로 가서 suricata.yaml파일 수정

rule-files에 teest.rules 를 추가

 

 

 

Suricata 실행

 

* IDS 모드 :

suricata -c /etc/suricata/suricata.yaml -i eth0

 

 

마지막 구문을 보아

4개의 패킷 처리 스레드와 4개의 관리 스레드가 모두 초기화되었고, 엔진이 시작되었다"는 의미로

네트워크나 시스템 관리를 위한 스레드가 성공적으로 설정되고 시동이 걸렸음을 알려주는 것

 

ctrl + C로 종료시

2481개의 패킷을 탐지했다는 구문이 나오는것을 보아

 

 

즉, 수리카타가 정상적으로 작동됨을 알 수 있음

 

 

* IDS 탐지되는 로그 실시간 확인 :

tail -f /var/lig/suricata/fast.log

 

로그파일에 로그 찍히는것도 확인 가능

* 기본 로그 

 

 

 

 

 

 

 

Xerosploit - DOS 공격 탐지 테스트

 

공격자 ip : 192.168.35.66 (xerosploit 설치 -> DOS 공격 진행 )

피해자 ip : 192.168.35.70 (수리카타 + Wireshark 설치 ) 

 

 

 

 

우선 공격자 PC에서  피해자 PC에 Ping 전송시 잘 전달됨을 확인

 

 

 

 

수리카타가 설치된 피해자PC에서 

DOS공격을 탐지하기 위한 TCP 패킷 탐지룰 추가

 

alert any any -> $HOME_NET any (msg:"DOS 공격"; sameip; sid:1000056;)

 

 

 

잘 탐지되는지 확인 위해 공격자pc에서 DOS공격 진행

 

우선, Xerosploit 실행

피해자 ip에 dos 공격 실행 

 

 

 

피해자 PC의 wireshark에서 패킷 확인시,

많은 양의 DOS공격들이 TCP패킷으로 날라옴을 확인

 

 

수리카타 로그에서도 실시간으로 

많은 양의 TCP 로그가 올라옴 (DOS 공격 패킷들)

 

성공적으로 Suricata에서 DOS 공격을 탐지하였다!

 

근데 자세히 보니 DOS패킷의 길이가 54로 일정한것을 보아

룰에 길이:54로 추가하여 탐지하면 더 정확히 탐지할것같다.

 

지금은 TCP 패킷 전체를 탐지하기 떄문이다.

 

 

 

 

 

 

 

////////////////////////////////////////////////////////   수리카타 설치 시행착오들   ////////////////////////////////////////////////////////////

 

 

< HTTP 관련 라이브러리 설치 >

 

sudo wget https://www.openinfosecfoundation.org/download/libhtp-0.2.3.tar.gz

 

tar -xzvf libhtp-0.2.3.tar.gz

cd libhtp-0.2.3

./configure

make

make install

 

 

< 네트워크 관련 라이브러리 설치 >

 

sudo apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0

 

 

< 수리카타 설치 >

 

sudo wget http://www.openinfosecfoundation.org/download/suricata-1.4.4.tar.gz

 

tar -xvzf suricata-1.4.4.tar.gz             --------------------------- > suricata 다운받은 후 압축 해제

cd suricata-1.4.4      

./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

./configure

 

 

 

./configure 실행시 오류 발생 

configure: error: pcre.h not found " 오류는 Linux 시스템에 PCRE 개발 파일이 설치되어 있지 않음을 나타냄

 

따라서, 아래 명령어로 PCRE 설치

 

 

다시 ./configure

 

오류발생 !!

 

libyaml이 없어서 설치

 

다시 ./configure

 

pcap 라이브러리를 컴파일러가 인식하지 못하여 발생하는 오류

 

그래서 pcap라이브러리 설치 해줌

다시 ./configure

 

이제 오류 없이 잘 configure됨

 

다음으로 

 

make     ------------------ 소스를 컴파일하기 위해

make install-conf

make install-rules

make install-full

 

 

'Network' 카테고리의 다른 글

Wireshark에 들어온 변조된ip의 실 ip주소 찾기  (0) 2023.02.13
Kali_Linux  (0) 2023.02.08