출처:  http://www.smbw.net/151


이번엔 Snort와 swatch, syslog-ng을 함께 이용해 침입이나 문제 발생시 실시간으로 경고를 해
관리자에게 알려 주는 방법에 대해 알아 보도록 하겠습니다.


요구사항

당연히 Snort와 swatch나 syslog-ng가 설치되어 있어야 한다.
설치가 안된 분들은 아래 링크를 참조해 설치도록 한다.

Snort 설치 :
http://www.chtla.com/stories.php?story=04/01/07/4011544
swatch 설치 :
http://www.chtla.com/stories.php?story=04/02/02/2230798
syslog-ng 설치 :
http://www.chtla.com/stories.php?story=04/02/06/3536591

Snort를 침입이나 문제 발생등 시스템을 감시를 하며, swatch나 syslog-ng는 Snort에서 발생한
로그를 분석해 이를 알려주는 역할을 하게 된다.

(swatch와 syslog-ng 모두를 설치하는 것이 아니라 두중 하나만 설치가 되면 된다.)
아래 설명되는 파일명이나 설명은 위의 설치과정에서 사용되었던 파일명을 그대로 사용하니
이해가 잘 안되시면 해당 링크를 참조하시기 바랍니다.



Snort 설정하기
위에서 두개의 툴중 설치가 되었다면 우선 Snort의 snort.conf를 수정해야 한다.
Snort가 설치된 디렉토리 밑 etc 디렉토리에 존재한다.

[ root@dream etc]# pwd
/usr/local/snort-각 번전/etc
[
root@dream etc]# vi snort.conf
.............
output alert_syslog: LOG_AUTH LOG_ALERT <== 주석 제거
.............



output alert_syslog의 주석을 제거해 주면 snort에서 기록되는 로그들이 지정한 로그파일에 기록이 되지 않고,
외부로 보내주게 된다.  여기서는 swatch나 syslog-ng에서 잡아내게 된다.

snort에서 이부분만 수정해 주면 된다. 다시 snort를 실행해 준다.



Swatch 설정하기

swatch에서는 .swatchrc 파일을 새로이 생성만 해 주면 된다.

.swatchrc 내용 ---------------------------------------------------
watchfor /Priority\: 1/
echo=normal
mail=
sin@aaa.com ,subject=Snort Security Alert!
---------------------------------------------------------------------



이처럼 지정을 하게 되면 snort에서 발생되는 로그중 Priority: 1 인 것을 잡아오게 된다.
Priority: 1은 위험 수준이 제일 높은 경보를 말한다.(이에 대한 것은 밑에서 좀더 다루도록 하겠다.)
즉 Priority가 1단계인 것을 메일로 알려달라는 말이다.

이로써 swatch로 설정이 끝났다.(생각보다 무지 간단하죠? ^^;;)
새로이 swatch를 실행을 해 보자.

[ root@dream swatch-3.0.8]# swatch -c /usr/local/swatch-3.0.8/.swatchrc /var/log/snort/alert &


뒤부분에 /var/log/snort/alert는 snort상에서 로그를 기록하는 파일입니다.
이 파일에 감시하면서 snort에서 발생하는 로그를 잡아내게 됩니다.(그러면서 /var/log/snort/alert에는 기록이 안됩니다.)
하지만 snort의 다른 기록 파일(portscan.log)에는 기록이 됩니다.



Syslog-ng 설정하기

이것도 역시 간단하다.

/etc/syslog-ng/syslog-ng.conf 파일을 수정만 해 주면 된다.

syslog-ng.conf 추가내용 ----------------------------------------
source syslog { unix-stream("/dev/log"); internal(); };

destination email { program("/etc/syslog-ng/alert_mail.sh"); };
filter p1 { match("[Priority: 1]"); };
log{ source(syslog); filter(p1); destination(email); };
----------------------------------------------------------------------


이도 swatch이 같이 시스템으로 들어오는 로그중 Priority: 1로 매치되는 로그를
찾아서 alert_mail.sh 쉘을 실행시키는 겁니다.

alert_mail.sh는 메일을 보내는 쉘입니다.(해당 내용은 syslog-ng 설치 링크를 봐 주시길..)
다 끝났으니 syslog-ng를 재실행 해 준다.

[ root@dream syslog-ng]# /etc/rc.d/init.d/syslog-ng start




테스트 해보기

일반 시스템에서 snort의 Prioriy의 1단계를 로그를 만들어 낼수 없을수도 모른다.
이럴 경우 nmap을 설치해 해당 시스템을 스캔해 보기 바란다.
(윈도우용과 리눅스용이 각각 있으니 편한 것으로 다운 받아서 설치하면 된다.)
만일 번거롭다거나 하면 Prioiry를 2나 3으로 변경해 보시기 바랍니다.
웬만한 서버 접근에도 로그가 생성이 되니까요..

참고 :
nmap은 테스트로 자기 시스템에서만 사용하고 다른 시스템에는 사용하지 말기 바랍니다.
요즘은 모니터링 툴이 많이 좋아져 바로 바로 체크가 되니까요..
혹시나 해서 적어 봅니다.



부연설명

제대로 설정이 되었다면 메일로 해당 로그가 들어오는 것을 볼수 있을 것이다.
이는 snort와 다른 모니터링 툴과 연동을 위한 예로, 콘솔상이나 다른 방법으로도 감시가
가능하니 응용해 보기 바란다. swatch나 syslog-ng는 snort 로그중 Priority: 1 이라는 특정
단어를 잡아오는 것이니 제대로 메일이 안 온다면 띄워쓰기등을 다시 체크해 보기 바란다.

이전까지 기록을 하던 /var/log/snort/alert 파일을 참조해 보는 것도 좋다.

제대로 메일이 들어온다면 snort가 쓸테없는 것에 반응 하는 경우가 있다.
이때는 Priority를 조정하면 된다.
이는 snort-설치 디렉토리/etc/classification.config 를 수정해 주면된다.

[ root@dream etc]# vi classification.config
..............
config classification: denial-of-service,Detection of a Denial of Service Attack,2
..............



이는 소위 DOS 공격을 말한다. 이 공격은 1단계로 해서 공격시 메일로 받고 싶다면 맨 끝의 2를 1로 변경해 주면된다.
이처럼 각 시스템이나 취향에 맞게 공격 방법의 순위를 classification.config에서 변경할수 있다.
수정후 snort를 재실행 해 주기 바란다.


마치며..
작성하신 얼마 되지 않은 것 같은데.. 설정부분에서 혼동이 되는 것이 약간 있었습니다.
그때 그때 기록을 해 두었어야 하는것인데..
잘못된 부분은 초심(sin at chtla.com)으로 메일 주시면 정말 감사하겠습니다.
각 시스템에 맞는 강력한 실시간 경보 시스템을 구축해 보시기 바랍니다


+ Recent posts