微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

domain-name-system – iptables规则,仅允许HTTP流量到一个域

我需要将我的机器配置为仅允许来自/来自serverfault.com的HTTP流量.所有其他网站,服务端口都无法访问.我想出了这些iptables规则:
#drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

#Now,allow connection to website serverfault.com on port 80
iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT

它不能很好地工作:

>在我删除所有内容之后,继续执行规则3:

iptables -A OUTPUT -p tcp -d serverfault.com –dport 80 -j ACCEPT

我收到此错误

iptables v1.4.4: host/network `serverfault.com' not found
Try `iptables -h' or 'iptables --help' for more information.

你认为它与DNS有关吗?我也应该允许吗?或者我应该只将IP地址放在规则中?
你认为我想要做的事情可以用更简单的规则来实现吗?怎么样?

我将不胜感激任何帮助或提示.非常感谢!

解决方法

使用IPTables规则,订单很重要.按顺序添加和应用规则.此外,手动添加规则时,会立即应用.因此,在您的示例中,一旦设置了认策略,通过INPUT和OUTPUT链的任何数据包都会开始被丢弃.顺便提一下,这也是您收到错误的原因
你做过的消息.这是怎么回事:

>应用认DROP策略
> IPTables接收主机名作为目标
> IPTables尝试在’serverfault.com’上进行DNS查找
> DROP操作阻止DNS查找

虽然源/目标选项将接受主机名,但强烈建议不要这样做.引用手册页,

Hostnames will be resolved once
only,before the rule is submitted to
the kernel. Please note that
specifying any name to be resolved
with a remote query such as DNS is a
really bad idea.

Slillibri击中了他的答案,你错过了DNS ACCEPT规则.在您的情况下,这无关紧要,但通常我会在稍后的流程中设置认策略.你想要的最后一件事是远程工作并在打开认拒绝后允许SSH.

此外,根据您的发行版,您应该能够保存防火墙规则,以便在开始时自动应用它们.

了解所有这些,并重新安排您的脚本,这是我建议的.

# Allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT

# Allow DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# Now,RELATED -j ACCEPT

# Drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

原文地址:https://www.jb51.cc/html/229311.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐