利用shell脚本定时监控服务器新开放端口通过邮件告警
主机:
172.16.70.240/24 做扫描服务端
172.16.70.241/24 测试端
172.16.70.242/24 测试端
Nmap工具安装:
服务端:
yum -y install namp
yum -y install sendmail
yum install -y mailx
vim /etc/mail.rc
#在文件最后添加以下内容,配置好自己的邮件账号\密码\发件服务器地址
set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=Userpassword
set smtp-auth=login
systemctl restart sendmail #重启服务,记得Enable,开机自启
echo 'test mail'|mail -s 'test port mail' [email protected] #测试邮件发送是否成功
客户端:
yum -y install nc
服务端配置:
[[email protected] ~]#mkdir /usr/local/port-file
#使用第一次扫描的文件做效验文件,记得重命名/usr/local/port-file/srcfile.txt
[[email protected] ~]#vim /usr/local/port-file/Server-port.txt
172.16.70.241
172.16.70.242
#填写好你要扫描的服务器IP
[[email protected] ~]# vim post.sh
#!/bin/bash
SRCDIR=/usr/local/port-file
SOURCEFILE=/usr/local/port-file/srcfile.txt
#Nmap扫描服务器1-65535端口
/usr/bin/nmap -iL $SRCDIR/Server-port.txt -p1-65535 > $SRCDIR/port.txt
#过滤出关键字的行并重命名文件
if [ $? -eq 0 ];then
grep -v "Starting\|Host\|scanned" $SRCDIR/port.txt > $SRCDIR/Newfile.txt
else
echo "nmap failure"
fi
#使用Diff命令判断,邮件告警
/usr/bin/diff -c $SOURCEFILE $SRCDIR/Newfile.txt > $SRCDIR/diffport.txt
if [ ! -s $SRCDIR/diffport.txt ];then
echo "$(date "+%Y-%m-%d %H:%M") There is no abnormal" >>$SRCDIR/port.log
else
/usr/bin/mail -s 'Port Listen Mail' [email protected] < $SRCDIR/diffport.txt
sleep 1m
/usr/bin/cp -rfb $SRCDIR/Newfile.txt $SOURCEFILE
fi
测试如果没有新放的端口则记录扫描结果输出到port.log文件里
[[email protected] port-file]# /root/post.sh
[[email protected] port-file]# cat port.log
2019-02-22 17:40 There is no abnormal
测试如果有新开放的端口就将异常内容发送到邮箱
客户端新开一个端口:
[[email protected] ~]# nc -l 10086 &
[1] 76717
[[email protected] ~]# netstat -antup | grep 10086
tcp 0 0 0.0.0.0:10086 0.0.0.0:* LISTEN 76717/nc
tcp6 0 0 :::10086 :::* LISTEN 76717/nc
服务端执行脚本:
[[email protected] port-file]# /root/post.sh
执行完之后邮箱里多了一封邮件,内容如下!