snort-sms연동(bash)

snort 2012. 4. 19. 11:17 |

crontab에 등록하여 1분에 한번씩 실행. 일반적인경우 이벤트 발생시 문자가 2번오게 되있지만 이벤트 개수나 시스템환경에 따라 스크립트 실행시간이 길어질경우를 고려해 조건을 느슨하게 설정하였다.

이벤트당 쿼리가 최대 8개가 들어감;; 생각 좀 더해보면 많이 줄일 수 있을거 같다.

#!/bin/bash 

for ( alert대상 sid범위)

do

sql0="select sig_name from signature where sig_sid='${sig_sid}';" sid조회하여 패턴명 추출

sig_name=`/mysql/bin/mysql -usnort snort -N -e "${sql0}"`

if [ -n "${sig_name}" ]

then

sql1="select sig_id from signature where sig_sid='${sig_sid}';" sig_id추출

sig_id=`/mysql/bin/mysql -usnort snort -N -e "${sql1}"`

sql2="select timestamp from event where signature='${sig_id}' order by cid desc limit 1;" 최신 이벤트발생 시간 추출

last_timestamp=`/mysql/bin/mysql -usnort snort -N -e "${sql2}"`

if [ -n "${last_timestamp}" ]

then

sql3="select floor(unix_timestamp(current_timestamp)-unix_timestamp('${last_timestamp}'));" 현재시간과 비교

time_range=`/mysql/bin/mysql -usnort snort -N -e "${sql3}"`

if [ ${time_range} -lt 90 ] 90초 이내 일경우 

then 문자메시지 내용을 만들자

echo "detected!" 

sql4="select cid from event where signature='${sig_id}' order by cid desc limit 1;"

cid=`/mysql/bin/mysql -usnort snort -N -e "${sql4}"`

sql5="select ip_src from iphdr where cid='${cid}';"

ip_src=`/mysql/bin/mysql -usnort snort -N -e "${sql5}"`

sql6="select ip_dst from iphdr where cid='${cid}';"

ip_dst=`/mysql/bin/mysql -usnort snort -N -e "${sql6}"`

sql7="select concat(inet_ntoa('${ip_src}'),'->',inet_ntoa('${ip_dst}'));"

msg_string=`/mysql/bin/mysql -usnort snort -N -e "${sql7}"`

echo " ${sig_name} : ${msg_string}"

SMS전송API "[SNORT][$sig_name]$msg_string"

fi

fi

fi

done

'snort' 카테고리의 다른 글

Snort On Multiple NICs  (0) 2012.11.09
snort 퍼포먼스 모니터링  (0) 2012.09.11
snort 룰설정  (0) 2012.03.21
sguil 관련  (0) 2012.02.16
snorby 설치  (0) 2012.02.14
Posted by applicationlayer
: