远程访问以及控制

news/2024/11/26 0:33:50/

结构

SSH远程管理:配置OpenSSH服务端;使用SSH客户端程序;密钥对验证的SSH体系

TCP Wrappers访问控制:TCP Wrappers 概述;TCP Wrappers访问策略

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

SSH客户端:Putty、Xshell、GRT

OpenSSH(SSH服务端)

服务名称:sshd

服务端主程序:/usr/sbin/sshd

服务端配置文件:/etc/ssh/sshd_config

    默认端口22         网络 传输层tcp                   默认端口22
SSH客户端<--------------------------------------->SSH服务端
            数据传输是加密的,可以防止信息泄漏
            数据传输是压缩的,可以提高传输速度
 

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

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

SSH的优点
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。
SSH在正确使用时可弥补网络中的漏洞。
客户端包含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客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录

SSH命令--远程安全登录   ssh user@host                       【host即地址】

配置OpenSSH服务端:sshd_config配置文件的常用选项设置

1.修改zy002配置文件[root@localhost ~]# vim /etc/ssh/sshd_config  将默认端口22改为10022

2. [root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart sshd     

同时要修改主机配置里的默认端口号      

3.关闭主机zy1的防火墙,检验机制 ,进行连接zy002主机

禁止root用户登录 PermitRootLogin no

1.更改主机zy002的配置文件 [root@localhost ~]# vim /etc/ssh/sshd_config 

2.重启服务 [root@localhost ~]# systemctl restart sshd

3.进入zy1,尝试连接登录

[root@zy1 ~]# ssh -p 10022 root@192.168.126.6
root@192.168.126.6's password: 
Permission denied, please try again.
root@192.168.126.6's password:                                        登录失败,root用户已被禁止登录

只允许aa、cc用户登录,且其中cc用户仅能够从IP地址为192.168.126.7 的主机远程登录,不允许bb登录

1.创建用户

[root@localhost ~]# useradd aa
[root@localhost ~]# echo 123 | passwd --stdin aa
更改用户 aa 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd bb
[root@localhost ~]# echo 123 | passwd --stdin bb
更改用户 bb 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd cc
[root@localhost ~]# echo 123 | passwd --stdin cc

2.修改主机zy002的配置文件

[root@localhost ~]# systemctl restart sshd   重启服务

3.进入主机zy1 登录zy002的aa用户[root@zy1 ~]# ssh -p 10022 aa@192.168.126.6

 [root@zy1 ~]# ssh -p 10022 bb@192.168.126.6       【登录bb用户  失败】
bb@192.168.126.6's password: 
Permission denied, please try again.

4.进入zy3主机  登录cc用户[root@zy3 ~]# ssh -p 10022 cc@192.168.126.6
cc@192.168.126.6's password: 
Last failed login: Thu Mar  9 19:16:30 +08 2023 from 192.168.126.7 on ssh:notty
There were 7 failed login attempts since the last successful login.
[cc@localhost ~]$                              【登录成功】

*SCP命令--远程安全复制:

格式1  scp user@host:hile1 file2

格式2 scp file1 user@host:file2

[root@localhost opt]# scp root@192.168.233.22:/opt/yht.txt /opt/rh  【复制192.168.233.22地址的/opt/yht.txt   到本机的/opt/rh下】
[root@localhost rh]# scp -r root@192.168.233.22:/opt/ky27/ /opt/    #复制目录 -r
[root@localhost rh]# scp -rP 10022 root@192.168.233.22:/opt/ky27/ /opt/   #如果不是默认端口22,要加大P   或者 scp -P 10022 -r root@192.168.233.22:/opt/ky27/ /opt/

sftp安全的FTP:

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

[root@zy3 ~]# sftp root@192.168.126.21
                                                 

 在zy2 /opt 目录下创建文件aaa ,在zy3家目录创建bbb文件

此时就可以通过sftp进行文件的获取与传输

zy3主机接收的文件home目录下

[root@zy3 ~]# ls
aaa              initial-setup-ks.cfg  公共  视频  文档  音乐
anaconda-ks.cfg  original-ks.cfg       模板  图片  下载  桌面
[root@zy3 ~]# cat aaa
1234
 

 zy1接收的文件还在/opt目录下

root@zy1 opt]# ls
aaa  bbb  rh
sftp对于非默认端口的连接也是通过-P(大P)进行的

sshd 服务支持两种验证方式

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

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

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
 

构建密钥对验证的SSH体系

构建密钥对验证

[root@localhost ~]# vim /etc/ssh/sshd_config       【检查修改配置文件】


 

2. 在客户端创建密钥对
通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)

[root@localhost ~]# ssh-keygen         【-t 指定算法类型  可以不加】    

 [root@localhost ~]# cd .ssh
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub  known_hosts      【id_rsa私钥文件 默认权限600   id_rsa.pub公钥文件一共给SSH服务器】
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.126.21 【zy2 给zy1服务器 -i表示指定密钥文件】

root@192.168.126.21's password:     输入zy1的root登录密码

3.进入服务器zy1

4.此时用zy2去连接zy1:

[root@localhost .ssh]# ssh root@192.168.126.21
Enter passphrase for key '/root/.ssh/id_rsa':              【输入密钥对密码】
Last login: Thu Mar  9 18:11:42 2023
[root@zy1 ~]# exit                                            【登录成功,exit退出】
登出
 

免密登录:不需要密码和密钥对直接登录

[root@localhost ~]# ssh-agent bash
[root@localhost ~]# ssh-add

Bad passphrase, try again for /root/.ssh/id_rsa: 【输入密钥对密码保存,下次就可以直接登录】
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@localhost ~]# ssh root@192.168.126.21             【直接登录zy1】
Last login: Fri Mar 10 09:43:33 2023 from 192.168.126.6
[root@zy1 ~]#                            【登录成功】
 

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 域中的所有主机

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

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

例1:只允许zy3访问    不允许其他访问

1.[root@localhost ~]# vim /etc/hosts.allow       【先设置allow 白名单】

sshd:192.168.233.23                       #若多个ip用,隔开

2.[root@localhost ~]# vim /etc/hosts.deny  

 3.此配置文件即时生效 ,不用重启服务

4.从客户机zy3 登录zy2 [root@zy3 ~]# ssh -p 10022 root@192.168.126.6

root@192.168.126.6's password:                 【输入zy2的root密码】
Last failed login: Thu Mar  9 18:29:24 +08 2023 from 192.168.126.41 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Mar  9 18:16:11 2023 from 192.168.126.41
[root@localhost ~]#                                      【登陆成功】
5.从客户机zy1登录zy2

[root@zy1 ~]# ssh -p 10022 root@192.168.126.6   
ssh_exchange_identification: read: Connection reset by peer
[root@zy1 ~]#                                              【登录失败】
 


http://www.ppmy.cn/news/819325.html

相关文章

远程访问与控制

目录 一OpenSSH服务器1.SSH (Secure Shell)协议2.OpenSSH二原理1.公钥传输原理2.加密通讯原理三.具体操作四.服务端配置五.使用SSH客户端程序2-11.ssh命令&#xff0c;2.scp命令远程安全复制3.sftp命令安全FTP上下载 六.ssh服务的最佳实践七.轻量级自动化运维工具pssh总结 一Op…

【远程访问及控制】

目录 一、OpenSSH服务器1.1、SSH远程管理1.2、ssh服务器的端口1.3、修改端口号1.4、设置用户登录 二、实验2.1、设置白名单2.2、设置黑名单 三、sshd 服务支持两种验证方式:3.1、密码验证3.2、密钥对验证公钥和私钥的关系&#xff1a; 四、使用SSH客户端程序4.1、ssh 远程登录4…

安装Nodejs、NPM、Vue脚手架详细教程

一、安装Nodejs 查看自己电脑是否安装nodejs node --version我这里已经下载过了&#xff0c;没有下载过的会提示该命令不存在 可以到官网下载一下 https://nodejs.org/en/download/ 不要安装在中文路径下 二、安装NPM 如果你安装了nodejs–默认会安装NPM. npm --version…

在SpringBoot中搭建微服务的项目(19版)

1.创建SpringBoot项目 2.删除不需要的,留一个pom文件 3.掉地SpringBoot的版本: <version>2.1.6.RELEASE</version> 4.导入该pom文件 <dependencies> <!-- SpringBoot启动器--><dependency><groupId>org.springframework.boot</g…

如何删除word的分节、分页?

如果需要一次性删除文档中所有的分节符&#xff0c;可以在"查找和替换"对话框中的"查找内容"选项中填写"^b"(这2个字符代表分节符)&#xff0c;也可以单击"高级"按钮&#xff0c;在"特殊字符"列表中选取"分节符"选…

【转载+原创】批量删除word中特定字符后的所有内容

需求&#xff1a;多个word文档结尾有编辑、广告等无用信息&#xff0c;需要将从“编辑&#xff1a;”开始到文档结尾的内容全部删除 在word中打开宏录制&#xff0c;然后查找并选中“编辑&#xff1a;”&#xff0c;然后按Shift选中这里到文档末尾的全部内容&#xff0c;选中后…

Word中“节”的作用

一、为文档创建不同的页眉或页脚创建页眉或页脚时&#xff0c;Word自动在整篇文档中使用同样的页眉或页脚。要为部分文档创建不同于其他部分的页眉或页脚&#xff0c;请对文档进行分节&#xff0c;然后断开当前节和前一节中页眉或页脚间的连接。1.如果尚未对文档进行分节&#…

word中删除分节符时页面格式会发生改变

word中删除分节符时页面格式会发生改变 问题&#xff1a;word&#xff08;word2007、word2010、word2013、word2016等&#xff09;删除分节符&#xff08;下一页&#xff09;以后&#xff0c;分节符以前的页面格式会自动设置为分节符以后的页面格式&#xff0c;有时会造成排版混…