兼职安全半年了,分享一下我这里是如何做安全的,当然作为兼职,不是太深入,进攻参考。

下面介绍端口安全,主要是公司IDC机房所有ip段开放端口情况,比如一个服务器,默认仅要求开放ssh端口,但如果开启了其他未允许端口,可能是被人误开或者被入侵,这样就需要运维提前知晓并解决。

如何实现:

1、  使用nmap+diff来对公司所有idc进行端口扫描;

2、  当天的扫描结果与昨天扫描的结果进行对比;

3、  如果新增主机或已存在主机有新增与关闭端口的情况,也进行邮件通知。

结果展示:

1、  没有差异的情况

wKioL1OngJDS5LOpAACG4nJvVH0060.jpg

2、有新增主机情况

wKiom1OngQLidxwsAADW_XPWq-I425.jpg

3、已存在主机有新增或关闭端口情况

wKiom1OngUzACMueAADJsPo6oRg733.jpg

下面是端口安全扫描脚本内容:

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
62
#!/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  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  in  $ip_32 
do
for  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

请修改IP与contact_mail就可以

结构:

1
2
3
4
5
6
7
8
9
10
11
12:55:17  # tree /root/nmap_scan/
/root/nmap_scan/
|-- scan_diff_result        #今天与昨天扫描对比结构
|   `-- 2014-06-23          #当天的目录
|       `-- result.log      #对比结果内容
|-- scan_result             #存放今天扫描的结果
|-- scan_shell              #存放扫描脚本
|   `-- scan_analyse.sh     #安全端口扫描脚本
`-- scan_source             #昨天扫描结果,作为与今天对比的源    
 
5 directories, 2 files

使用方法:

1、先运行此脚本

创建脚本目录

1
mkdir  -p  /root/nmap_scan/scan_shell

然后把脚本放到此目录里,这样的目的是生成对比的源文件,以后的扫描都是跟这个源文件做对比。

2、使用crontab运行脚本

1
30 01 * * *  /bin/bash  /root/nmap_scan/scan_shell/scan_analyse .sh >> /tmp/scan .log 2 >&1

这样就可以每天凌晨1:30运行脚本。

这样只需要每天看邮件就能知道所有IDC机房里所有IP段,哪些主机有新增或者关闭端口,及时进行解决。

脚本在附件里,需要可以自行下载。