網路安全 深入:網路層
IP - Internet Protocol
IP 用於跨網路通訊,不僅僅是跨物理鏈路,還包括路由器之間的網路。使用的定址方案是 IPv4(“IP 版本 4”)或 IPv6(“IP 版本 6”)。
IP 網路可以劃分為不同的部分,通常稱為子網。這是透過在 IP 地址資訊之外新增一個額外的資訊來實現的,稱為子網掩碼。子網掩碼決定了網路的規模,以及哪個資料包在網路內部路由,哪個應該在網路外部路由。
子網掩碼可以透過十進位制數字或斜槓表示法表示。 使用斜槓表示法時,斜槓跟在系統的 IP 地址後面。以下是一些示例
IP 地址 | 斜槓表示法 | 子網掩碼 |
10.0.0.1 | /8 - 示例:10.0.0.1/8 | 255.0.0.0 |
172.16.1.1 | /12 - 示例:172.16.1.1/12 | 255.240.0.0 |
192.168.0.1 | /16 - 示例:192.168.0.1/16 | 255.255.0.0 |
192.168.0.1 | /24 - 示例:192.168.0.1/24 | 255.255.255.0 |
某些 IP 網路被保留用於特定型別的流量。上面表格中的 IP 地址僅保留用於內部組織使用,這意味著它們不應在 Internet 上路由。這些型別的 IP 地址通常被稱為 RFC1918 地址。
不同的網路
讓我們來看看 RFC1918 中的不同網路以及它們的規模
- 10.0.0.0/8 - 超過 1600 萬個 IP 地址
- 172.16.0.0/12 - 大約 100 萬個 IP 地址
- 192.168.0.0/16 - 65534 個 IP 地址
IP 段可以進一步劃分為更小、更精細的網路。
每個網路都有一個用於向網路中的所有主機廣播流量的保留地址,這稱為廣播地址。廣播資料意味著將資料傳送給網路上的所有人,而不是隻傳送給單個主機。有許多應用程式和協議依賴於廣播流量才能正常工作。
對於每個網路段,廣播地址始終是網路中的最後一個 IP 地址。例如,在 192.168.0.0/24 網路中,廣播地址是 192.168.0.255。
最小的子網掩碼是 255.255.255.255,表示為 /32。這個網路只有一個 IP 地址。
如果流量需要傳送回主機,例如用於應用程式之間的通訊,則傳送到 localhost 地址。這個地址始終是 127.0.0.1,是一個 /8 網路。
在 IP 網路中,流量由路由器路由。路由器是一種網路裝置,它理解 IP 格式,並且可以在網路之間轉發資料包。這與交換機不同,因為交換機在網路內部轉發資料,而路由器在網路之間轉發。
網路上的資料包帶有頭部,這些頭部描述了我們已經在 IP 協議中討論過的許多重要細節。IPv4 頭部看起來像這樣
圖片來源:作者 Michel Bakni - Postel, J. (September 1981) RFC 791, Internet Protocol, DARPA Internet Program Protocol Specification, The Internet Society, p. 11 DOI: 10.17487/RFC0791., CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=79949694
源地址是傳送資料包的系統的 IP 地址,目的地是資料包的目的地。頭部中還有其他欄位,用於 IP 協議的許多功能,但這些超出了本入門課程的範圍。
您可以透過在命令列視窗中執行命令 ipconfig
來檢查 Windows 上的 IP 地址。在 Linux 上,可以使用 ip addr show
或 ifconfig
命令。
當計算機需要與區域網(LAN)上找不到的裝置通訊時,它會根據系統的配置將流量傳送到預設閘道器。預設閘道器是能夠將流量轉發到目標 IP 地址的路由器。
NAT(“網路地址轉換”)
NAT 允許接受公共 IP 地址連線的系統將這些請求對映到內部 RFC 1918 IP 地址,反之亦然。執行 NAT 的系統通常是防火牆和路由器。
NAT 的典型實現方式是,外部 IP 地址作為多個內部 IP 地址的前端,並且目標埠號用於決定資料應該傳送到哪個伺服器。這允許內部 IP 地址接收來自外部系統的流量。
另一種非常常見的實現方式是允許內部 IP 地址使用外部 IP 地址訪問 Internet。NAT 會跟蹤從內部到目標地址的連線,並在連線上傳輸流量。
NAT 可以配置為多種方式,但在本課程中,我們不深入探討該方法的更多細節。
IPv6 - IP Version 6
IP 版本 6 是 IP 的最新標準,旨在支援更多 IP 地址。它使用 128 位而不是 32 位進行 IP 地址定址。這使得在可預見的未來有足夠的 IP 地址,而 IPv4 已經耗盡。
IPv6 地址使用 8 組 4 位十六進位制數字。IPv6 地址看起來像這樣:2a00:1450:400f:80a::200e:。請注意,它沒有 8 組 4 位十六進位制數字。這是因為 IPv6 地址可以透過簡單的規則進行縮短
- 前導零可以縮短
- 雙冒號 (::) 可以用來表示連續的零串。
展開後的 IPv6 地址是:2a00:1450:400f:080a:0000:0000:0000:200e。
::1 和 :: 可以簡化為 localhost。
IPv6 也有網路,即子網,就像 IPv4 一樣。
IPv6 頭部看起來像這樣
我們可以看到一個更簡單的頭部,並且有更多的空間用於 IP 定址。
IPv6 的使用越來越多,並且許多工具都內建支援此協議。例如,使用 ping
命令,我們可以使用 -4 和 -6 標誌分別在 IPv4 和 IPv6 之間切換。
執行 ipconfig
並檢視是否看到任何 IPv6 地址。如果啟用了 IPv6,請嘗試 ping -6 google.com
和 ping -4 google.com
。看看該命令如何允許我們使用 IPv4 或 IPv6?
ICMP
ICMP 通常與 Ping 和 Traceroute 相關聯。ICMP 還可以用於其他目的,例如請求節點的時間,稱為 ICMP 時間戳請求。ICMP 時間戳請求允許例如路由器請求另一臺路由器同步它們的時間,這是網路通訊中的一個重要屬性。
攻擊者檢查網路上系統是否可用的常見策略是執行 Ping 掃描。這種活動的目標是讓目標裝置在網路範圍內響應 ping 請求,以便攻擊者知道它可用。這種方法很天真,因為許多系統預設會阻止傳入的 ping。
Traceroute
Tracerouting 是一種確定將資料包從系統 A 傳送到系統 B 所涉及的路由器的方法。瞭解我們的資料包經過哪些路由器對於更好地理解我們的網路以及理解攻擊面都很有用。路由器負責將資料包路由到正確的方向。想象一下在道路上開車,道路上的路標會引導您到達目的地。這些路口的路標代表路由器。Traceroute 識別這些路標和路口,並告訴您它們有多遠,以毫秒(ms)為單位。
IPv4 的 TTL 和 IPv6 的 Hop Limit 頭部具有相同的功能。每個路由資料包的路由器都會將此值減 1,如果該值達到 0,路由器將丟棄資料包並將 ICMP Time Exceeded 資料包返回給傳送者。
在 Windows 上執行 traceroute
tracert google.com
在 Linux 上執行 traceroute(預設未安裝)
traceroute google.com
透過這些工具進行 tracerouting 的過程很簡單
- 作業系統向 google.com 傳送一個數據包,TTL 值設定為 1。
- 資料包在網路上路由,第一個路由器將 TTL 減 1,使其變為 0。這會導致路由器丟棄資料包並向源傳送“ICMP Time Exceeded”訊息。
- 客戶端將 TTL 增加 1,允許資料包透過一個額外的跳數進行路由。
這個過程會重複進行,每次將 TTL 增加 1,直到到達目的地。
DNS(“Domain Name System”)
DNS 用於透過名稱將應用程式對映到 IP 地址。例如,如果您想使用瀏覽器訪問 http://google.com,瀏覽器必須首先向 DNS 伺服器發出請求,以解析 google.com 背後的 IP 地址。
系統通常配置有主和輔域名伺服器。這些設定可以手動配置,也可以由 DHCP 伺服器提供。這使得我們的計算機系統能夠訪問 DNS 伺服器以進行解析。
DNS 伺服器負責解析請求。它會檢查自己的快取,看是否已經知道答案。每個 DNS 答案都可以快取,即臨時儲存以加快未來的請求速度,快取時間由一定的 TTL(“Time To Live”)決定。TTL 通常設定為幾分鐘,例如 10 分鐘。
如果 DNS 伺服器的快取中沒有答案,它將繼續檢查誰負責提供答案。這是透過遞迴過程完成的,該過程涉及詢問分層名稱伺服器系統,最終將 DNS 請求導向權威名稱伺服器。
您現在可以嘗試在 Windows 或 Linux 上進行 DNS 查詢。在 Windows 的命令列終端上輸入 nslookup w3schools.com
,或在 Linux 上輸入 dig w3schools.com
。您應該看到類似以下的輸出
w3schools.com 的 IP 地址可以在;; ANSWER SECTION. 中看到。當此螢幕截圖被捕獲時,w3schools.com 名稱背後的 IP 地址是66.29.212.110。
權威名稱伺服器是負責提供對查詢的最終答案的 DNS 伺服器。例如,google.com 的 IP 地址將由其權威名稱伺服器回答,我們可以透過查詢它來找到該伺服器
在 Windows 上查詢權威名稱伺服器
nslookup -type=SOA google.com
在 Linux 上查詢權威名稱伺服器
dig -t SOA google.com
DHCP(“Dynamic Host Configuration Protocol”)
顧名思義,DHCP 協議允許網路上的任何系統聯絡伺服器並接收配置。此類配置通常包括接收 IP 地址和網路範圍、預設閘道器和 DNS 伺服器。
DHCP 允許輕鬆管理加入和離開網路的客戶端。
如果您想知道現在是否正在使用 DHCP,可以在 Windows 系統上鍵入 ipconfig /all
,並在輸出中查詢“DHCP Enabled: Yes”。您的計算機可能具有多個網路介面
VPN(“Virtual Private Network”)
VPN 是一種使兩個系統能夠建立加密通訊形式的系統,從而能夠加密網路流量的傳輸。許多 VPN 是客戶端-伺服器架構,允許客戶端訪問 VPN 後面的多個服務。由您的工作場所託管的 VPN 也可能提供對否則只能從內部訪問的資源的訪問。
一些 VPN 服務專為使用者隱私和傳輸中資料的加密而設計。這些服務使使用者能夠透過 VPN 傳送網路資料,從而在瀏覽 Internet 時有效地隱藏使用者的 IP 地址。
使用 VPN 來保護您的網路通訊通常是明智的做法,但我們不應使用任何型別的 VPN 服務。免費 VPN 服務有時可能是惡意的,會檢查、讀取和儲存您的敏感資料。