ssh远程登录协议和tcp wappers
SSH服务
SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
优点:
数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以提高传输速度
常见的ssh协议
ssh软件包
ssh协议
字符界面远程连接,
/etc/ssh/
服务端 配置文件 sshd_config
客户端 配置文件 ssh_config ssh:可以远程连接 scp sftp rsync:远程传输文件
客户端:
Linux Client: ssh, scp, sftp,slogin
Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)ftp 20 21
sshd服务的默认配置文件是/etc/ssh/sshd_config
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件
作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
SSH原理
1 客户端发起链接请求
2 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
3 客户端生成密钥对
4 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
5 客户端发送加密值到服务端,服务端用私钥解密,得到Res
6 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
7 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
SSH加密通讯原理
对称加密 :
概念:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
常用算法:在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
特点
1 加密方和解密方使用同一个密钥;
2 加密解密的速度比较快,适合数据比较长时的使用;
3 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
优缺点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高;对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
非对称加密:
概念:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
常用算法
RSA(RSA algorithm):目前使用最广泛的算法DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
ECC(Elliptic curve cryptography,椭圆曲线加密算法)
ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
原理;首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
优缺点:相比于对称加密技术,非对称加密技术安全性更好,但性能更慢;此本次实验中,我们用非对称加密算法ECDSA进行加密,为了方便用root用户,也可给其他普通用户配置
方法一:
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
命令 端口号
vim /etc/hosts
192.168.111.6 node2
方法二:
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p: -p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
-t
服务端配置
创建非对称秘钥
ssh服务的最佳实践
建议使用非默认端口 22
禁止使用protocol version 1
限制可登录用户 白名单
设定空闲会话超时时长
利用防火墙设置ssh访问策略
基于口令认证时,使用强密码策略
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志分离
免密登录
原理:用户/密码;基于秘钥
用户/密码:
1.生成公钥和私钥
2.将公钥导给对面
1 客户端发起ssh请求,服务器会把自己的公钥发送给用户
2 用户会根据服务器发来的公钥对密码进行加密
3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
1 首先在客户端生成一对密钥(ssh-keygen)
2 并将客户端的公钥ssh-copy-id 拷贝到服务端
3 当客户端再次发送一个连接请求,包括ip、用户名
4 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串
5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
TCP Wrappers
在 Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如 Samba、BIND、 HTTPD、OpenSSH 等。本节将介绍另一种防护机制——TCP Wrappers(TCP 封套),以作 为应用服务与网络之间的一道特殊防线,提供额外的安全保障。TCP Wrappers 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了 一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正 的服务程序。TCP Wrappers 还可以记录所有企图访问被保护服务的行为, 为管理员提供丰富的安全分析资料。
策略的配置个格式
两个策略文件的作用相反,但配置记录的格式相同,如下所示。
服务程序列表:客户端地址列表
服务程序列表、客户端地址列表之间以冒号分隔,在每个列表内的多个项之间以逗号分 隔
服务程序列表 :
ALL:代表所有的服务
单个服务程序:如“vsftpd“
多个服务程序组成的列表:如“vsftpd,sshd”
客户端地址列表 :
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
单个 IP 地址:如“192.168.4.4”
网络段地址:如“192.168.4.0/255.255.255.0”
以“.”开始的域名:如“.bdqn.com”匹配 bdqn.com 域中的所有主机。
以“.”结束的网络地址:如“192.168.4.”匹配整个 192.168.4.0/24 网段
嵌入通配符“”“?”:前者代表任意长度字符,后者仅代表一个字符,如“10.0.8.2”
匹配以 10.0.8.2 开头的所有 IP 地址。不可与以“.”开始或结束的模式混用
多个客户端地址组成的列表:如“192.168.1.,172.16.16.,.bdqn.com”