远程访问及控制

SSH是一种安全协议,用于远程登录、复制等,其OpenSSH实现包括sshd服务端和配置文件sshd_config。SSH优点在于数据加密和安全。密钥登录通过公钥和私钥提供无密码登录。TCPWrappers提供额外的安全层,通过hosts.allow和hosts.deny控制网络服务的访问。
摘要由CSDN通过智能技术生成


OpenSSH服务器

  • SSH(Secure Shell)协议
    是一种安全通道协议
    对通信数据进行了加密处理,用于远程管理
  • OpenSSH
    服务名称:sshd
    服务端主程序:/usr/sbin/sshd
    服务端配置文件:/etc/ssh/sshd_conf

什么是SSH

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。
因此SSH协议具有很好的安全性。

在这里插入图片描述

数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度

SSH客户端:Putty、Xshell、CRT
SSH服务端:OpenSSH

OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。
CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。
执行“systemctl start sshd”命令即可启动 sshd 服务
sshd 服务使用的默认端口号为 22
sshd 服务的默认配置文件是/etc/ssh/sshd_config

ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。

SSH的优点

SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
S S H最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。
S S H在正确使用时可弥补网络中的漏洞。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

SSH的组成

  • 传输层协议 [SSH-TRANS]
    提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。

  • 用户认证协议 [SSH-USERAUTH]
    用于向服务器提供客户端用户鉴别功能。
    它运行在传输层协议 SSH-TRANS 上面。
    当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。
    会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。

  • 连接协议 [SSH-CONNECT]
    将多个加密隧道分成逻辑通道。
    它运行在用户认证协议上。
    它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

SSH的密钥登录

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
而ssh密钥就是一种非对称性的密钥。

ssh远程访问控制中不仅仅可以使用用户密码登录,还可以通过 密钥进行登录。而密钥登录的产生是通过客户端与服务端进行一系列的操作过程产生的。

密钥登录的过程

1.ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
2.公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
3.ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。
4.ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
5. ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录。

配置OpenSSH服务端

vim /etc/ssh/sshd_config

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ssh 【远程主机用户名】@【远程服务器主机名或IP地址】
在端口号默认22的情况下,我们可以之间通过远程主机用户名和远程IP地址登录
在这里插入图片描述
如果更改端口号,直接输入用户名是不可以远程登录的
在这里插入图片描述
ssh -p 【指定端口号】 【远程主机用户名】 【远程服务器主机名或IP地址】
-p:指登录端口(当服务器端口非默认时,需要使用-p指定端口进行登录)
在这里插入图片描述
只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为192.168.154.20 的主机远程登录
AllowUsers zhangsan lisi wangwu@192.168.233.22 #多个用户以空格分隔
#禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用,同一用户即禁止又允许)
DenyUsers wangwu
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

scp远程复制

将远程主机的/etc/passwd文件复制到本机

scp root@192.168.154.20:/opt/test.txt /opt/rh #复制文件

在这里插入图片描述

scp -r root@192.168.154.20:/opt/rh/demo /opt/ #复制目录

在这里插入图片描述
如果不是默认端口22,要加P 大写的P

scp -rP 10022 root@192.168.154.10:/opt/demo /opt/

在这里插入图片描述

sftp安全FTP

由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样。

sftp root@192.168.154.20

在这里插入图片描述

sftp -P 指定端口号 root@192.168.154.10

在这里插入图片描述
上传文件到链接服务器的目录
在这里插入图片描述

配置密钥对验证

1.密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解,暴力破解可看之前博客有详细描述系统弱口令检测。

2.密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。

  • 整体实现过程
    在这里插入图片描述

创建前准备工作

vim /etc/ssh/sshd_config #编辑服务端主配置文件
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件

在客户端创建密钥对

通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

vim /etc/ssh/sshd_conf

在这里插入图片描述
在这里插入图片描述
注意:服务端和客户端都需要开启密钥认证,同时也需要关闭密码验证

systemctl restart sshd #重启服务

设置完成后我们用服务端登录
在这里插入图片描述
服务端有公钥和私钥,而客户端只有公钥
在这里插入图片描述

设置ssh代理功能,实现免交互登录

ssh-agent bash
ssh-add

Enter passphrase for /home/admin/.ssh/id_ecdsa: #输入私钥的密码

在这里插入图片描述

TCP Wrappers 访问控制

TCP Wrappers 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。大多数 Linux 发行版,TCP Wrappers 是默认提供的功能。
rpm -q tcp_wrappers

TCP Wrapper 保护机制的两种实现方式

1.直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd程序。
2.由其他网络服务程序调用 libwrap.so.链接库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率。

使用 ldd 命令可以查看程序的 libwrap.so.*链接库
ldd $(which ssh vsftpd)

TCP Wrappers 的访问策略

TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允许和拒绝的策略。

格式:
<服务程序列表>:<客户端地址列表>

(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd”。
多个服务程序组成的列表:如“vsftpd,sshd”。

(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔

允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如 192.168.233. 或者 192.168.233.0/255.255.255.0
区域地址,如 “.benet.com”匹配 bdqn.com 域中的所有主机。

TCP Wrappers 机制的基本原则

首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;
否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;
如果检查上述两个文件都找不到相匹配的策略,则允许访问。

“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略

“允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略。

若只希望从IP地址192.168.233.23网段的主机访问sshd服务,其他地址被拒绝。

vim /etc/hosts.allow
sshd:192.168.154.40 #多个ip用,隔开

vim /etc/hosts.deny
sshd:192.168.154.10

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值