syslog에 특정 문자열이 로깅이 되면 알람을 보내거나 특정 사용자에게 메일을 보내는 방법 ?

yves1의 이미지

안녕하십니까.

CentOS를 사용중인대요..

Syslog에 특정 문자열이 로깅이되면, "Port Scan" 이런 문자열이 syslog에 로깅이 되면 이 이벤트 상황에 대해서 관리자에게 알람을 줄 수 있는 방법을 찾고 있습니다.

일반 syslog 관리툴 (kiwi syslog)에는 이런 기능이 없는 것 같아서요.

혹시, 리눅스 자체에 이런 기능을 구현할 수 있는 방법이 있나요 ?

아니면 일반적인 syslog 관리툴에서 위와 같은 기능을 제공하는 툴이 있으며 (당연 무료툴이면 더 좋고요) , 확인 부탁드립니다.

감사합니다.

aero의 이미지

SEC ( Simple Event Correlator ) 를 추천

SEC는 박사논문 과정에서 Perl로 만들어진 스크립트로 HP OpenView NNM and Operations, CiscoWorks, BMC Patrol, Nagios, SNMPTT, Snort IDS, Prelude IDS 등의 고가 상용솔루션에서도 로그패턴검출 및 처리용으로 쓰이고 있습니다.

http://simple-evcorr.sourceforge.net/

http://www.campin.net/newlogcheck.html

http://www.occam.com/sa/CentralizedLogging2008.pdf

glayneon의 이미지

모니터링하는 PC 에서 putty 로 해당 서버에 접근해 놓고,

스크립트를 띄워서, 특정 문자열 노출시 알람이 발생하게 했습니다.

좀 고쳐서 하셔도 될거 같네요.

#!/usr/bin/env bash
#set -x
 
# Description : DB Error Alarm Script.
# Ver : 0.1v
# Date : 20090327
 
BELL='tput bel'
ERRMSG='(Shuting down instance|checkpoint)'
PRINTMSG="DB Error !!!!"
DestFile='/oracle/app/oracle/admin/rac/bdump/alert_rac1.log'
BellLIMIT=10
 
 
## Define Functions
BELL() {
for (( a=0; a < BellLIMIT ; a++ )); do
echo -e "\n\t\t $(date) $PRINTMSG"
tput bel
sleep 1
done
}
 
# Main
while :;
do
tail -1 $DestFile | egrep -q "$ERRMSG"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
BELL
fi
sleep 0.1
done
ralucasima의 이미지

Very interesting, it's useful for me, because it help me for my firs project about Campina

imposno의 이미지

안녕하세요.
저도 이 부분때문에 Rsyslogd에 대해서 알아보고 있는 중입니다.
Rsyslogd에서는 로깅레벨에 따라서 관리자에게 메일을 보낼 수 있는 기능을 포함하고 있는것으로 알고 있는데,
특정 문자열이 로깅 되었을때도 가능한지 알아봐야 겠습니다. 물론 특정 문자열에 대해서 로깅레벨을 다르게 설정하고
관리자에게 알릴수 있지만요.
저도 알아보고 있는 부분이기 때문에 한마디 거들었습니다.