💻公网IP环境下的安全内网穿透指南:使用SSH隧道技术
2024-5-9
| 2024-5-9
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
💡
前面文章介绍了自建derp节点改善Tailscale的网络延迟,如果有公网IP的环境,如何搭建安全可控的内网穿透环境?

Q: 为什么不直接开放远程访问端口?

总有人,在互联网上裸奔,然后总有人,在持续扫描公网端口服务,增加了被网络攻击的风险。假设你开放了RDP(window远程桌面)的端口,那么你在你电脑的日志中会看到一堆4625的日志(认证失败),来自各个地方的IP。不过一般强密码,禁用管理员账户也可以提高安全性。
notion image
 

Q: 为什么通过SSH隧道使用RDP更安全?

  1. 加密:SSH提供了强大的加密,这意味着所有通过隧道传输的数据(包括RDP流量)都会被加密。这对于防止数据在传输过程中被窃听非常重要。
  1. 封装:通过SSH隧道,RDP流量被封装在SSH的加密层中,这可以增加一个额外的保护层,阻止直接对RDP端口的访问尝试。
  1. 端口转发:SSH隧道使用端口转发,可以将远程服务器上的某个端口(如RDP的3389端口)转发到本地计算机的一个本地端口上。这意味着RDP流量可以绕过某些网络限制,同时减少外部对开放RDP端口的直接访问。
  1. 身份验证:SSH自身的身份验证机制提供了额外的安全保障。用户必须首先通过SSH验证(通常是使用密钥对),才能建立RDP会话。
FBI看了都摇头。
notion image

Q: 什么是SSH隧道?

SSH(Secure Shell)隧道是一种网络隧道创建技术,用于在不安全的网络中安全传输数据。通过SSH隧道,用户可以将网络流量加密,并通过一个安全的通道转发到任何目标服务器。

正菜来了:

1. 如何设置SSH隧道

以远程主机是你的windows电脑为例
两种安装方式:

通过设置安装:

  1. 打开“设置”。
  1. 进入“应用”>“应用和功能”>“可选功能”。
  1. 点击“添加功能”。
  1. 在列表中找到“OpenSSH 服务器”,选择它,然后点击“安装”。

通过控制面板安装:

  1. 打开“控制面板”。
  1. 选择“程序”>“程序和功能”>“启用或关闭Windows功能”。
  1. 滚动找到“OpenSSH 服务器”,勾选它,然后点击“确定”按钮。
  1. 系统将自动安装OpenSSH 服务器。

2. 配置SSH服务

安装完成后,你需要确保SSH服务已启动并设置为自动启动:
  1. 按下 Win + R 键打开运行对话框。
  1. 输入 services.msc 并按回车。
  1. 在服务列表中找到“OpenSSH SSH Server”。
  1. 右击它,选择“属性”。
  1. 在“启动类型”中选择“自动”。
  1. 如果服务尚未运行,点击“启动”按钮。

3. 配置防火墙

确保Windows防火墙允许SSH连接:
  1. 打开“控制面板”。
  1. 进入“系统和安全”>“Windows Defender 防火墙”>“高级设置”。
  1. 点击“入站规则”,然后“新建规则”。
  1. 选择“端口”,点击“下一步”。
  1. 选择“TCP”,特定本地端口填写 22(SSH默认端口),然后点击“下一步”。
  1. 选择“允许连接”,再次点击“下一步”。
  1. 确保勾选了所有配置文件(域,私人,公共),点击“下一步”。
  1. 给规则命名,例如“SSH”,点击“完成”。

4. 配置SSH

SSH服务使用的配置文件通常位于 C:\ProgramData\ssh\ 目录下的 sshd_config 文件。你可以编辑此文件以调整安全设置
  1. 找到并打开 C:\ProgramData\ssh\sshd_config 文件。
  1. 查找以下行:
修改为
同时,确保公钥认证是启用的。查找以下行:
如果前面有 #,请移除 # 并确保其设置为 yes

5. 重启SSH服务

配置修改后,需要重启SSH服务以使更改生效。
  1. 返回到“服务”窗口。
  1. 右击“OpenSSH SSH Server”,选择“重启”。

6. 设置SSH密钥

在客户端生成密钥对:

使用SSH客户端(如PuTTYgen或命令行ssh-keygen工具)生成密钥对。例如,在命令行中,可以使用以下命令:

将公钥添加到服务器:

  1. 将生成的公钥(通常是 .pub 文件)复制到服务器上。
  1. 在服务器上,将公钥文件的内容添加到 C:\Users\<用户名>\.ssh\authorized_keys 文件中。如果 .ssh 目录或 authorized_keys 文件不存在,需要手动创建它们。

7. 测试配置

使用你的SSH客户端,尝试使用密钥连接到服务器,确保连接可以成功建立而不需要密码。例如:

8. 设置SSH隧道

假设你已经在远程服务器上配置了SSH服务,你可以使用以下命令在本地机器上设置SSH隧道并通过该隧道启动RDP会话:
  • 本地端口:你选择的任何未使用的本地端口(例如,可以使用3390)。
  • localhost:这指的是远程服务器本身。
  • 远程端口:RDP使用的端口,通常是3389。
  • 用户名:你的远程服务器用户名。
  • 远程服务器地址:远程服务器的IP地址或主机名。
例如,如果你的用户名是 user,远程服务器的IP是 192.168.1.100,你可以使用以下命令:
然后,你可以启动RDP客户端,连接到 localhost:3390,这样RDP会话就会通过SSH隧道安全地连接到远程服务器的3389端口。
notion image
这样,你的安全措施,直到银河系毁灭应该都不会被爆破了。
对了,如果你远程的服务器在NAT后面(比如家用路由器),记得在路由器上配置端口转发。
  • 开发
  • Prompt工程的当代进展[译]— 2Prompt工程的当代进展[译]— 1
    Loading...
    目录