远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
简单理解为 你现在并未在系统服务器旁边,远程登陆后,就像坐在服务器前操控一样。
远程连接服务器会具有那些功能?
(1)分享主机运算能力
(2)服务器类型有限度开放连接
(3)工作站类型,只对内网开放
RDP | (remote desktop protocal )协议,windows远程桌面管理(图形界面) |
---|---|
telenet | CLI界面下远程管理,几乎所有操作系统都有(内容明文传输) 端口号23 |
ssh | CLI界面下的远程管理,几乎所有操作系统都有(内容加密传输) 类unix系统下主要 端口号 22 远程管理方式(linux BSD Macos) |
RFB | remote frame buffer) 图形化远程管理协议 VNC (Virtual Network Computing)使用的协议。(在linux unix Macos 下的图形界面远程管理工具) |
今天 主要来说一下 SSH
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程 序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
1.SSH代表安全外壳(Secure Shell),它现在是通过互联网访问网络设备和服务器的唯一的主要协议。 |
---|
2.SSH默认情况下通过端口22运行;不过,很容易更改这个端口。 |
3.SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。 |
4.一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共网络上传输也变得很安全。 |
5.SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。 |
6.SSH主要用在所有流行的操作系统上,比如Unix、Solaris、Red-Hat Linux、CentOS和Ubuntu等。 |
7.ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序) |
8.ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接,ssh sftp |
– |
3.1ssh特点
ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接
SSH 相对于telnet 来说 更安全 主要是因为SSH 可以实现加密;
SSH算法的ssl算法
Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。
当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议 | |
---|---|
SSL记录协议(SSL Record Protocol) | 它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 |
SSL握手协议(SSL Handshake Protocol) | 它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 |
ssl提供的服务
(1)认证用户和服务器,确保数据发送到正确的客户机和服务器(握手协议实现)
(2)加密数据以防止数据中途被窃取;
(3)维护数据的完整性,确保数据在传输过程中不被改变。
主要的加密方法有:包括可逆的对称加密,非对称加密以及不可逆的哈希散列
对称密钥加密系统----共享密钥加密(对称密钥加密 | 加密和解密同用一个密钥。加密时就必须将密钥传送给对方由此可知 该方法的核心是加密类型 并不安全 |
---|---|
非对称密钥加密(更安全)-----公开密钥加密(非对称密钥加密) | 公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗走**(核心就是算法 RSA算法)** |
两者的区别 | (1)非对称加密与对称加密的不同之处在于,为了在单个方向上发送数据,需要两个相关的一组密钥。其中一个密钥称为私钥,而另一个称为公钥。对于对称加密 公钥等于私钥 |
(2)非对称加解密的效率要远远小于对称加解密 | |
(3)非对称秘钥相比对称秘钥更加安全 |
如何证明非对称密钥本身是货真价实的公开密钥。如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输过程中,真正的公开密钥已经被攻击者替换掉了,这种情况是怎么保证的呢?
下边涉及到了一个新的知识 第三方公正单位CA
**
CA就是一个公认的公证单位,你可以自行产生一把密钥且制作出必要的证书数据并向CA单位注册,那么当客户端的浏览器在浏览时,该浏览器会主动向CA单位确认该证书是否为合法注册过,如果是,那么该次连接才会建立,如果不是,浏览器会发出警告信息,告知用户应避免建立连接。所以说,如此一来WWW服务器不但有公证单位的证书,用户在建立连接时也比较有保障。
接收到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可以明确两件事:
一、认证服务器的公开密钥的是真实有效的数字证书认证机构CA。
二、服务器的公开密钥是值得信赖的。
此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。
5.1.1CA的作用?
CA的作用
CA(Certificate Authority,证书颁发机构)
CA的核心功能是颁发和管理数字证书
CA的作用
处理证书申请
鉴定申请者是否有资格接收证书
证书的发放
证书的更新
接收最终用户数字证书的查询、撤销
产生和发布证书吊销列表(CRL)
数字证书的归档
密钥归档
历史数据归
那这个的整个过程是怎么样的?
流程如下:
5.2.1 什么是证书?
证书用于保证密钥的合法性
证书把公钥与拥有对应私钥的主体标识信息捆绑在一起
证书的主体可以是用户、计算机、服务等
证书格式遵循X.509标准
X.509是由国际电信联盟制定的数字证书标准
使用者的公钥值
使用者标识信息(如名称和电子邮件地址)
有效期(证书的有效时间)
颁发者标识信息
颁发者的数字签名
证书可以应用于
Web服务器身份验证
Web用户身份验证
安全电子邮件
Internet协议安全(IPSec)
数字证书由权威公正的第三方机构即CA签发
5.2.2证书的申请发放流程是什么?
可以用一张图 来描述该流程
分为以下七步:
加密解密的过程:
5.2.3PFX 文件 是什么?
公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也称为PFX文件。
CER: 用于存储公钥证书的文件格式
RSA:算法是一种非对称密码算法
PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。
PKI体系能够实现的功能有
1.身份认证
2.数据完整性
3.数据机密性
4.操作的不可否认性
SSH的两种验证级别是什么?
(基于口令的安全验证) | 只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。 |
---|---|
(基于密匙的安全验证) | 需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。 |
第二级别:基于密钥的安全验证
用这种方式,你必须知道自己密匙的口令。
但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒左右。
SSH的配置文件在 /etc/ssh/sshd_config
查看配置文件的信息:
1.#Port 22 监听端口,默认监听22端口 【默认可修改】
2.#AddressFamily any IPV4和IPV6协议家族用哪个,any表示二者均有
3.#ListenAddress 0.0.0.0 指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】
4.#ListenAddress :: 指明监听的IPV6的所有地址格式
5.# The default requires explicit activation of protocol 1
6.#Protocol 2 使用SSH第二版本,centos7默认第一版本已拒绝
7.# HostKey for protocol version 1 一版的SSH支持以下一种秘钥形式
8.#HostKey /etc/ssh/ssh_host_key
9.# HostKeys for protocol version 2 使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置:(centos6只支持rsa和dsa两种)
10.HostKey /etc/ssh/ssh_host_rsa_key rsa私钥认证 【默认】
11.#HostKey /etc/ssh/ssh_host_dsa_key dsa私钥认证
12.HostKey /etc/ssh/ssh_host_ecdsa_key ecdsa私钥认证
13.HostKey /etc/ssh/ssh_host_ed25519_key ed25519私钥认证
14.# Lifetime and size of ephemeral version 1 server key
15.#KeyRegenerationInterval 1h
16.#ServerKeyBits 1024 主机秘钥长度
17.# Ciphers and keying
18.#RekeyLimit default none
19.# Logging
20.# obsoletes QuietMode and FascistLogging
21.#SyslogFacility AUTH
22.SyslogFacility AUTHPRIV 当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
23.#LogLevel INFO 日志的等级
24.# Authentication:
25.#LoginGraceTime 2m 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
26.#PermitRootLogin no
27.PermitRootLogin yes 是否允许管理员直接登录,'yes’表示允许
28.#StrictModes yes 是否让sshd去检查用户主目录或相关文件的权限数据
29.#MaxAuthTries 6 最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
30.#MaxSessions 10 允许的最大会话数
31.#RSAAuthentication yes
32.#PubkeyAuthentication yes
33.# The default is to check both .ssh/authorized_keys(公钥文件) and .ssh/authorized_keys2
34.# but this is overridden so installations will only check .ssh/authorized_keys
35.AuthorizedKeysFile .ssh/authorized_keys 服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将公钥发给客户端
36.#AuthorizedPrincipalsFile none
37.#AuthorizedKeysCommand none
38.#AuthorizedKeysCommandUser nobody
39.# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
40.#RhostsRSAAuthentication no
41.# similar for protocol version 2
42.#HostbasedAuthentication no
43.# Change to yes if you don’t trust ~/.ssh/known_hosts for
44.# RhostsRSAAuthentication and HostbasedAuthentication
45.#IgnoreUserKnownHosts no
46.# Don’t read the user’s ~/.rhosts and ~/.shosts files
47.#IgnoreRhosts yes
48.# To disable tunneled clear text passwords, change to no here!
49.#PasswordAuthentication yes
50.#PermitEmptyPasswords no
51.PasswordAuthentication yes 是否允许支持基于口令的认证
52.# Change to no to disable s/key passwords
53.#ChallengeResponseAuthentication yes
54.ChallengeResponseAuthentication no 是否允许任何的密码认证
55.# Kerberos options 是否支持kerberos**(基于第三方的认证,如LDAP)认证的方式,默认为no**
56.#KerberosAuthentication no
57.#KerberosOrLocalPasswd yes
58.#KerberosTicketCleanup yes
59.#KerberosGetAFSToken no
60.#KerberosUseKuserok yes
61.# GSSAPI options
62.GSSAPIAuthentication yes
63.GSSAPICleanupCredentials no
64.#GSSAPIStrictAcceptorCheck yes
65.#GSSAPIKeyExchange no
66.#GSSAPIEnablek5users no
67.# Set this to ‘yes’ to enable PAM authentication, account processing,
68.# and session processing. If this is enabled, PAM authentication will
69.# be allowed through the ChallengeResponseAuthentication and
70.# PasswordAuthentication. Depending on your PAM configuration,
71.# PAM authentication via ChallengeResponseAuthentication may bypass
72.# the setting of “PermitRootLogin without-password”.
73.# If you just want the PAM account and session checks to run without
74.# PAM authentication, then enable this but set PasswordAuthentication
75.# and ChallengeResponseAuthentication to ‘no’.
76.# WARNING: ‘UsePAM no’ is not supported in Red Hat Enterprise Linux and may cause several
77.# problems.
78.UsePAM yes
79.#AllowAgentForwarding yes
80.#AllowTcpForwarding yes
81.#GatewayPorts no
82.X11Forwarding yes
#ssh -X user@IP
83.#X11DisplayOffset 10
84.#X11UseLocalhost yes
85.#PermitTTY yes
86.#PrintMotd yes
87.#PrintLastLog yes
88.#TCPKeepAlive yes
89.#UseLogin no
90.UsePrivilegeSeparation sandbox # Default for new installations.
91.#PermitUserEnvironment no
92.#Compression delayed
93.#ClientAliveInterval 0
94.#ClientAliveCountMax 3
95.#ShowPatchLevel no
96.#UseDNS yes 是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
97.#PidFile /var/run/sshd.pid
98.#MaxStartups 10:30:100
99.#PermitTunnel no
100.#ChrootDirectory none
101.#VersionAddendum none
102.# no default banner path
103.#Banner none
104.# Accept locale-related environment variables
105.AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
106.AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
107.AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
108.AcceptEnv XMODIFIERS
109.# override default of no subsystems
110.Subsystem sftp /usr/libexec/openssh/sftp-server 支持 SFTP ,如果注释掉,则不支持sftp连接
111.# Example of overriding settings on a per-user basis
112.#Match User anoncvs
113.# X11Forwarding no
114.# AllowTcpForwarding no
115.# PermitTTY no
116.# ForceCommand cvs server
117.AllowUsers user1 user2 登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录
以上为SSH的配置文件信息 后有注释的为重要字段
**
(1)SSH的工作机制
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
(2)SSH的加密技术
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
SSH2支持RSA和DSA密钥
DSA:digital signature Algorithm 数字签名
RSA:既可以数字签名又可以加密
(3)SSH功能特点
1.SSH是安全的加密协议,用于远程连接Linux服务器
2.SSH的默认端口是22,安全协议版本是SSH2
3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
4.SSH客户端包含ssh连接命令和远程拷贝scp命令等
SSH 的相关 配置 在下一篇博客中 会详细介绍