百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

SSH 堡垒主机最佳实践(堡垒机搭建)

ccwgpt 2024-11-17 07:38 44 浏览 0 评论

更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)

SSH 堡垒主机是安全基础设施访问中不可或缺的一环。部署堡垒主机相对容易,但保护堡垒主机需要考虑从设计到部署的各个方面。堡垒主机是攻击者想要破坏对基础设施的访问的第一个目标。

这篇博文重点关注关于构建和部署基于 OpenSSH 的安全 SSH 堡垒服务器的最佳实践。


设计和构建堡垒主机

堡垒主机的最终能力取决于基础设施访问的场景。例如,通过堡垒访问数据库服务器的要求可能不同于 Windows 服务器的访问要求。带有 OpenSSH 服务器的 Linux 操作系统是设置堡垒主机的流行选择之一。OpenSSH 使用 SSH 和端口转发功能连接到任何服务。

总体而言,堡垒主机安全加固的核心理念是用最少的组件运行堡垒服务器,并尽可能减少攻击面。

下面,介绍了在设计堡垒主机时需要考虑的一些重要事项。


选择正确的服务器操作系统

使用命令快速检查$ dpkg-query -W | wc -l显示在新的 AWS Ubuntu 20.04 LTS 服务器映像中预装了 567 个软件包。同样,$ yum list installed | wc -l命令显示有 453 个软件包预安装在新的 AWS Amazon Linux 2 服务器映像中。堡垒主机不需要所有这些软件包!最好检查所有预安装的包并删除堡垒主机不需要的包。

经验法则是根据需要使用最少的操作系统映像和安装包。例如,请参阅以下网站,这些网站将指导您安装最小操作系统:ubuntu minimum、debian netinst和centos。


限制在操作系统上运行的活动服务

使用正确的服务器操作系统后,请确保仅安装和运行所需的服务。例如,一个 SSH 堡垒主机应该只运行sshd守护进程而不是其他任何东西。运行不必要的服务只会增加堡垒主机的攻击面。要快速查看Systemd下的活动和正在运行的服务,使用systemctl命令:

$ systemctl list-units --type=service --state=running

也可以使用进程状态命令ps(例如$ ps auxtophtop命令)列出正在运行的进程。这些命令可帮助你识别所有正在运行的进程和服务,并根据需要停止或删除它们。


锁定操作系统网络功能

类似于限制堡垒主机上的活动服务,限制网络功能并使用拒绝所有策略锁定所有端口。对于使用 OpenSSH 配置的堡垒主机,只允许进入 SSH(端口 22 或自定义端口,如果更改了默认值)和出口到上游 SSH 服务器。对于管理入口和出口流量,原生netfilter iptables很强大。使用 iptables 命令快速检查$ iptables -L将显示网络防火墙是否已配置。要仅允许来自特定 IP 地址的 SSH,使用以下iptables命令:

$ iptables -A INPUT -p tcp -s your-ip-address --dport 22 -j ACCEPT

如果需要简单化,使用UFW,极大地简化了 iptables 管理。另一个方便的查看开放网络端口的 Linux 工具是lsof. lsof列出正在侦听特定端口的服务的进程 ID。例如,要列出处于侦听状态的开放 TCP 端口,使用以下lsof命令:

$ lsof -i -P -n | grep LISTEN

限制用户帐户和限制帐户功能

在堡垒主机中,谨慎地创建额外的用户帐户。如果需要除管理 root 帐户之外的用户帐户,请使用SELinux或Capabilities实施访问控制。如果需要用户帐户来运行特定服务,请确保禁用 shell 访问。这可以在 ubuntu 中使用以下usermod命令完成:

$ usermod <username> -s /sbin/nologin

记录访问记录

默认情况下会记录操作系统身份验证事件。可以在 centos/RHEL 系统下/var/log/auth.log和上的 Debian 系统中检查身份验证事件。/var/log/secure

[root@centos ~]# tail /var/log/secure
Dec 30 06:21:51 centos sshd[1287]: Server listening on 0.0.0.0 port 22.
Dec 30 06:21:51 centos sshd[1287]: Server listening on :: port 22.
Dec 30 06:22:21 centos sshd[5012]: Accepted publickey for root from 122.254.81.217 port 54660 ssh2: RSA SHA256:55nl8iEyh3L2trQhhc4aq+5qgEAdM0mnmYIYC7g/k6Y
Dec 30 06:22:21 centos systemd[5100]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Dec 30 06:22:21 centos sshd[5012]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec 30 06:41:39 centos sshd[13532]: error: kex_exchange_identification: Connection closed by remote host

这些日志仅限于身份验证事件,如果想获得更详细的访问和记帐事件,auditd是一种流行的选择。auditd挂钩到系统调用并记录系统调用事件,例如打开和关闭文件。由于在 Linux 系统上一切都是文件,这意味着auditd可以捕获进程、网络和文件事件。

记录事件的挑战之一与日志存储有关。将日志存储在同一台服务器上是有风险的,因为 root 用户可以更改它们,或者文件可能在系统崩溃期间被破坏。这些日志应发送到外部集中式日志服务器。ELK stack和Graylog是存储访问日志的流行选择。


限制登录堡垒主机的要求

限制用户登录堡垒主机容易锁定操作系统。例如,对服务器进行故障排除和调试的需求是 SSH 访问的首要原因之一。出于调试和故障排除的目的,管理员可能很想通过 SSH 连接到堡垒主机,但这会带来安全风险,因为允许 SSH 访问会打开一个额外的攻击向量。

要克服这个问题,请在远程日志服务器中实施适当的调试日志记录,并优先考虑不可变的基础架构原则。要修补服务器,而不是在运行时更新堡垒主机,使用所需的修补程序创建一个新的堡垒映像,并用新的更新的堡垒主机替换旧的堡垒主机。


实施主机入侵检测系统

主机入侵检测系统 (HIDS) 最适合检测操作系统中的异常情况。OSSEC和Wazuh是两个流行的用于主机安全监控的开源项目。


加固 OpenSSH 服务器

下面列出了一些强化 OpenSSH 服务器的最佳实践。


更新可能带来安全风险的默认配置

sshd_config下找到的文件中/etc/ssh/sshd_config,更新默认设置以禁用 root 登录、禁用密码验证、配置空闲超时以及将 SSH 用户列入白名单,如下所示。

# Disable root ssh acces
PermitRootLogin no

# Disable password login
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pam

# Configure idle time logout
ClientAliveInterval <value in seconds>

# Explicitly Allow SSH users
AllowUsers <user names>

安全的密码操作

OpenSSH 有许多可能已过时或易受攻击的加密算法。以下是确保OpenSSH 配置有最强大的加密算法和操作的一些任务。

  • 重新生成服务器主机密钥。
    如果堡垒主机映像是从现有服务器派生/克隆的,请确保重新生成服务器主机密钥,因为每个 SSH 服务器实例的主机密钥应该是唯一的。为此,请使用该命令删除任何现有的主机密钥,
    rm /etc/ssh/ssh_host_*然后使用以下命令重新生成主机密钥:
  • $ ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N "" $ ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
  • 停用 Diffie-Hellman 短模加密方式。
    Diffie-Hellman (DH) 密钥交换协议用于在客户端和服务器之间交换共享密钥(加密密钥)。短模(较小的素数)容易受到Logjam 攻击。为了解决 OpenSSH 配置的问题,Mozilla 建议使用以下命令停用短模数:
    $ awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.tmp && mv /etc/ssh/moduli.tmp /etc/ssh/moduli`这将确保小于 3071 位的 DH 模数永远不会用于 DH 交换。
  • 使用强密码和算法。
    尽管 OpenSSH 的最新版本支持强大的算法,但请确保
    CHACHA20curve25519是首选算法,以确保最安全的加密操作。

使用第二阶段身份验证

可能最简单但最有效的控制是在您的 SSH 服务器中实施第二阶段身份验证。Google 的Google Authenticator PAM模块是流行的选择。但它只支持基于 TOTP 的身份验证。要获得更强大的身份验证,请选择启用基于U2F或WebAuthn的身份验证的解决方案以用于 SSH。


使用证书进行用户身份验证

SSH 的基于证书的身份验证解决了基于密钥的身份验证带来的密钥管理问题,并增加了时间范围访问的额外安全性和即时撤销访问的能力。虽然维护证书颁发机构同样具有挑战性,但有一些解决方案可以完全自动化 SSH 的 CA 管理。


部署堡垒主机

堡垒主机在基础设施中的放置对堡垒主机的整体安全性起着重要作用。不正确的网络配置可能会让攻击者完全绕过堡垒主机,直接到达他们的目标服务器。此外,资源不足可能使攻击者有机会执行拒绝服务攻击,这可能导致服务停机。


确保堡垒主机的高可用性

遵循机密性、完整性和可用性 (CIA) 三元组,安全控制应增强服务的可用性,反之亦然。由于通过堡垒主机进行访问是唯一的途径,因此堡垒主机的可用性起着至关重要的作用。确保为堡垒主机分配足够的服务器和网络资源。多节点部署和设置多个可用区是保证堡垒主机可用性的有效方法。


解决延迟问题

没有人喜欢缓慢访问远程服务器。如果团队人员是分布式的,那么对于从不同地理区域访问基础设施的用户来说,延迟可能是一个严重的问题。由于云提供商内部的网络路由通常很快,因此可以通过将堡垒主机放置在离用户最近的云可用区,更近的位置来解决延迟问题。


防御 DDOS

由于堡垒主机暴露在互联网上,因此它们是分布式拒绝服务 (DDOS) 攻击的优先目标。防御 DDOS 攻击并不是一件容易的事,如果攻击向量有千兆bit级别,那么除非基础设施前还有 DDOS 服务,否则堡垒主机很可能无法幸免于难。微软报告称他们最近成为2.4 TBPS DDOS 攻击的受害者。如果堡垒提供对关键任务服务的访问,则值得购买 DDOS 保护服务。


总结

这篇文章完成了基于 OpenSSH 服务器的堡垒主机的设计、构建和部署中,需要考虑的重要事项。以最少的基本服务、用户帐户和网络功能运行堡垒主机,并将堡垒主机部署为高可用性服务器。

另外,Teleport 是一个现代堡垒服务器,允许在所有环境中统一访问 SSH 和 Windows 服务器、Kubernetes 集群、Web 应用程序和数据库。此外,Teleport 是一个开源项目,一切都是在开放的环境中设计和开发的。在此处了解有关如何在生产中使用 Teleport 的更多信息。
开始使用 Teleport - https://goteleport.com/docs/getting-started/linux-server/

相关推荐

如何让老师看完文章后还啧啧称奇?满分作文有框架,这3点是关键

历年来语文考试中,作文的分数都占着相当大的一个比例,同时作文也是最容易拉开差距的一个模块。别人拿满分,而你却只有20分左右,分数的差距就是这样拉开的。作文想拿很高的分数却是不容易,但不是完全不可能的事...

小学作文写作技巧和方法,万能公式框架法。家长收藏

小学语文老师用心整理,将写作框架编成万能公式。作文的写作是语文学习中的重要一环,从小学到初中再到高中,作文一直是语文考试中占分比重最高的部分。小学阶段的语文写作相对来说比较简单,主要是打基础,但是很多...

如何用爆款改写技巧提升文章吸引力结构重塑:打破原文框架悬念前

如何用爆款改写技巧提升文章吸引力?结构重塑:打破原文框架悬念前置法-在开头设置悬念或提出反常识的结论,吸引读者注意力。例如,将“接纳不完美是治愈的开始”改写为“天天逼自己当完美超人?别杠了!生活本就...

守护袁昆:是否有必要按框架去写文章,拍摄剪辑视频?

(文/守护袁昆)如今不管是写文章还是剪辑视频,越来越多的朋友喜欢用框架、用脚本,作为互联网创作者,我们是否有必要按框架去写文章,拍摄剪辑短视频呢?其实在内容创作过程中,是否使用框架始终是一个充满争议的...

揭秘!爆款文章的秘密:让读者无法抗拒的文章框架

说说我自己一开始写文章都会犯一个毛病,文章,通常是想到哪里,写到哪里,“管不住字儿”。这样往往会出现以下问题绊住我们继续写下去1、很容易,写着就跑偏了,最终出来的成品和最初的设想偏离很大2、会写得很慢...

想要写出逻辑清晰的文章,你需要掌握哪些写作结构

想要写出好文章,就必须要了解文章的结构和框架。一篇文章结构清晰,读者就很容易跟上作者的思路,看出文章的重点内容。如果你对新媒体的文章有进行过研究,你就会发现很多公众号的文章结构都是类似的。所以你需要掌...

写作结构拆解:从选题到框架,如何让文章说服力翻倍?

你有没有想过,为什么有些文章能轻松获得很高的阅读量,而你的文章却始终无人问津?其实,写出爆款文章并没有想象中那么难。关键在于选择一个吸引人的主题,并用一个清晰的写作框架,通过2-3个有力的子观点支撑...

申论怎么写?结构怎么弄?这篇文章是最基本的好文章框架

写作总被吐槽逻辑混乱?三步搭建框架法,新手也能写出漂亮文章

一、结构决定论:信息传递的桥梁写作者和读者之间始终存在一道隐形的鸿沟。作者脑海中的想法如同一棵枝繁叶茂的大树,但直接倾倒给读者时,往往只剩下零散的枝叶,信息在传达过程中的丢失,作者输出的和读者读到的不...

如何搭建文章框架:新手写作者很有必要看

#头条深一度-深度阅读计划#见面好呀,我是潼臻~37岁,边上班边带娃的二胎妈妈藏起生活里的琐碎,期望你我都能遇到更好的自己~~~~~~~~~~~~~~~~~~果然多读书是可以真切学习到有用的东西最近把...

模型上下文协议(MCP)的可视化向导

最近,模型上下文协议(MCP)引起了广泛关注。你一定听说过它。今天,让我们来了解一下它是什么。直观地说,MCP就像是AI应用的USB-C接口。正如USB-C提供了一种标准化的方式,用于将...

97个人放一页PPT!用对Smartart架构图直接开挂!

从讯飞出差回来的路上,在高铁上看到一条微博,关于红楼梦人物的思维导图:下面很多家长说,帮助很大,能帮助上学的孩子梳理清人物关系,我看了下,清楚是清楚,但真的不太好看!作为一名PPT博主,我就顺带在高...

技术架构规范与实践(二)架构设计示例

1.逻辑架构1.1领域概念1.2宏观应用架构1.3宏观流程1.4微服务拆分与分层2.技术架构3.开发架构3.1后端技术栈分类名称版本描述后端框架/组件JavaJdk8(openjdk:8u342)后...

倾斜柱模板安装加固

1、适用范围:呈梯形逐层向内侧倾斜的框架柱。2、工艺流程:定位放线-配模-校正梁位置-安装加固。3、工艺方法:(1)定位放线首先现场技术管理人员对每颗不同标高的梁底、梁中边线及200mm控制线进行平面...

地基与基础工程、主体工程节点构造

#去班味吧#桩头凿除环切法工艺说明:1、根据桩头预留长度(深入承台10cm)放样桩顶标高,施工人员根据测量结果在基桩上用红油漆标注环切线;2、在切割线以上部分桩底,人工用钢钎打入桩底约15cm,打入时...

取消回复欢迎 发表评论: