当前位置: 首页 > news >正文

构建安全的SSH服务体系

       某公司的电子商务站点由专门的网站管理员进行配置和维护,并需要随时从Internet进行远程管理,考虑到易用性和灵活性,在Web服务器上启用OpenSSH服务,同时基于安全性考虑,需要对 SSH登录进行严格的控制,如图10.4所示。

需求描述

> 允许网站管理员wzadm通过笔记本电脑远程登录Web服务器,笔记本电脑的IP地址并不是固定的,采用密钥对验证方式以提高安全性。

> 允许用户jacky远程登录Web服务器,但仅限于从网管工作站192.168.3.110访问。

> 禁止其他用户通过SSH方式远程登录Web服务器。

创建用户

[root@node01 ~]# useradd wzadm
[root@node01 ~]# passwd wzadm[root@node01 ~]# useradd jacky
[root@node01 ~]# passwd jacky

1.在客户端创建密钥对(一下操作为客户端操作,非root用户也可操作)

     在Linux客户端中,通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为ECDSA 或DSA (ssh-keygen命令的“-t”选项用于指定算法类型)。例如,以 root 用户登录客户端,并生成基于ECDSA算法的SSH密钥对(公钥、私钥)文件,操作如下所示。 

[root@node02 ~]# ssh-keygen -t ecdsa

 

上述操作过程中,提示指定私钥文件的存放位置时,一般直接按Enter键即可,最后生成的私钥、公钥文件默认存放在宿主目录中的隐藏文件夹.ssh下。

[root@node02 ~]# ls -lh /root/.ssh/id_ecdsa*  //确认生成的密钥对

     新生成的密钥对文件中,id_ecdsa是私钥文件,权限默认为600。对于私钥文件必须妥善保管, 不能泄露给他人;id_ecdsa.pub是公钥文件,用来提供给SSH服务器。

2. 将公钥文件上传至服务器

      将上一步生成的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中,上传公钥文 件时可以选择SCP、FTP、Samba、HTTP甚至发送E-mail等任何方式。例如,可以通过SCP方式将文件上传至服务器的/tmp目录下。

[root@node02 ~]# scp /root/.ssh/id_ecdsa.pub root@192.168.222.128:/tmp

3.在服务器中导入公钥文本(以下操作为服务端root操作)

     在服务器中,目标用户(指用来远程登录的账号wzadm)的公钥数据库位于~/.ssh目录,默认的 文件名是‘authorized_keys"。如果目录不存在,需要手动创建。当获得客户端发送过来的公钥文件以 后,可以通过重定向将公钥文本内容追加到目标用户的公钥数据库。

[root@node01 ~]# mkdir /home/wzadm/.ssh/
[root@node01 ~]# cat /tmp/id_ecdsa.pub >> /home/wzadm/.ssh/authorized_keys
[root@node01 ~]# tail -l /home/wzadm/.ssh/authorized_keys

       在公钥库authorized_keys文件中,最关键的内容是“ecdsa-sha2-nistp256加密字串”部分,当 导入非 ssh-keygen 工具创建的公钥文本时,应确保此部分信息完整,最后“root@node02” 是注释信息。

      由于 sshd 服务默认采用严格的权限检测模式(StrictModes yes),因此还需注意公钥库文件 authorized_keys的权限——要求除了登录的目标用户或root用户,同组或其他用户对该文件不能有写入权限,否则可能无法成功使用密钥对验证。

[root@node01 ~]# ls -l /home/wzadm/.ssh/authorized_keys

登录验证方式

      对于服务器的远程管理,除了用户账号的安全控制以外,登录验证的方式也非常重要。sshd服 务支持两种验证方式——密码验证、密钥对验证,可以设置只使用其中一种方式,也可以两种方式 都启用。

密码验证:对服务器中本地系统用户的登录名称,密码进行验证,这种方式使用最为简便, 但从客户端角度来看,正在连接的服务器有可能被假冒:从服务器角度来看,当遭遇密码 穷举(暴力破解)攻击时防御能力比较弱。

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

      当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服 务器,建议将密码验证方式禁用,只允许启用密钥对验证方式:若没有特殊要求,则两种方式都可 启用。

[root@node01 ~]# vim /etc/ssh/sshd_config

//启用密码认证

//43 启用密钥对认证

//45 将wzadm、jacky用户加入白名单,jacky用户只能在IP为192.168.222.1的主机ssh远程到服务端node01

//49 指定公钥库文件

[root@node01 ~]# systemctl restart sshd //重启sshd服务

4.  在客户端使用密钥对验证(以下为客户端操作,非root也可操作)

       当私钥文件(客户端)、公钥文件(服务器)均部署到位以后,就可以在客户端中进行测试了。 首先确认客户端中当前的用户为root,然后通过ssh命令以服务器端用户wzadm的身份进行远程登录。如果密钥对验证方式配置成功,则在客户端将会要求输入私钥短语,以便调用私钥文件进行匹配(若未设置私钥短语,则直接登入目标服务器)。

验证实验结果

(1)使用jacky的用户名/密码,可以从主机192.168.222.1远程登录网站服务器。

(2)使用wzadm的用户名/密码,在任何主机中均无法远程登录网站服务器。

(3)在生成密钥对的主机中,使用wzadm的用户名、验证私钥短语后可以远程登录网站服务器。

(4)使用root 用户或其他用户(如wangwu)无法远程登录网站服务器。

 

[root@node02 ~]# ssh wzadm@192.168.222.128
[wzadm@node01 ~]$ whoami

验证结果,只有wzadm用户可以ssh到服务端弄node01,root和其他人都没有权限ssh到服务端

jacky用户在IP为192.168.222.1的主机成功ssh远程到服务端node01

相关文章:

构建安全的SSH服务体系

某公司的电子商务站点由专门的网站管理员进行配置和维护,并需要随时从Internet进行远程管理,考虑到易用性和灵活性,在Web服务器上启用OpenSSH服务,同时基于安全性考虑,需要对 SSH登录进行严格的控制,如图10…...

wpf ComboBox绑定数据及变更事件

定义ComboBox&#xff0c;以及SelectionChanged事件 <ComboBox x:Name"cmb_radius" Height"30" Width"65" FontSize"15" DisplayMemberPath"Value" SelectedValuePath"Key" HorizontalAlignment"Center&…...

SQL BETWEEN 操作符

BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 AND value2; 参数说明&#xff1a; column1, column2, ...&#xff1a;要选择的字段名…...

Java位运算及移位运算

java中能表示整数数据类型的有byte、short、char、int、long&#xff0c;在计算机中占用的空间使用字节描述&#xff0c;1个字节使用8位二进制表示。 数据类型字节数二进制位数表示范围默认值byte18-27 – 27-10char2160 – 216-1\u0000 (代表字符为空 转成int就是0)short216-…...

上界通配符(? extends Type)

在Java中&#xff0c;? extends Type是一个上界通配符&#xff0c;表示参数化类型的上限是Type。这意味着容器可以持有Type类型的任何对象或者Type的子类型对象。 使用场景 这种类型的通配符常用于泛型方法中&#xff0c;允许方法接受Type的实例或其子类型的集合。这同样基于…...

zlib.decompressFile报错 【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:方案1方案2此Bug解决方案总结寄语项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了zlib.decompressFile报错 的问题。 问题: zlib.decompressFile报错,怎么解…...

54.网游逆向分析与插件开发-游戏增加自动化助手接口-项目需求与需求拆解

内容来源于&#xff1a;易道云信息技术研究院VIP课 项目需求&#xff1a; 为游戏增加VIP功能-自动化助手。自动化助手做的是首先要说一下背景&#xff0c;对于授权游戏来讲它往往年限都比较老&#xff0c;老游戏和新游戏设计理念是不同的&#xff0c;比如说老游戏基本上在10年…...

Spring Boot笔记2

3. SpringBoot原理分析 3.1. 起步依赖原理解析 3.1.1. 分析spring-boot-starter-parent 按住Ctrl键&#xff0c;然后点击pom.xml中的spring-boot-starter-parent&#xff0c;跳转到了spring-boot-starter-parent的pom.xml&#xff0c;xml配置如下&#xff08;只摘抄了部分重…...

MySQL5.7服务器 SQL 模式

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 5.1.10 Server SQL Modes 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / ... / 服务器 SQL 模式 5.1.10 服务器 SQL 模式…...

关于LayUI表格重载数据问题

目的 搜索框搜索内容重载数据只显示搜索到的结果 遇到的问题 在layui官方文档里介绍的table属性有data项,但使用下列代码 table.reload(test, {data:data //data为json数据}); 时发现&#xff0c;会会重新调用table.render的url拿到原来的数据&#xff0c;并不会显示出来传…...

MyBatis-mapper.xml配置

1、配置获取添加对象的ID <!-- 配置我们的添加方法&#xff0c;获取到新增加了一个monster对象的iduseGeneratedKeys"true" 意思是需要获取新加对象的主键值keyProperty"monster_id" 表示将获取到的id值赋值给Monster对象的monster_id属性 --><…...

【如何选择Mysql服务器的CPU核数及内存大小】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容&#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…...

【从浅到深的算法技巧】4.静态方法

1.1.6静态方法 在许多语言中&#xff0c;静态方法被称为函教&#xff0c;静态方法是一组在被调用时会被顺序执行的语句。修饰符static将这类方法和1.2的实例方法区别开来。当讨论两类方法共有的属性时我们会使用不加定语的方法一词。 1.1.6.1静态方法 方法封装了由一系列语句…...

YOLO手部目标检测

手部目标检测原文地址如下&#xff1a;手部关键点检测2&#xff1a;YOLOv5实现手部检测(含训练代码和数据集)_yolov5 关键点检测-CSDN博客 手部检测数据集地址如下&#xff1a; 手部关键点检测1&#xff1a;手部关键点(手部姿势估计)数据集(含下载链接)_手关键点数据集-CSDN博…...

网络IP地址如何更改?怎么使用动态代理IP提高网速?

网络IP地址更改以及使用动态代理IP提高网速的步骤如下&#xff1a; 一、更改IP地址 1. 打开浏览器&#xff0c;输入路由器登陆地址并登陆路由器后台管理界面。 2. 找到“高级设置”或“无线设置”或“VPN设置”一栏&#xff0c;点击“断开”&#xff0c;即可断开网络&#xff0…...

Flink实时电商数仓之DWS层

需求分析 关键词 统计关键词出现的频率 IK分词 进行分词需要引入IK分词器&#xff0c;使用它时需要引入相关的依赖。它能够将搜索的关键字按照日常的使用习惯进行拆分。比如将苹果iphone 手机&#xff0c;拆分为苹果&#xff0c;iphone, 手机。 <dependency><grou…...

MFC - CArchive/内存之间的序列化应用细节

文章目录 MFC - CArchive/内存之间的序列化应用细节概述笔记END MFC - CArchive/内存之间的序列化应用细节 概述 有个参数文件, 开始直接序列化到文件. 现在优化程序, 不想这个参数文件被用户看到. 想先由参数发布程序(自己用)设置好参数后, 加个密落地. 等用户拿到后, 由程序…...

C语言实验4:指针

目录 一、实验要求 二、实验原理 1. 指针的基本概念 1.1 指针的定义 1.2 取地址运算符&#xff08;&&#xff09; 1.3 间接引用运算符&#xff08;*&#xff09; 2. 指针的基本操作 2.1 指针的赋值 2.2 空指针 3. 指针和数组 3.1 数组和指针的关系 3.2 指针和数…...

项目——————————

C/C Linux Socket网络编程 TCP 与 UDP_c 语言tcp socket cleint read-CSDN博客C/C Socket - TCP 与 UDP 网络编程_c socket udp-CSDN博客 登录—专业IT笔试面试备考平台_牛客网...

【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields

OpenPose&#xff1a;使用PAF的实时多人2D姿势估计。 code&#xff1a;GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR17 (Oral) paper&#xff1a;[1611.08050] Realtime Multi-Person 2D Pose Estima…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...