Snort의 구성
IDS 침입 탐지 시스템 보통은 침입을 탐지하여 관리자에게 알리는 역할을 한다. 방화벽에 차단 명령을 내려 차단 역할도 할 수 있긴 하다. 크게 NIDS와 HIDS로 나뉜다. NIDS : Network IDS, 네트워크 단위로 탐지한다 ex) snort HIDS : Host IDS, 호스트 단위로 탐지한다. ex) 백신
실제 IDS의 위치
Snort 란? 제일 유명한 NIDS 패킷 스니퍼 + 패킷 로거 + rule 기반 탐지 스니퍼, preprofessor, 탐지엔진, 로깅 으로 나눌 수 있다.
Snort의 구성요소 sniffer : 패킷을 수집한다 preprocessor :효율적인 탐지를 위한 사전 작업 ex) http 인코딩, 포트 스캔 등의 탐지 탐지엔진 : rule 기반의 탐지 로깅 : rule에 매칭되면 정책에 따라 로깅
Snort 동작 원리
Snort 설치하기 NIX계열에서 동작하지만, 윈도우에서도 사용 가능하게 되었다. 패킷 캡쳐를 위해 libpcap ( or winpcap)이 필요하다. 그 외에도 여러가지가 필요하지만, yum에서 snort를 지원하지 않기 때문에 필요에 따라 직접 설치하도록 한다.
Snort의 동작
Snort.conf 위치 : Snort_installed_directory/etc/snort.conf 내용 침입을 탐지할 IP 범위 등 network 관련 환경 변수를 지정하는 부분 preprocessor를 지정하는 부분 로깅 및 출력 등 output을 설정하는 부분 침입을 탐지할 rule 파일등을 지정하는 부분
rule 업데이트 새로운 공격에 대한 탐지를 위해 Snort 공식 홈페이지에 가면 rule을 받을 수 있다. oinkmaster를 사용하면 rule의 업데이트를 자동화 할 수 있다.
Snort rule의 이해 rule 파일은 header와 body로 이루어진다 # 헤더 alert udp $EXTERNAL_NET any -> $HOME_NET 161 # body (msg:"SNMP public access udp"; content:"public"; reference:cve,CAN-1999-0517; reference:cve,CAN-2002-0012; reference:cve,CAN-2002-0013; sid:1411; rev:3; classtype:attempted-recon;)
header 1. Action : alert, log, pass 등이 있다. 2. Protocol : tcp/udp alert udp $EXTERNAL_NET any -> $HOME_NET 161 1 2 3 4 5 6 7 1. Action : alert, log, pass 등이 있다. 2. Protocol : tcp/udp 3. source ip/netmaskrs 4. source port 5. direction : 방향 설정 가능 (< >, <-, ->) 6. destination ip/netmaskrs 7. destination port
body (msg:"SNMP public access udp"; content:"public"; reference:cve,CAN-1999-0517; reference:cve,CAN-2002-0012; reference:cve,CAN-2002-0013; sid:1411; rev:3; classtype:attempted-recon;) msg : 매칭 되었을때, alert 파일에 해당 문장이 출력된다. content : 패킷에 해당 문자열이 포함된 패킷을 검출한다. reference : 참고할 수 있는 사이트의 주소를 알려준다. sid : 룰마다 주어지는 고유한 번호이다. rev : 해당 룰의 버전을 뜻한다. classtype : 해당 패킷의 위험도를 알려준다. 1이 가장 중요