我有一个 VPS,它充当 ssh 隧道网络服务器的代理。现在您可以调用: http://myserverdomain.com:1234您正在连接到 server1 http://myserverdomain.com:2345您正在连接到 server2
我添加了以下几行 apache 配置:
ProxyPass /server1 http://localhost:1234/
ProxyPassReverse /server1 http://localhost:1234/
我可以通过调用来访问该服务器http://myserverdomain.com/server1 (不过我必须更改相对 URL,不过那是另一回事)
问题是我想阻止通过端口号直接调用,这样就没有人可以通过扫描发现当前连接的所有隧道网络服务器http://myserverdomain.com开放端口。
我尝试设置 iptablesiptables -A INPUT -p tcp --destination-port 1234 -j DROP
但是它也阻止了我的 apache 代理(如果我理解正确的话,那是因为 iptables 的工作级别低于 apache 服务器 - 如果我错了,请纠正我)。
如果是这样,我该如何实现阻止端口直接调用它而不是 apache 代理重定向的目标?
答案1
如果您在同一台机器上同时拥有隧道和 Apache,则只需对隧道使用 127.0.0.1:1234 和 127.0.0.1:2345。
否则,在有隧道的机器上使用 iptables:
iptables -I INPUT -p tcp --dport 1234 -J DROP
iptables -I INPUT -p tcp -s 127.0.0.1 -J ACCEPT
iptables -I INPUT -p tcp -s $APACHE_IP -J ACCEPT
应该管用