与 apache2 mod_proxy 配合使用的 iptables 配置

与 apache2 mod_proxy 配合使用的 iptables 配置

我的 iptables 配置如下:

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT

另外,我有 apache 虚拟主机:

<VirtualHost *:80>
    ServerName wiki.myite.com
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8901/
    ProxyPassReverse /  http://localhost:8901/
    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

我的主域名 www.mysite.com 使用此配置运行良好(我没有在其上使用代理重定向)。但我的虚拟主机 wiki.mysite.com 没有响应。

请帮我设置 iptables 配置,让 wiki.mysite.com 也能正常工作。我想我需要设置 iptables FORWARDING 选项,但我不知道该怎么做。

更新:

我有 1 台服务器,1 个 IP。服务器上的 80 端口上安装了 apache2.2。8901 端口上安装了 tomcat6。在 apache 中,我设置将域 wiki.mysite.com 转发到 tomcat (mysite.com:8901)。

我想通过禁用除 80、22 和 443 之外的所有端口来保护我的服务器。

答案1

好吧,如果您重定向到端口 8901,并且没有通过接受来自该端口的所有内容将您的 lo 接口标记为“受信任”,那么您可能只是在自己的防火墙上阻止了自己。

假设您已将站点设置为正确监听 8901,则应添加另一行:

iptables -A INPUT -p tcp --dport 8901 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8901 -j ACCEPT

或者直接添加:

iptables -A INPUT -i lo -j ACCEPT

这样您的机器就会知道在所有端口上接受本地主机数据包。

答案2

我通过在我的 iptables 配置中添加以下代码来解决这个问题:

iptables -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT

我打开了从本地主机到本地主机的所有端口。

好像撒旦小狗说道,但是:

iptables -A INPUT -i lo -j ACCEPT 

为所有人开放所有端口。

相关内容