最近,我考虑过,主要是作为一个个人项目,通过 SSH 为我的机器上的一个封闭用户组设置帐户,目的是通过 SSH 隧道传输诸如网络流量之类的东西——其中一些是为住在国外的朋友,也许还为了帮助一些人绕过国家审查。我认为我需要做一些事情,例如:
- 通过将 shell 设置为
/bin/false
或类似来禁用 shell 访问。 - 获取一些可以跟踪每个用户历史带宽使用情况的软件
- 确保每个用户只能使用一定量的带宽。
我在这里发帖的初衷是四处看看,了解一下我应该阅读哪些内容,以及听听是否有任何软件建议可以完成我想做的事情。我已经知道一点了,因为我实际上已经启动并运行了 SSH 隧道,我只是不想在没有限制和一些基本监控的情况下将它泄露给其他人。
我主要想在这里学习,所以如果你认为这是一个非常糟糕的想法(或者如果你对如何做到这一点有更好的想法)那么请一定要说出来,但请提供一些有关如何做到这一点的信息:)
(我也愿意尝试 OpenVPN 之类的东西,但它似乎很难设置,而且我听说 SSH 在锁定环境中更常用)
答案1
首先设置所需的密钥身份验证并禁用 sshd 中的密码。对 Internet 连接的 ssh 守护进程的最常见攻击是密码暴力攻击。对抗此类攻击的最简单方法是禁用 sshd 的密码。
检查您的/etc/ssh/sshd_config
以下设置:
PermitRootLogin no
PubkeyAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
不要忘记重新启动 sshd /etc/init.d/ssh restart
:。
当从远程机器摆弄 sshd_config 时,请确保您有一个额外的会话登录,以防您输入错误,您仍然可以访问服务器。
/usr/sbin/nologin
另一个优点/bin/false
是,您实际上会以用户身份收到一条简短消息,提示您不允许登录到 shell 环境。不确定您是否仍可以设置隧道。顺便说一句,OpenVPN2 的文档非常好,如果您可以穿过防火墙,那么您可能也可以运行 OpenVPN2。
查看这个 sslh 项目,它允许您运行一个常见的网络服务器和ssh(或者 openvpn)在同一个端口上!http://www.rutschle.net/tech/sslh这样,您就可以将您的 ssh 服务器“隐藏”在适当的 Web 服务器后面 ;o)
最后但同样重要的一点是:检查 proxytunnel,它使您能够通过 HTTPS 运行 SSH,从而欺骗更多的防火墙。
但请注意,当安全人员发现您使用这些工具(通过端口 80 或 443 的 ssh、proxytunnel、openvpn)穿过公司防火墙访问不受支持的服务时,他/她可能会非常不高兴。在许多公司,您可能会因此被解雇。