- 1 -
쉽게 따라하기SNORT 2.4.4 쉽게 따라하기SNORT 2.4.4
년 월 일Last update. 2006 5 22
- 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