Linux--网络服务--SSH远程管理(配置Open SSH,使用SSH客户端程序,构建密钥对验证的SSH体系)和TCP Wrappers访问控制(概述,访问策略)

前言

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

一:SSH远程管理

1.1:配置Open SSH服务端

1.1.1:SSH(Secure Shell)协议
  • 是一种安全通道协议
  • 对通信数据进行了加密处理,为客户机提供了安全的shell环境,用于远程管理
  • 默认端口:TCP 22
1.1.2:OpenSSH服务
  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
1.1.2.1:OpenSSH服务(4-1)

ssh_config:针对客户端

sshd_config:针对服务端

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

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

  • 禁用反向解析
[root@localhost ~]# vim /etc/ssh/sshd_config
...
Port 22		                               端口号可以修改
#AddressFamily any
#ListenAddress 0.0.0.0	                   监听地址可修改
#ListenAddress ::
Protocol 2                                 版本2
1.1.2.3:OpenSSH服务(4-3)
  • 用户登录控制

禁止root用户,空密码用户

限制登录验证时间,重试次数

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

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

AllowUsers不可与DenyUsers同时使用

[root@localhost ~]# vim /etc/ssh/sshd_config
LoginGraceTime 2m           会话时间
PermitRootLogin no          禁用root用户
StrictModes yes       
MaxAuthTries 6               最大盐城重试次数,默认是3
PermitEmptyPasswords no      禁用空密码用户                    
...
AllowUsers lisi zhangsan@192.168.100.88	     仅允许zhangsan用户在终端192.168.100.88登录,允许lisi用户可以在不同终端登陆
1.1.2.4: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 root@20.0.0.47		             以root用户登录对方主机
The authenticity of host '20.0.0.47 (20.0.0.47)' 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 '20.0.0.47' (ECDSA) to the list of known hosts.
root@20.0.0.47's password: 	                                    输入对方密码
Last login: Thu Nov 21 17:37:59 2019 from 20.0.0.2
[root@66~]# 
    还有会开启 /etc/pam.d/su服务模块的情况,需要注意权限

如果sshd服务器使用了非默认的端口号(如123),则在登陆时必须通过“-p”选项指定端口号。

例如,执行以下操作江枫问主机20.0.0.47123端口,以对方的zhangsan用户验证登录。
[root@55~]# ssh -p 123 zhangsan@20.0.0.47
zhangsan@20.0.0.47's password:                                  /输入密码
  • scp命令–远程安全复制
命令基本格式
格式一:scp user@host:file 1 file 2
格式二:scp file 1 user@host:file 2

[root@55 ~]# scp /etc/hosts root@20.0.0.47:/etc/hosts	将本机文件/etc/hosts以root权限复制到20.0.0.47中
root@20.0.0.47's password: 
hosts    
或者
[root@55 ~]# scp root@20.0.0.47:/etc/hosts /etc/hosts1
root@20.0.0.47's password: 
hosts  
  • sftp命令–安全FTP上下载
命令基本格式
sftp user@host
    get:下载
    put:上传

例如
[root@55 ~]# sftp root@20.0.0.47
root@20.0.0.47's password: 
Connected to 20.0.0.47.
sftp> ls

1.3:构建密钥对验证的SSH体系

1.3.1:构建密钥对验证的SSH体系
  • 整体实现过程
    在这里插入图片描述
1.3.1.1:创建密钥对(由客户端的用户zhangsan在本地创建密钥对)
  • 在客户机中创建密钥对
ssh-keygen命令
可用的加密算法:RSA、ECDSA或DSA
[zhangsan@localhost ~]$ ssh-keygen -t ecdsa          生成公共/私有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 passphrase (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.  (公钥文件位置)
1.3.1.2:上传公钥文件 id_rsa.pub

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

例如
[root@55 ~]# scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp
1.3.1.3:导入公钥信息(导入到服务端用户66的公钥数据库)
  • 在服务器中导入公钥文本

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

默认公钥库位置:~/.ssh/authorized_keys

[root@localhost ~]# mkdir /home/lisil.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
AAAAE2VjZHNhL XNoYTItbmlzdHAyNTYAAAAlbmlzdHAyNTYAAABBBL JSnBhscY
BfnnHxSYAJEBD4sNkTLMF7itcFGM33RdeXU89QNQkMnCrCJHzAIZURrzpXG6M 
p62mz9gRXUnARk8s=zhangsan@localhost
1.3.1.4:使用密钥对验证方式(以服务端用户66的身份进行登录)
  • 客户端使用秘钥对验证登陆

验证用户:服务端的用户lisi

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

[zhangsan@localhost ~]$ ssh lisi@172.16.16.22
[isi@localhost ~]$ whoami
lisi
1.3.1.5:第二步和第三步可以采用另外一种方法
ssh-copy-id -i 公钥文件 user@host

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

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

二:TCP Wrappers控制

2.1:TCP Wrappers概述

2.1.1:保护原理

在这里插入图片描述

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白名单就不用写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenSSH 8.0 发布了,此版本缓解了 scp(1) 工具和协议漏洞 CVE-2019-6111,该漏洞此前我们之前报导过:知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞。 将文件从远程系统复制到本地目录时,SCP 客户无法验证 SCP 服务器返回的对象是否与请求的东西一致,这使得攻击者可以使用恶意服务控制的内容创建或破坏本地文件。 OpenSSH 8.0 的缓解措施添加了客户检查,查看从服务器发送的文件名与命令行请求是否匹配。 SCP 协议已经过时,不灵活且不易修复,OpenSSH 官方建议使用更现代的协议进行文件传输,如 sftp 和 rsync。 此版本新特性包括: ssh(1)、ssh-agent(1)、ssh-add(1):PKCS#11 token 中添加对 ECDSA 的支持。 ssh(1)、sshd(8):基于 Streamlined NTRU Prime 4591^761 和 X25519 的组合,添加实验性量子计算抗性交换方法。 ssh-keygen(1):将默认 RSA 大小增加到 3072 位。 ssh(1):允许“PKCS11Provider = none”覆盖 ssh_config 中 PKCS11Provider 指令的后续实例。 ssh(1):提示是否录制新主机时,输入指纹作为“yes”。 ssh-keygen(1):在单个命令行调用上签名多个证书时,允许自动递增证书序列号。 scp(1)、sftp(1):接受 -J 选项作为 scp 和 sftp 命令行上 ProxyJump 的别名。 ssh-agent(1)、ssh-pkcs11-helper(8)、ssh-add(1):接受“-v”命令行标志以增加输出的详细程度;将详细标志传递给子进程,例如从 ssh-agent 启动的 ssh-pkcs11-helper。 ssh-add(1):添加“-T”选项以允许通过执行签名和验证来测试代理中的是否可用。 sshd(8):在 PAM 环境中暴露 $SSH_CONNECTION。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值