서버 80포트 스캔 후 open 되어 있지 않은 서버 발견 시 메일 발송
2022.06.03
CentOS 기준, 서버 모니터링 후 포트 장애 발견 시 이메일로 알림 발송
IDC에서 제공하는 포트모니터링 알림은 서버 자체의 포트 장애만 모니터링 한다는 소문이 있어서,
외부(사용자 입장)에서 대상 서버 포트(웹 접속)를 점검하는 기능을 구현해 보았다.
nmap 명령어를 사용하여 대상서버 포트 STATE의 값 open 여부를 판단하고 이메일(또는 문자/알림톡)로 전달하는 프로세스.
nmap 설치
yum install -y nmap
모니터링 프로그램
monitoring_svc_port.sh
#!/bin/bash
# 서버 80포트 스캔 후 open되어 있지 않은 서버 발견시 메일 발송
SERVERS=( "123.123.123.123" "124.124.124.124" "125.125.125.125")
for SERVER in ${SERVERS[@]}; do
#echo "This is ${SERVER}"
scan_rs=$(nmap -p80 $SERVER)
if [[ "$scan_rs" != *open* ]]; then
#error_msg="[Error $SERVER] $scan_rs"
php /~~~/monitoring-svc-port-notice.php $SERVER
fi
done
exit 0
모니터링 결과 메일 발송
monitoring-svc-port-notice.php
<?
@header("Content-Type: text/html; charset=utf-8");
include_once "/~~~/lib.mail.php"; // phpMailer 메일 발송 모듈
$_Subject = $_SERVER['argv'][1] . " 80 포트 연결오류 발생";
$_Content = "From:" . $_SERVER['argv'][0] . "<hr>Server:" . $_SERVER['argv'][1];
$_toMail = "to@mail.com";
phpMailer($_Subject, $_Content, $_toMail);
?>
반복 실행
vi /etc/crontab
# 매 2분마다 포트 확인
*/2 * * * * root /~~~/monitoring_svc_port.sh