远程访问及控制

487 阅读7分钟

image.png


SSH远程管理

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

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

补充:TELNET协议也可以进行远程管理。TELNET为远程终端协议,使用TCP23端口,是明文传输,一般用于测试环境。

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

OpenSSH

openSSH是实现SSH协议的开源软件顶目,适用于各种UNIX、Linux操作系统。
CentOS 7系统默认已安装openssh相关软外包,并己将 sshd 服务添加为开机自启动
image.png

执行“systemctl start sshd”命令启动sshd服务。
sshd服务的默认配置文件是/etc/ssh/sshd_contig

  • 针对服务端的配置文件:sshd_config
  • 针对客户端的配置文件:ssh_config

sshd_config配置文件的常用选项

如果要启用选项,解除注释#。 image.png image.png image.png image.png

修改配置文件后,重启服务“systemctl restart sshd”。

  • 监听端口默认为22:Port 22
    修改端口需要关闭防火墙和selinux image.png

  • 禁止root用户登录:PermitRootLogin no  再使用Xshell连接,则会被拒绝。 image.png

  • 最大重试次数为6:MaxAuthTries 6 如果到最大次数依然输入错误密码,则会断开数据包。 image.png

  • 禁止空密码用户登录:PermitEmptyPasswords no 删除用户one的密码后,用户one无法再连接。 image.png image.png

添加配置项(允许或禁止用户登录)
  • DenyUsers禁止用户登录 image.png image.png

  • AllowUsers允许用户登录 image.png image.png

SSH客户端程序

  1. SSH远程登录
 ssh [选项]  用户名@192.168.6.20(要登入地址)
 选项:-p  指定非默认端口号,缺省时就使用默认端口22

当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes ")后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts文件中。密码验证成功之后,下次再登录就不用再次验证。 image.png image.png 2. scp远程复制

上行复制(推送):scp [-P 端口号] [-r 目录] 文件 [用户]@服务端IP:保存路径

image.png

下行复制(获取):scp [-P 端口号] [用户]@服务端IP:保存路径 本地路径

image.png

  1. sftp 安全FTP
    操作语法和ftp几乎一样。 三种FTP:
    • vsftp:tcp(20、21)常规的文件传输协议,明文传输,传输速度较快但不安全,一般在局域网中使用
    • sftp:tcp(22)安全FTP,传输时会加密压缩,传输效率比普通FTP要低一些,但安全性更高
    • tftp:udp(69)简单的轻量级文件传输协议,一般用于传输一些小文件 image.png

sshd服务支持两种验证方式

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

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

公钥和私钥的关系

  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
  • 不能根据一个密钥来推算出另一个密钥(非对称密钥)。
  • 公钥对外公开,私钥只有私钥的持有人才知道。

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

配置密钥对验证

083c1529b9e5b194f50cf0bd22ebfde.jpg

过程

  1. 客户端生成公钥私钥对,并将公钥发送给服务器,发送登录请求。
  2. 服务器生成随机数,并用公钥对其进行加密,将加密的随机数发送给客户端。
  3. 客户端通过私钥进行解密,将解密后的信息发送给服务器。
  4. 服务器验证信息是否正确。

客户端和服务端是一对一的关系,如果不是指定的用户或者客户端登录是无效的。

配置过程

  1. 在客户端创建密钥对 image.png

  2. 把公钥文件导到ssh服务端

    • 手动复制 将公钥文件复制到服务端
      image.png

    • 自动复制:(在客户端,多个密钥文件要-i指定) ssh-copy-id -i 公钥文件 用户@服务端IP image.png

  3. 创建公钥文本保存文件authorized_keys,并且把复制来的公钥文件内容导入到该文件中,自动复制会自动创建文件authorized_keys image.png image.png

  4. 然后即可用客户端进行登录,输入创建密钥所设的密码 image.png

实现免交互登录

  • 在导入公钥文件后,在客户端输入ssh-agent bash和ssh-add,此方式只能在当前连接中有效,在其他客户端登录或者重启后失效。 image.png image.png

  • 直接创建空密码的密钥对来使用。即创建密钥的时候,密码为空。 image.png

TCP Wappers访问控制

TCP Wrappers:TCP封套,将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
TCP Wrappers即对访问请求进行过滤控制,要么放行,要么拒绝丢弃。

TCP Wrappers在大多数 Linux发行版是默认提供的功能。 image.png

TCP wrappers 保护机制的实现方式

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

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

TCP Wrappers的访问策略

TCP Wrappers机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。

  • 设置允许的策略:/etc/hosts.allow
  • 设置拒绝的策略:/etc/hosts.deny
格式

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

  • 服务程序列表
    • ALL:代表所有服务
    • 单个服务程序,如“vsftpd”
    • 多个服务程序组成列表,不同服务程序间用“,”隔开,如“vsftpd,sshd”
  • 客户端地址列表
    • ALL:代表任何客户端地址
    • LOCAL:代表本机地址
    • 多个地址通过逗号分隔
    • 允许使用通配符“* ”和“?”,前者代表任意长度字符,后者仅代表一个字符
    • 网段地址,如“192.168.6.”或者192.168.6.0/255.255.255.0
    • 区域地址,如“.abc.com”匹配abc.com域中的所有主机

TCP Wrappers 机制的基本原则

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

实例

  1. 将192.168.6.40拒绝使用sshd服务,修改后保存立刻生效 image.png

  2. 用192.168.6.40通过sshd连接则不能成功 image.png

  3. 再将192.168.6.40允许使用sshd服务 image.png

  4. 用192.168.6.40通过sshd连接能成功 image.png

  • 如果需要允许所有,拒绝个别(黑名单),只需在/etc/hosts.deny文件中添加相应的拒绝策略
  • 如果需要允许个别,拒绝所有(白名单),除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略