我有一个运行ssh服务器和web服务器的盒子。
举个例子:
ssh -D1234 myhost.com myhost.com应该工作 我想这可以通过简单地closures外出端口80来粗略完成,但是这将(a)不会阻止人们隧穿非networking业务,并且(b)防止任何用户访问网站。 是一个更细粒度的方式来做到这一点,理想情况下通过限制sshd将同意隧道,可能吗?
您可以使用sshd_config文件中的PermitOpen选项来限制可通过隧道访问的主机。
PermitOpen <TheIPYourWebServerListensOn>:80
如果使用localhost作为TheIPYourWebServerListensOn ,则可能需要指示代理客户端使用它,即使对发往localhost请求也是如此。 一些可能令人困惑的事情。
另外,请记住,通过SOCKS5,DNSparsing发生/可能发生在代理端,允许非常方便的设置,如在主机文件中定义服务器的本地别名。
忘了说你可以添加多个主机:端口组合。 你只需要用空格将它们分开。 sshd_config手册页是这里的参考。 希望这可以帮助!
使用sshd_config中的PermitOpen ,你当然可以实现这种设置。
但是请记住,单独禁用端口转发实际上并不能提高安全性,如果您仍允许用户shelllogin:他们可以直接从服务器访问Internet,甚至可以安装自己的转发器。 无论如何,你必须信任你的shell用户。
如果您需要阻止用户直接访问某些端口范围甚至整个Internet(只允许使用本地服务,例如发送和接收邮件),则可以使用iptables的扩展包匹配模块,也就是模块所有者 ,它允许过滤数据包基于业主uid或gid甚至通过进程名称。