远程访问及控制

目录

SSH远程登录协议

        SSH服务

                常见的ssh协议

        ssh原理

                公钥传输原理

                ssh加密通讯原理

                登录

服务端配置

        服务端常用配置

        使用密钥对其免交互验证登录

            基于密钥的登录方式

                        ssh客户端 

 TCP Wrappers

        TCP Wrappers的访问策略

                策略的配置方式

        访问控制的基本原则

轻量级自动化运维工具pssh


SSH远程登录协议

        SSH服务

                ssh(secure Shell )是一种安全通道协议,主要用来实现字符界面的远程登录、远程控制等功能,SSH协议对通信双方的数据传输进行了加密处理,其中包含括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议

                          SSH客户端<-----------网络----------------------->SSH服务端

优点:

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

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

                常见的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(之前有sshv1 有漏洞)

sshd服务默认配置文件是/etc/sshd_config

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

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

        作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。

OpenSSH

        服务名称:sshd
        服务端主程序:/usr/sbin/sshd  
        服务端配置文件:/etc/ssh/sshd_config 
        客户端配置文件:/etc/ssh/ssh_config

        ssh原理

                公钥传输原理

 ●客户端发起连接请求

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

●客户端生成密钥对

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

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

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

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

                ssh加密通讯原理

        对称加密

        概念 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

        常用算法 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

        特点

1)加密方和解密方使用同一个密钥;

2)加密解密的速度比较快,适合数据比较长时的使用;

3)密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

        优缺点 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

        非对称加密 

        概念

        非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

        常用算法 RSA(RSA algorithm):目前使用最广泛的算法 DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA 仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快 ECC(Elliptic curve cryptography,椭圆曲线加密算法) ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA 的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

        原理 首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

        优缺点 相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。

                登录

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

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

        

 不是默认端口

[root@localhost ~]#vim /etc/ssh/sshd_config 
[root@localhost ~]#
[root@localhost ~]#systemctl restart sshd

-p指定端口还是可以登录 

 

还可以用-l登录 

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

要想知道连接的是不是想要连的服务器,最简单的方法就是,连自己嘛,和密钥比较一下。

服务端配置

        服务端常用配置

[root@localhost ~]#vim /etc/ssh/sshd_config 
#Port 22                       #端口号,建议修改

#LoginGraceTime 2m               超时时间2分钟
#PermitRootLogin yes               # 默认ubuntu不允许root远程ssh登录
#StrictModes yes                 #检查.ssh/文件的所有者,权限等
#MaxAuthTries 6                 
//最大认证个数,但需要和ssh -o NumberOfPasswordPrompts=8(大于6数字)root@192.168.91.111(IP地址)需要配合这个选项一起使用
#MaxSessions 10      #同一个连接最大会话

#PubkeyAuthentication yes     #基于key验证
#PermitEmptyPasswords no     #空密码连接
PasswordAuthentication yes   #基于用户名和密码连接
#GatewayPorts no            在最后一行添加
ClientAliveInterval 10 #单位:秒
#ClientAliveCountMax 3 #默认3
UseDNS yes #提高速度可改为no
#GSSAPIAuthentication yes #提高速度可改为no
#MaxStartups 10:30:100    #未认证连接最大值,默认值10
Banner /path/file

#以下可以限制可登录用户的办法:白名单  黑名单
AllowUsers user1 user2 user3@ip(限制主机)
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2 

 

        使用密钥对其免交互验证登录

  1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户

  2. 用户会根据服务器发来的公钥对密码进行加密

  3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

            基于密钥的登录方式

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:dxb

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

​
[root@localhost .ssh]#ssh-keygen --help

 

[root@localhost .ssh]#ssh-keygen -t ecdsa

此时就会有一种加密方式 

[root@localhost .ssh]#ls
id_ecdsa  id_ecdsa.pub  known_hosts

 如果不在ssh目录下,需要写绝对路径/root/.ssh/id_ecdsa/pub

ssh-copy-id -i id_ecdsa.pub root@192.168.91.111

 

 免密登录,就一路回车,不设置密码即可

使用密钥对其免交互验证登录

        与用户密码无关
        P地址无关
        只与密钥对有关

                        ssh客户端 

sftp命令 —— 安全FTP上下载

 TCP Wrappers

        在Linux系统中,许多网络服务针对客户机提供了某种访问控制机制, 如Samba、BIND、 HTTPD、OpenSSH 等。本节将介绍另一种防护机制——TCP Wrappers(TCP 封套),以作 为应用服务与网络之间的一道特殊防线,提供额外的安全保障。

        TCP Wrappers 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了

一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序,TCP Wrappers 还可以记录所有企图访问被保护服务的行为,为管理员提供丰富的安全分析资料。

                                                            TCP Wrappers的工作原理

         相对于iptables防火墙访问控制规则,TCP Wrappers的配置更加简单。但是Tcp Wrappers也有两个缺点,第一,TCP Wrappers只能控制TCP协议的应用服务;第二,并不是所有基于TCP协议的应用服务都能接受TCP Wrappers的控制。对于大多数Linux发行版,TCP Wrappers是默认提供的功能。

        通常,链接库方式的应用要更加广泛也更有效率。例如vsftp、sshd及超级服务器xinetd等,都调用了libwrap共享库。

        使用ldd命令可以查看程序的共享库

[root@localhost ~]#ldd /usr/sbin/sshd |grep "libwrap"
	libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f84f2d25000)

        TCP Wrappers的访问策略

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

                策略的配置方式

两个策略文件的作用相反,但配置记录的格式相同,如下所示。

服务程序列表:客户端地址列表

服务程序列表、客户端地址列表之间以冒号分隔,在每个列表内的多个项之间以逗号分隔

(1)服务程序列表

服务程序列表可分为以下几类。

ALL:代表所有的服务

单个服务程序:如“vsftpd“

多个服务程序组成的列表:如“vsftpd,sshd”

2)客户端地址列表

客户端地址列表可分为以下几类。

       ● ALL:代表任何客户端地址。

       ●  LOCAL:代表本机地址。

       ●  单个 IP 地址:如“192.168.4.4”

       ● 网络段地址:如“192.168.4.0/255.255.255.0”

       ●  以“.”开始的域名:如“.bdqn.com”匹配 bdqn.com 域中的所有主机。

       ●   以“.”结束的网络地址:如“192.168.4.”匹配整个 192.168.4.0/24 网段

       ●    嵌入通配符“”“?”:前者代表任意长度字符,后者仅代表一个字符,如“10.0.8.2

       ●  匹配以 10.0.8.2 开头的所有 IP 地址。不可与以“.”开始或结束的模式混用

       ●  多个客户端地址组成的列表:如“192.168.1.,172.16.16.,.bdqn.com”

        访问控制的基本原则

        关于TCP Wrappers机制的访问策略,应用时遵循的顺序和原则,首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问,否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果两个文件都找不到相匹配的策略,则允许访问。

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

此时是不能登录的 

 

 假如,在hosts.allow设置让91.100登录,同时也在hosts.deny设置不让91.100登录,结果会怎样

结果是可以登的 

轻量级自动化运维工具pssh

        pssh:基于python编写,可在多台服务器上执行命令的工具,也可实现文件复制,提供了基于ssh

pssh命令选项

-H主机字符串,内容格式”[user@]host[:port]” 
-h file主机列表文件,内容格式”[user@]host[:port]” 
-A手动输入密码模式
-i每个服务器内部处理信息输出
-l登录使用的用户名
-p并发的线程数【可选】
-o输出的文件目录【可选】
-e错误输出文件【可选】
-tTIMEOUT 超时时间设置,0无限制【可选】
-OSSH的选项
-P打印出服务器返回信息
-v详细模式
--version查看版本

安装需要配置开发源

[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#vim CentOS-Base.repo 

在最后一行添加国内源

[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
        https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
        https://mirrors.huaweicloud.com/epel/$releasever/x86_64
        https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
gpgcheck=0

[root@localhost yum.repos.d]#yum clean all

安装pssh

[root@localhost yum.repos.d]#yum install pssh -y

生成免密登录的密钥

[root@localhost yum.repos.d]#ssh-keygen 

 上传密钥对

[root@localhost .ssh]#ssh-copy-id 192.168.91.100
[root@localhost .ssh]#ssh-copy-id 192.168.91.102

执行一条命令多台客户机都被执行,比如,查看两台客户机的passwd文件,加-i是打印出来信息

[root@localhost .ssh]#pssh -H "192.168.91.100 192.168.91.102" -i cat /etc/passwd

 

 当然也就创建文件,同时操作多台客户机,适用于二三十台机器的服务。挺好用的!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柏ぁ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值