兼职安全半年了,分享一下我这里是如何做安全的,当然作为兼职,不是太深入,进攻参考。
下面介绍端口安全,主要是公司IDC机房所有ip段开放端口情况,比如一个服务器,默认仅要求开放ssh端口,但如果开启了其他未允许端口,可能是被人误开或者被入侵,这样就需要运维提前知晓并解决。
如何实现:
1、 使用nmap+diff来对公司所有idc,进行端口扫描;
2、 当天的扫描结果与昨天扫描的结果进行对比;
3、 如果新增主机或已存在主机有新增与关闭端口的情况,也进行邮件通知。
结果展示:
1、 没有差异的情况
2、有新增主机情况
3、已存在主机有新增或关闭端口情况
下面是端口安全扫描脚本内容:
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
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
|
请修改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段,哪些主机有新增或者关闭端口,及时进行解决。
脚本在附件里,需要可以自行下载。
附件:http://down.51cto.com/data/2364564
本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1429685,如需转载请自行联系原作者