在本系列文章的第一,二部分(我谈网络扫描 -- 之一,之二),我们站在安全从业者的角度,讨论了网络扫描基础,各种端口和漏洞扫描技术及使用经验。接下来,我们讨论如何应对恶意网络扫描。
五. 如何应对网络扫描
      现在,互联网上免费的扫描软件,太多了,随便 google 一下,就可以找到一大推;而且,现在的扫描软件,越来越简单易用,从而使得一些没有什么网络和系统技术的 badegg 们(传说中的“脚本小子”),也可以用得得心应手;另外,现在的扫描软件,越来越智能,越来越会逃避 IDS/IPS 的检测和防护。这一方面方便了安全从业者的工作,提高了我们的工作效率,另一方面也给那些专门想搞破坏的 badegg 们大开了方便之门,增加了安全从业者的负担。我们不得不承认,网络扫描工具的这些特点,确实增加了我们工作的难度,但是,那并不意味着我们在面对网络扫描的时候,就应该束手无策,不知所措,坐以待毙了。相反,我们应该使用各种针对端口和漏洞扫描的检测和防护措施,来积极地跟恶意的网络扫描做斗争,限制他们的扫描范围,减少他们通过扫描能获得的信息,从而更好地保护我们的网络安全。
1. 检测网络扫描
    要有效地检测网络扫描,需要先弄清楚几个问题:
       × 希望检测外网扫描还是内网扫描?
            检测的目的决定了我们到底该进行哪种检测。如果我们想检测来自公网的恶意扫描,并进行及时封堵,或者检查我们的网络防火墙配置是否正确,  那么应该选择检测外网扫描;如果我们对自己内网的安全不太确信,比如曾经被侵入过,想检测出是否有恶意程序存在,那么可以选择检测内网扫描。
       × 扫描检测系统应该部署在哪个位置?
            如果想检测外网扫描,那么建议将扫描检测软件(一般就是入侵检测/防护系统)部署在公网防火墙后面,因为公网上未经防火墙过滤的恶意扫描实在太多,各种告警信息会把我们弄崩溃,一旦经过防火墙过滤了,能够到达扫描检测软件的恶意扫描就会明显少很多,这样方便我们的工作,而且,也只有经过防火墙过滤后的恶意扫描,才是我们所关心的;如果想检测内网扫描,那么把扫描检测软件部署到内网的任何位置都可以,只要能够接收到内网的所有网络数据包就可以了(当然需要我们的精心配制)。
       × 怎样让网络数据包发送到扫描检测系统?
            通常情况下,不管是检测外网扫描还是内网扫描,都极有可能涉及到端口数据流镜像/复制技术,就是把从同一个交换机的其他某些端口进出的数据包,复制到扫描检测系统所连接的交换机端口上来(这种同一个交换机上的端口数据流镜像/复制,就 cisco 交换机来说,被称之为 SPAN);或者是把进出其它交换机的某些端口的数据包,复制到扫描检测系统所连接的交换机端口上来(这种不同交换机上的端口数据流镜像/复制,就 cisco 交换机来说,被称之为 RSPAN)。
  我在这里不详述 SPAN 和 RSPAN 了,只各举一个例子:
          SPAN 例子:
!指定复制哪些端口的流量
               SwitchA(config)# monitor session 1 source int g0/10 rx   
               !指定把流量复制到哪个端口  
               SwitchA(config)# monitor session 1 dest   int g0/24       
RSPAN 例子:
! 定义 RPSN VLAN,必须保证该 VLAN 定义能够
! 被传输到交换机 SwitchB 上去
               SwitchA(config)# vlan 1000
               SwitchA(config-vlan)# remote vlan
               SwitchA(config-vlan)# end
               !指定复制交换机 SwitchA 上的哪些端口的流量 
               SwitchA(config)# monitor session 1 source int g0/2 rx
               SwitchA(config)# monitor session 1 dest remote vlan 1000
               !指定复制到交换机 SwitchB 上的哪个端口
               SwitchB(config)# monitor session 1 source remote vlan 1000
               SwitchB(config)# monitor session 1 dest int g0/1
提示:如果需要检测的流量比较大,建议只分析一个方向的数据包。
接下来,我们看看开源 IDS/IPS snort 对网络扫描的检测:
        a. 当我们用 nmap 来进行扫描的时候,snort 能检测到,并生成 nmap 扫描警告,生成的警告消息如下:
      
        b. 当我们用 nessus 来进行扫描的时候,snort 能检测到,并生成 nmap,nessus 及跟目标运行的服务相关的扫描警告,生成的警告消息如下(为了简洁,我删了一些警告信息):
c. 当我们用 nikto 来进行扫描的时候,snort 能检测到,并生成许多的信息收集和 WEB 应用攻击扫描警告,下面是几条有代表性的扫描警告:
          
      再次,我们看看商业 IDS/IPS 对网络扫描的检测:就笔者所知,Juniper NetScreen-IDP 可以准确检测出网络扫描,其它 IDS/IPS 笔者不熟悉,不敢乱说了。
2. 防护网络扫描
    首先,我们看看防火墙在防护网络扫描方面的作用:作为一种静态的网络安全防护工具,防火墙在防护网络扫描方面的作用比较小,它能作的事情就是保护我们网络上监听着的但未开放给公网的端口(比如只开放给特定IP地址的端口),避免这些端口被黑客扫描到,仅此而已。其它诸如实时告警和防护,就指望不上了。
     当然,这也意味着我们必须好好利用防火墙这个工具,保护好每一个我们不希望公网访问的端口,避免它们被恶意扫描到。

     其次,我们看看主机入侵检测系统 OSSEC 在防护网络扫描方面的表现:OSSEC 是一款优秀的主机入侵检测软件,其默认配置就能够检测和防护网络扫描。下面是笔者做的测试,该测试很好地体现了 OSSEC 的自动防护网络扫描功能。

在 rac1 扫描 rac2 之前,rac2 的 iptables 规则:
                 [root@rac2 ossec]# iptables -L -n
                 Chain INPUT (policy ACCEPT)
                 target     prot opt source               destination        
Chain FORWARD (policy ACCEPT)
                 target     prot opt source               destination        
Chain OUTPUT (policy ACCEPT)
                 target     prot opt source               destination  
从 rac2 扫描 rac1:      
                 [root@rac1 ~]# nmap -sS -v 192.168.2.222
                 Starting nmap 3.70 ( [url]http://www.insecure.org/nmap/[/url]) at    2008-02-                 Initiating SYN Stealth Scan against 192.168.2.222 [1660 ports] at 21:36
rac1 扫描了 rac2 之后,rac2 的 iptables 规则:
                 [root@rac2 ossec]# iptables -L -n
                 Chain INPUT (policy ACCEPT)
                 target     prot opt source               destination         
                 DROP       all  --  192.168.2.111        0.0.0.0/0           
  
                 hain FORWARD (policy ACCEPT)
                 target     prot opt source               destination         
                 DROP       all  --  192.168.2.111        0.0.0.0/0          
Chain OUTPUT (policy ACCEPT)
                 target     prot opt source               destination 
可以看出,rac2 已经自动添加防火墙规则,丢弃来自 rac1(192.168.2.111)的任何数据包,自动防护网络扫描功能,体现出来了,呵呵。
再次,我们看看端口扫描检测工具 PortSentry 在防护网络扫描方面的表现:PortSentry 是一款检测各种类型端口扫描,实时响应的工具。由于笔者先前没有写过关于 PortSentry 的文章,故在此简单描述一下其安装和使用:

第一步:修改 Makefile 文件
            # vi Makefile 
               # 注释掉下面一行
               # CC = cc
 
               # 取消对下面一行的注释
               CC = gcc
第二步:修改 portsentry.c 文件中的一个小 bug
            # vi portsentry.c
               将 1584 行 和 1585 行
                printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
             sourceforget dot net>\n");
            修改为下面这一行:
             printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot sourceforget dot net>\n");
第三步:安装
             # make linux && make install
第四步:配置
              a. 启用 iptables 防护:修改 /usr/local/psionic/portsentry/portsentry.conf 文件下面两行               
# iptables support for Linux
                 #KILL_ROUTE="/usr/local/bin/iptables -I INPUT -s $TARGET$ -j DROP"  
                 为
                 # iptables support for Linux
                 KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"                   
               b. 把我们信任的网络或主机的IP地址写入 /usr/local/psionic/portsentry/portsentry.ignore 文件,PortSentry 不会 理会来自这些地址的网络扫描。
第五步:运行
              # /usr/local/psionic/portsentry/portsentry -tcp                             
              # /usr/local/psionic/portsentry/portsentry -stcp 或者   
# /usr/local/psionic/portsentry/portsentry -atcp 
              # /usr/local/psionic/portsentry/portsentry -udp
下面是笔者的测试,该测试很好地体现了 PortSentry 在自动防护网络扫描时的优秀表现:
扫描前 rac2 的防火墙规则:
                   [root@rac2 portsentry]# iptables -L -n
                   Chain INPUT (policy ACCEPT)
                   target     prot opt source               destination        
Chain FORWARD (policy ACCEPT)
                   target     prot opt source               destination        
Chain OUTPUT (policy ACCEPT)
                   target     prot opt source               destination  
从 rac1 扫描 rac2:
                  [root@rac1 ~]# nmap -sS -O -v 192.168.2.222
当 rac1 开始扫描 rac2 后,rac2 的 iptables 规则:
                  [root@rac2 portsentry]# iptables -L -n
                  Chain INPUT (policy ACCEPT)
                  target     prot opt source               destination         
                  DROP       all  --  192.168.2.111        0.0.0.0/0          
Chain FORWARD (policy ACCEPT)
                  target     prot opt source               destination        
Chain OUTPUT (policy ACCEPT)
                  target     prot opt source               destination    
  
                  当 rac1 开始扫描 rac2 后,rac2 的 portsentry.history 文件的内容:
                   [root@rac2 portsentry]# cat portsentry.history 
                   1202224522 - 02/05/2008 23:15:22 Host: 192.168.2.111/192.168.2.111 Port: 23 TCP Blocked
当扫描结束后,获得的信息:
                   [root@rac1 ~]# nmap -sS -O -v 192.168.2.222
                   Starting nmap 3.70 ( [url]http://www.insecure.org/nmap/[/url]) at 2008-02-05 23:26 CST
                   Initiating SYN Stealth Scan against 192.168.2.222 [1660 ports] at 23:26
                   SYN Stealth Scan Timing: About 32.20% done; ETC: 23:27 (0:01:03 remaining)
                   Increasing send delay for 192.168.2.222 from 0 to 5 due to 11 out of 21 dropped probes since last increase.
                  SYN Stealth Scan Timing: About 50.66% done; ETC: 23:29 (0:01:31 remaining)
                  Increasing send delay for 192.168.2.222 from 5 to 10 due to 11 out of 11 dropped probes since last increase.
                  Increasing send delay for 192.168.2.222 from 10 to 20 due to 11 out of 11 dropped probes since last increase.
                 SYN Stealth Scan Timing: About 78.01% done; ETC: 23:30 (0:00:52 remaining)
                 Increasing send delay for 192.168.2.222 from 20 to 40 due to 11 out of 11 dropped probes since last increase.
                The SYN Stealth Scan took 263.62s to scan 1660 total ports.
                Warning:  OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
                Host 192.168.2.222 appears to be up ... good.
                Interesting ports on 192.168.2.222:
                (The 1650 ports scanned but not shown below are in state: filtered)
               PORT     STATE  SERVICE
               21/tcp   closed ftp
               23/tcp   closed telnet
               53/tcp   closed domain
               113/tcp  closed auth
               256/tcp  closed FW1-secureremote
               443/tcp  closed https
               554/tcp  closed rtsp
               636/tcp  closed ldapssl
               1723/tcp closed pptp
               3389/tcp closed ms-term-serv
               Too many fingerprints match this host to give specific OS details
Nmap run completed -- 1 IP address (1 host up) scanned in 271.799 seconds  
可以看出,PortSentry 及时添加了 iptables 规则,阻挡了 rac1 的扫描,使得 rac1 的扫描根本就没能发现什么有价值的信息,great!
         
        OSSEC 和 PortSentry 在检测和防护 nmap 扫描时确实表现不凡。但是,我们也不得不承认,他们在应对 nessus 和 nikto 扫描时,几乎无能为力。防护 nessus 和 nikto 扫描的重任,就只有交给网络 IDS/IPS 了。
最后,我们看看网络入侵检测系统在防护网络扫描方面的表现:就笔者所知,工作于 Inline 模式的 Snort 和 Juniper NetScreen-IDP 可以防护各种网络扫描,诸如 nmap, nessus, nikto 等等,其它 IDS/IPS 笔者不熟悉,不敢乱说了。
提示:如果我们正确配置了防火墙,那么恶意端口扫描并不是严重的事情,不会对我们的网络安全构成严重威胁。
六. 结语
     在本系列文章的三个部分,我们分别探讨了网络扫描基础和端口扫描,漏洞扫描,如何应对网络扫描。可以看出,网络扫描并没有我们想象的那么简单,需要注意很多地方和细节,才能够获得我们需要的信息,才能够避免给生产网络造成负面影响,才能够避免给自己带来麻烦。为了更好地保护自己的网络,我们需要积极使用多种软件和技术来检测和防护恶意的网络扫描,限制恶意扫描能抵达的范围,减少恶意扫描所能获得的信息,从而蒙上黑客的“眼睛”。
更多信息,请参考笔者的其它几篇文章:
《snort 安装指南》
《主机入侵检测系统 OSSEC 安装指南》
《某大型网站在某机房网络核心交换机配置》 RSPAN 配置部分;
《linux 系统安全规范》       
本文转自zkjian517 51CTO博客,原文链接:http://blog.51cto.com/zoukejian/61737

我谈网络扫描 -- 之三相关推荐

  1. 网络对抗技术_实验一_网络侦查与网络扫描

    中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告 实验一 网络侦查与网络扫描     学生姓名 叶菁 年级 2014级 区 ...

  2. 网络扫描信息收集基于(Windows)

    1.首先说明一下一款网络扫描工具,在之前的博客中我曾简要的写过关于Advance IP Scanner使用方法,最近要写网络扫描的工具,所以对这款工具做一个详细的功能细节上的介绍. 如下图  在输入框 ...

  3. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  4. 基于ARP的网络扫描工具netdiscover常用命令集合大学霸IT达人

    基于ARP的网络扫描工具netdiscover常用命令集合大学霸IT达人 ARP是将IP地址转化物理地址的网络协议.通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机.netdisc ...

  5. 网络扫描工具Nmap常用命令

    网络扫描工具Nmap常用命令 Nmap是一款知名的网络安全审计工具.它免费.开源,可以快速完成各种网络审计功能.它提供了多种探测方式,基于各种网络协议规范,可以发现网络设备并探测设备的各种常见端口.利 ...

  6. 基于ARP的网络扫描工具netdiscover

    基于ARP的网络扫描工具netdiscover ARP是将IP地址转化物理地址的网络协议.通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机.Kali Linux提供的netdisc ...

  7. Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap

    Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具--Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描 ...

  8. Kali Linux网络扫描教程(内部资料)

    Kali Linux网络扫描教程(内部资料) 试读样张:http://pan.baidu.com/s/1qWuNSYw 前  言 Kali Linux是业内最知名的安全渗透测试专用操作系统.它的前身就 ...

  9. 浅谈网络协议(一) 为什么要学网络协议

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习网易研究院云技术部首席架构师刘超先生的趣谈网络协议,开一个系列记录一下. 本系列文章是在原作的基础上修正,并加以自己 ...

最新文章

  1. 下次迟到的借口有了!牛津大学发现时钟越准确,产生的熵越高
  2. 验证E-mail是否正确
  3. php中的round是什么,phpround函数怎么用
  4. C#与matlab混合编程
  5. mysql5.1免安装版配置_mysql5.1免安装版配置
  6. noip2009 普及组
  7. codeup21280:LIS最长不下降子序列问题(可不连续-dp基础题)
  8. 数据库系统原理及mysql应用教程第二版_数据库系统原理及MySQL应用教程(第2版十三五普通高等教育规划教材)...
  9. iOS 去除字符串中的H5标签。
  10. smartforms 黑底白字的标签logo制作
  11. 南方cass怎么添加指北针_添加图例、比例尺、指北针
  12. 联邦学习分类及前景应用
  13. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第二课
  14. 5G网络优化工程师的前景好吗?需求大不大?中级最高高达10000!
  15. 加速,永无止境,媲美PanDownload!
  16. 学习python爬虫经验分享--爬取洛克王国宠物图片
  17. 哈工大软件构造实验2
  18. python代码优化工具,python - 优化WER(字错误率)代码?
  19. 基于深度学习的音乐推荐系统
  20. 网件A6210抓包驱动安装及omnipeek抓包

热门文章

  1. 马斯克坚信的“矩阵模拟”,是一种怎样“烧脑”的存在?
  2. 【考研计算机组成原理】课堂笔记目录汇总——知识点清晰
  3. 页脚设置页码(首页无页码,从第二页开始页码为1)
  4. 邓仲祥:神奇魅力的太子山
  5. csgo服务器响应参数,csgo必备弹道参数 影响弹道参数设置
  6. 极客时间 Redis核心技术与实战 笔记(基础篇)
  7. java计算今天是今年的第几周_java calendar类根据当前日期时间,计算当前日期在当前月是第几周,与周跨月问题,...
  8. 《大数据时代:生活、工作与思维的大变革》读书笔记3(完)
  9. MVP架构开发的鼠绘漫画客户端
  10. 五方法破解Linux(CentOS7.4)系统的root密码