A-A+
Linux 安全运维:服务器端口扫描及邮件发送
前段时间看磊哥博客,他写了一段非常不错的脚本,特别记录了下来,这里收藏下,也分享给大家。
使用方法:
1、将以下脚本保存为scan_analyse.sh。增加执行权限;
创建脚本目录:
1 |
mkdir -p /root/nmap_scan/scan_shell |
然后把脚本放到此目录里,这样的目的是生成对比的源文件,以后的扫描都是跟这个源文件做对比。
2、使用crontab运行脚本
30 01 * * * /bin/bash /root/nmap_scan/scan_shell/scan_analyse.sh >>/tmp/scan.log 2 >&1
这样就可以每天凌晨1:30运行脚本。
这样只需要每天看邮件就能知道所有IDC机房里所有IP段,哪些主机有新增或者关闭端口,及时进行解决。
脚本在附件里,需要可以自行下载。
结构:
1 2 3 4 5 6 7 8 9 |
# tree /root/nmap_scan/ /root/nmap_scan/ |-- scan_diff_result #今天与昨天扫描对比结构 | `-- 2014-06-23 #当天的目录 | `-- result.log #对比结果内容 |-- scan_result #存放今天扫描的结果 |-- scan_shell #存放扫描脚本 | `-- scan_analyse.sh #安全端口扫描脚本 `-- scan_source #昨天扫描结果,作为与今天对比的源 |
以下是脚本全部内容
需要修改一下你的ip地址和邮箱地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#!/bin/bash #This script name is scan_analyse.sh . /etc/profile echo "start time is $(date)" time=$(date +"%Y-%m-%d") yesterday=`date -d "1 day ago " +"%Y-%m-%d"` work_dir="/root/nmap_scan" now_dir="$work_dir/scan_result/$time" IP='1.1.1.0/24' contact_mail='xx@mail.com' rm -rf $now_dir if [ ! -d "$work_dir/scan_result/$time" ];then mkdir -p $work_dir/scan_diff_result/$time fi rm -rf $work_dir/scan_diff_result/$time/result.log ip_32=`echo $IP|cut -d . -f 1-3` if [ ! -d $now_dir/$ip_32 ];then mkdir -p $now_dir/$ip_32 fi for i in {1..254} do nmap -sS -r -n $ip_32.$i |egrep -v "(Starting|scanned)"|egrep "(Nmap|open)" >$now_dir/$ip_32/$ip_32.$i if [ `cat $now_dir/$ip_32/$ip_32.$i|wc -l` -eq 1 ];then rm -rf $now_dir/$ip_32/$ip_32.$i fi done echo "stop time is $(date)" for b in $ip_32 do for i in $(ls $now_dir/$b) do if [ ! -f "$work_dir/scan_source/$b/$i" ];then echo "增加新主机 $i,下面是全部信息:">>$work_dir/scan_diff_result/$time/result.log if [ `cat $now_dir/$b/$i|wc -l` -gt 100 ];then echo "开启了所有端口,怀疑是有nat或者负载均衡!">>$work_dir/scan_diff_result/$time/result.log else cat $now_dir/$b/$i>>$work_dir/scan_diff_result/$time/result.log fi else if [ `diff -u $now_dir/$b/$i $work_dir/scan_source/$b/$i|egrep -v "(---|+++|@@)"|egrep "(Nmap|-|+)"|wc -l` -gt 100 ];then head -n 1 $now_dir/$b/$i>>$work_dir/scan_diff_result/$time/result.log echo "开启了所有端口,怀疑是有nat或者负载均衡!">>$work_dir/scan_diff_result/$time/result.log else diff -u $now_dir/$b/$i $work_dir/scan_source/$b/$i|egrep -v "(---|+++|@@)"|egrep "(Nmap|-|+)"|sed -e 's# Nmap scan report for#扫描主机#g'|sed -e 's#^+#关闭了 #g' -e 's#^-#开启了 #g'>>$work_dir/scan_diff_result/$time/result.log fi fi done done if [ `cat $work_dir/scan_diff_result/$time/result.log|wc -l` -eq 0 ];then echo "今日一切正常,没有变化的端口!"|mail -s "【$time】所有IDC机房差异端口扫描结果" $contact_mail else sed -i "1i 大家好: n 下面是$time日所有IDC机房扫描新增主机或已有主机新增或关闭端口情况,请各项目负责人及时认领与确认.n" $work_dir/scan_diff_result/$time/result.log cat $work_dir/scan_diff_result/$time/result.log|mail -s "【$time】所有IDC机房差异端口扫描结果" $contact_mail fi rm -rf $work_dir/scan_source/ cp -a $work_dir/scan_result/$time $work_dir/scan_source if [ $? -eq 0 ];then echo "运行完成,操作成功!" else echo "运行完成,操作失败!" fi |
本文出自 “吟—技术交流” 博客,出处:http://dl528888.blog.51cto.com/2382721/1429685