AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 7980
Accepted
baudtack
baudtack
Asked: 2009-05-14 13:33:51 +0800 CST2009-05-14 13:33:51 +0800 CST 2009-05-14 13:33:51 +0800 CST

远程访问防火墙后的 Linux 机器

  • 772

我将在远程位置部署一台 Linux 机器作为一种公共终端。我希望能够通过 SSH 远程访问它以进行维护,但我不想在需要访问这台机器的极少数情况下保持远程防火墙上的端口打开。我虽然有一个简单的脚本来创建一个到外部机器的反向 SSH 隧道,但我宁愿不必让用户在我需要访问它时做任何事情。有任何想法吗?

更新:我决定使用我最初的脚本计划来创建反向 ssh 隧道。虽然其他建议的解决方案(例如端口敲击)更符合我真正想要做的事情,但在这种情况下,除了引导用户完成配置之外,我没有任何配置路由器的权限。不寒而栗

linux ssh remote-access
  • 8 8 个回答
  • 9599 Views

8 个回答

  • Voted
  1. Dave Cheney
    2009-05-14T13:53:31+08:002009-05-14T13:53:31+08:00

    我不会那么担心让端口 22 可以访问互联网,但我会采取一些措施来保护它。

    首先,禁用键盘交互身份验证并移至 ssh 键。

    其次,在你的远程服务器上安装类似fail2ban的东西,以阻止重复探测你机器的IP 地址。因为您已经设置了 ssh 密钥,所以授权用户应该不会出现身份验证失败。

    或者,如果您可以,请采纳 WerkkreWs 的建议并在机器前配置防火墙以终止 vpn 连接,然后只允许远程服务器上的 ssh 守护程序接受来自该 vpn 的连接。

    或者,如果您的防火墙无法终止 vpn 连接,您可以将 GRE 或 IPSEC 数据包转发到您的 linux 机器,并在那里终止它。

    • 6
  2. Best Answer
    Zoredache
    2009-05-14T13:46:26+08:002009-05-14T13:46:26+08:00

    它与关心端口是否打开无关,更多与不想让用户通过打开端口的过程有关。不幸的是,我根本无法访问此路由器。

    如果更改路由器完全不可能,您可能需要查看像Hamachi这样的 P2P 或 VPN 解决方案。如果您将系统设置为在启动时自动建立 VPN 连接,那么您应该能够在需要时进行连接。Hamachi 为您完成所有的防火墙协商。一个缺点是,当您需要连接时,您必须依赖 Hamachi 服务器启动并正常运行。

    如果您的服务器始终处于启动状态,您可以设置autossh以便远程系统始终保持隧道打开并连接到您的服务器。一个缺点是远程系统受到威胁,攻击者将获得用于建立 ssh 会话的密钥。保持接受 ssh 连接的系统真正处于锁定状态非常重要。


    以下是我的原始答案,我假设更新路由器是一种选择。

    如果您的防火墙支持它,您可能想要调查的一种解决方案是端口敲击。对于某些防火墙,应该可以发送一组特殊的数据包,防火墙会注意到这些数据包,然后暂时打开防火墙的漏洞。

    有许多实现方式比其他实现方式更好。有些人使用强大的密码学使没有正确密钥的人几乎不可能发送正确的敲门声。

    • 5
  3. Brent
    2009-05-14T14:39:14+08:002009-05-14T14:39:14+08:00

    听起来你正在寻找敲门声

    您可以使用iptables在 linux 服务器本身上安装它,这样它就有点像二级防火墙。即使在前端防火墙上打开了端口 22,它也不会在服务器上打开,因此端口扫描不会看到任何打开的端口。然后,当您发送“秘密敲门”时,突然之间您就有了通往 22 端口的开放路径。

    那有意义吗?

    • 4
  4. Kazimieras Aliulis
    2009-05-14T23:33:01+08:002009-05-14T23:33:01+08:00

    总结所有答案:

    使用 ssh,但要使其更加隐蔽和安全。

    为了安全:

    • 确保不允许 root 登录(PermitRootLogin no)。
    • 限制用户,可以通过配置选项 AllowUsers 或 AllowGroups 登录。
    • 确保它仅使用 2 个版本的 ssh 协议(协议 2)。
    • 建议仅使用身份验证密钥,但密码更方便,当您可能需要从无法访问身份验证密钥的假期连接到服务器时。

    对于默默无闻:

    • 将 ssh 端口更改为您记得的某个随机高端口,例如 20486。这将摆脱大多数自动暴力破解程序,但不会将其隐藏在服务器上的所有端口扫描中。
    • 隐藏连接到端口的能力。一种方法是其他答案中提到的端口敲门,但是您需要特殊的软件,该软件无法在任何地方访问。另一个简单的选择是使用带有最近模块的 iptables 防火墙来创建规则,这将只允许在第二次或第三次尝试时连接。所以你知道你必须尝试几次才能成功连接,但是简单的所有端口扫描不会显示 ssh 端口。规则类似于:

    
    iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
    iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
    iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP
    

    • 3
  5. sclarson
    2009-05-14T13:39:02+08:002009-05-14T13:39:02+08:00

    计划任务脚本为您的反向 ssh 隧道,或打开防火墙端口。

    如果您担心 SSH 向世界开放,您可以在维护期间使用 iptables 脚本安排任务,并且只有端口可用。

    • 2
  6. Tim Howland
    2009-05-14T14:06:25+08:002009-05-14T14:06:25+08:00

    查看端口敲门以打开您的 SSH 隧道。

    此外,在收到太多错误请求后,运行拒绝主机以锁定人员。

    这两个软件包都在标准的 Ubuntu、Fedora 和 RHEL 存储库中可用。

    • 2
  7. Brad Gilbert
    2009-05-14T19:16:53+08:002009-05-14T19:16:53+08:00

    继续打开一个端口,让它超出正常范围。我会将其设置为 1024 上的随机端口。这样黑客甚至不太可能寻找它。

    • 1
  8. Brian
    2009-05-14T14:47:05+08:002009-05-14T14:47:05+08:00

    如果您需要远程访问机器,没有理由不戳防火墙上的漏洞,但很少。

    但是,如果您仍然不想(或不能)打开端口,一个简单的 shell 脚本可以监控您控制的某些 Internet 可用资源并侦听启动反向隧道的命令。电子邮件帐户、IRC 频道和网页会立即成为触发设备。

    当然,这比仅仅打开端口更脆弱,更不安全。但我相信你有你的理由。

    • 0

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 最好的 Windows 远程支持/屏幕共享工具?

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve