0
点赞
收藏
分享

微信扫一扫

远程访问及控制

勇敢乌龟 2022-04-18 阅读 65

远程访问及控制


引言: 学会远程访问就可以居家办公了

SSH服务

1.1 SSH基础

1.1.1 什么是SSH服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;

SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;

SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

结构样式: SSH客户端<--------------网络---------------->SSH服务端

1.1.2 SSH优点

数据传输是加密的,可以防止信息泄露

数据传输是压缩的,可以提高传输速度

1.1.4 常见的ssh协议

客户端: 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(有漏洞)

sshd服务的默认配置文件是 /etc/ssh/sshd_config ssh_configsshd_config 都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。

总结下来即为
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_configan>

1.2 ssh原理

1.2.1 公钥传输原理

①客户端发起链接请求

②服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

③客户端生成密钥对

④客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

⑤客户端发送加密后的值到服务端,服务端用私钥解密,得到Res

⑥服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

⑦最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

1.2.2登录

#登录 方法一:
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port

当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh   IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。

示例:

#默认使用22端口   root(登录对方的用户)加IP 地址,首次登录会询问,并要求输入密码
[root@localhost ~]#  ssh root@192.168.161.133
The authenticity of host '192.168.161.133 (192.168.161.133)' can't be established.
ECDSA key fingerprint is SHA256:+qV3782XtK5U3x71hPYJGYVKdAX5xyPVRKInJC9e57o.
ECDSA key fingerprint is MD5:c2:1d:a6:87:fa:58:41:00:fa:b3:c5:e1:8a:9f:53:8d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.161.133' (ECDSA) to the list of known hosts.
root@192.168.161.133's password: 
Last login: Sat Apr 16 22:56:49 2022
[root@liang ~]# 

#登录方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)

示例:

[root@localhost ~]# ssh -l root 192.168.161.133
root@192.168.161.133's password: 
Last login: Mon Apr 18 16:35:02 2022 from 192.168.161.128
[root@liang ~]# 

在这里插入图片描述

1.2.3 服务端配置

1.2.3.1 sshd服务支持登录验证方式

密码验证: 以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。

密钥对验证: 要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。

公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;

不能根据一个密码来推算出另一个密钥;

公钥对外公开,私钥只有私钥的持有人才知道。

1.2.3.2基于秘钥常用配置项

#生成密钥文件
[root@localhost ~]# ssh-keygen -t ecdsa
(如果设置免密登录,则重新设置,不设置密码,一路回车)
#将公钥文件导入对方用户的 注意路径
[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.59.117

#登录客户机

1.生成秘钥文件
在这里插入图片描述
2.将公钥文件导入对方用服务端 (注意路径)

[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.161.133  ##将秘钥导入目标服务端
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ecdsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new   keys
root@192.168.161.133's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.161.133'"
and check to make sure that only the key(s) you wanted were added.

[root@localhost .ssh]# ssh -l root 192.168.161.133  ###登录对方服务端
Enter passphrase for key '/root/.ssh/id_ecdsa':    ###需要输入秘钥密码
Last login: Mon Apr 18 16:44:54 2022 from 192.168.161.128
[root@liang ~]#     ###登录成功                                                                                                                                                                                                                                                                                                                                                                        

在这里插入图片描述

2 scp 复制

作用: 安全性复制

scp: scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。

2.1 本地文件复制到服务器

[root@localhost /]# cd /home       
[root@localhost home]# ls   ##查看文件
81  li  liang  mnt  zhao  zho  zhu
[root@localhost home]# scp -r /home/81 root@192.168.161.133:/home     ###将本地文件81复制到目标服务器
Enter passphrase for key '/root/.ssh/id_ecdsa': 
[root@localhost home]# ssh -l root 192.168.161.133    ###远程登录服务器
Enter passphrase for key '/root/.ssh/id_ecdsa':     ##输入秘钥密码
Last failed login: Mon Apr 18 18:04:14 CST 2022 from 192.168.161.128 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Apr 18 18:01:21 2022
[root@liang ~]# ls /home    ###查看目录下内容
81  gou  httpd-2.4.25.tar.gz  lao  liang   
[root@liang ~]# 

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

2.2 从目标服务端下载文件到本地

[root@localhost home]# ls
81  li  liang  mnt  zhao  zho  zhu
[root@localhost home]# scp -r root@192.168.161.133:/home/gou ./   
Enter passphrase for key '/root/.ssh/id_ecdsa': 
[root@localhost home]# ls
81  gou  li  liang  mnt  zhao  zho  zhu
[root@localhost home]# 

在这里插入图片描述

3 TCP Wrappers访问控制

TCP Wrappers(TCP封套)将TCP服务程序"包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

大多数Linux发行版,TCP Wrappers 是默认提供的功能。rpm-q tcp_wrappers

[root@localhost home]# rpm -q tcp_wrappers
tcp_wrappers-7.6-77.el7.x86_64

在这里插入图片描述

3.1 TCPWrappers保护机制的两种实现方式

1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。

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

使用ldd命令可以查看程序的libwrap.so.*链接库

ldd $(which ssh)

在这里插入图片描述
语法格式:<服务程字列表>:<客户端地址列表>

(1)服务程序列表

ALL:代表所有的服务。
单个服务程序:如"vsftpd".
多个服务程序组成的列表:如"vsftpd,sshd"。.

(2)客户端地址列表

ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符"*“和”?",前者代表任意长度字符,后者仅代表一个字符
网段地址,如"192.168.80." 或者192.168.80.0/255.255.255.0
区域地址,如".liang.com"匹配liang.com域中的所有主机。

3.2 访问控制的基本原则

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

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

示例:

仅允许IP为192.168.161.133的IP访问,拒绝其他IP访问

[root@localhost home]# vim /etc/hosts.allow
sshd:192.168.161.133   ###设置仅允许192.168.161.133通过sshd访问
[root@localhost home]# vim /etc/hosts.deny
sshd: ALL    ###禁止其他所有
[root@localhost home]# systemctl restart sshd

在这里插入图片描述

在这里插入图片描述
192.168.161.133 访问成功
在这里插入图片描述
192.168.161.14 访问失败
在这里插入图片描述

总结:
远程连接这一部分是我们在生产中经常要用的,因为你不可能随时跑到服务器那边

举报

相关推荐

0 条评论