SSH远程管理服务及TCP Wrappers

SSH(Secure Shell)协议定义

  • 是一种安全通道协议
  • 对通信数据尽心了加密处理,用于远程管理

OpenSSH

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

服务监听选项

  • 端口号、协议版本、监听ip地址
  • 禁用反向解析
[root@localhost ~]# vi /etc/ssh/sshd_config
......
Port 22
LisenAddress 172.16.16.22
Protocol 2
UseDNS no

用户登录控制

  • 禁用root用户、空密码用户。
  • 限制登录验证时间、重试次数。
  • AllowUsers、DenyUsers。
[root@localhost ~]# vi /etc/ssh/sshd_config
LoginGraceTime 2m
PermitRootLogin no
MaxAuth Tries 6
PermitEmptyPasswords no
......
AllowUsers jerry admin@61.23.24.25 //AllowUsers不要与DenyUsers同时使用

登录验证方式

  • 密码验证:核对用户名、密码是否匹配。
  • 密钥对验证:核对客户的密钥、服务端公钥是否匹配。
[root@localhost ~]# vi /etc/ssh/sshd_config
......
PasswordAuthenticaation yes
PubkeyAuthentication yes //启用密码验证、密钥对验证、指定公钥库位置
AuthorizedKeyFile .ssh/authorized_keys

公钥加密技术是PKI的基础

公钥与私钥关系

  • 公钥与私钥是成对生成的,互不相同,互相加密与解密
  • 不能根据一个密钥来推算出另一个密钥
  • 公钥对外公开,私钥只对私钥持有人才知道
  • 私钥应该由密钥的持有人妥善保管

根据实现的功能不同,可分为数据加密和数字签名

PKI概念

  • 公钥基础设施
  • 通过使用公钥技术和数字签名来确保信息安全
  • 由公钥加密技术、数字证书、CA、RA组成

PKI体系能够实现的功能

  • 身份验证
  • 数据完整性
  • 数据机密性
  • 操作的不可否认性

数据加密

  • 发送方使用接收方的公钥加密数据
  • 接收方使用自己的私钥加密技术
  • 数据加密能保证所发送数据的机密性

发送方

  • 对原始数据执行HASH算法得到摘要值
  • 发送方用自己私钥加密摘要值
  • 将加密的摘要值与原始数据发送给接收方

数字签名保证数据完整性、身份验证和不可否认

ssh命令——远程安全登录

[root@localhost ~]# ssh user@host //加-p 为端口选项

scp命令——远程安全复制

[root@localhost ~]# scp user@host:file1 file2
[root@localhost ~]# scp file1 user@host:file2

sftp命令——安全FTP上下载

[root@localhost ~]# sftp user@host

Xshell

  • Windows下一款功能非常强大的SSH客户端软件

构建密钥对验证的SSH体系

整体实现过程:

  • 第一步:创建密钥对(由客户端的用户zhangsan在本地创建密钥对)
    私钥文件:id_rsa
    公钥文件:id_rsa.pub
  • 第二步:上传公钥文件 id_rsa.pub
  • 第三步:导入公钥信息(导入到服务器用户lisi的公钥数据库)
    公钥文件:~/.ssh/authorized_keys
  • 第四步:使用密钥对验证方式 (以服务端的用户lisi的身份进行登录)

在客户机中创建密钥对

  • ssh-keygen命令
  • 可用的加密算法:RSA、ECDSA或DSA
[root@localhost ~]# ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/.ssh/id_ecdsa):
Created directory '/home/zhangsan/.ssh'.
Enter passpjrase(empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zhangsan/.ssh/id_ecdsa.
Your public key has been saved in /home/zhangsan/.ssh/id_ecdsa.pub.
......

将公钥文件上传至服务器

  • 任何方式均可(FTP、Email、SCP、HTTP…)
[root@localhost ~]# scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp

在服务器中导入公钥文本

  • 将公钥文本添加至目标用户的公钥库
  • 默认公钥库位置:~/.ssh/authorized_keys
[root@localhost ~]# mkdir /home/lisi/.ssh/
[root@localhost ~]# cat /tmp/id_ecdsa.pub >>/home/lisi/.ssh/authorized_keys
[root@localhost ~]# tail -1 /home/lisi/.ssh/authorized_keys
ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTltbmlzdHAyNTYAAAAlbmlzdHAyNTYAAABBBLJSnBhscYBfnnHxSYAJEBD4sNkTLMF7itcFGM33RdeXU89QNQkMnCrCJHzAlZURrzpXG6Mp62mz9gRXUnARk8s=zhangsan@localhost

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

  • 验证用户:服务端的用户lisi
  • 验证密码:客户端的用户zhangsan的私钥短语
[zhangsan@localhost ~]$ ssh lisi@172.16.16.22
[lisi@localhost ~]$ whoami
lisi

TCP Wrappers

保护原理

在这里插入图片描述

保护机制的实现方式

  • 方式1:通过tcpd程序对其他服务程序进行包装。
  • 方式2:由其他服务程序调用libwrap.so.*链接库

访问控制策略的配置文件

  • /etc/hosts.allow
  • /etc/hosts.deny

设置访问控制策略

  • 策略格式:服务程序列表:客户端地址列表
  • 服务程序列表
      - 多个服务以逗号分隔,ALL表示所有服务
  • 客户端地址列表
     -多个地址以逗号分隔,ALL表示所有地址
     -允许使用通配符?和*
     网段地址,如192.168.4. 或者192.168.4.0/255.255.255.0
     -区域地址,如.benet.com

策略的应用顺序

  1. 检查hosts.allow,找到匹配则允许访问
  2. 再检查hosts.deny,找到则拒绝访问
  3. 若两个文件中均无匹配策略,则默认允许访问

策略应用示例

  • 仅允许从以下地址访问sshd服务
     -主机61.63.65.67
     -网段192.168.2.0/24
  • 禁止其他所有地址访问受保护的服务
[root@localhost ~]# vi /etc/hosts/allow
sshd:61.63.65.67, 192.168.2.*
[root@localhost ~]# vi /etc/hosts.deny
sshd:ALL

猜你喜欢

转载自blog.csdn.net/weixin_49343462/article/details/109396943