目录
一、SSH概述
1.SSH定义
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,因此SSH协议具有很好的安全性。
SSH客户端<--------------------------------------------------------->SSH服务端
数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以提高传输速度
2.SSH的优点
- 安全性: 数据传输是加密的,可以防止信息泄漏。
- 身份验证:防止未经授权的用户访问远程系统。
- 远程管理:可通过SSH协议登录远程服务器并执行命令,无需直接物理访问设备。
- 端口转发:SSH支持 端口转发功能,可以安全地传输其他协议和应用程序。
- 传输速度: 数据传输是压缩的,可以提高传输速度。
3. SSH客户端和OpenSSH客户端
- SSH客户端:Putty、 Xshell、 CRT、MobaXterm、FinalShell
- SSH服务端:OpenSSH
- OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。
- Centos 7系统默认已安装openssh相关软件包,并已将sshd服务添加为开机自启动
- 执行“systemctl start sshd" 命令即可启动sshd服务
- sshd服务默认使用的是TCP的22端口,安全协议版本sshv-2,除了2之外还有1(有漏洞)
4.SSH的配置文件
sshd服务的默认配置文件是/etc/ssh/sshd_config
ssh_config是针对客户端的配置文件,sshd_config是针对服务端的配置文件
5.SSH服务端功能
ssh服务端主要功能包括两个服务功能ssh远程链接和sftp服务
主要作用:SSHD服务使用ssh协议可以用来进行远程控制,或者在计算机之间传输文件。
二、配置OpenSSH服务端
sshd_config配置文件的常用选项设置
vim /etc/ssh/sshd_config
Port 22 #监听端口为 22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin no #禁止 root 用户登录
MaxAuthTries 6 #最大重试次数为 6
PermitEmptyPasswords no #禁止空密码用户登录
UseDNS no #禁用 DNS 反向解析,以提高服务器的响应速度
三、SSHD服务
1.远程登录
登录方法一:
ssh 远程服务器用户名@远程服务器主机名或IP地址 -p 端口 //默认端口为22,可以不加-p
ssh [选项] zhangsan@20.0.0.111
登录方法二:
ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口
ssh -p 10022 root@20.0.0.111
-l :指定登录名称
-P :指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)
2.scp远程复制
将远程主机的/opt/ 1.txt 文件复制到本机
scp /opt/1.txt root@20.0.0.22:/mnt
将远程主机 /mnt/132.txt 文件拿过来(在远程主机mnt中建立一个132.txt文件)
scp root@20.0.0.22:/mnt/132.txt
vim /etc/hosts
20.0.0.22 [名字] #编辑hosts 将IP地址写入之后加名字后 远程登录服务器之后就可以用名字代替IP地址
3.sftp安全FTP
由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp于ftp几乎一样。
sftp zhangsan@192.168.80.10
Connecting to 192.168.80.10...
root@20.0.0.111's password: #输入密码
sftp> ls
sftp> get 文件名 #下载文件到ftp目录
sftp> put 文件名 #上传文件到ftp目录
sftp> quit #退出
四、sshd 服务支持验证方式
sshd 服务支持两种验证方式:
1.密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解暴力破解可看之前博客有详细描述系统弱口令检测
2.密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥key.pub、私钥key)然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式
3.密钥登录过程
- ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
- 公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
- ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。
- ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
- ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录
4.配置密钥对验证
vim /etc/ssh/sshd_config #编辑服务端主配置文件
PasswordAuthenticantion yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile.ssh/authorized_keys #指定共钥库文件
systemctl restart sshd #重启
ssh-keygen -t rsa #生成密钥文件 -t 指定加密方式 不加-t默认使用rsa方式
Generating public/private ecdsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #指定私钥位置,直接回车使用默认位置
Enter passphrase (empty for no passphrase): #设置私钥的密码 -直接回车
Enter same passphrase again: #确认输入 -直接回车
【呈现出加密的密钥】
ls /root/.ssh/ #查看密钥文件
ll /root/.ssh/ #查看密钥权限
ssh -copy-id root@20.0.0.22 #将公钥文件上传至服务器
passwd: # (输密码)
另外一台设备
ssh-keygen -t rsa #更新 +三个回车
ssh-copy-id root@20.0.0.111 #服务器中导入公钥
passwd: #密码
回到第一台设备
ssh 20.0.0.22 #不需要输入密码就可以登录
免密登录成功
五、访问控制TCP Wrappers
TCP Wrappers 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。rpm -q tcp_wrappers
1.TCP Wrapper 保护机制的两种实现方式
- 直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd程序。
- 由其他网络服务程序调用 libwrap.so.*链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率。
2.TCP Wrappers 的访问策略
- TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
- 对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允许和拒绝的策略。
3.TCP Wrappers 机制的基本原则
- 首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
- 否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
- 如果检查上述两个文件都找不到相匹配的策略,则允许访问。