为了账号安全,请及时绑定邮箱和手机立即绑定

如何安全地从本地设备访问您的内网或局域网

堡垒主机

企业会使用私有网络来存储敏感数据。随着这些网络的扩大,管理安全且受控的访问变得至关重要。您不希望随便有人能访问您的数据,对吧?因此,适当的访问控制变得尤为重要,确保只有授权用户才能访问。一种堡垒主机是用于保障资源访问安全的一个最有效的工具。

什么是堡垒服务器?

堡垒服务器是一台专用服务器,允许授权用户从如互联网这样的外部网络访问私有网络。其主要目的是为了提供一种安全的方式,让授权用户可以通过远程连接来访问您的网络,尤其是对于远程连接。

你知道堡垒机是怎么工作的吗?

堡垒主机就像是网络的安全守护者。当有人试图远程访问网络内部时,堡垒主机就会要求他们验证身份。它不决定谁能进来——它只是执行规则。一旦验证通过,用户就会受到监控以确保一切安全。

为什么使用堡垒主机?

使用堡垒主机的主要目的是提高安全性
设置堡垒主机增加了对访问敏感数据的控制和监控。只有授权用户才能访问。

什么时候需要用到堡垒主机?

堡垒主机(bastion主机)在你需要安全的远程访问时是一个很好的选择。
当你需要合作伙伴和供应商访问内部系统,或者你的团队远程工作时。当你处理敏感数据时,任何未经授权的访问都可能导致严重的安全问题。在这种情况下,它也非常适合。

堡垒主机的最佳实践
  • 使用IP白名单限制访问: 只允许特定的、受信任的IP地址访问堡垒主机。
  • 更改默认的SSH端口: 默认情况下,将SSH端口(22)更改为非标准端口可以帮助防止自动化攻击并减少潜在攻击者对SSH服务的可见性。
  • 使用密钥的SSH身份验证: 强制要求使用密钥的SSH身份验证来访问堡垒主机。启用SSH代理转发,而不是将密钥存储在堡垒主机上。
  • 禁用密码身份验证: 关闭密码身份验证以增强安全性,确保仅允许密钥访问。
使用堡垒主机的利弊

好处:

  • 增强的安全: 它缩小了攻击面,并提供了集中的访问权限控制。
  • 监控: 它让监控谁在访问您的网络以及他们在做什么变得更容易。

不足之处:

  • 单一故障点: 由于堡垒主机是唯一的入口点,任何该主机上的问题都可能导致您完全无法访问网络。
  • 访问潜在瓶颈: 如果很多用户同时进行连接,堡垒主机可能会成为瓶颈,减慢所有人的访问速度。
演示环节

zh: 前提

  • 一个在公共子网中的服务器(例如堡垒服务器)
  • 一个在私有子网中的服务器(例如数据库服务器)

指南:

步骤1:生成SSH密钥(本地电脑)

在你的本地计算机(例如 Macbook)上,使用以下命令进行 SSH 密钥对的生成:

ssh-keygen

在终端中执行以下命令以生成RSA密钥:

ssh-keygen -t rsa -b 4096 -f /Users/$USER/.ssh/id_rsa

$USER 替换为你的用户名。

这将生成一个私有密钥和一个公有密钥。你会看到类似这样的内容。

    -rw------- 1 kawin.p kawin.p 2622 10月11日 04:00 时 id_rsa (-rw------- 表示文件权限)  
    -rw-r--r-- 1 kawin.p kawin.p 580 10月11日 04:00 时 id_rsa.pub

注意: 复制这个 id_rsa.pub公钥,后面会用到它。

第二步:在跳板服务器上生成SSH密钥对

连接到堡垒服务器之后,通过运行以下命令生成SSH密钥:

生成用于bastion主机的RSA密钥对
ssh-keygen -t rsa -b 4096 -f /home/$USER/.ssh/bastion  # (将替换为当前用户的用户名)

这会生成一个私有公有密钥,输出应类似于以下内容,

    -rw------- 1 ubuntu ubuntu 3414 10月11日早上4:01 bastion (堡垒主机文件)
    -rw-r--r-- 1 ubuntu ubuntu 769 10月11日早上4:01 bastion.pub (堡垒主机公钥文件)

注:权限 -rw------- 表示只有文件所有者可以读写,-rw-r--r-- 表示文件所有者可以读写,其他用户只能读取。.pub 扩展名通常表示公钥文件。

注意: 复制 bastion 服务器上的 bastion 私钥,你以后会需要用到。

步骤3:将您的本地公钥添加到bastion的授权密钥列表中。

堡垒服务器(Bastion server) 上,将如步骤 1 所示在本地机器上生成的公钥加入到 ~/.ssh 目录下的 authorized_keys 文件中。

如果找不到文件,你可以创建它,然后输入本地机器的公钥。

    #  the local machine (Macbook)
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDilKr6/sN+bdjgTBSM0kqJURj9hj03Mj...
    # 注意:ssh-rsa 是用于安全登录的公钥。

把堡垒服务器的公钥加到数据库服务器里,这是第4步。

接下来,在 数据库服务器 上,将步骤 2 中生成的堡垒服务器公钥添加到 ~/.ssh 目录下的 authorized_keys 文件中。

    # 堡垒  
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDV/XMFj9GoAVgsOOAC7LBoI9OHikZ4S...

在本地机器上,按照如下方式将私钥添加到SSH代理程序中:

     ssh-add /Users/$USER/.ssh/id_rsa

第六步:测试连接到数据库服务器(通过Bastion)

     ssh -A -i /Users/$USER/.ssh/bastion -o ProxyCommand="ssh -A -W %h:%p <BASTION-SERVER-USER>@<BASTION-SERVER-PUBLIC-IP>" <DATABASE-SERVER-USER>@<DATABASE-SERVER-PRIVATE-IP>

第七步:配置SSH以便更方便地访问

对于更复杂的配置,最好是在 ~/.ssh/config 文件中设置 SSH 选项。

以下是一个配置的例子:

    Host *  
    TCPKeepAlive yes  
    ServerAliveInterval 120  
    ServerAliveCountMax 5  

    Host bastion-server  
      User <BASTION-SERVER-USER>  
      ForwardAgent yes  
      Hostname <BASTION-SERVER-PUBLIC-IP>  
      IdentityFile /Users/$USER/.ssh/id_rsa  
      StrictHostKeyChecking no  

    Host database-server  
      User <BASTION-SERVER-USER>  
      ForwardAgent yes  
      Hostname <BASTION-SERVER-PRIVATE-IP>  
      IdentityFile /Users/$USER/.ssh/bastion  
      ProxyCommand ssh -q -W %h:%p bastion-server  
      StrictHostKeyChecking no

第七步:连接数据库服务器

设置好 SSH 配置后,就可以用更简单的命令来连接到 数据库服务器

运行ssh数据库服务器

或者更自然的表达为:
通过SSH连接到数据库服务器

这将会自动通过跳板服务器将SSH代理转发到数据库服务器,而无需手动传递私钥。

步骤8:通过堡垒主机建立SSH隧道

你可以通过堡垒机创建一个SSH隧道,安全地访问私网上的服务(比如,PostgreSQL)。

运行以下命令:

执行以下命令:

ssh -N -L <LOCAL-PORT>:<DATABASE-SERVER-PRIVATE-IP>:<DATABASE-SERVER-PORT> bastion

其中,<LOCAL-PORT> 是本地端口,<DATABASE-SERVER-PRIVATE-IP> 是数据库服务器的私有IP地址,<DATABASE-SERVER-PORT> 是数据库服务器的端口号。bastion (堡垒主机)

这会从你的本地机器(5432端口)建立一条隧道连接到私有网络中的数据库服务器(5432端口)。

现在,打开第二个终端窗口或第二个命令行窗口来测试连接情况。你可以试试这个命令来连接到你的数据库试试。

export PGPASSWORD='<DATABASE-PASSWORD>'; psql -h localhost -p 5432 -U <DATABASE-USER> -d <DATABASE-NAME>
# 这是一个使用psql连接本地数据库的命令
# DATABASE-PASSWORD: 数据库密码
# DATABASE-USER: 数据库用户名
# DATABASE-NAME: 数据库名称

这个命令利用你设置的隧道连接到私网上的数据库,就像它直接运行在你的计算机上一样。

结论部分

堡垒主机是一种增强您私有网络安全的强大手段。它充当远程访问的安全检查点,确保只有授权用户能进入,有效阻止未经授权的访问,同时防范潜在的网络安全威胁。

如果你觉得这篇文章不错,请随意留言 🙏,鼓掌 👏,评论 👍,或者关注我 💪 获取更多每周的见解和最佳实践!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消