远程访问防火墙后面的Linux计算机


11

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

更新:我决定按照我原来的脚本计划来创建反向ssh隧道。虽然其他建议的解决方案(例如端口敲门)将更符合我的实际意愿,但在这种情况下,除了引导用户进行配置之外,我无权配置路由器。不寒而栗


您不必配置路由器。Linux具有iptables防火墙,足以保证防火墙的安全性。而且,通过建立到服务器的始终在线ssh隧道,可以很容易受到攻击,因为它会将连接的主机扔掉。
Kazimieras Aliulis,2009年

1
我必须在路由器上打开一个端口,然后才能将需要的所有内容传递给linux机器。ssh隧道并非始终处于打开状态。当我需要访问计算机时,它将由该用户开始。
2009年

Answers:


5

它与端口的打开无关,而与在打开端口的过程中不想让用户走路有关。不幸的是,我根本无法访问该路由器。

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

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


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

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

有许多实现比其他实现更好。有些使用强大的加密技术,使得没有正确密钥的人几乎不可能发送正确的敲门声。


这听起来像一个好主意!不幸的是,所讨论的防火墙只是一个简单的消费级Linksys或同等产品。
2009年

1
如果你可以安装DD-WRT,你可以使用knockd(dd-wrt.com/wiki/index.php/Knockd
Zoredache

@Zoredache是​​的,但这是在远程位置。我无权访问此路由器,想到要引导用户完成dd-wrt安装,我会发抖。
2009年

我确实同意这可能是正确的设置方法,前提是我可以物理访问路由器以安装dd-wrt。
2009年

自被LogMeIn收购以来,Hamachi已对Linux用户表现出深切的考虑。当Linux机器是我的hamachi网络的一部分时,我发现该产品不可靠。
bmb

6

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

首先,禁用键盘交互式身份验证,然后转到ssh键。

其次,在您的远程服务器上安装诸如fail2ban之类的东西,以对可重复探测您的计算机的IP地址进行破坏。因为您具有设置ssh密钥,所以授权用户应该没有身份验证失败。

或者,如果有能力,请采取WerkkreWs的建议,并在计算机前配置防火墙以终止vpn连接,然后仅允许远程服务器上的ssh守护程序接受通过该vpn的连接。

另外,如果您的防火墙无法终止vpn连接,则可以将GRE或IPSEC数据包转发到您的linux计算机,并在此终止它。


它与打开端口有关,而与不想在打开端口的过程中让用户走路有关。不幸的是,我根本无法访问该路由器。
2009年

我理解并同情您的痛苦。
戴夫·切尼

2
此解决方案的第一步是将sshd配置为在非标准端口上运行。有很多机器人在敲22号端口。选择一个未出现在/ etc / services上的端口,并且找不到“ nmap HOST”端口。
hayalci,2009年

4

听起来您正在寻找敲门声

您可以使用iptables将其安装在linux服务器本身上,从而使其类似于二级防火墙。即使前端防火墙上打开了端口22,服务器上也不会打开该端口,因此portcans不会看到任何打开的端口。然后,当您发送“秘密敲门声”时,突然之间您就拥有通往端口22的开放路径。

那有意义吗?


除非我弄错了,否则我还必须转发所有的爆震口,对吗?当有人扫描路由器时,这不是很明显吗?他们不知道顺序,但是将可能的组合降低到6,如果我记得我正确地进行排列的方法,那么他们将有一个巨大的开端。还是我在想这个错误?
2009年

虽然需要转发用于敲除的端口,但是运行敲除的主机实际上并不需要以任何方式回复敲除的来源。
Zoredache

正确-在第一个防火墙上打开的端口在第二个上不会打开,因此对于扫描仪,它们都显示为关闭。无法区分爆震端口与非爆震端口。
布伦特

3

总结所有答案:

使用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


+1不错的摘要,以及有关多次尝试技巧的有趣想法。
David Z

2

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

如果您担心SSH对外开放,则可以在维护期间使用iptables脚本安排任务,然后仅提供端口可用。


1
同意 除非您有进入VPN的方法,否则唯一真正的解决方案是基本打开端口。如果您对此感到不安,可以随时使用非标准端口。
WerkkreW

2

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

另外,在出现太多错误请求后,运行denyhosts可以将人们拒之门外。

这两个软件包都可以在标准的Ubuntu,Fedora和RHEL存储库中找到。


1

继续并打开一个端口,只需使其超出正常范围即可。我可以将它设置为超过1024个的随机端口。这样,黑客就不太可能寻找它。


0

如果您需要远程访问机器,则没有理由不戳防火墙上的漏洞,但是这种情况很少发生。

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

当然,这比仅打开端口要脆弱得多,也不太安全。但是我相信你有你的理由。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.