隧道加密
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,可以在里面找到关闭密码的选项。设置开放就行