1. 簡介 解決了CIPE 在處理異常條件下存在錯誤可導致產生拒絕服務攻擊。如果應用程序接收 到一個比它能處理最小CIPE包還小的包,就可以導致系統崩潰,停止後續處理。 CIPE運行在內核級別可以導致系統崩潰,或者不可測的數據丟失。 本是Linux Cipe+Masquerading mini-HOWTO. 本文解釋如何使用cipe經由 linux masquerading firewall主機,來建立一個介於您的局燭網(LAN)與其它局燭網之間的虛擬私有網絡(Virtual Private Network)。 1.1. 版權聲明 (C)opyright 1998 Anthony Ciaravalo,
[email protected] 除非特別聲明,否則Linux HOWTO文件的版權是歸原作者所有。只要保證版權受到保護,Linux HOWTO文件能夠以任何電子或實體媒介來進行完整或部分的復制、散布。商業化的重制是被允許的,甚至加以鼓勵;但前提是必須知會原作者。 所有源自於Linux HOWTO的文件(包括翻譯、改編、匯整等等)都必須包含本版權聲明。也就是說,任何人皆不能在文件的散布上加諸其它限制。除非在某些特定情況下,才得以用特例允許;詳情請與Linux HOWTO coordinator洽詢,聯絡方式見後述。 如果您有任何疑問,歡迎洽詢Linux HOWTO coordinator Greg Hankins ,您可以查詢(finger)這個帳號以取得聯絡電話或郵件地址。 1.2 責任承擔聲明 使用此份文件的范例或信息,必須自行承擔風險。在經由Internet連接到網絡上時,可能會衍生許多安全性的議題。即使是您的訊息已經經過加密,但不正確的firewall設定仍然會導致安全上的裂縫。關於cipe connection您必須要特別小心謹慎,然而,仍然無法保障100%的安全。作者並不保證在本文件中所提供的信息同時也提供了一個安全的網絡環境。 1.3. 使用回報 如果您有任何問題、建議、更正,或評論,歡迎您寫信到
[email protected]. 1.4. 本文件之最新版本 新版的文件將會發表到 cipe mailing list 並且email 給 Linux HOWTO coordinator 並且建檔成 Linux HOWTO。 1.5 取得文件 本文件是針對 cipe 所寫成的。您可以從 http://sites.inka.de/~bigred/sw/cipe-1.6.0.tar.gz取得文件文件。
2. 機器設定 2.1 Firewall 設定 本文件假設您的 kernel 已經設定成支持 IP masquerade 並且已經正常執行 firewall 相關設定。本文中並不解釋如何去設定 masquerading firewall,而只介紹設定規則的范例,以說明在使用 masquerading firewall 時,如何讓cipe能夠正常運作。您可以在參考文件中找到如何設定 linux IP masquerade firewall. 2.2. The Star/Hub 設定 這個設定使用 star/hub 架構,因此如果 machine A 停止運作,那麼machine B 和 C 將無法連線。您可以考慮在 machine B 和 C 之間增加一個 cipe connection 來解決這個問題。而當您將許多網絡連結在一起的時候,就會開始變得有危機存在。本文件只介紹了 star/hub 設定的范例。 Machine A eth0: 10.10.1.1 eth1: real ip 1 / Machine B Machine C eth0: 10.10.2.1 eth0:10.10.3.1 eth1: real ip 2 eth1: real ip 3 2.3. 名詞參考 eth0 是 local network (fake address) eth1 是 internet address (real address) Port A 是任何您可以選擇的有效通訊端口 Port B 是任何其余您可以選擇的有效通訊端口 Key A 是任何您可以選擇的有效 key (詳情請閱讀 cipe 文件) Key B 是任何您可以選擇的有效 key 2.4. Machine A 的設定 2.4a. /etc/cipe/ip-up #a trimmed down version of the sample ip-up that comes with the distribution #!/bin/sh umask 022 PATH=/sbin:/bin:/usr/sbin:/usr/bin echo "UP $*" >> /tmp/cipe echo $3 > /var/run/$1.pid #筆者傾向於在設定 routing 時分成不同的文件來設,詳述如下。 2.4b. /etc/cipe/options.machineB #設備域名 device cip3b0 # the peers internal (fake) ip address ptpaddr 10.10.2.1 # my cipe (fake) ip address ipaddr 10.10.1.1 # my real ip address and cipe port me (real ip 1):(port A) # the peers ip address and cipe port peer (real ip 2):(port A) #128 比特的加密 key,應予以保密 key (Key A) 2.4c. /etc/cipe/options.machineC #設備域名 device cip3b1 # the peers internal (fake) ip address ptpaddr 10.10.3.1 # my cipe (fake) ip address ipaddr 10.10.1.1 # my real ip address and cipe port me (real ip 1):(port B) # the peers ip address and cipe port peer (real ip 3):(port B) #128 比特的加密 key,應予以保密 key (Key B) 2.4d. /etc/cipe/setroute #!/bin/sh #設定 routing table 的文件 #設定 Machine B 的 routing table /sbin/route add -host 10.10.2.1 dev cip3b0 /sbin/route add -net 10.10.2.0 netmask 255.255.255.0 gw 10.10.2.1 #設定 Machine C 的 routing table /sbin/route add -host 10.10.3.1 dev cip3b1 /sbin/route add -net 10.10.3.0 netmask 255.255.255.0 gw 10.10.3.1 2.4e. /etc/rc.d/rc.local echo Configuring VPN network /usr/local/sbin/ciped -o /etc/cipe/options.machineB /usr/local/sbin/ciped -o /etc/cipe/options.machineC /etc/cipe/setroute 2.4f. Firewall 規則 #去除所有 incoming firewall 的規則,並將缺省值設為 deny /sbin/ipfwadm -I -f /sbin/ipfwadm -I -p deny #允許所有新進的封包 (packets) 經由 cipe links 送至您的網絡中 /sbin/ipfwadm -I -a accept -W cip3b0 -S 10.10.0.0/16 -D 10.10.0.0/16 /sbin/ipfwadm -I -a accept -W cip3b1 -S 10.10.0.0/16 -D 10.10.0.0/16 #您可以再增加一些額外的封包進入規則 #去除所有 outgoing firewall 的規則,並將缺省值設為 deny /sbin/ipfwadm -O -f /sbin/ipfwadm -O -p deny #允許所有送出的封包 (packets) 經由 cipe links 送至其它網絡 /sbin/ipfwadm -O -a accept -W cip3b0 -S 10.10.0.0/16 -D 10.10.0.0/16 /sbin/ipfwadm -O -a accept -W cip3b1 -S 10.10.0.0/16 -D 10.10.0.0/16 #您可以再增加一些額外的封包送出規則 #去除所有 forwarding firewall 的規則,並將缺省值設為 deny /sbin/ipfwadm -F -f /sbin/ipfwadm -F -p deny #允許所有轉送的封包 (packets) 經由 cipe links 送至其它網絡 /sbin/ipfwadm -F -a accept -W cip3b0 -S 10.10.0.0/16 -D 10.10.0.0/16 /sbin/ipfwadm -F -a accept -W cip3b1 -S 10.10.0.0/16 -D 10.10.0.0/16 #允許從這台機器的真實 ip forward 到其它機器的真實 ip /sbin/ipfwadm -F -a accept -W eth1 -S (real ip 1) -D (real ip 2) /sbin/ipfwadm -F -a accept -W eth1 -S (real ip 1) -D (real ip 3) #允許經由 local interface (fake ip address) 轉送到其它網絡上 /sbin/ipfwadm -F -a accept -W eth0 -S 10.10.0.0/16 -D 10.10.0.0/16 #您可以再增加一些額外的封包轉送規則 2.4g. 網關 (Gateway) 所有在 10.10.1.0 網絡上的機器必須以 10.10.1.1 來當作網關,如果您不是如此設定,那麼將無法正常運作。 2.5. Machine B 的設定 2.5a. /etc/cipe/ip-up #a trimmed down version of the sample ip-up that comes with the distribution #!/bin/sh umask 022 PATH=/sbin:/bin:/usr/sbin:/usr/bin echo "UP $*" >> /tmp/cipe echo $3 > /var/run/$1.pid #筆者傾向於在設定 routing 時分成不同的文件來設,詳述如下。 2.5b. /etc/cipe/options.machineA #設備域名 device cip3b0 # the peers internal (fake) ip address ptpaddr 10.10.1.1 # my cipe (fake) ip address ipaddr 10.10.2.1 # my real ip address and cipe port me (real ip 1):(port A) # the peers ip address and cipe port peer (real ip 2):(port A) #128 比特的加密 key,應予以保密 key (Key A) 2.5c. /etc/cipe/setroute #!/bin/sh #設定 routing table 的文件 #設定 Machine A 的 routing table /sbin/route add -host 10.10.1.1 dev cip3b0 /sbin/route add -net 10.10.1.0 netmask 255.255.255.0 gw 10.10.1.1 2.5d. /etc/rc.d/rc.local echo Configuring VPN network /usr/local/sbin/ciped -o /etc/cipe/options.machineA /etc/cipe/setroute 2.5e. Firewall 規則 (以下請參照 2.4f 的注解說明) #flush all incoming firewall rules and