隧道加密
A. SSH隧道協議(AES密鑰對加密法則)
SSH是每一台Linux電腦的標准配置
隨著Linux設備從電腦逐漸擴展到手機、外設和家用電器,SSH的適用范圍也越來越廣。不僅程序員離不開它,很多普通用戶也每天使用;SSH具備多種功能,可以用於很多場合。有些事情,沒有它就是辦不成
簡單說,SSH是一種網路協議,用於計算機之間的加密登錄。
如果一個用戶從本地計算機,使用SSH協議登錄另一台遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。
最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標准配置。
需要指出的是,SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。
SSH主要用於遠程登錄。假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令就可以了。
如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
SSH的默認埠是22,也就是說,你的登錄請求會送進遠程主機的22埠。使用p參數,可以修改這個埠。
上面這條命令表示,ssh直接連接遠程主機的2222埠。
SSH之所以能夠保證安全,原因在於它採用了公鑰加密。
整個過程是這樣的:(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。(2)用戶使用這個公鑰,將登錄密碼加密後,發送回來。(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
這個過程本身是安全的,但是實施的時候存在一個風險:如果有人截獲了登錄請求,然後冒充遠程主機,將偽造的公鑰發給用戶,那麼用戶很難辨別真偽。因為不像https協議,SSH協議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發的。
可以設想,如果攻擊者插在用戶與遠程主機之間(比如在公共的wifi區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那麼SSH的安全機制就盪然無存了。這種風險就是著名的「中間人攻擊」(Man-in-the-middle attack)。
SSH協議是如何應對的呢?
如果你是第一次登錄對方主機,系統會出現下面的提示:
這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連接嗎?
所謂」公鑰指紋」,是指公鑰長度較長(這里採用RSA演算法,長達1024位),很難比對,所以對其進行MD5計算,將它變成一個128位的指紋。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再進行比較,就容易多了。
很自然的一個問題就是,用戶怎麼知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在自己的網站上貼出公鑰指紋,以便用戶自行核對。
假定經過風險衡量以後,用戶決定接受這個遠程主機的公鑰。
系統會出現一句提示,表示host主機已經得到認可。
然後,會要求輸入密碼。
如果密碼正確,就可以登錄了。
當遠程主機的公鑰被接受以後,它就會被保存在文件 $HOME/.ssh/known_hosts 之中。下次再連接這台主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。
每個SSH用戶都有自己的 known_hosts 文件,此外系統也有一個這樣的文件,通常是 /etc/ssh/ssh_known_hosts ,保存一些對所有用戶都可信賴的遠程主機的公鑰。
使用密碼登錄,每次都必須輸入密碼,非常麻煩。好在SSH還提供了公鑰登錄,可以省去輸入密碼的步驟。
所謂」公鑰登錄」,原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字元串,用戶用自己的私鑰加密後,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。
這種方法要求用戶必須提供自己的公鑰。如果沒有現成的,可以直接用 ssh-keygen 生成一個:
運行上面的命令以後,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這里可以設置一個。
運行結束以後,在$HOME/.ssh/目錄下,會新生成兩個文件: id_rsa.pub 和 id_rsa 。前者是你的公鑰,後者是你的私鑰。
這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:
好了,從此你再登錄,就不需要輸入密碼了。
如果還是不行,就打開遠程主機的 /etc/ssh/sshd_config 這個文件,檢查下面幾行前面」#」注釋是否取掉。
然後,重啟遠程主機的ssh服務。
遠程主機將用戶的公鑰,保存在登錄後的用戶主目錄的 $HOME/.ssh/authorized_keys 文件中。公鑰就是一段字元串,只要把它追加在 authorized_keys 文件的末尾就行了。
這里不使用上面的ssh--id命令,改用下面的命令,解釋公鑰的保存過程:
這條命令由多個語句組成,依次分解開來看:
(1) 」$ ssh user@host」 ,表示登錄遠程主機;
(2)單引號中的 mkdir .ssh && cat >> .ssh/authorized_keys ,表示登錄後在遠程shell上執行的命令:
(3) 」$ mkdir -p .ssh」 的作用是,如果用戶主目錄中的.ssh目錄不存在,就創建一個;
(4) 』cat >> .ssh/authorized_keys』 < ~/.ssh/id_rsa.pub 的作用是,將本地的公鑰文件 ~/.ssh/id_rsa.pub ,重定向追加到遠程文件 authorized_keys 的末尾。
寫入 authorized_keys 文件後,公鑰登錄的設置就完成了。
B. VPN相關技術
當您通過Internet使用VPN時,它會在兩個設備/網路之間創建專用且加密的隧道。現在作為VPN,你很難對數據進行竊聽,即使它被侵入,因為這是數據被加密,從這個加密數據中獲取任何信息幾乎是不可能的。有幾種VPN隧道協議,如PPTP(點對點隧道協議),L2TP(第二層隧道協議),IPSec(Internet協議安全),SSL(安全套接字層)等,用於創建VPN隧道。
IPSec實現
工作於TCP/IP第三層IP層上網路數據安全地一整套體系結構;包括網路認證協議AH(Authentication Header,認證頭)、ESP(Encapsulating Security Payload,封裝安全載荷)、IKE(Internet Key Exchange,網際網路密鑰交換又稱isakmp)和用於網路認證及加密的一些演算法等。其中,AH協議和ESP協議用於提供安全服務,IKE協議用於密鑰交換。
整個IPSec VPN地實現基本簡化為兩個SA協商完成
SA(security association):是兩個通信實體經協商建立起來地一種協議,它們決定了用來保護數據包安全地IPsec協議,轉碼方式,密鑰,以及密鑰地有效存在時間等等
IKE(isakmp)SA: 協商對IKE數據流進行加密以及對對等體進行驗證地演算法(對密鑰地加密和peer地認證) 對等體之間只能存在一個
第一階段:建立ISAKMPSA協商的是以下信息:
1、對等體之間採用何種方式做認證,是預共享密鑰還是數字證書。
2、雙方使用哪種加密演算法(DES、3DES)
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、雙方使用哪種Diffie-Hellman密鑰組
5、使用哪種協商模式(主模式或主動模式)
6、協商SA的生存期
IPSec SA: 協商對對等體之間地IP數據流進行加密地演算法 對等體之間可以存在多個
第二階段:建立IPsecSA協商的是以下信息:
1、雙方使用哪種封裝技術,AH還是ESP
2、雙方使用哪種加密演算法
3、雙方使用哪種HMAC方式,是MD5還是SHA
4、使用哪種傳輸模式,是隧道模式還是傳輸模式
5、協商SA的生存期
名詞解釋:
AH協議(IP協議號為51): 提供數據源認證、數據完整性校驗和防報文重放功能,它能保護通信免受篡改,但不能防止竊聽,適合用於傳輸非機密數據。AH的工作原理是在每一個數據包上添加一個身份驗證報文頭,此報文頭插在標准IP包頭後面,對數據提供完整性保護。可選擇的認證演算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。
ESP協議(IP協議號為50): 提供加密、數據源認證、數據完整性校驗和防報文重放功能。ESP的工作原理是在每一個數據包的標准IP包頭後面添加一個ESP報文頭,並在數據包後面追加一個ESP尾。與AH協議不同的是,ESP將需要保護的用戶數據進行加密後再封裝到IP包中,以保證數據的機密性。常見的加密演算法有DES、3DES、AES等。同時,作為可選項,用戶可以選擇MD5、SHA-1演算法保證報文的完整性和真實性。
IPSec有兩種工作模式:
隧道(tunnel)模式: 用戶的整個IP數據包被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被封裝在一個新的IP數據包中。通常,隧道模式應用在兩個安全網關之間的通訊。
傳輸(transport)模式: 只是傳輸層數據被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被放置在原IP包頭後面。通常,傳輸模式應用在兩台主機之間的通訊,或一台主機和一個安全網關之間的通訊。
1. 數據認證
數據認證有如下兩方面的概念:
身份認證:身份認證確認通信雙方的身份。支持兩種認證方法:預共享密鑰(pre-shared-key)認證和基於PKI的數字簽名(rsa-signature)認證。
身份保護:身份數據在密鑰產生之後加密傳送,實現了對身份數據的保護。
2. DH
DH(Diffie-Hellman,交換及密鑰分發)演算法是一種公共密鑰演算法。通信雙方在不傳輸密鑰的情況下通過交換一些數據,計算出共享的密鑰。即使第三者(如黑客)截獲了雙方用於計算密鑰的所有交換數據,由於其復雜度很高,不足以計算出真正的密鑰。所以,DH交換技術可以保證雙方能夠安全地獲得公有信息。
3. PFS
PFS(Perfect Forward Secrecy,完善的前向安全性)特性是一種安全特性,指一個密鑰被破解,並不影響其他密鑰的安全性,因為這些密鑰間沒有派生關系。對於IPsec,是通過在IKE階段2協商中增加一次密鑰交換來實現的。PFS特性是由DH演算法保障的。
IKE的交換過程
IKE使用了兩個階段為IPsec進行密鑰協商並建立SA:
第一階段,通信各方彼此間建立了一個已通過身份認證和安全保護的通道,即建立一個ISAKMP SA。第一階段有主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種IKE交換方法。
第二階段,用在第一階段建立的安全隧道為IPsec協商安全服務,即為IPsec協商具體的SA,建立用於最終的IP數據安全傳輸的IPsec SA。
如圖2-1所示,第一階段主模式的IKE協商過程中包含三對消息:
l 第一對叫SA交換,是協商確認有關安全策略的過程;
l 第二對消息叫密鑰交換,交換Diffie-Hellman公共值和輔助數據(如:隨機數),密鑰材料在這個階段產生;
l 最後一對消息是ID信息和認證數據交換,進行身份認證和對整個第一階段交換內容的認證。
野蠻模式交換與主模式交換的主要差別在於,野蠻模式不提供身份保護,只交換3條消息。在對身份保護要求不高的場合,使用交換報文較少的野蠻模式可以提高協商的速度;在對身份保護要求較高的場合,則應該使用主模式。
IKE在IPsec中的作用
l 因為有了IKE,IPsec很多參數(如:密鑰)都可以自動建立,降低了手工配置的復雜度。
l IKE協議中的DH交換過程,每次的計算和產生的結果都是不相關的。每次SA的建立都運行DH交換過程,保證了每個SA所使用的密鑰互不相關。
l IPsec使用AH或ESP報文頭中的序列號實現防重放。此序列號是一個32比特的值,此數溢出後,為實現防重放,SA需要重新建立,這個過程需要IKE協議的配合。
l 對安全通信的各方身份的認證和管理,將影響到IPsec的部署。IPsec的大規模使用,必須有CA(Certificate Authority,認證中心)或其他集中管理身份數據的機構的參與。
l IKE提供端與端之間動態認證。
IPsec與IKE的關系
圖 5 IPsec與IKE的關系圖
從圖2-2中我們可以看出IKE和IPsec的關系:
l IKE是UDP之上的一個應用層協議,是IPsec的信令協議;
l IKE為IPsec協商建立SA,並把建立的參數及生成的密鑰交給IPsec;
l IPsec使用IKE建立的SA對IP報文加密或認證處理。
SSL VPN簡介
SSL VPN是以SSL協議為安全基礎的VPN遠程接入技術,移動辦公人員(在SSL VPN中被稱為遠程用戶)使用SSL VPN可以安全、方便的接入企業內網,訪問企業內網資源,提高工作效率。
SSL VPN技術優勢:
無客戶端的便捷部署
應用層接入的安全保護
企業延伸的效率提升
SSL協議從身份認證、機密性、完整性三個方面確保了數據通信的安全 。
SSL VPN實現私密性 完整性 不可否認 源認證
SSL VPN的特點:
採用B/S架構,遠程用戶無需安裝額外軟體,可直接使用瀏覽器訪問內網資源。
SSL VPN可根據遠程用戶訪問內網資源的不同,對其訪問許可權進行高細粒度控制。
提供了本地認證、伺服器認證、認證匿名和證書挑戰多種身份認證方式,提高身份認證的靈活性。
可以使用主機檢查策略。
緩存清理策略用於清理遠程用戶訪問內網過程中在終端上留下的訪問哼唧,加固用戶的信息安全。
PN類型詳解 PPTP VPN
PPTP:點對點隧道協議,一種支持多協議虛擬專用網路(VPN)的網路技術,工作在第二層數據鏈路層。以同樣工作在第二層的點對點傳輸協議(PPP)為基礎,PPTP將PPP幀封裝成IP數據包,以便於在互聯網上傳輸並可以通過密碼驗證協議(PAP),可擴展認證協議(EAP)增加安全性。遠程用戶能夠通過安裝有點對點協議的操作系統訪問公司網路資源。
PPTP VPN的實現需要:客戶機和伺服器之間必須有聯通並且可用的IP網路。
該VPN可在Windows、Linux環境下搭建,或者通過配置路由器來實現。
L2F:第二層轉發協議。 用於建立跨越公共網路的安全隧道來將ISP POP連接到企業內部網關。這個隧道建立了一個用戶與企業客戶網路間的虛擬點對點連接。 L2F允許高層協議的鏈路層隧道技術,使得把原始撥號伺服器的位置和撥號協議連接終止與提供的網路訪問位置分離成為可能。
L2TP VPN
L2TP:二層隧道協議,結合PPTP與L2F兩種二層隧道協議的優點,為眾多公司接受。 L2TP擴展了PPP模型,它使用PPP來封裝用戶數據,允許多協議通過隧道傳送,作為安全性增強,L2TP與IPSec(Internet協議安全性)結合——L2TP/IPsec, L2TP基於UDP協議,因此L2TP不保證數據消息的可靠投遞,若數據丟失,不予重傳。
L2TP 的實現:與PPTP不同, PPTP要求網路為IP網路,L2TP要求面向數據包的點對點連接。
該VPN可在Windows、Linux環境下搭建,或者通過配置防火牆、路由器來實現。
MPLS VPN
MPLS:多協議標簽交換(MPLS)是一種用於快速數據包交換和路由的體系,它為網路數據流量提供了目標、路由地址、轉發和交換等能力。更特殊的是,它具有管理各種不同形式通信流的機制。
它提供了一種方式,將IP地址映射為簡單的具有固定長度的標簽,用於不同的包轉發和包交換技術。
傳統的VPN是基於 PPTP L2TP等隧道協議來實現私有網路間數據流在公網上的傳送。而LSP本身就是公網上的隧道,所以用MPLS來實現VPN有天然的優勢。
基於MPLS的VPN就是通過LSP將私有網路的不同分支聯結起來,形成一個統一的網路。基於MPLS的VPN還支持對不同VPN間的互通控制。
MPLSVPN網路主要由CE、PE和P等3部分組成:
CE(Customer Edge):用戶網路邊緣設備,可以是路由器 交換機 主機。
PE(Provider Edge):是服務商邊緣路由器,位於骨幹網路。
P(Provider):是服務提供商網路中的骨幹路由器
SSL工作Socket層,IPsec工作在網路層.
SSL(安全套接層)是一個基於標準的加密協議,提供加密和身份識別服務。SSL廣泛應用於在互聯網上提供加密的通訊。SSL最普通的應用是在網路瀏覽器中通過HTTPS實現的。然而,SSL是一種透明的協議,對用戶基本上是不可見的,它可應用於任何基於TCP/IP的應用程序。
通用路由封裝協議GRE(Generic Routing Encapsulation) 提供了 將一種協議的報文封裝在另一種協議報文中 的機制,是一種 隧道封裝技術 。GRE可以 封裝組播數據 ,並可以 和IPSec結合使用 ,從而保證語音、視頻等組播業務的安全
IPSec 用於在兩個端點之間提供安全的IP通信,但只能加密並傳播單播數據,無法加密和傳輸語音、視頻、動態路由協議信息等組播數據流量
GRE屬於網路層協議 IP協議號為47
GRE的優點總結:
GRE實現機制簡單,對隧道兩端的設備負擔小
GRE隧道可以通過IPv4網路連通多種網路協議的本地網路,有效利用了原有的網路架構,降低成本
GRE隧道擴展了跳數受限網路協議的工作范圍,支持企業靈活設計網路拓撲
GRE隧道可以封裝組播數據,和IPSec結合使用時可以保證語音、視頻等組播業務的安全
GRE隧道支持使能MPLS LDP,使用GRE隧道承載MPLS LDP報文,建立LDP LSP,實現MPLS骨幹網的互通
GRE隧道將不連續的子網連接起來,用於組建實現企業總部和分支間安全的連接
GRE屬於網路層協議 IP協議號為47
GRE的優點總結:
GRE實現機制簡單,對隧道兩端的設備負擔小
GRE隧道可以通過IPv4網路連通多種網路協議的本地網路,有效利用了原有的網路架構,降低成本
GRE隧道擴展了跳數受限網路協議的工作范圍,支持企業靈活設計網路拓撲
GRE隧道可以封裝組播數據,和IPSec結合使用時可以保證語音、視頻等組播業務的安全
GRE隧道支持使能MPLS LDP,使用GRE隧道承載MPLS LDP報文,建立LDP LSP,實現MPLS骨幹網的互通
GRE隧道將不連續的子網連接起來,用於組建,實現企業總部和分支間安全的連接
隧道介面
GRE隧道是通過隧道兩端的 Tunnel介面 建立的,所以需要在隧道兩端的設備上分別配置 Tunnel介面 。對於GRE的Tunnel介面,需要指定其協議類型為GRE、源地址或源介面、目的地址和Tunnel介面IP地址
隧道介面(tunnel介面) 是為實現報文的封裝而提供的一種點對點類型的虛擬介面 與loopback介面類似 都是一種 邏輯接
GRE隧道介麵包含 源地址 、 目的地址 和 隧道介面IP地址 和 封裝類型
Tunnel的源地址:配置報文傳輸協議中的源地址。
當配置地址類型時,直接作為源地址使用
當配置類型為源介面時,取該介面的IP地址作為源地址使用
Tunnel的目的地址 :配置報文傳輸協議中的目的地址
Tunnel介面IP地址 :為了在Tunnel介面上啟用動態路由協議,或使用靜態路由協議發布Tunnel介面,需要為Tunnel介面分配IP地址。Tunnel介面的IP地址可以不是公網地址,甚至可以借用其他介面的IP地址以節約IP地址。但是當Tunnel介面借用IP地址後,該地址不能直接通過tunnel口互通,因此在借用IP地址情況下,必須配置靜態路由或路由協議先實現借用地址的互通性,才能實現Tunnel的互通。
L2TP基本概念:
L2TP(Layer 2 Tunneling Protocol) VPN是一種用於承載PPP報文的隧道技術,該技術主要應用在遠程辦公場景中為出差員工遠程訪問企業內網資源提供接入服務。
L2TP VPN的優點:
身份驗證機制,支持本地認證,支持Radius伺服器等認證方式
多協議傳輸,L2TP傳輸PPP數據包,PPP本身可以傳輸多協議,而不僅僅是IP可以在PPP數據包內封裝多種協議
計費認證地址分配
可在LAC和LNS兩處同時計費,即ISP處(用於產生賬單)及企業網關(用於付費及審計)。L2TP能夠提供數據傳輸的出入包數、位元組數以及連接的起始、結束時間等計費數據,可根據這些數據方便地進行網路計費
LNS可放置於企業網的USG之後,對遠端用戶地址進行動態分配和管理,可支持私有地址應用
不受NAT限制穿越,支持遠程接入,靈活的身份驗證及時以及高度的安全性,L2TP協議本身並不提供連接的安全性,但它可以依賴於PPP提供的認證(CHAP、PAP等),因此具有PP所具有的所有安全特性。
L2TP和PPTP區別:
L2TP:公有協議、UDP1701、支持隧道驗證,支持多個協議,多個隧道,壓縮位元組,支持三種模式
PPTP:私有協議、TCP1723、不支持隧道驗證,只支持IP、只支持點到點
PPTP:
點對點隧道協議(PPTP)是由包括Microsoft和3com等公司組成的PPTP論壇開發的,一種點對點隧道協議,基於拔號使用的PPP協議使用PAP或CHAP之類的加密演算法,或者使用Microsoft的點對點加密演算法MPPE。
L2TP:
第二層隧道協議(L2TP)是IETF基於L2F(Cisco的2層轉發協議)開發的PPTP後續版本,是一種工業標准Internet隧道協議。
兩者的主要區別主要有以下幾點:
PPTP只能在兩端間建立單一隧道,L2TP支持在兩端點間使用多隧道,這樣可以針對不同的用戶創建不同的服務質量
L2TP可以提供隧道驗證機制,而PPTP不能提供這樣的機制,但當L2TP或PPTP與IPSec共同使用時,可以由IPSec提供隧道驗證,不需要在第二層協議上提供隧道驗證機制
PPTP要求互聯網路為IP網路,而L2TP只要求隧道媒介提供面向數據包的點對點連接,L2TP可以在IP(使用UDP),FR,ATM,x.25網路上使用
L2TP可以提供包頭壓縮。當壓縮包頭時,系統開銷(voerhead)佔用4個位元組,而PPTP協議下要佔用6個位元組
C. wifi安全加密隧道怎麼關閉
進無線路由器,無線設置下的加密改為開放
在瀏覽器中輸入192.168.0.1,進去路由器管理,一般賬號密碼都是admin,可以在裡面找到關閉密碼的選項。設置開放就行