我的问题是关于使用 iptables 阻止传入连接。我在 unix.stackexchange.com 上阅读了不同的帖子,并对 iptables 有了基本的了解。但我不明白一些具体的点。任何帮助表示赞赏。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
我想用这个代码。它必须阻止所有传入连接(所有端口都将对外部人员关闭),除了我发送的请求的响应。我想这很简单。
传入的 ICMP ping 请求会被上面显示的代码阻止吗?如果没有,为什么?
如果上面显示的代码没有阻止 ICMP ping 请求,添加
iptables -I INPUT -j DROP -p icmp --icmp-type echo-request
会阻止它吗?从被阻止的 IP 进行端口扫描可以获取有关我的计算机的信息吗?
我应该添加特定规则(例如
-p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
阻止特定洪水攻击)还是我的第一个代码可以处理它?
答案1
- 是的。所有非现有会话的入站流量都将被阻止
-
- 仅当(a)您已连接到该恶意主机,或者(b)它知道您应该在那里,并且根据您的缺乏响应,它可以推断您有防火墙
- 你已经被 #1 覆盖了
答案2
@roaima 的答案很好,但前提是你不开始允许某些事情。
我会推荐:
- 我会放入一个明确的 DROP 规则。它应该放在最后。
请注意,也制定政策。iptables -A INPUT -j DROP
- 如果您打算允许某些输入(例如 SSH 或 Web 服务器),请将 #4 放在任何“允许”之前。还可以阻止其他不好的东西,例如碎片。
- 你的第2点是正确的,但仅适用于IPv4。 IPv6 有不同的 ping。以及(经典的)一组不同的过滤器。
- 不要忘记也过滤 IPv6。