我想很多人可能和我的情况一样。我出差时会带笔记本电脑。我需要在办公室(就我而言,就是我的家)安全地访问文件。
我的问题的简短版本:
如何使 SSH/SFTP真的当只有一个人需要从一台笔记本电脑连接到服务器时,安全性如何?在这种情况下,采取哪些特殊措施可以确保其他人几乎无法在线访问服务器?
更多细节:
我在笔记本电脑(KDE)和家庭/办公室服务器上都使用 Ubuntu Linux。连接不是问题。如果需要,我可以绑定到手机的连接。我需要访问大量文件(大约 300 GB)。我不需要一次访问所有文件,但我不知道我可能需要哪些文件。这些文件包含机密客户信息和个人信息(例如信用卡号),因此必须确保安全。
鉴于此,我不想将所有这些文件存储在 Dropbox 或 Amazon AWS 或类似产品上。无论如何,我都无法证明这笔费用是合理的(Dropbox 甚至没有公布 100 GB 以上计划的价格,而且安全问题令人担忧)。但是,我愿意花一些钱来获得合适的解决方案。例如,VPN 服务可能是解决方案的一部分?或者其他商业服务?我听说过 PogoPlug,但我不知道是否有类似的服务可以解决我的安全问题?
我可以将所有文件复制到笔记本电脑上,因为笔记本电脑有足够的空间。但这样一来,我就必须在家用电脑和笔记本电脑之间进行同步,而我过去发现,我不太擅长这样做。如果我的笔记本电脑丢失或被盗,我的数据就会留在上面。笔记本电脑驱动器是固态硬盘 (SSD),而固态硬盘 (SSD) 驱动器的加密解决方案并不好。
因此,最好将所有数据保存在我的 Linux 文件服务器上(在家里是安全的)。
这是一个合理的结论吗,或者说任何连接到互联网的东西都存在这样的风险,我应该将数据复制到笔记本电脑上(也许用 HDD 替换 SSD,这会缩短电池寿命和降低性能)?
我认为丢失笔记本电脑的风险更高。我不是网上黑客的明显目标。我家的宽带是有线互联网,似乎非常可靠。所以我想知道在路上安全地访问我的数据(从我的笔记本电脑)的最佳(合理)方法。
我只需要从这台计算机访问它,尽管我可能通过手机的 3G/4G 或 WiFi 或某些客户端的宽带等进行连接。所以我无法提前知道我将拥有哪个 IP 地址。
我倾向于基于 SSH 和 SFTP(或类似解决方案)的解决方案。SSH/SFTP 将提供我预计需要的所有功能。我想使用 SFTP 和 Dolphin 浏览和下载文件。我将使用 SSH 和终端来做其他事情。
我的 Linux 文件服务器使用 OpenSSH 设置。我认为我的 SSH 相对安全。我也在使用 Denyhosts。但我想更进一步。我希望尽可能减少任何人进入我的服务器的可能性,同时仍允许我从路上访问。
我不是系统管理员、程序员或真正的“超级用户”。我必须花大部分时间做其他事情。我听说过“端口敲击”,但我从未使用过它,也不知道如何实现它(尽管我愿意学习)。
我已经阅读了许多文章,标题如下:
- 20 个 OpenSSH 服务器最佳安全实践
- 20 个 Linux 服务器强化安全技巧
- Debian Linux 使用 DenyHosts 软件阻止 SSH 用户黑客攻击/破解攻击
- 更多的...
这些文章提到了类似的事情
- 使用 DenyHosts
- 设置 /etc/ssh/sshd_config 中的 AllowUsers 选项以仅允许特定用户连接。
- 禁用通过 SSH 的 root 登录。
- 使用公钥认证并禁止密码登录
- 以及更多。
我正在做上述所有事情(还有一些其他事情)。但我还没有实现我读到的每一件事。我可能做不到。
但也许在我的处境下我可以做更好的事情,因为我只需要从一台笔记本电脑访问。我只是一个用户。我的服务器不需要向公众开放。考虑到所有这些事实,我希望我能在这里得到一些我有能力实施的建议,并利用这些事实来创造比上述文章中的通用建议更好的安全性。
一个例子是端口敲击。这似乎非常适合我的情况。还有什么类似的?
答案1
世上没有完美的安全。每种安全选项都有其优缺点。就我个人而言,我建议:
- 使用 DenyHosts 来防止暴力破解,但要设置合理的超时值,以免在旅途中一直把自己锁在外面。如果不小心,这种情况肯定会发生。
- 设置 AllowUsers 选项以
/etc/ssh/sshd_config
仅允许特定用户连接。 - 禁用通过 SSH 的 root 登录。
- 使用笔记本电脑的公钥认证。
- 从任何公共终端使用一次性密码,例如 OPIE 或 OTPW。
- 永远不要在公共终端使用你的 root 密码,即使与 sudo 或 su 结合使用。
另外,我非常看重带有 PIN 键盘的便携式加密驱动器,例如 Apricorn Aegis Padlock 驱动器。它们非常便携,可以抵御大多数威胁模型,最大的风险是忘记 PIN 或在旅行时丢失驱动器——但在这两种情况下,您仍然可以安全地在家中保留原始文件。
如果您更喜欢免费的替代方案,您可以使用 encfs、ecryptfs 或类似程序来创建加密挂载以保存您的敏感数据。您可能会丢失数据以及笔记本电脑,或者有人可能会篡改您的内核、引导加载程序或硬件以在您看不见的时候安装键盘记录器,但这听起来不像您当前的威胁模型,加密挂载应该可以很好地满足您的目的。我不认为此选项与 PIN 键盘一样安全,但它仍然是一个非常可靠的选择。
基本上,除非你真的觉得你需要服务由远程系统提供,我建议将文件放入您认为需要的安全容器中。然后,当您回到家时,您可以使用 rsync、conduit 或 unison 来同步文件,或者只需将更新的文件复制回主系统即可。
您的问题确实没有“一刀切”的答案。希望这能有所帮助。
答案2
我打算提出使用端口敲击作为如何在标准 SSH 强化的基础上达到更高安全级别的答案,在这种情况下,标准 SSH 强化已经完成。其他提出标准 SSH 强化的答案忽略了这些步骤已经采取的事实。这个问题是关于超越 SSH 强化。
根据维基百科,
考虑一下,如果外部攻击者不知道端口敲击序列,即使是最简单的序列也需要大量的暴力破解才能被发现。三次敲击简单 TCP 序列(例如端口 1000、2000、3000)将要求攻击者在不了解该序列的情况下测试 1-65535 范围内的三个端口的每种组合,然后扫描中间的每个端口以查看是否有任何端口打开。作为一个有状态的系统,端口只有在按顺序收到正确的三位数序列后才会打开,中间没有其他数据包。
在最坏的情况下,这相当于最多需要 655363 个数据包才能获得并检测到一次成功的打开。也就是 281,474,976,710,656 个数据包,即超过 281 万亿个数据包。平均而言,尝试通过暴力破解成功打开一个简单的三端口 TCP 攻击需要大约 9.2 千万亿个数据包。当使用攻击尝试限制来阻止暴力破解攻击、使用更长更复杂的序列以及使用加密哈希作为攻击的一部分时,这变得更加不切实际。
端口敲击有一些限制(例如,它是一个共享的秘密)。但是,正如问题所述,这是一个解决方案一人。因此,在现有的 SSH 强化(以及拒绝主机和其他措施)之上进行端口敲击是将安全性提升到新水平的有效而简单的步骤。
Port Knocker 实用程序的广泛使用是安全专家们争论的问题,但这个问题是一个典型案例,说明了何时可以非常有效地使用 Port Knocker。
当然,使用端口敲击也意味着使用 iptables。因此,进入下一步(也就是这里的问题)需要以下两个步骤:
使用 iptables
使用端口敲击
这是我喜欢的特定端口敲击实现:
http://www.portknocking.org/view/implementations
它有许多流行系统的客户端,包括 Android。
参考:
答案3
保护您的文件。
离开前加密它们。然后设置您的 ssh 服务器,远程访问您的服务器,使用密钥而不是密码访问您的 ssh 服务器。下载您的加密文件,切断连接并解密您的文件。无论您使用什么,您都必须明白,您使用的所有东西都可能并且会在某个时候被黑客入侵,因此您必须阻止人们接受您可接受的风险。
例如,如果您有 Apple 产品,则很可能有出厂安装的 root 工具包;戴尔、惠普、华硕等所有产品也是如此。它们仅适用于 OS X 和 Windows XP 及更高版本。因此,使用Linux。
答案4
我在笔记本电脑(KDE)和家庭/办公室服务器上都使用 Ubuntu Linux。连接不是问题。如果需要,我可以绑定到手机的连接。我需要访问大量文件(大约 300 GB)。我不需要一次访问所有文件,但我不知道我可能需要哪些文件。这些文件包含机密客户信息和个人信息(例如信用卡号),因此必须确保安全。
您知道使用手机的 3G/4G 连接并不安全吗?电话公司有能力(毫无疑问)查看您的所有互联网流量。现在互联网流量可能是安全的,但理论上它可以对您进行中间人攻击。如果您使用 3G/4G 连接,则在通过另一个安全连接上传任何内容之前,您需要使用 VPN。
鉴于此,我不想将所有这些文件存储在 Dropbox 或 Amazon AWS 或类似产品上。无论如何,我都无法证明这笔费用是合理的(Dropbox 甚至没有公布 100 GB 以上计划的价格,而且安全问题令人担忧)。但是,我愿意花一些钱来获得合适的解决方案。例如,VPN 服务可能是解决方案的一部分?或者其他商业服务?我听说过 PogoPlug,但我不知道是否有类似的服务可以解决我的安全问题?
此外,任何包含 PII 和/或机密客户信息的文件都应加密。不加密这些文件以及包含这些文件的任何存储介质,对客户没有任何好处。所有副本都应加密。
因此,使用云服务确实是一种解决方案,只要您的所有信息在上传前都经过加密,您唯一关心的就是长期的可保留性。应该使用云存储,您还应该拥有自己的本地和远程副本,具体取决于您实际处理的存储量。
此外...如果您真的要处理 300GB 的数据,那么 3G/4G 连接确实无法满足要求。
我可以将所有文件复制到笔记本电脑上,因为笔记本电脑有足够的空间。但这样一来,我就必须在家用电脑和笔记本电脑之间进行同步,而我过去发现,我不太擅长这样做。如果我的笔记本电脑丢失或被盗,我的数据就会留在上面。笔记本电脑驱动器是固态硬盘 (SSD),而固态硬盘 (SSD) 驱动器的加密解决方案并不好。
任何人说加密的 SSD 设备不是 100% 安全的(前提是加密是在存储任何数据之前进行的),都是彻头彻尾的白痴,你永远不应该再听取他们的技术建议。
这是一个合理的结论吗,或者说任何连接到互联网的东西都存在这样的风险,我应该将数据复制到笔记本电脑上(也许用 HDD 替换 SSD,这会缩短电池寿命和降低性能)?
听起来你应该想出一个将所有存储设备同步在一起的例程。有解决方案……
I view the risks of losing a laptop to be higher. I am not an obvious hacking target online. My home broadband is cable Internet, and it seems very reliable. So I want to know the best (reasonable) way to securely access my data (from my laptop) while on the road.
如果您的笔记本电脑的存储设备已加密,并且您加密了文件,那么任何人拥有的都只是一台上面有随机字节的笔记本电脑。
我只需要从这台计算机访问它,尽管我可能通过手机的 3G/4G 或 WiFi 或某些客户端的宽带等进行连接。所以我无法提前知道我将拥有哪个 IP 地址。
我会使用第三方 VPN 服务,它允许您将一个特定的 IP 地址列入白名单,这样您就可以始终拥有完全相同的 IP 地址。使用长而安全的随机密码、加密数据和加密存储介质,可使您的数据 100% 安全。加密数据只是随机字节。
除非您将文件加密存储在服务器上,否则您所做的任何事情都不会比远程云解决方案更安全。亚马逊和 Dropbox 花费数百万美元来保护他们的服务器,而您作为单个用户,可能不会安装发布的每个内核更新。
此外,听起来你应该专注于你的客户,做你所做的事情,然后再担心不如亚马逊和 Dropbox 安全的家庭 Linux 服务器的安全性。