IT보안타파

Snort 한번에 설치 성공하자! 본문

Snort/Snort 설치

Snort 한번에 설치 성공하자!

덕꼼 2017. 5. 27. 10:31

Snort 준비물

   위에 파일을 받아 주세요. 따로 필요한 자료는 받아 설치 해주세요

CentOS 6.x 를 이용하였습니다. 밑의 모든 내용을 다 해야합니다.


1. ping 8.8.8.8 통신 확인

   ping google.com 통신 확인


2. yum -y install epel-release


   -> Red Hat 계열 리눅스(RHEL, CentOS, Oracle Linux...) 에서 유용한 유틸리티가 많이 포함되어 있어 필수적으로 설치하는

      추가 Repository 이다.


3. sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

   -> 기본 저장소와 충돌하지 않게 epel.repo 파일을 enable=0 으로 비활성화. 이 저장소를 사용하려면 yum 명령에서

      -enablerepo=epel 이라고 지정해야 한다.


4. yum --enablerepo=epel -y install gcc make rpm-build autoconf automake flex bison            libpcap-devel libdnet libdnet-devel zlib zlib-devel


   -> 직접 쳐서 입력 : yum install httpd* pcre pcre-devel php-common php-gd php-cli php-mysql flex bison mysql mysql-devel mysql-bench mysql-server php-pear.noarch phppear-DB.noarch php-pear-File.noarch kernel-devel libxml2-devel vimenhanced.i386 -y


5. yum -y install gcc*


   (1) 위 받은 파일 "libpcap" 설치

       tar -zxvf [ libpcap 파일명]

       cd [ libpcap 파일명]

       ./configure && make && make install

       cp /usr/local/lib/libpcap.a /usr/lib


   (2) 위 받은 파일 "libdnet" 설치

       tar -zxvf [ libdnet 파일명 ]

       cd [ libdnet 파일명 ]

       ./configure && make && make install

       구글링을 통해 패키지를 받는다.


   libpcap - LAN 상의 패킷을 시스템과 독립적인 사용자 레벨에서 캡춰하는 라이브러리 

             BSD 기반의 패킷 캡춰 구조를 가지고 있으며, promiscuous 모드로 동작하고, 

             이더넷과 PPP 등 다양한 네트워크 모드에서 사용할 수 있다.


   BSD - (Berkeley Software Distribution) 유닉스 운영 체제이다.



6. daq와 snort 설치

   (1)wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz

     -> 들어가서 받거나 함.

  (2)https://www.snort.org/downloads/snort

     -> 들어가서 snort-x.x.x.x.tar.gz 받음


7. 파일 받은 "daq"와 "snort" 설치

      -> /usr/local/src -> 경로에 설치


   (1) tar -zxvf [ daq 파일명 ] -C /usr/local/src

   (2) cd /usr/local/src/daq 파일명 ]

   (3) ./configure; make; make install

   (4) tar -zxvf [ snort.x.파일명 ] -C /usr/local/src

      -> /usr/local/src -> 경로에 설치

   (5) cd /usr/local/src/snort.x.파일명 ]

   (6) ./configure; -enable-sourcefire; make; make install


       ->  ERROR!  Libpcre header not found.

      Get it from http://www.pcre.org

  -bash: -enable-sourcefire: command not found

  make: *** No targets specified and no makefile found.  Stop.

  make: *** No rule to make target `install'.  Stop.


           이런 문구에러가 나오면 (7)으로 아니면 (8).


   (7) yum install pcre*

   (8) ./configure; -enable-sourcefire; make; make install

       ./configure --enable-active-response --enable-reload --enable-react


8. snort와 daq가 설치 제대로 됫는지 확인


   (1) snort -V

      

  ,,_     -*> Snort! <*-

 o"  )~   Version 2.9.9.0 GRE (Build 56)

  ''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team

          Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved.

          Copyright (C) 1998-2013 Sourcefire, Inc., et al.

          Using libpcap version 1.4.0

          Using PCRE version: 7.8 2008-09-05

          Using ZLIB version: 1.2.3


       이렇게 뜨면 성공!


   (2) snort --daq-list

      

 Available DAQ modules:

 pcap(v3): readback live multi unpriv

 ipfw(v3): live inline multi unpriv

 dump(v3): readback live inline multi unpriv

 afpacket(v5): live inline multi unpriv


이렇게 뜨면 성공!


9. snort 를 설치했지만, 필요한 rules 은 설치되지 않았다. 즉, 데이터가 들어오는 것은 확인할 수 

   있어도 그에 필요한 필터는 되지 않는다는 것을 의미.

   디렉터리를 만들고 다운받은 룰 세트의 압축을 푼 뒤, 정해진 위치에 복사한다.


   (1) mkdir -p /etc/snort

   (2) groupadd snort

       useradd -g snort snort

   (2) mkdir -p /var/log/snort

   (3) chown snort:snort /var/log/snort

   (4) touch /var/log/snort/alert

   (5) chown snort:snort /var/log/snort/alert


10. snort rules 를 설치 하기 위해 snort 홈페이지에서 다운받아야 한다. 먼저 홈페이지에 로그인을 해야한다.

    ->https://www.snort.org/


  로그인을 한 후 오른쪽 상단의 자신의 아이디를 클릭하면 다음 화면으로 넘어간다.



 Oinkcodes 를 클릭한 후 Documentation 의 How to use your oinkcode 를 클릭한다.



11. 주소가 나오는데, 그 중 하나를 다운 받은 후 /etc/snort 에 압축 해제를 한다. (tar -zxvf 를 이용) 그리고 알집으로 압축을 푸신 뒤 리눅스 /etc/snort 에 압축을 푼 모든 파일(4)을 넣어주세요.



밑의 주소에서 둘중에 아무거나 받으시면 됩니다.


 

  

12. white와 black 생성


   (1) touch /etc/snort/rules/white_list.rules

   (2) touch /etc/snort/rules/black_list.rules


13. snort 설정 파일을 변경 하고 권한을 설정해 줘야 한다. 어떤 경로에 로그가 생성되는지, 어떤 

    룰을 적용시킬지 설정한다.

    설정하기 전 반드시 백업파일을 만들어 두고 하자.

   

   (1) cd /etc/snort/etc

   (2) cp -p snort.conf snort.conf.original


14. 설정 변경


   (1) vi /etc/snort/etc/snort.conf

   (2) :/찾을 문자

       ex) :/HOME_NET 할 시 HOME_NET 문자를 찾아간다.



변경 전     ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ>       변경 후

 ipvar HOME_NET any

 ipvar HOME_NET [자신이IP주소]

 ipvar EXTERNAL_NET any

 ipvar EXTERNAL_NET !$HOME_NET

 var RULE_PATH ../rules

 var RULE_PATH /etc/snort/rules

 var SO_RULE_PATH ../so_rules

 var 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



그리고 /etc/snort/etc/snort.conf에서 HOME_NET을 설정해 줄 시 해당 IP중 centOS라면 eth0 을 가장 우선으로 하고있어 대표로 설정해 주어야 ip설정이 잡힐 것이다. 그리고 현재 여기서는 실습할 IP가 두개이기 때문에 HOME_NET을 ip 두개로 지정해준다. HOME_NET[ IP/IP bit,IP/IP bit ]

현재 ip 설정은 HOME_NET [192.168.112.198/24,10.10.10.141/24] 가 된다.


※ White List ? Black List ?


 white list - 화이트리스트에 등록된 사용자만 서버와 통신이 가능하다.

            - 첫 사용자는 화이트리스트에 등록이 되어 있지 않으므로 관리자에게 등록을 요청하고,

              등록이 될 때 까지 기다려야 한다.


 black list - 블랙리스트에 등록된 사용자는 서버와 통신이 불가능하다.

            - 첫 사용자도 마음대로 접속 가능하기 때문에, 블랙리스트에 등록될 경우, 다른 IP로 

              변조하여 다시 들어 올 가능성이 높다. 


     결론  - 보안적 측면에서는 화이트리스트가 블랙리스트보다 보안성이 높다

      - 유저 편이 입장에서는 블랙리스트가 화이트리스트보다 효율적이다.


15. snort 그룹 추가 및 생성


   (2) adduser snort -u 40000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS -g snort

       -> 에러는 무시하면 됨.


16. 권한 설정


   cd /usr/local/src

   chown -R snort:snort daq-2.0.6

   chmod -R 700 daq-2.0.6

   chown -R snort:snort snort.x.파일명 ] -> 7번 설치에서 했던 파일명

   chmod -R 700 snort.x.파일명 ]

   chown -R snort:snort snort_dynamicsrc/

   chmod -R 700 snort_dynamicsrc


   cd /var/log

   chmod 700 snort

   chown -R snort:snort snort


   cd /usr/local/lib

   mkdir -p snort_dynamicrules

   chown -R snort:snort snort*

   chown -R snort:snort pkgconfig

   chmod -R 700 snort*

   chmod -R 700 pkgconfig


   cd /usr/local/bin

   chown -R snort:snort daq-modules-config

   chown -R snort:snort u2*

   chmod -R 700 daq-modules-config

   chmod -R 700 u2*

    

   cd /etc

   chown -R snort:snort snort

   chmod -R 700 snort


17. mkdir /usr/local/lib/snort_dynamicrules

    chown -R snort:snort /usr/local/lib/snort_dynamicrules

    chmod -R 700 /usr/local/lib/snort_dynamicrules

    cp /etc/snort/so_rules/precompiled/Ceontos-5-4/i385/버전 <- [ tab 키 누른다 ]/*.so /usr/local/lib/snort_dynamicrules


*위에서 wrong ELF class: ELFCLASS32 이와 같은 에러가 보인다면 i385가아닌 x86-64로 바꾼후 실행


    cp -u /etc/snort/so_rules/precompiled/Centos-5-4/x86-64/버전<- [ tab 키 누른다 ]/*.so /usr/local/lib/snort_dynamicrules/ 

  

    cat /etc/snort/so_rules/*.rules >> /etc/snort/rules/so_rules.rules


18. 설정 확인


   snort -T -i eth0 -u snort -g snort -c /etc/snort/etc/snort.conf

   -> 입력 후   snort successfully validated the configuration !

      snort exiting  이 나오면 성공이다.


*위에서 wrong ELF class: ELFCLASS32 이와 같은 에러가 보인다면 i385가아닌 x86-64로 바꾼후 실행 17번으로 이동



19. 룰 설정을 시작하게 된다.


   vi /etc/snort/rules/local.rules

   G <- 대문자 G 누르면 맨 밑으로 내려간다.

   i <- 소문자 i 한뒤 입력 창 생성 입력

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

   저장 


20. 이제 패킷을 잡고 있는 IDS의 진정한 모습을 보게 될 것이다.


   snort -vde -c /etc/snort/etc/snort.conf -A full -l /var/log/snort/


20-1. snort -vde -c /etc/snort/etc/snort.conf -A full -l /var/log/snort/

     
       밑에는 옵션이다.

        snort -vde -c /etc/snort/etc/snort.conf -A full [-i eth번호] -l /var/log/snort/  <- eth번

       호에 대해 패킷을 감시할수있다.


21. ping을 보내 테스트 해본다. 패킷이 이동하는 것을 확인할 수 있다.


22. 이제 새 터미널 창을 열고 실시간으로 에러 메시지를 보고싶다면 20번보다 먼저 

tail -f /var/log/snort/alert 를 실행하여야한다. 그렇지 않으면 메시지가 뜨지않는다. 그 후 다시 20번 명령어 실행 한후 테스트 해본다. 만약 여기서 메세지를 처음보고싶어 지우거나 먼가 조작하게 되면 20번을 끄고 다시 실행 시켜어 확인해야한다.