新手来了 我发现了以下设置防火墙的规则,(来自 Linux 如何工作的书)
iptables -P INPUT DROP # the default policy
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp '!' --syn -j ACCEPT # accepting incoming
connections from everywhere except those initiating a connection hence syn
到目前为止一切都很好(或者看起来很好)。当我尝试为 DNS 添加规则时,问题就来了,这就是我尝试过但似乎没有正确的方法(一次一个):
INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -s 127.0.1.1 -j ACCEPT
iptables -A INPUT -p udp --source-port 53 -j ACCEPT
期望的结果: 阻止任何来自外部的连接初始化(ssh、icmtp、...)、启用 DNS 查找和 Web 浏览(curl、wget、telnet ...),我认为我可以在本地运行不相关网络服务器或数据库服务器...
任何帮助,将不胜感激。
我建议您创建一些允许所有已建立和相关流量的输入规则,例如:
此外,您应该始终允许您的环回设备:
如果您的默认输出策略是接受,那么大多数问题应该会消失。否则,您还应该添加:
并打开 HTTP(s)、DNS、ICMP 或任何您需要的端口。
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
https://en.wikibooks.org/wiki/Communication_Networks/IP_Tables
允许已建立的会话 我们可以允许已建立的会话接收流量:
如果上面的行不起作用,您可能在一个阉割的 VPS 上,其提供商没有提供扩展,在这种情况下,可以使用劣质版本作为最后的手段:
允许特定端口上的传入流量
阻塞交通
通过编辑 iptables 启用环回:
记录不需要的流量:
要确认已成功进行更改:
用于
iptables -L -v
获取更多详细信息:空iptables:
保存 iptables
如果你现在重启你的机器,你的 iptables 配置就会消失。但是,您可以保存配置并让它自动启动,而不是每次重新启动时都输入。
将防火墙规则保存到文件
脚本 /etc/network/if-pre-up.d/iptablesload 将包含:
和 /etc/network/if-post-down.d/iptablessave 将包含:
然后确保给两个脚本执行权限:
资源