远程访问及控制

发布于:2023-01-08 ⋅ 阅读:(1155) ⋅ 点赞:(0)

SSH远程控制管理

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

SSH协议对通信双方的数据进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。

TELNET协议对通信双方的数据不进行了加密处理,容易信息泄露。

SSH客户端:putty、Xshell、CRT

SSH服务端:OpenSSH

openssh 是实现ssh协议的开源软件项目,适用于各种Linux、unix操作系统。

centos 7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动。

shhd服务默认使用TCP的22号端口号

shhd默认配置文件在 /etc/ssh/sshd_config

[root@localhost ~]# vim /etc/ssh/sshd_config   //进入ssh服务端的配置文件
Port 22    //监听端口22
ListenAddress 0.0.0.0   //监听地址为任意网段,也可以指定openSSH服务器的具体IP
LoginGraceTime 2m     //登陆验证时间为两分钟
PermitRootLogin no    //禁止root
MaxAuthTries 6    //最大重试次数为6
PermitEmptyPasswords no      //禁止root用户登录
UseDNS no        //不能使用域名解析

实验:禁止root用户登录

先进入服务端配置文件   vim /etc/ssh/sshd_config

 systemctl restart sshd   //重启sshd服务

用远程主机连接服务端root用户

 被拒绝连接

密码输错6次被拒绝连接

修改端口号则不是一个端口号不能登录  vim /etc/ssh/sshd_config

 

 

 查看用户登录服务端失败的信息并且禁用这个用户从某个IP登录(白名单、黑名单)

黑名单添加配置:DenyUsers  用户名@禁止登录的IP地址

白名单配置:AllowUsers  用户名@禁止登录的IP地址  (可不添加IP地址)

DenyUsers  用户名  限制主机从任何ip登录

cat /etc/var/log/secure |grep Failed   //过滤出登陆失败的日志文件

 进入 vim /etc/ssh/sshd_config 添加配置

DenyUsers hj@192.168.10.1    //禁止用户hj在192.168.10.1上登录服务端
DenyUsers  用户名@禁止登录的IP地址
systemctl restart sshd  //重启服务

 sshd服务支持的两种验证方式

1.密码验证:对于服务器中本地系统用户的登录名称、密码进行验证。简便但可能会被暴力破解。

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

公钥和私钥的关系:

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

2.不能根据一个密钥推算出另一个密钥。

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

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。

vim /etc/ssh/sshd_config

PubkeyAuthentication yes  //启用密钥对验证
PasswordAuthentication yes  //启用密码验证
AuthorizedKeysFile      .ssh/authorized_keys   //指定公钥库文件

使用ssh客户端程序

1.ssh 远程登录

如果对方的端口号发生了改变则要 ssh -p 端口号  用户@192.168.10.100

ssh  [选项] hj@192.168.10.100

当用户第一次登陆ssh服务器时,必须接收服务器发来的ECDSA密钥,根据提示输入“yes”后才能验证。接收到的密钥信息将保存到 ~/.ssh/known_hosts文件中(主机ssh登陆过的服务器都将存在这个文件中)。密码验证成功后将登陆到目标服务器的命令环境中。

centos2  192.168.10.23

centos1 192.168.10.100

centos3 192.168.10.21

[root@localhost /]# ssh root@192.168.10.21
The authenticity of host '192.168.10.21 (192.168.10.21)' can't be established.
ECDSA key fingerprint is SHA256:quJaQbiWGEk3mBOdEni+uEU1mvIfZgTjn1+vVQz8RQk.
ECDSA key fingerprint is MD5:4c:b2:20:04:66:94:a2:1d:71:18:e2:6d:62:eb:c9:f1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.21' (ECDSA) to the list of known hosts.
root@192.168.10.21's password: 
Last login: Wed Aug 17 21:00:03 2022 from 192.168.10.1

centos1中会多出一个.ssh

 现在已经在centos3主机中了

[root@localhost ~]# ifconfig      
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.21  netmask 255.255.255.0  broadcast 192.168.10.25

scp远程复制

下行复制:scp 文件名 root@192.168.10.100:保存到的路径(将远程主机中的文件复制到本机)

 如果端口号不一致        scp -P  文件名  对方主机@IP:保存到的路径

复制目录:  scp -r 目录  root@ip:目标路径(可跟多个目录空格相隔)

                          

 若目录较深可用`pwd`

上行复制:scp 本机文件   root@IP:目标主机路径  

配置 密钥对验证

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

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

vim /etc/ssh/sshd_config
PasswordAuthentication yes                         #启用密码验证
PubkeyAuthentication yes                         #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys         #指定公钥库文件

 在客户端创建密钥对

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

useradd admin
echo "123123" | passwd --stdin admin
su - admin
ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa):     #指定私钥位置,直接回车使用默认位置
Created directory '/home/admin/.ssh'.            #生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下
Enter passphrase (empty for no passphrase):     #设置私钥的密码
Enter same passphrase again:                     #确认输入

ls -l .ssh/id_ecdsa*#id_ecdsa是私钥文件,权限默认为600;id_ecdsa.pub是公钥文件,用来提供给 SSH 服务器

把公钥文件导到ssh服务端

  • 手动 :复制客户端公钥文件 id_rsa.pub的内容,在服务端 用户的家目录中的 .ssh目录中创建 authorized_keys文件并把客户端公钥文件内容粘贴到这个文件中
  • 自动 :在客户端 ssh-copy-id -i 公钥文件 用户@服务端 IP

手动

[root@localhost /]# ssh-copy-id root@192.168.10.23

 在客户端使用:[ssh 用户@服务端IP] 登录服务端,使用密钥对私钥的密码进行验证

[root@localhost .ssh]# ssh 192.168.10.23

在客户机设置ssh代理功能,实现免交互登录

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

ssh zhangsan@192.168.80.10
 

TCP Wrappers 访问控制

TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。

工作原理
TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

TCP_Wrappers的使用

TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow/etc/hosts.deny,用于拒绝和接受具有TCP_Wrappers控制全的程序。

要说明的是当我们启动一个受控制的软件的时候,比如ssh,不过在刚开始的时候,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的,现在我们来说如何设置,禁止和允许连接,配置文件格式遵循如下规则:

首先先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;

否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;

如果都找不到相匹配的策略,则允许访问。

实验:

我以三台虚拟机作示例

centos2  192.168.10.23

centos1 192.168.10.100

centos3 192.168.10.21

示例1:我的centOS 1想拒绝centOS 2的ssh访问

首先在centOS 1 配置文件/etc/hosts.deny中修改

[root@localhost ~]# vim /etc/hosts.deny
sshd:192.168.10.23

在centos 2中远程控制centos 1,提示不能控制

[root@localhost ~]# ssh 192.168.10.100
ssh_exchange_identification: read: Connection reset by peer

在cents 3中可登入

[root@localhost ~]# ssh 192.168.10.100
root@192.168.10.100's password: 
Last login: Wed Aug 17 20:27:07 2022 from 192.168.10.1

exit登出

示例二:我的centOS 1想拒绝所有主机的ssh访问

centos 1配置

[root@localhost ~]# vim /etc/hosts.deny
sshd:ALL

这就意味着我们使用ssh,或者telnetd访问这个机器都是无法访问的

[root@localhost ~]# ssh 192.168.10.100
ssh_exchange_identification: read: Connection reset by peer

示例三:我的centOS 1想拒绝所有机器的ssh访问,除了centos 2

centos 1配置

[root@localhost ~]# vim /etc/hosts.deny
sshd:ALL
[root@localhost ~]# vim /etc/hosts.allow
sshd:192.168.10.23

centos 2 可以登入

​
[root@localhost ~]# ssh 192.168.10.100
root@192.168.10.100's password: 
Last failed login: Wed Aug 17 21:17:36 CST 2022 from 192.168.10.23 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Aug 17 21:13:57 2022 from 192.168.10.23

​

centos 3 不能登入

[root@localhost ~]# ssh 192.168.10.100
ssh_exchange_identification: read: Connection reset by peer

<服务程序列表>:<客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd"-
多个服务程序组成的列衣:如"vsftpd, sshd"。(2)客户端地址列表
ALL:代表任何客户端地址。LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符“”和“?”,前者代表任意长度字符,后者仅代表一个字符网段地址,如“192.168.10.100”或者192.168.10.0/255.255.255.0
区域地址,如".benet.com"匹配 benet.com域中的所有主机。

补充:ssh  192.168.10.100默认当前用户

           ssh hj 192.168.10.100 指定hj用户

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到