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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/html/229311.html

猜你在找的HTML相关文章