SSH旅行时的安全

我是新来的东西系统pipe理员/ IT方面,所以我很抱歉,如果这看起来很简单。 我试过search,但由于SSH是如此广泛的领域,我不知道什么关键字或术语专门使用。

我将尽快做一些旅行,我需要SSH到我的EC2 Ubuntu服务器。 目前,我在家里有一个静态的IP,UFW设置为限制端口22的IP访问。就SSH本身而言,我使用密钥对来login。

有什么办法我可以以某种方式获得一个静态的IP,或使用某种VPN,然后SSH到我的服务器仍然保持端口22安全? 很明显,我不是第一个在SSH服务器上进行旅行的人,所以必须有一个解决scheme。

正如我所说,我目前只允许端口22访问我的IP。 开放22号港口到所有的交通是否太冒险? 我使用SSH密钥对,而不是用户名/密码。

只要您使用公钥authentication或安全的用户密码,保持端口22打开不会比在您的Web服务器上保持端口80打开安全。 许多安全实践是没有根据的神话。 sshd中存在严重的漏洞不太可能。

为什么VPN服务器端口突然比SSH端口更安全? 只要每次连接时validation您的SSH公钥,以防止MITM攻击。

需要一个用于SSH的VPN肯定是更安全的; 通常的做法是build立一个pipe理networking(你的服务器有一个辅助连接),并提供VPN访问。 让所有基础设施只在该networking上监听pipe理stream量。 然后,根据需要,VPN进行pipe理。

如果你只有一个服务器,这可能是矫枉过正的。 使用强大的公钥并确保只有真正拥有shell账号的用户才能被authentication。 在这种情况下禁用SSH的密码authentication不是一个坏主意。 为此,编辑/etc/ssh/sshd_config并设置PasswordAuthentication no 。 如果您只使用公共密钥身份validation,请务必使用UsePAM no禁用PAM,因为即使您在sshd中禁用了密码身份validation,PAM也可以使用密码对用户进行身份validation。

首先一些一般的安全提示:

  • 使用密钥login – 你在这方面很好
  • 使用大键 – 例如生成一个4k的rsa键(可能当前的是1k或2k
  • 使用强密码的密钥 – 你应该这样做。 如果我能把我的手放在你无保护的钥匙上,一切都是没有意义的
  • 把ssh移到更高的端口 – 例如 12322 – 这将有助于探索一些服务。 不要忘记打开安全组中的端口
  • 监视你的服务器发生了什么事情 – fail2ban是一个奇妙的工具
  • 禁用密码login(在其他答复中有说明)
  • 实现AllowUsers / AllowGroups只让特定的用户(和根不是其中之一) – 再加上积极的fail2banconfiguration这是一个很好的杀手。

特别是对于你的问题,有一些工具被称为PortKnockerrs

基本上你做了一些事情(比如试图在短时间内连接到几个不同的端口)和一个端口奇迹般地在iptables中打开。

关于这个话题的一些阅读:

注:我没有portknocking的经验,并不真正推荐它,因为它会干扰正常的操作。 在非标准端口上的大的安全密钥和ssh是非常有用的。

你可以在你的机器上设置一个OpenVPN服务器并通过它访问你的实例。 检查下面的链接来设置OpenVPN服务器。

http://www.whiteboardcoder.com/2012/12/amazon-aws-vpc-setting-up-openvpn-server.html

你需要稍微改变你的安全组。 目前,您有一个静态IP作为入站连接的允许主机。 使其成为与OpenVPN服务器的dynamicIP地址(您在上述链接的“VPN设置”中指定的IP地址范围)匹配的IP地址范围。

所有的OpenVPN服务器都可以访问,但是这个连接被encryption(https),并受到您的OpenVPNconfiguration文件密钥和您的账户密码的保护。

我会在你的笔记本电脑上设置一个dynamic的dns帐号,如no-ip或dynds,然后你可以将这个dyn主机名添加到/etc/hosts.allow,并阻止/ etc / hosts / deny中的所有其他内容。

这样你有你的Linux只允许dynamic主机,你也可能需要添加你的本地子网段到/etc/hosts.allow文件。

干杯…