Linux网络服务--配置远程访问与控制原理详解+实操(Open SSH服务端,客户端,SSH服务原理与密钥对验证详解)(TCP Wrappers原理与访问策略的设置)

文章目录

  • 前言
  • 一:SSH远程管理
      • 1.1:配置Open SSH服务端
          • 1.1.1:SSH协议
          • 1.1.2:OpenSSH服务(4-1)
          • 1.1.3:OpenSSH服务(4-2)
          • 1.1.4:OpenSSH服务(4-3)
          • 1.1.5:OpenSSH服务(4-4)
      • 1.2:使用SSH客户端程序
          • 1.2.1:SSH客户端程序命令
          • 1.2.2:Xshell
      • 1.3:密钥对验证的SSH体系
          • 1.3.1:构建密钥对验证的SSH体系
  • 二:TCP Wrappers控制
      • 2.1:TCP Wrappers概述
          • 2.1.1:保护原理
          • 2.1.2:保护机制的实现方式
          • 2.1.3:访问控制策略的配置文件
      • 2.2:TCP Wrappers访问策略
          • 2.2.1:设置访问控制策略
          • 2.2.2:策略的应用程序
          • 2.2.3:策略应用实例

前言

  • 大多数企业服务器是通过远程登录的方式来进行管理的
  • 当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势

一:SSH远程管理

1.1:配置Open SSH服务端

1.1.1:SSH协议
  • 为客户机提供安全的shell环境,用于远程管理
  • 默认端口:TCP 22
1.1.2:OpenSSH服务(4-1)
  • 服务名称:sshd

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

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

    ssh_config:针对客户端

    sshd_config:针对服务端

    访问形式 端口号
    SSH:密文访问默认端口 TCP:22,一般广域网
    Telnet:明文形式的访问 TCP 23,一般局域网
    远程桌面 3389,图形化界面
    名称 作用
    mstsc(cmd命令提示符输入mstsc,根据提示操作) 微软中远程桌面的形式,只可一个用户一个终端登录,可复制文件,微软对微软
    VNC 跨终端远程软件
    teanviewer 远程访问软件
1.1.3:OpenSSH服务(4-2)
  • 服务监听选项

    端口号,协议版本,监听IP地址

    禁用反向解析

  • [root@localhost ~]# vim /etc/ssh/sshd_config
    ...
    #Port 22		'端口号可以修改'
    #AddressFamily any
    #ListenAddress 0.0.0.0	'监听地址可修改'
    #ListenAddress ::
    
    
1.1.4:OpenSSH服务(4-3)
  • 用户登录控制

    禁止root用户,空密码用户

    登录时间,重试次数

    AllowUsers(白名单,仅允许,只有这些可以登录)

    DenyUsers(黑名单,仅拒绝,只有这些不行)

    AllowUsers不可与DenyUsers同时使用

    [root@localhost ~]# vim /etc/ssh/sshd_config
    LoginGraceTime 2m
    PermitRootLogin yes
    StrictModes yes
    MaxAuthTries 6
    MaxSessions 10
    ...
    AllowUsers lisi [email protected]	'仅允许lisi用户在终端192.168.20.30登录'
    
    
1.1.5:OpenSSH服务(4-4)
  • 登录验证对象

    服务器中的本地用户账号

  • 登录验证方式

    密码验证:核对用户名,密码是否匹配

    密钥对验证:核对客户的私钥,服务端公钥是否匹配

  • 密钥对:包含公钥,私钥

    公钥:服务器使用

    私钥:客户保留

    非对称秘钥:RSA

    对称秘钥:3DES,AES

  • [root@localhost ~]# vim /etc/ssh/sshd_config
    PasswordAuthentication yes		'是否使用密码'
    PermitEmptyPasswords no	'禁止空密码'
    PasswordAuthentication yes	'是否需要密码验证'
        
    PubkeyAuthentication yes	'开启公钥验证'
    
    AuthorizedKeysFile      .ssh/authorized_keys  '指定公钥库位置'
    
    

1.2:使用SSH客户端程序

1.2.1:SSH客户端程序命令
  • ssh命令–远程安全登录

    命令基本格式
    ssh user@host
    
        例如
    [root@55~]# ssh [email protected]		'以root用户登录对方主机'
    The authenticity of host '192.168.197.142 (192.168.197.142)' can't be established.
    ECDSA key fingerprint is SHA256:Eer6tAEbaZylH0v8F1nr+ShthK1rjZl3eRi7UTw4RX4.
    ECDSA key fingerprint is MD5:de:d7:cf:23:bd:8d:a1:02:ff:23:a2:4b:94:fe:e7:02.
    Are you sure you want to continue connecting (yes/no)? yes	'输入yes'
    Warning: Permanently added '192.168.197.142' (ECDSA) to the list of known hosts.
    [email protected]'s password: 	输入对方密码'
    Last login: Thu Nov 21 17:37:59 2019 from 192.168.197.1
    [root@66~]# 
        还有会开启 /etc/pam.d/su服务模块的情况,需要注意权限
    
  • scp命令–远程安全复制

    命令基本格式
    格式一:scp user@host:file 1 file 2
    格式二:scp file 1 user@host:file 2
    
    [root@55 ~]# scp /etc/hosts [email protected]:/etc/hosts	'将本机文件/etc/hosts以root权限复制到192.168.197.142中'
    [email protected]'s password: 
    hosts    
        或者
    [root@55 ~]# scp [email protected]:/etc/hosts /etc/hosts1
    [email protected]'s password: 
    hosts  
    
  • sftp命令–安全FTP上下载

    命令基本格式
    sftp user@host
        get:下载
        put:上传
    
    例如
    [root@55 ~]# sftp [email protected]
    [email protected]'s password: 
    Connected to 192.168.197.142.
    sftp> ls
    
    
1.2.2:Xshell
  • Windows下一款功能非常强大的安全终端模拟软件

1.3:密钥对验证的SSH体系

1.3.1:构建密钥对验证的SSH体系
  • 整体实现过程

    Linux网络服务--配置远程访问与控制原理详解+实操(Open SSH服务端,客户端,SSH服务原理与密钥对验证详解)(TCP Wrappers原理与访问策略的设置)_第1张图片

  • 1.创建密钥对(由客户端的用户lisi在本地创建密钥对)

    公钥文件:id_rsa

    公钥文件:id_rsa.pub

    在客户机中创建密钥对
    ssh-keygen命令
    可用的加密算法:RSA或DSA
    [root@55 ~]# ssh-keygen -t ecdsa	'生成公共/私有ecdsa密钥对'
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/root/.ssh/id_ecdsa): 	'输入保存秘钥的文件'
    Enter passphrase (empty for no passphrase): 	'输入密码'
    Enter same passphrase again: 
    Your identification has been saved in .2
    Your public key has been saved in .pub.
    The key fingerprint is:
    SHA256:R/ubZAgOklPma+jgqYqQdeIsz7xMnJyCMZZEqj2idu8 root@55
    The key's randomart image is:
    +---[ECDSA 256]---+
    | .               |
    |o                |
    |..    o   .      |
    |o..  =   . .     |
    |=o= = o S o      |
    |+@ * + + o o     |
    |B.X.. o . . +    |
    |+X.+..     o o   |
    |=.O.oE      o    |
    +----[SHA256]-----+
    
    
  • 2.上传公钥文件 id_rsa.pub

    任何方式均可(共享,FTP,Email,SCP,。。。)

    例如
    [root@55 ~]# scp ~/.ssh/id_ecdsa.pub [email protected]:/tmp
    
  • 3.导入公钥信息(导入到服务端用户66的公钥数据库)

    将公钥文本添加到目标用户的公钥库

    默认公钥库文件:~/.ssh/authorized_keys

  • 4.使用密钥对验证方式(以服务端用户66的身份进行登录)

    客户端使用秘钥对验证登录

    验证用户:服务端用户66

    验证密码:客户端的用户55的私钥短语

  • 第二步和第三步可以采用另外一种方法

    ssh-copy-id -i 公钥文件 user@host
    

    验证密码后,会将公钥自动添加到目标主机user宿主目录下的.ssh/quthorized_keys文件结尾

    [root@55 ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    

二:TCP Wrappers控制

2.1:TCP Wrappers概述

2.1.1:保护原理

Linux网络服务--配置远程访问与控制原理详解+实操(Open SSH服务端,客户端,SSH服务原理与密钥对验证详解)(TCP Wrappers原理与访问策略的设置)_第2张图片

2.1.2:保护机制的实现方式
  • 方式一

    通过tcpd主程序对其他服务程序进行包装

  • 方式二

    由凄然服务程序调用libwrap.so.*链接库

2.1.3:访问控制策略的配置文件
  • ldd `which sshd` 查看模块
    
  • /etc/hosts.allow

  • /etc/hosts.deny

2.2:TCP Wrappers访问策略

2.2.1:设置访问控制策略
  • 策略格式

    服务列表:客户机地址列表

  • 服务列表

    多个服务以逗号分隔,ALL表示所有服务

  • 客户机地址列表

    多个地址以逗号分隔,ALL表示所有服务

    允许使用通配符*和?

    网段地址,如192.168.1 或者 192.168.1.0/255.255.255.0

    区域地址,如.benet.com

2.2.2:策略的应用程序
  • 先检查hosts.allow,找到匹配则允许访问
  • 否则再检查hosts.deny,找到则拒绝访问
  • 若两个文件中均无匹配策略,则默认允许访问
2.2.3:策略应用实例
  • 仅允许从以下地址访问sshd服务

    主机192.168.100.100

    网段192.168.200.0/24

  • 禁止其他所有地址访问受保护的服务

    [root@55 ~]# vim /etc/hosts.allow
    sshd:192.168.100.100,192.168.200.*
    [root@55 ~]# vim /etc/hosts.deny
    sshd:ALL
        
        '优先读取allow,然后再读取deny'
        '如果做黑名单,name白名单就不用写'
    

你可能感兴趣的:(Linux网络服务)