強化Juniper SRX DDoS的安全防護–加強網路內部的安全

強化Juniper SRX DDoS的安全防護–加強網路內部的安全
  
首先讓我們重點了解Junos設備服務的基本網絡行為,以及如何加強它們以提供可預測,可靠和安全的操作。

下列為強化網路安全相關的設定命令,方便您複製使用,後面會陸續說明其功用。
set system default-address-selection
set system internet-options tcp-drop-synfin-set
set system internet-options no-tcp-reset drop-all-tcp
set system no-redirects
set system no-ping-record-route
set system no-ping-time-stamp
set protocols lldp interface all disable
set protocols lldp-med interface all disable


地址選擇Address Selection
默認情況下,當路由引擎生成流量(cflowdsyslogNTP等)時,來源地址是最接近目標端口的介面IP地址。
在更大,更多樣化的連接網絡中,中斷(outages)可能會引起預期源地址選擇行為的變化。
為了提高路由引擎產生的流量源地址的可預測性,建議使用環回(lo0)地址。
使用default-address-selection CLI選項指示路由引擎使用
當數據包通過路由接口發送時,回送接口(lo0)作為本地生成的所有IP數據包的源地址。
需要注意的是,當流量通過內置的帶外管理接口(fxp0me0)發送時,這不適用:
set system default-address-selection

提示
使用環回作為源地址的另一個好處是,如果您的所有網絡設備都有一個環回IP地址在相同的網絡範圍內,那麼您可以輕鬆創建網絡防火牆規則,以清楚地識別和允許來自設備的管理流量。
警告
建議在初始配置Junos設備時添加此命令。將此命令添加到生產設備時應該謹慎考慮,並且應該確保所有路由引擎生成的流量在您的環境中繼續按預期工作。


禁止TCP惡意flag以及TCP 探測
TCP惡意flag (SYN-FIN TCP Flags)
先說說TCP惡意flag,大家知道正常TCP協商流程會用到SYNFIN flag標記,SYN用於TCP建立,而FIN用於TCP會話拆除。
但是沒有哪一個正常數據包會同時把SYNFIN放到標記flag裡面,因為邏輯是矛盾衝突的。
可是,有人就會故意人為製造此數據包,並通過發送大量的無效數據包來製造DOS攻擊,並獲悉目標設備的作業系統信息等。
我們可以配置JUNOS丟棄同時含有SYNFIN欄位的無效數據,不做回應。
確定操作系統類型和版本的方法之一是發送非標準數據包類型並分析目標的響應。 這種技術被稱為TCP / IP堆棧指紋識別。 該過程中使用的常見數據包類型之一是一個TCP數據包,其中同時設置了SYNFIN標誌。 這顯然是一個無效的數據包,因為在初始建立連接期間使用SYN標誌,並且在會話關閉時使用FIN標誌。
具有TCP SYN-FIN標誌設置的數據包也可以用於其他惡意目的,應該刪除。 儘管可以使用防火牆過濾器 (firewall filter) 阻止此無效的TCP標誌組合,但Junos[ system internet-options ]層次結構下還有一個選項,用於在內核級別丟棄這些數據包,其配置如下
set system internet-options tcp-drop-synfin-set

TCP探測 (TCP Reset (RST) Packets)
攻擊者為了探測目標網絡設備的埠打開範圍和狀態,可以發送大量的TCP-SYN連接請求,通過查看網絡設備的回覆信息來知曉埠打開情況。
在高強度掃描的情況下,網絡設備的負載會增加,並造成DOS攻擊。
對封閉端口上的服務請求的通常響應是發送RSTRST / ACK
端口掃描實用程序將數據包發送到一系列端口上的網絡設備,並偵聽其響應以確定是否有該服務端口上正在運行的服務。
積極的掃描活動可能會給路由引擎帶來不必要的負擔,並可能對性能造成負面影響或導致拒絕服務(Denial of Service)
*** 配置JUNOS對未開啟的埠不回復TCP-RST,從而讓攻擊者無法知曉此埠是否開啟。***
在這裡,讓我們使用下列的CLI命令:
set system internet-options no-tcp-reset drop-all-tcp

jweidley@mx240# set system internet-options no-tcp-reset ?
Possible completions:
drop-all-tcp Drop all TCP Packets
drop-tcp-with-syn-only Drop only those TCP Packets with SYN bit

You can see the options:
drop-all-tcp: Detects and drops packets with non-standard TCP flag combinations such as FIN/RST, ACK/RST, etc.
drop-tcp-with-syn-only: Detects and drops TCP packets with only the SYN flag set or flag combinations that include the SYN flag.



關閉ICMP重定向
ICMP重定向是路由器向IP數據包的發送者發送的通知,以通知他們到達特定目標主機或網絡的更好方式。 收到重定向後,源設備應修改其路由的方式,然後通過路由器建議的下一跳發送後續數據包。
攻擊者可以利用ICMP重定向的特性,向路由器發送大量的非最優路由的數據包,促使路由器返回成千上萬的ICMP重定向,從而實現DDOS攻擊。
可是,在一個設計良好的網絡環境裡面,是不需要也不應該出現ICMP重定向的信息,為此我們可以關閉它。
同其他廠商類似,JuniperJunos默認是開啟ICMP重定向的。但要全局禁用ICMP重定向,請使用以下命令:
set system no-redirects

有些情況下(可能在初始安裝期間),可能需要啟用重定向,以使網絡在短時間內運行,直到可以實施永久修復。 對於這些情況,工程師可以禁用某些接口上的重定向,並在其他接口上啟用重定向。 使用以下命令可以基於每個接口禁用重定向:
set interfaces ge-0/0/3 unit 50 family inet no-redirects


Ping Timestamp and Record Route
建議從外部源阻止Ping但對於內部主機來說ping是一個非常有用的故障排除工具。通常的做法是將ping限速到路由引擎,以便您可以安全地提供此功能以進行故障排除,而不會危及路由引擎的完整性。 (有關更多詳細信息,請參閱本章中有關保護路由引擎的部分。)
時間戳選項(timestamp option)用於測量到目標主機的往返時間。
記錄路由選項(record route option)對於解決網絡路徑問題非常有用因為與traceroute命令不同它還顯示返迴路由而不僅僅是目標路徑。
可能的安全隱患是時間戳和記錄路由選項回复路由引擎的回送地址,該路由引擎提供的信息比您應該與常規用戶分享的信息要多。
使用以下命令繼續提供這些有用的服務,同時遮蔽路由引擎的身份:
set system no-ping-record-route
set system no-ping-time-stamp



合理使用LLDP鄰居發現
LLDP,類似於CiscoCDP。不過是被IEEE標準化了的鄰居發現協議而已。既然是鄰居發現,自然會完全暴露網絡設備本身的詳細信息。所以僅僅在需要的埠上開啟LLDP,是網絡安全的首選項。
鏈路層發現協議(LLDP - Link Layer Discover Protocol)是供應商中立的標準第2層協議,允許網絡設備在局域網上宣傳其身份和功能。
支持LLDP的設備以類型長度值(TLV - Type Length Values的形式傳輸信息。
這些消息可以包括特定於設備的信息,例如機箱和端口信息,系統名稱和設備功能。
LLDP-Media端點發現(LLDP-MED)是LLDP標準的擴展,支持IP語音(VoIP)端點和其他網絡終端設備之間的互操作性。 LLDP-MED使用額外的TLV信息,如網絡策略發現(network policy discovery) 和以太網供電(PoE - Power over Ethernet)管理。
LLDPLLDP-MEDJunos操作系統中有不同的配置節,但在本節中,這兩者都簡稱為LLDP
LLDP的安全風險是數據包未經過身份驗證或加密,這意味著惡意用戶可以使用技術來進行偵察並獲得有關您的網絡的信息。攻擊者也可能注入偽造的LLDP數據包,試圖發現漏洞或者使設備崩潰並產生拒絕服務(DoS)攻擊。
EX以太網交換平台上,默認情況下在所有接口上啟用LLDP。推薦保護LLDP的方法是僅在需要該功能的特定接口(面向路由器的接口,面向交換機的接口,VoIP電話等)上啟用它。
LLDPLLDP-MED功能是在EX以太網交換平台上引入的,但也已在MX和分支SRX平台中實施。
下圖具有一個示例性網絡拓撲,LLDP僅限於所需的接口。



set protocols lldp interface all disable
set protocols lldp interface ge-0/0/0.0
set protocols lldp interface ge-0/0/3.0
set protocols lldp-med interface all disable
set protocols lldp-med ge-0/0/1.0

[edit]
jweidley@MX240# edit protocols lldp
[edit protocols lldp]
jweidley@MX240# set protocols lldp interface all disable
[edit protocols lldp]
jweidley@MX240# set protocols lldp interface ge-0/0/0.0
[edit protocols lldp]
jweidley@MX240# set protocols lldp interface ge-0/0/3.0
[edit protocols lldp]
jweidley@MX240# top edit protocols lldp-med
[edit protocols lldp-med]
jweidley@MX240# set interface ge-0/0/1.0

驗證 LLDP 完成後的設定。
[edit protocols]
jweidley@MX240# show
lldp {
    interface all {
        disable;
    }
    interface ge-0/0/0.0;
    interface ge-0/0/3.0;
}
lldp-med {
    interface all {
        disable;
    }
    interface ge-0/0/1.0;

}

查看通過LLDP共享什麼信息
我們可以使用下列命令來查看LLDP獲得哪些信息:
show lldp neighbors interface ge-0/0/0.0



下面還有一些常用的設定,暫時找不到資料說明,請自行參考。
meaning: do not respond to ICMP packets sent to IP broadcast addresses
set system no-multicast-echo

Configure the system and system-options to protect against DoS attacks.
set system arp aging-timer 5
set system internet-options no-ipip-path-mtu-discovery
set system internet-options no-source-quench
set system internet-options icmpv4-rate-limit packet-rate 50
set system internet-options icmpv6-rate-limit packet-rate 50
set system internet-options no-ipv6-path-mtu-discovery
set system internet-options path-mtu-discovery
set system internet-options ipv6-path-mtu-discovery


root@srx100# set system n?
Possible completions:
> name-server          DNS name servers
  nd-maxmcast-solicit  Set Maximum multicast solicit
  nd-retrasmit-timer   Set retransmit timer
  no-compress-configuration-files  Don't compress the router configuration files

  no-debugger-on-alt-break  Disallow kernel debugger on console alt-break
  no-multicast-echo    Disable ICMP echo on multicast addresses
  no-neighbor-learn    Disable neighbor address learning
  no-ping-record-route  Do not insert IP address in ping replies
  no-ping-time-stamp   Do not insert time stamp in ping replies
  no-redirects         Disable ICMP redirects
  no-saved-core-context  Don't save context information for core files
> ntp                  Network Time Protocol services
[edit]
root@srx100# set system internet-options ?                                      
Possible completions:
+ apply-groups         Groups from which to inherit configuration data
+ apply-groups-except  Don't inherit configuration data from these groups
  gre-path-mtu-discovery  Enable path MTU discovery for GRE tunnels
> icmpv4-rate-limit    Rate-limiting parameters for ICMPv4 messages
> icmpv6-rate-limit    Rate-limiting parameters for ICMPv6 messages
  ipip-path-mtu-discovery  Enable path MTU discovery for IP-IP tunnels
  ipv6-duplicate-addr-detection-transmits  IPv6 Duplicate address detection transmits
  ipv6-path-mtu-discovery  Enable IPv6 Path MTU discovery
  ipv6-path-mtu-discovery-timeout  IPv6 Path MTU Discovery timeout (minutes)
  no-gre-path-mtu-discovery  Don't enable path MTU discovery for GRE tunnels
  no-ipip-path-mtu-discovery  Don't enable path MTU discovery for IP-IP tunnels
  no-ipv6-path-mtu-discovery  Don't enable IPv6 Path MTU discovery
  no-path-mtu-discovery  Don't enable Path MTU discovery on TCP connections
  no-source-quench     Don't react to incoming ICMP Source Quench messages
  no-tcp-reset         Do not send RST TCP packet for packets sent to non-listening ports
  no-tcp-rfc1323       Disable RFC 1323 TCP extensions
  no-tcp-rfc1323-paws  Disable RFC 1323 Protection Against Wrapped Sequence Number extension
  path-mtu-discovery   Enable Path MTU discovery on TCP connections
> source-port          Source port selection parameters
  source-quench        React to incoming ICMP Source Quench messages
  tcp-drop-synfin-set  Drop TCP packets that have both SYN and FIN flags
  tcp-mss              Maximum value of TCP MSS for IPV4 traffic (bytes)
[edit]

root@srx100#


IP源路由
路由器使用路由協議進行通信,並交換有關他們知道如何到達的網絡的信息。 數據包根據數據包中包含的目標地址通過網絡路由。 這是合理的行為,因為路由器應該知道將數據包轉發到目的地的最佳方式。
最初的IP RFCRFC 791)包含了用於嚴格和鬆散源路由的IP報頭選項。 通過源路由,數據包的發送者可以指定數據包必須經過的確切路徑(嚴格)或單個網關(鬆散)才能到達目的地。
這些選項的目的是協助網絡故障排除,但惡意用戶也可以使用源路由將數據包定向到特定網段,收集網絡拓撲信息並可能破壞安全限制。
在老版本的Junos中,默認啟用源路由,但可以禁用:
[edit]
jweidley@MX240# set chassis no-source-route

Junos 8.5或更高版本開始,默認情況下禁用IPv4源路由。 如果您的網絡中需要源路由,則可以在[edit routing-options source-routing]層次結構下啟用源路由。 由於行為發生變化,因此Junos CLI會將先前的CLI命令標記為棄用:
[edit]
jweidley@mx240# show chassis
no-source-route; ## Warning: 'source-route' is deprecated  /* 無源路由; ##警告:'source-route'已棄用 */



這個網誌中的熱門文章

如何測試網路連線--網路斷線了怎麼辦?

筆記電腦刷BIOS失敗無法開機—用CH341A編程器重刷BIOS教學!

查理王的電腦部落格-首頁