Agv*_*rth 55 security linux firewall iptables icmp
我想我几乎在 CentOS 5.3 系统上完成了 iptables 设置。这是我的脚本...
# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains
# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP
# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT
# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Block all other traffic
iptables -A INPUT -j DROP
Run Code Online (Sandbox Code Playgroud)
就上下文而言,这台机器是虚拟专用服务器 Web 应用程序主机。
在之前的一个问题中,Lee B 说我应该“锁定 ICMP 多一点”。为什么不完全阻止它?如果我这样做会发生什么(会发生什么坏事)?
如果我不需要阻止 ICMP,我该如何进一步锁定它?
Mic*_*aff 124
ICMP 是一种方式,不仅仅是“traceroute”和“ping”。当您运行 DNS 服务器(端口无法访问)时,它用于反馈,在现代 DNS 服务器中,这实际上可能有助于选择不同的机器来更快地查询。
如上所述,ICMP 也用于路径 MTU 发现。您的操作系统可能会在它发送的 TCP 数据包上设置“DF”(不要分段)。如果路径上的某些内容无法处理该大小的数据包,则期望返回 ICMP“需要分段”数据包。如果您阻止所有 ICMP,您的机器将不得不使用其他回退机制,这些机制基本上使用超时来检测 PMTU“黑洞”并且永远不会正确优化。
此外,您应该问问自己为什么要阻止 ICMP。你特别想在这里阻止什么?很明显,您不了解 ICMP 的用途,这很常见。在阻止您不完全理解的内容时,我会非常谨慎。
为了更难了解这一点,许多常见的防火墙书籍都说“阻止 ICMP”——很明显,他们的作者从未阅读过 RFC 或必须解决围绕此类建议的问题。阻止所有 ICMP 是不好的建议。
现在,限制它的速率也会造成伤害。如果您的机器繁忙,或者即使不繁忙,您也可以获得大量 ICMP 流量。我的 Web 服务器每分钟可能会收到大约 10-100 个 ICMP 数据包,其中大部分是 PMTU 发现。即使有人选择用某种类型的 ICMP 数据包攻击我的服务器,这也没什么大不了的。如果您的机器接受甚至一个 TCP 连接(ssh、http、邮件等),那么这可能是一个比被误解的 ICMP 更大的攻击向量。
wom*_*ble 26
ICMP 用于一系列诊断(例如 ping、traceroute)和网络控制(例如 PMTU 发现)功能。不分青红皂白地阻止 ICMP 会导致其他人各种各样的胃灼热,除非您确切地知道自己在做什么,否则就不要管它。
Ant*_*ibu 16
我一直不明白为什么人们会为 ICMP 计时,如上所述,它只会让自己和他人头疼。您可以确定主机是否足够容易启动,只要它足够有限以至于不能用作 DOS,那么我从未听说过任何令人信服的理由来阻止它。(如果有人能想出一个理由,请张贴)
您可以尝试限制 icmp 这样它就不能用作 DOS 攻击。但是有太多的故障排除工具,例如 ping、mtr(我忘记了 Windows 等效项)、traceroute (tracert),它们使用 icmp。完全放弃它们是愚蠢的。即使您无法在任何端口上 telnet,这是检查您的实例是否已启动的好方法。
--limit 10/secondRun Code Online (Sandbox Code Playgroud) 考虑到计算机实际可以处理的数量,您的 icmp 规则可能是一个不错的限制。
这是另一种观点,本着安全理论所建议的精神。其他张贴者认为安全实践通常过于热心是正确的,但其中大部分都有很好的基础。
安全理论通常是你只启用你需要的。攻击者可以使用其他东西(可能有用 - 例如 ping 响应)来确定您的系统的范围,或者可能作为某些尚未发现的漏洞的攻击媒介。
那么,看看 ICMP 消息类型,您需要什么才能让您的系统正常、正确运行?
...等等。如果您真的想了解这一点,请了解各种 ICMP 类型及其用途。在维基百科的文章是一个很好的起点。
在实践中,真正丑陋的是重定向;如果您只想做一些快速有用的事情,请阻止它并允许其余的。
我要补充一点,IPtables 连接跟踪将允许为活动连接适当返回 ICMP 数据包。因此,如果您正在运行 conntrack,您应该能够阻止大多数 ICMP 入站,只要您接受相关数据包(在您阻止规则集中的 ICMP 之前)。
它是解决网络连接问题的有用诊断工具。
它还允许您使用互联网上其他地方的连接,这些连接使用的 MTU 小于您网络上的 MTU。如果您尝试将数据包发送到太大且无法分段的位置,则设备会丢弃该数据包,并将需要 ICMP 分段的数据包发送回发送方。如果丢弃所有 ICMP 数据包,您就会丢失这些数据包,并且网络上会发生奇怪的事情。
真正的问题是“为什么要阻止 ICMP?” 你有什么收获?只需在您的边界和您的宝贵资产前制定良好的过滤规则即可。
| 归档时间: |
|
| 查看次数: |
36687 次 |
| 最近记录: |