为Akamai 云平台上部署的资源配置2FA跳板机-上

news2024/9/25 11:11:31

为重要账户启用2FA,这几乎已经成为保护账户和数据安全的一种标准做法。无论登录常见应用或服务,或是访问企业内部资源,时不时都会需要进行2FA验证。那么当你在Akamai Connected Cloud云平台中部署了各类资源(云计算、云存储、SaaS、Docker……),需要进行管理时,该如何为访问过程启用2FA?

简单,本文就一起来试试吧。

首先定义“跳板机”是什么

跳板机就是一台或一组服务器,其唯一目的是为基础设施的不同部分提供一个单一入口。

典型的配置是一台加固的Unix(或类Unix)机器,配置有SSH和本地防火墙。管理员从个人计算机以SSH方式连接到跳板机,随后通过SSH转发来访问目标机器,即可连接到DMZ中的目标机器。

使用SSH端口转发或基于SSH的隧道连接到目标主机,可以使用不安全协议管理服务器,而无需创建特殊的防火墙规则或在内部网络上暴露流量。

用到的软件组件

  • 用于服务器和用户管理的Cockpit Web界面
  • Google Authenticator插件
  • Yubikey(可选) – 本文未涉及
  • Termius作为SSH客户端(任何可支持2FA的SSH客户端均可使用)

用到的Akamai Connected Cloud Compute组件

  • 1个充当跳板机的Nanode
  • 一些已部署的服务器或服务。本例中将以MySQL数据库为例。
  • Linode Firewall
  • VLAN(可选)

还需要准备什么?

  • 装有Google Authenticator应用的手机
  • SSH公钥和私钥

如何使用?

简而言之,这种方法实际上就是在为SSH通道启用2FA。使用这种方法的好处是:可以在几乎任何使用TCP协议通信的服务之间创建隧道。网站?可以!数据库服务器?没问题!SSH协议?支持!Redis?小意思!……这样就好理解了吧。

Cockpit又是什么?Cockpit是一个基于Web的服务器图形界面,适用于所有人,尤其适合:

  • Linux新手(包括Windows管理员)
  • 熟悉Linux并希望以简单的图形方式管理服务器的用户
  • 主要使用其他工具但希望了解单个系统概况的专家管理员

如何设置运行?

最简单的方法是使用如下的StackScript。

#!/bin/bash
#<UDF name="HOSTNAME" label="The hostname for the new Linode.">
# HOSTNAME=
#<UDF name="MANAGEMENTUSER" label="Cockpit Management user." default="CockpitMGR">
# MANAGEMENTUSER=
#<UDF name="MANAGEMENTUSERPASSWORD" label="Cockpit management user password." default="ReplaceMeN0w!">
# MANAGEMENTUSERPASSWORD=
yum update -y
yum install cockpit nano wget cockpit-dashboard cockpit-packagekit bind-utils -y
systemctl enable --now cockpit.socket
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh epel-release-latest-7.noarch.rpm
yum install google-authenticator -y
#Create user
pass=$(echo $MANAGEMENTUSERPASSWORD | openssl passwd -crypt -stdin)
useradd -m -p $pass $MANAGEMENTUSER
usermod -aG wheel $MANAGEMENTUSER  
#Configure hostname SSH & PAM modules
hostnamectl set-hostname $HOSTNAME
sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg
sed -i '2s/^/auth required pam_google_authenticator.so\n/' /etc/pam.d/sshd
sed -i '2s/^/auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf\n/' /etc/pam.d/sshd
sed -i '/auth   substack password-auth/c\#auth   substack password-auth' /etc/pam.d/sshd
echo 'auth required pam_google_authenticator.so nullok' >> /etc/pam.d/cockpit
echo 'idmsync ALL=(ALL) NOPASSWD: ALL' | sudo EDITOR='tee -a' visudo
echo 'AuthenticationMethods publickey,keyboard-interactive' >> /etc/ssh/sshd_config
sed -i '/ChallengeResponseAuthentication no/c\ChallengeResponseAuthentication yes' /etc/ssh/sshd_config
sed -i '/SELINUX=enforcing/c\SELINUX=disabled' /etc/selinux/config
service sshd restart
#Branding stuff
#Other stuff
systemctl start NetworkManager.service
systemctl start cockpit
systemctl enable NetworkManager.service
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --reload 
shutdown -r now

系统会提示输入Cockpit管理用户名、密码和服务器根密码。

使用下面的脚本在Cloud Manager中新建一个StackScript,选择Centos 7作为目标镜像,为其命名,保存并按下“Deploy a new Linode”按钮。

稍等片刻,访问这个URL:https://IPOF_YOUR_LINODE:9090,我们将看到一个Cockpit登录界面,类似下图所示。

这样就好了!

需要再次提醒大家注意,这种方式不仅操作简单,而且适用性非常广泛,无论云计算、云存储、数据库、Docker……你在Akamai Connected Cloud中部署的任何资源,只要使用TCP协议进行通信,就支持用这种方式启用2FA!

在下篇文章中,我们将介绍如何创建用户以及进行2FA身份验证的过程。敬请期待。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1677574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试八股之float和double的区别

Java中float和double的区别 存储空间与精度&#xff1a; double&#xff1a;占据64位&#xff08;8字节&#xff09;存储空间&#xff0c;属于双精度浮点数。它可以提供较高的精度&#xff0c;通常能够精确表示大约15到17位十进制数字&#xff0c;适合用于需要较高精度计算或…

【面试必看】MyBatis部分

MyBatis 必读 Mybatis系列全解 MyBatis最全使用指南 MyBatis最全使用指南 1. JDBC java 操作数据库的原始方式就是 JDBC。 但是存在以下问题&#xff1a; 每次操作我们都要创建 connection、Statement 等一些对象&#xff0c;操作完还要关闭、销毁这些对象。 ResultSet …

【OSM】RDP资源无法访问

发布windows的远程桌面资源&#xff0c;web和rdp方式都不能访问&#xff0c;端口测试都正常&#xff0c;不经过堡垒机能正常连接服务器 1、将资源中rdp安全模式指定为rdp&#xff0c;并直接登录到服务器&#xff0c;打开【组策略】&#xff0c;依次展开计算机配置→Windows组件…

手撸XXL-JOB(四)——远程调用定时任务

Java Socket网络编程 网络编程是Java编程中的重要组成部分&#xff0c;包括服务端和客户端两部分内容。Socket是Java网络编程的基本组件之一&#xff0c;用于在应用程序之间提供双向通信&#xff0c;Socket提供了一种标准的接口&#xff0c;允许应用程序通过网络发送和接收数据…

分体工业读写器的适用场景有哪些?

工业读写器根据设计方式不同&#xff0c;可分为一体式读写器和分体式读写器&#xff0c;不同读写器特点不同&#xff0c;适用场景也不同&#xff0c;下面我们就一起来了解一下超高频分体读写器适用场景有哪些。 超高频分体读写器介绍 超高频分体读写器是一种射频识别(RFID)设…

SpringAI应用开发

一、人工智能简述 四次工业革命推动了人类社会发展和变革&#xff1a; 蒸汽时代&#xff0c;发生在18世纪60年代~19世纪中期&#xff08;大约是1760年到1860年&#xff09;&#xff0c;这一时期的特点是机械化生产和大规模生产。电气时代&#xff0c;发生在19世纪下半叶~20世纪…

一篇文章搞懂 SDN中Minint和Ryu的安装及使用

SDN 一、SDN介绍 一&#xff0e; 什么是SDN? SDN字面意思是软件定义网络&#xff0c;其试图摆脱硬件对网络架构的限制&#xff0c;这样便可以像升级、安装软件一样对网络进行修改&#xff0c;便于更多的APP&#xff08;应用程序&#xff09;能够快速部署到网络上。 如果把…

pcdn边缘云常见sla有哪些?如何避免被白嫖

PCDN&#xff08;Point-to-Point Content Delivery Network&#xff09;边缘云常见的SLA&#xff08;Service Level Agreement&#xff09;规则包括高峰期离线、服务时间、重传延时、限速等。这些规则是为了保证服务质量和用户体验。下面将详细解释这些规则&#xff0c;并提供一…

51单片机:点亮一个LED灯

1.新建工程 选择AT89C52&#xff0c;在Atmel下显示的是See Microchip 并不需要添加启动文件到文件夹中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm汇编即更底层 程序编写好后 nop(); 该函数在这个头文件里面 #include <INTRINS.H> #include <R…

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between;

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between; 总盒子 .allboc {display: flex;width: 100%;align-items: start;flex-wrap: wrap;justify-content: space-between; }左边 justify-content: flex-start; .blog-articles {display: fl…

3588 pwm android12 的操作,包含 NDK native C++

问题&#xff1a; 客户需要在android12 的界面上操作板卡上的 PWM 蜂鸣器设备。 过程&#xff1a; 1 了解一下 3588 android12 源码的 关于PWM 的驱动。 设备树找不到 pwm 但是&#xff0c; 还不知道&#xff0c;android12 最终包含的 设备树是哪个&#xff0c;但是经过我的…

鸿蒙OS开发:【Stage模型应用程序包结构】

Stage模型应用程序包结构 为了让开发者能对应用程序包在不同阶段的形态更有清晰的认知&#xff0c;分别对开发态、编译态、发布态的应用程序结构展开介绍。 开发态包结构 在DevEco Studio上[创建一个项目工程]&#xff0c;并尝试创建多个不同类型的Module。根据实际工程中的…

数据分析(二)——导入外部数据,导入Excel数据,CSV文件,txt文件,HTML网页,数据抽取,DataFrame对象的loc属性与iloc属性

一.导入外部数据 1.导入.xIs或.xIsx文件 pd.read_ excel(io,sheet_ name,header) 1.1常用参数说明 ●io:表示.xIs或.xIsx文件路径或类文件对象 ●sheet name:表示工作表&#xff0c;取值如下表所示 ●header:默认值为0&#xff0c;取第一行的值为列名&#xff0c;数据为除列…

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中&#xff0c;看见前人的代码是&#xff0c;new 一块内…

【Qt问题】windeployqt如何提取Qt依赖库

往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是&#xff1a;当我们的程序运行好之后&#…

BI报表大用处 揭秘BI报表在行业中的变革力量

BI报表&#xff0c;即商业智能报表&#xff0c;是一种利用商业智能技术将企业中的数据转换为有意义的信息和可视化展示的报告。它通过将企业内部的大量数据转化为直观、易于理解的图表和指标&#xff0c;帮助决策者快速捕捉关键业务信息&#xff0c;识别趋势和模式&#xff0c;…

【深度学习】Diffusion扩散模型的逆扩散问题

1、前言 上一篇&#xff0c;我们讲了Diffusion这个模型的原理推导。但在推导中&#xff0c;仍然遗留了一些问题。本文将解决那些问题 参考论文&#xff1a; ①Variational Diffusion Models (arxiv.org) ②Tutorial on Diffusion Models for Imaging and Vision (arxiv.org…

训练集、测试集与验证集:机器学习模型评估的基石

在机器学习中&#xff0c;为了评估模型的性能&#xff0c;我们通常会将数据集划分为训练集&#xff08;Training Set&#xff09;、验证集&#xff08;Validation Set&#xff09;和测试集&#xff08;Test Set&#xff09;。这种划分有助于我们更好地理解模型在不同数据上的表…

React 第三十六章 Scheduler 任务调度

Scheduler 用于在 React 应用中进行任务调度。它可以帮助开发人员在处理复杂的任务和操作时更好地管理和优化性能。 关于 Scheduler 在React 如何渲染的可以参考 React 第三十四章 React 渲染流程 下面我们根据流程图先简单的了解 Scheduler 的调度过程 Scheduler 维护两个队…

机器人SCI期刊,中科院3区,收稿范围广泛!

一、期刊名称 Journal of Intelligent & Robotic Systems 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;3.3 中科院分区&#xff1a;3区 出版方式&#xff1a;开放出版 版面费&#xff1a;$2990 三、期刊征稿范围…