我的 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
为所有人开放所有端口。