我談網絡掃描 -- 之三

      在本系列文章的第一,二部分(我談網絡掃描 -- 之一,之二),我們站在安全從業者的角度,討論了網絡掃描基礎,各種端口和漏洞掃描技術及使用經驗。接下來,我們討論如何應對惡意網絡掃描。
 
五. 如何應對網絡掃描
      現在,互聯網上免費的掃描軟件,太多了,隨便 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 系統安全規範》   
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章