利用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

利用shell脚本定时监控服务器新开放端口通过邮件告警

测试如果没有新放的端口则记录扫描结果输出到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

执行完之后邮箱里多了一封邮件,内容如下!

利用shell脚本定时监控服务器新开放端口通过邮件告警