SNORT 2.4.4 쉽게 따라하기 - Egloospds7.egloos.com/pds/200712/04/86/Snort_v2.4.4.pdf · 2007....

18
-1- 쉽게 따라하기 SNORT 2.4.4 쉽게 따라하기 SNORT 2.4.4 Last update. 2006 5 22 이강석 [email protected]

Transcript of SNORT 2.4.4 쉽게 따라하기 - Egloospds7.egloos.com/pds/200712/04/86/Snort_v2.4.4.pdf · 2007....

  • - 1 -

    쉽게 따라하기SNORT 2.4.4 쉽게 따라하기SNORT 2.4.4

    년 월 일Last update. 2006 5 22

    이강석 [email protected]

  • - 2 -

    Contents

    본 문서는 어느정도 를 다뤄본사람을 기준으로 만들어졌으며Linux ,

    환경에서Fedora Core4 + Snort v2.4.4 + libpcap v0.9.4 + Pcre v6.3

    다운로드 및 설치 기본적인 운영방법 등을 담고 있습니다, .

    더욱 자세한 내용은 추후 업데이트 되거나 연동, (Mysql, Apache )

    다른 관련 문서를 참고 하시면 되겠습니다Snort .

    어셈블리어 개발자그룹 어셈러브 이강석:: ( [email protected] )

    http://www.asmlove.co.kr

    소개1 : Snort - 3 -

    소개2. IDS - 4 -

    다운로드 및 설치하기 현재버전3. ( )

    다운로드 및 설치하기3-1 . (libpcap)

    다운로드 및 설치하기3-2 . (pcre)

    다운로드 및 설치하기3-3 . (snort)

    다운로드 및 설치하기3-4 . (snort rule)

    - 5 -

    - 6 -

    - 7 -

    - 8 -

    - 9 -

    환경변수 설정4. Snort (snort.conf) - 11 -

    실행하기5. Snort - 12 -

    6. Snort Log - 15 -

    7. Snort Option - 16 -

  • - 3 -

    1 소개Snort

    는 가장 대표적인 공개 네트워크 칩입 탐지 시스템 이고 개발자에 의해 만들Snort S/W , Marty Roesch

    어 졌다 실시간 트래픽 분석과 네트워크에서의 패킷 처리작업을 처리하는 데몬이며 네트워크 침입. , IP ,

    탐지 시스템 이다(NIDS) .

    년 월 일 현재 최신버전은06 5 21 Snort v2.4.4

    라는 말에서 유래되어 오픈소스라는 장점을 가지고 여러 커뮤니티를 통하여 계속적인Sniffer and More

    보완과 향상을 하고 있으며 현재 가장 대중적으로 사용되는 프로그램이다IDS .

    는 패킷 수집 라이브러리인 에 기반한 네트워크 스니퍼인데 쉽게 정의할 수 있는 침입탐Snort libpcap ,

    지 들에 일치되는 네트워크 트래픽을 감시하고 기록하고 탐지할 수 있다rule .

    프로토콜 분석 컨텐츠 검색 조합 작업을 할 수 있으며 다음의 공격들과 스캔들을 탐지할수 있다, / , .

    - Buffer overflows

    - Stealth port Scans

    - CGI attack

    - SMB probes

    - OS fingerprinting attemps

    이런 종류와 다양한 공격과 스캔을 탐지할 수 있다.

    또한 는 유연한 의 사용으로 을 분석하며 모듈화된 탐지 엔진을 지원하고 실시간Snort language traffic

    경고 기능도 지원하는등 다양하고 복잡한 침입 탐지가 가능하다..

    이러한 탐지 들은 또는 여러 보안관련 사이트를 통해 지속적으로 업데이트되고 본인이rule snort.org ,

    쉽게 을 작성하여 추가할 수 있으므로 최신 공격에 적응이 쉽고 탐지된 로그를 사용자가 원하는 형rule ,

    태로 남길수 있다.

  • - 4 -

    2 소개IDS

    IDS(intrusion detection system)□- 컴퓨터 시스템의 비정상적인 사용 오용 남용 등을 실시간으로 탐지하는 시스템 침입 차단 시스템, , .

    만으로 내부 사용자의 불법적인 행동 기밀 유출 등 과 외부 해킹에 대처할 수 없으므로 모든 내 외부( ) ·정보의 흐름을 실시간으로 차단하기 위해 해커 침입 패턴에 대한 추적과 유해 정보 감시가 필요하다.

    의 가직 특성IDS 3□무결성o (integrity)

    자원이 훼손되거나 변경되지 않음을 뜻한다 예를 들면 해커에 의해서 귀중한 정보를 파괴- .

    당했다던가 혹은 정보의 내용이 변경되었다면 해커는 자원의 무결성을 해치는 침입을 한 것이다.

    가용성o (availability)

    - 권한을 가진 사용자에게는 자원으로의 접근이 언제나 가능함을 뜻한다 예를 들면 해커에 의해서.

    자원의 접근을 방해 받는다면 공격 해커는 지금 자원의 가용성을 해치고 있는 침입을(DOS )

    하는 것이다.

    기밀성o (confidentiality)

    자원으로의 접근은 권한을 가진 사람만이 가능하다는 것을 뜻한다 예를 들면 해커에 의해서- .

    공개가 되면 안 되는 중요한 정보가 공개가 된다면 해커는 자원의 기밀성을 해치는 침입을 한 것이다.

    의 한계IDS□대응력이 부족하다o .

    오탐율이 높다 감사할 자료가 너무 많아서 실질적인 침입 탐지를 할 수가 없다o .( .)

    리포팅이 기능이 부족하다o .

    새로운 공격이나 알려지지 않은 공격에 취약하다o .

    이러한 한계를 극복하기 위해 침입 탐지의 통합 관리 환경 설정 업그레이드 통합 리포팅등의 기능을( , ),※가진 관제센터가 필요할 것이고 앞으로 소개할 새로운 기술들이 적용이 되어야 할 것이다.

  • - 5 -

    3 다운로드 및 설치하기 현재버전( )

    년 월 일 현재 버전- 06 5 12

    Libpcap : http://www.tcpdump.org

    - libpcap v0.9.4

    pcre : http://sourceforge.net/project/showfiles.php?group_id=10194

    - pcre v6.3

    Snort: http://www.snort.org

    - snort v2.4.4

  • - 6 -

    3-1 다운로드 및 설치하기 (Libpcap)

    를 설치할 확인Snort Fedora4 Kernel

    설치Libpcap

    는 기반으로 탐지를 한다- Snort libpcap .

    버전확인-

    년 월 현재 이 최신버전이니 설치를 해보자- 06 5 libpcap 0.9.4 .

    - http://www.tcpdump.org 에 가서 파일을 다운받는다libpcap-0.9.4.tar.gz .

    버전으로 받을 경우 기존버전을 지우지 말고 로 설치해야 한다- rpm -Uvh .

    만약 기존 버전을 지우게 되면 연관된 다른 패키지들 사이에 문제를 일으키게 된다.

    다운받은 파일을 압축을 풀고 설치를 한다- libpcap-0.9.4.tar.gz .

    - # tar zxvf libpcap-0.9.4.tar.gz

    설치-

    추가적으로 # make install-incl

  • - 7 -

    3-2 다운로드 및 설치하기 (pcre)

    설치Pcre

    버전확인-

    년 월 현재 이 최신버전이니 설치를 해보자- 06 5 libpcap 0.9.4 .

    에 가서- http://sourceforge.net/project/showfiles.php?group_id=10194&package_id=9960

    파일을 다운받는다pcre-6.3.tar.gz .

    다운로드 후 압축을 푼다- . # tar zxvf pcre-6.3.tar.gz

    설치-

  • - 8 -

    3-3 다운로드 및 설치하기 (Snort)

    설치Snort

    - http://www.snort.org 에 가서 Get Snort -> snort-2.4.4.tar.gz 파일을 받는다.

    - snort-2.4.4.tar.gz 파일을 받았다면

    명령으로 압축을 풀고- # tar zxvf snort-2.4.4.tar.gz ,

    명령으로 설치한다- # configure ; make ; make install .

    생성된 디렉토리와 파일은 다음과 같다- .

    설치를 했다면 간단히 라고 쳐보자- snort .

    간단히 설치한 의 버전 와 쓰일 옵션들을 볼수 있다snort 2.4.4 .

  • - 9 -

    3-4 다운로드 및 설치하기 (Snort Rule)

    여기서 끝이 아니라 이제 에서 쓰일 을 받아보자Snort Rule .

    사이트 왼쪽 하단에 보면 등록을 할수 있는데 등록을 하고 을 해야- Snort.org Account Login

    들을 다운 받을수 있다 일단 가입을 하고 을 한후에Rule . Login

    왼쪽 메인메뉴에 을 누른다- Rule .

    을 누른후 오른쪽 상단에 보면 가 있다- Rule Download Rules .

    조금 밑으로 내려가 보면 테이블이 나오는데 이곳에서 다운- (rigistered user release) snort v2.4

    파일을 다운을 받았으면- snortrules-snapshot-2.4.tar.gz

    들과 설정파일을 저장할 디렉토리를 하나 만든다rule snort.conf .

  • - 10 -

    라는 디렉토리를 만든후 이 곳에 압축을 푼다- /etc/snort .

    이제 들이 저장될 디렉토리를 만든다- Snort Log .

    이제 들은 이곳에 저장이 될 것이다# /var/log/snort Log .

    이제 부팅시에 자동으로 가 실행되도록 설정한다- Snort .

    편집후에 아래내용을 추가한다# vi /etc/rc.d/rc.local .

    snort -D -d -l /var/log/snort -c /etc/snort/rules/snort.conf

  • - 11 -

    4 환경변수 설정Snort (snort.conf)

    네트워크 변수값들의 설정과 환경 환경 사용될 의 설정 등을 할 수 있다preprocessor , Output plug-in , rule .

    파일을 연다# /etc/snort/snort.conf .

    기본값은 로써 모든 를 설정한다는 뜻임any , IP .

    로 모니터링할 주소var HOME_NET "Snort Network or IP "

    주소와 서브넷마스크로 표현 할수 있다IP . \

    네트워크에 대한 공격을 모두 감지Ex.) 192.168.10.0

    var HOME_NET 192.168.10.0/24

    var EXTERNAL_NET "!$HOME_NET"

    을 제외한 모든 네트워크 호스트를 의미HOME_NET

    룰파일 경로설정var RULE_PATH /etc/snort/rules //

  • - 12 -

    5 실행하기Snort

    가장 많이 쓰이는 옵션 설명-

    를 데몬모드로 실행시킴-D : snort

    애플리케이션 레이어를 덤프시킴-d :

    지정된 디렉토리에 로그 데이타를 저장-l :

    지정된 파일을 룰 파일로 사용한다-c : .

    실행의 기본적인 형식은 이다- snort snort [options] expression .

    기본실행1. Snort

    # snort -v

    단순히 하면 로그에는 기록이 안되고 화면상으로만 보임- # snort -v , .

  • - 13 -

    소스나 목적지 가 이면서포트번호가 번으로 향하는 패킷을 보여준다2. IP 192.168.8.132 22 .

    # snort -vde port 22 and host 192.168.8.132

    # 단순히 이렇게만 하면 로그에 저장이 안되기 때문에snort -vde port 22 and host 192.168.8.132 //

    라는 옵션을 주어서 로그에 기록되게 한다-l /var/log/snort .

  • - 14 -

    snort -d -l /var/log/snort -c /etc/snort/rules/snort.conf -A full -D

    이 결과 로그 디렉토리 에 파일 등이 생성되는 것을(/var/log/snort) alert, portscan.log, log

    확인할 수 있다.

    실행후 를 보면 와 파일이 생성된 것을 볼수 있다/var/log/snort alert portscan.log .

  • - 15 -

    6 Snort Log

    는 처음 설치할 때 들을 저장하려고 만든 디렉토리에 저장이 된다Snort Log Log /var/log/snort/ .

    숫자# snort -r /var/log/snort/snort.log.

    이라는 옵셥을 주고 의 위치를 넣어주면 된다-r log .

    의 설치를 마치고 데몬을 실행하였다면 가 실제 공격을 탐지하지 못하는지snort snort (false-negative)

    확인하고 공격이 아닌 에 대해서 공격이라고 경고하는지 확인하여 잘못된 을, event (false-positive) rule

    수정하거나 제거하여야 한다.

  • - 16 -

    7 Snort Option

    USAGE: snort [-options]

    -A fast,full,none,unsock

    소켓을 사용하여 로깅을 한다unsock - UNIX .

    스타일의 경고 메시지를 로그파일에 한 줄 남긴다fast - syslog .

    경고 메시지와 함께 를 기록한다full - Full decoded header .

    경고기능을 해제none -

    -a

    패킷을 디스플래이 한다ARP .

    -b

    패킷을 파일로 저장 이 모드에서는 모든 패킷이 있는 그대로 저장되며tcpdump .

    스노트 시작시 시간과 라는 이름을 결합하여 로그파일을 만든다snort.log .

    이 옵션은 결과를 형식으로 바꾸지 않기 때문에 스노트의 빠른 운영이 필요한곳에서 쓸 수 있다text .

    -c

    스노트의 설정파일을 사용한다.

    # snort -c /etc/snort/rules/snort.conf

    -C

    패킷의 사용자 데이타 부분 를 문자만 프린트합니다(payload) .

    형태로는 프린트하지 않고 패킷에서 진수를 제외한 부분만을 출력한다Hex 16 character .

    -d

    의 패킷을 덤프한다application layer .

    -D

    를 데몬 모드로 돌립니다 특별히 지정되지 않았다면 에snort . /var/log/snort/alert

    모든 경고가 기록된다.

    -e

    의 패킷헤더를 출력한다link layer .

    -F

    필터링식은 에서 원하는 패킷 만을 덤프하기 위해서 사용되는 식이다BPF tcpdump .

    -g

    의 를 으로 그룹으로 설정한다snort gid .

  • - 17 -

    -h

    홈네트워크 변수 를 의 값으로 세팅한다HOME_NET .

    -i

    지정된 네트워크 인터페이스를 모니터링 한다

    패킷을 할 인터페이스를 지정하는데sniff eth0, eth1

    -l

    로 지정된 디렉토리에 로그 데이타를 저장한다 .

    모든 로그파일은 이 디렉토리 아래에 생성되며 지정되지 않았을 경우 지정된다, /var/log/snort/ .

    -n

    개의 패킷만을 모니터링하고 프로그램을 종료한다 .

    -L

    바이너리 로그파일의 파일 이름을 지정한다.

    -n

    Process packet-count packets and exit.

    -N

    로깅을 중지하는데 만이 저장된다, Alert .

    -o

    룰셋 테스트 순서를 순서로 바꾼다Pass, Alert, Log .

    룰이 패킷에 적용되는 순서를 바꾼다. alert->pass->log ==> pass-> alert> log

    -p

    를 사용하지 않고 스니핑을 한다Promiscuous mode

    스니핑하는 호스트의 주소로 오는 패킷이나 브로드캐스팅 패킷만을 모니터링합니다MAC .

    -P

    패킷의 스냅렌 을 지정한다 디폴트는 이다(snaplen) . 1514 .

    스냅렌은 캡쳐할 수 있는 패킷의 최대 크기이다 만약 스냅렌보다 큰 패킷을 캡쳐할 경우 스냅.

    렌만큼만 캡쳐 된다.

    -q

    아무런 메시지도 뿌리지 않습니다 작업을 끝낸다. .

    -r

    로 지정된 파일의 패킷들에 대해서 엔진을 돌린다 tcpdump IDS .

    -s

    로그 메시지를 시스템을 통해 시스템에 보낸다Alert syslog

  • - 18 -

    -S

    룰 파일의 로 지정된 변수를 재정의 할 수 있다 룰파일의 변수 의 값을 로 지정한다var . n v .

    -t

    초기화 후 디렉토리로 한다 chroot .

    -u

    초기화 후 의 를 의 사용자로 바꾼다snort uid .

    -v

    패킷을 콘솔 화면으로 출력한다 이 옵션은 수행속도를 떨어뜨린다. .

    -V

    버전 정보를 출력

    -X

    의 로우 패킷 데이터를 덤프한다Link layer .

    -?

    도움말을 보여줌

    참고 문서

    http://www.snort.org/docs/

    http://www.snort.org/docs/setup_guides/snort_base_SSL.pdf

    http://www.snort.org/docs/snort-rh7-mysql-ACID-1-5.pdf

    http://my.dreamwiz.com/winmil/security/snort.htm