Wednesday, January 23, 2019

SNORT IPS 설치 및 설정

2019-11-15

SNORT IPS 설치


  필수 패키지 설치


  • apt-get -y install flex bison build-essential checkinstall libpcap-dev libpcre3-dev libmysqlclient-dev libnetfilter-queue-dev iptables-dev libdnet-dev
    • flex : 텍스트 패턴 생성
    • bison : GNU Parser ( Parser: Parse + er = 구문분석 + 하는 놈 =구문분석 하는 툴)
    • build-essential : 소스코드를 컴파일하는데 필요한 최소한의 도구모음
    • checkinstall : 소스코드를 컴파일이 된 것을 패키지로 만들고 실제로 설치도 해준다.
    • libpcap-dev : libpcap 개발자 버전
      • libpcap : 리눅스/유닉스용 Packet Capture Library ( 윈도우용은 WinPcap) 
      • dev -> devlopment -> 개발자들을 위한 라이브러리
    • libpcre3-dev : 개발자용 pcre 라이브러리
      • libpcre3 : pcre 라이브러리
      • pcre : Perl Compatible Regular Expression = 펄 호환 정규화 표현식
      • Perl : 스크립트 언어의 한 종류, 문법이 쉽고 활용 범위가 넓다.
    • libmysqlclient-dev : 개발자용 libmysqlclient -> Snort가 탐지한 내역을 DB에 저장하려고
      • libmysqlclient : mysql client 용 라이브러리
    • libnetfilter-queue-dev  : 
      • libnetfilter-queue(NFQUEUE) : iptables로부터 패킷을 전달받는 역할 (NFQUEUE)
    • iptables-dev : 개발자용 Ipatables(방화벽)
    • libdnet-dev : libdnet 개발자용
      • libdnet : 네트워크 관련 정보 확인, 수정, 방화벽 제어, 패킷생성/전송


  작업 디렉토리 생성


  • mkdir -p /root/snort-install
  • cd /root/snort-install


  libdnet 컴파일 설치


  • libdnet 최신버전이 아닌 1.12버전을 필요로하기 때문에 어쩔수 없이 다운받아 설치
  • 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 컴파일 및 설치


  • 설명: Data AcQuisition : 데이터 수집
    • 참고 https://snortrules.wordpress.com/2010/10/22/snort-2-9-0-%EC%9D%98-daq-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EA%B8%B0%EB%8A%A5/
  • 스노트가 공격탐지할 때 필요한 정보를 제공하는 역할
    • cd /root/snort-install
    • wget https://www.snort.org/downloads/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/snort/snort-2.9.11.1.tar.gz
  • tar zxvf snort-2.9.11.1.tar.gz
  • cd snort-2.9.11.1
  • ./configure --enable-sourcefire
  • 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   //설치 확인(버전 체크)


[ 실습 ]

              1. IPS Rule 설정
              2. IPS 차단 필터 설정


Snort Rule 설치



  • Snort.org 로그인
  • Step3 에서 Registered Rules 클릭
    • 로그인 하고 다운받아서(웹) 
  • tar -xvfz snortrules-snapshot-29111.tar.gz -C /etc/snort


내부/외부 IP 설정하기


  • 이 실습은 라우터 모드 IPS로 구성하는 것이 목표이므로 내부와 외부로 영역을 정하고  IP주소 및 네트워크 설정을 해준다.

[참고] sopos와 pc대역 연결 하기 
sopos 라우팅 테이블에에 사용 하는 pc대역 설정

sopos# : route add -net 113.61.75.0 netmask 255.255.255.0 gw 113.61.64.1 dev eth0

sopos# : route add -net 113.61.75.0(사용하는 pc대역) netmask 255.255.255.0 gw 113.61.64.1(우분투 ip) dev eth0(우분투와 연결되어 있는 네트워크 장치 번호)

라우터 모드로 설정하기(우분투)


  • vi /etc/sysctl.conf
    • net.ipv4.ip_forward=1    //주석제거하고 ,설정값을 1로 설정, 설정값 1은패킷 포워딩 허용의 의미
  • sysctl -p    //설정확인
  • reboot    //재부팅해야 적용됨


Snort 설정


  • mv /etc/snort/etc/* /etc/snort
  • vi /etc/snort/snort.conf
    • ipvar HOME_NET 192.168.0.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 WHIE_LIST_PATH /etc/snort/rules
    • var BLACK_LIST_PATH /etc/snort/rules

    !!!! 주의 
   - HTTP 전처리기 설정에서 처리할 수 없는 오류 발생
   324번줄 \(BackSlash) 제거
   325줄 주석처리 (맨앞에 # 추가)  --> webroot no 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_swf 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_pdf 이거 제거하려고
   !! 룰 파일의 버전에 따라 줄번호가 조금 차이가 있을 수 있음.. 잘 확인하시오.
   
   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에 포함된 룰이 부실하므로 추가적으로 다운로드하여 추가한다.
  • https://raw.githubusercontent.com/eldondev/Snort/master/rules/icmp.rules


IPS 로 구동시키기


  • 차단 필터 구성
    • vi /etc/snort/snort.conf  맨밑줄에 추가
    • rate_filter gen_id 1, sig_id 181818, track by_src, count 2, seconds 10, new_action drop, timeout 30

  • Snort 가동 & 방화벽 연동
    • snort -Q --daq nfq --daq-mode inline --daq-var queue=0 -c /etc/snort/snort.conf  -A full -l /var/log/snort -K ascii
    • iptables -A FORWARD -j NFQUEUE --queue-num 0


No comments:

Post a Comment

List

MobSF

MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...