一, ssh服务基础知识
(一)什么是SSH服务器
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。
SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
被连的是服务机 常用端口号为tcp22
如果你作为zhangsan用户去连接对面服务端的话,那么对面也要有个zhangsan用户
(二)ssh 服务有点(区别于talent)
- 数据传输是加密的,可以防止信息泄漏
- 数据传输是压缩的,可以提高传输速度
(三)常见ssh 协议
openssh centos7 上自带的软件 帮助我们实现远程连接
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)ftp 20 21
ssh_config和sshd_config都是ssh服务器的配置文件,
ssh_config是针对客户端的配置文件,
sshd_config是针对服务端的配置文件。
(四)ssh 常见文件位置
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
/etc/ssh 放的公钥和私钥文件
~/.ssh 当使用ssh后,客户机在~/.ssh 文件夹中会生成 known-hosts
这是公钥的合集
(五)ssh原理
1,公钥传输原理
- 客户端发起链接请求
- 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
- 客户端生成密钥对
- 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 客户端发送加密值到服务端,服务端用私钥解密,得到Res
- 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
2,ssh加密通讯原理
(1)对称加密
1、概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
2、常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
3、特点
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
4、优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
(2)非对称加密
1、概念
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2、常用算法
- 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 可以使用更小的秘钥,更高的效率,提供更高的安全保障
3、原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求
用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
5、优缺点
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。
客户机连服务机,客户机发送数据加上服务机的公钥进行加密 所以客户机~/.ssh 目录下会有服务机的公钥
服务机收到数据后,用自己的私钥来打开文件
二,ssh 生产环境使用出现的情况
(一)怎么确定我要连的是 真正的服务机
客户机连到服务机后,客户机的~/.ssh 文件下的公钥合集,能看到对应服务机的公钥
我们再去到服务机,ssh 127.0.0.1 连接自己,看公钥,对比两边的公钥
(二)同一ip 换了机器后ssh连不上
192.168.217.99这一台机器年久失修,采购新的机器ip 也叫99 ssh是连不上的
因为两台电脑公钥不一致。现在需要把 客户机里99原来的公钥文件删了,让新的99和客户机相当于第一次配对
我们去到客户机 ~/.ssh 文件夹中的公钥合集过滤出99 机器的公钥,并删除
三,ssh 选项
(一)指定登录账户 -l
(二)指定端口号 -p
因为默认端口是22 所以正常不用加 -p 选项
改端口号
此处拓展一个生产环境中的安全加固
服务机最好把ssh 的22端口号改掉,防止被暴力远程连接,多次试密码
打开
将端口号改成5927
这下ssh 必须指定5927 的端口了
(三)跳板机 -t
此命令用于 服务机前有多台跳板机(多发生在政府机关或者保密性质的单位)
可以一条命令直接到最后的服务机
(四) ssh 直接接命令
四,ssh 配置文件常用改变
(一)把客户端 yes 去掉
改客户端配置文件客户端配置文件:/etc/ssh/ssh_config
将35行 的ask 改成no
五,ssh 安全加固
- 建议使用非默认端口 22
- 禁止使用protocol version 1
- 限制可登录用户 白名单
- 设定空闲会话超时时长
- 利用防火墙设置ssh访问策略
- 仅监听特定的IP地址 公网 内网
- 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
- 使用基于密钥的认证
- 禁止使用空密码
- 禁止root用户直接登录
- 限制ssh的访问频度和并发在线数
- 经常分析日志 分离
(一)服务机禁止root 用户连接
改服务端配置文件:/etc/ssh/sshd_config
将 yes 改为no
但是这样,有漏洞,就是先登其他账户,再用 su 命令切 root 用户
不允许切换root用户可以将wheel组注释解掉
只有wheel 组里的才能用 su
(二)服务机黑白名单
白名单:默认拒绝所有,只有允许的人才可以访问 (生产环境用白名单安全级别更高)
黑名单: 默认允许所有, 只名单上的 才不允许
1,白名单:
只允许 192.168.91.100 来登录 服务机的张三账户
允许 所有ip 来登录 服务机的李四账户
2,黑名单
(三)禁用反向 dns
(如果有一天 登ssh 很慢很慢)
改成no
(四)监听
监听 (相当于白名单)
监听和白名单的区别:
监听在网卡这边就识别了 白名单还需要去读配置文件
六,ssh 免交互
ssh-keygen
将公钥发给 服务机
ssh 直接就连上了
有密钥文件 但是不想输密码
不验证密码,使用免交互登录的话,输入ssh-agent bash将ssh-agent交给bash管理
再输入ssh-add将用户私钥添加到运行中的ssh-agent中,后续的远程连接ssh,就不需要每次都输入密码并验证。一旦私钥被添加到ssh-agent中,它会暂时保存解密后的私钥方便后续使用
七,同时操作多台机器pssh
1,下载额外元
2,yum install pssh -y
3,-i 显示过程