我正在阅读一个关于隐身端口和封闭端口之间区别的网站。
http://www.grc.com/faq-shieldsup.htm
如果关闭,关闭的端口将回显数据包。但是,隐藏的端口根本不会响应。
是否建议隐藏所有不使用的端口?如果是这样,你会怎么做呢?
我正在阅读一个关于隐身端口和封闭端口之间区别的网站。
http://www.grc.com/faq-shieldsup.htm
如果关闭,关闭的端口将回显数据包。但是,隐藏的端口根本不会响应。
是否建议隐藏所有不使用的端口?如果是这样,你会怎么做呢?
一些操作系统响应连接请求(在 TCP 的情况下)或未经请求的数据包(在 UDP 的情况下),数据包表明那里没有任何东西在监听。一些操作系统可以配置为将传入的数据包丢弃到没有任何响应的端口。
对我来说,两种行为都不比另一种更好。我的看法很简单:不要运行不必要的程序来监听传入的连接/数据包。您必须运行的程序应尽可能安全地配置。
对我来说,担心你的盒子响应端口扫描似乎没有抓住重点。在我看来,史蒂夫·吉布森(经营 GRC.com)有点疯狂。(他的“纳米探针”页面还在吗?)他的一些作品似乎在散布恐惧。
取决于你想要做什么。基本上,如果您不回复说端口已关闭的数据包,您将使合法用户的生活更加困难,但也可能使任何试图闯入该盒子的攻击者的生活变得困难。它不会阻止有人扫描盒子以找出打开的端口,但它可能会减慢它们的速度。它可能会降低有人首先发现您的系统存在的可能性。
它是在世界知名港口提供服务的系统吗?(例如网络服务器)然后尝试“隐藏”您的端口不会有太大作用。好的。
它是一个什么都不做的系统吗?大胆试试吧。
你没有说你正在运行什么操作系统等,所以答案如何变化。在带有 iptables 的 Linux 上,基本上你会使用“-j DROP”而不是“-j REJECT”。
你有什么特别的原因想要隐藏你的端口吗?它不会使您的计算机不可见(因为您的开放端口仍会响应端口扫描),为您做额外的工作,并违反 RFC 791 (TCP) 的规则。你是频繁端口扫描的对象,还是只是相信史蒂夫吉布森的偏执狂;)
无论如何,史蒂夫吉布森在您链接到的页面上回答了这个问题:
http://www.grc.com/faq-shieldsup.htm#STEALTH
配置防火墙以静默丢弃它们而不是回复。大多数防火墙都有办法做到这一点。上次我需要使用 OpenBSD 的 ipf,它是“块丢弃”与“块返回”。
http://www.openbsd.org/faq/pf/filter.html#syntax
http://www.openbsd.org/faq/pf/options.html#block-policy
理解那个页面有点困难。也许它是由儿童或销售无用产品的人写的。所以让我们重新开始吧。
我们现在只讨论 TCP。
当有人尝试连接到您不希望允许连接的 TCP 端口(发送 SYN 数据包)时,您可以选择以下几种响应方式:
1) 如果您没有在此端口上侦听 TCP 协议,则使用 RST 数据包进行响应。通常你会称之为“封闭”端口。如果您在其上运行一些允许来自其他来源的连接的服务,则将其称为“隐形”端口是有意义的。
2) 接受连接并立即断开(RST 或 FIN)它们。TCP 包装器在历史上对阻塞的连接有这种行为。
3) 忽略数据包。这很常见。如果您在其上运行一些允许来自其他来源的连接的服务,则将其称为“隐形”端口是有意义的。
4) 接受连接并忽略该连接的进一步数据包。这可能会惹恼攻击者,尽管可能不会增加任何真正的安全性。
5) 以合理的 ICMP 错误响应。通常由路由器(包括防火墙)完成,但不像基于主机的“防火墙”那样通常完成。
6) 以不合理的 ICMP 错误响应。只是为了惹恼/迷惑攻击者
7) 反应不一致和随机。这可能会惹恼攻击者,但可能不会增加任何真正的安全性。
你如何回应取决于你的目标是什么。如果你想让机器看起来不是一个有效的节点,你应该忽略这个数据包,不管你是否有一个服务正在运行(允许来自其他来源的连接)。但是,如果您要响应任何流量,这无助于隐藏您的存在。
如果您只想禁止连接,并且不想隐藏您的 IP 地址是活动的,那么您最好的选择可能是使用 RST 数据包进行响应,无论您是否正在侦听该端口。这隐藏了您在该端口上是否有允许来自某些地址的连接的服务,或者该端口上是否没有运行任何服务。
选择 #4 或 #7 可能会让运行端口扫描器的人感到沮丧,但偶尔也会给您带来操作上的烦恼。对于您实际使用的地址来说,这并不是那么有用,但对于蜜罐来说可能很有趣。
选择 #2 很常见,因为一些流行的过滤软件(例如 TCP Wrappers)要求接受连接以获取源地址,以确定是否应允许连接。这是基于历史操作系统限制,可能与现代操作系统的新安装无关。
您的选择将取决于您的要求。这包括您是否有任何端口允许从每个地址连接,以及您是否有任何端口允许从某些地址连接。
如果您不允许来自任何来源的传入连接,您不妨丢弃任何不允许的数据包。这隐藏了您机器的存在,使随机攻击者不太可能相信它是一个有效地址。
如果您允许来自某些端口上的任何来源的传入连接以及来自其他端口上的某些来源的传入连接 - 这是一种非常常见的配置 - 您有一些合理的选择可供选择。如果您为根本不侦听的端口发回 RST,但对于您故意禁止的端口的行为有所不同,则表明您允许从选定的源连接到哪些端口。我相信更好的选择是发回 RST,无论您是根本不监听该端口还是不允许来自源的连接。
这正是应包括威胁模型的安全问题,说明您向所有人提供的服务与选择的来源,以及您在定义安全策略时需要帮助的安全策略或说明。额外的混乱是由于引入了没有明确定义的新术语。
对于客户端系统,正确配置的软件防火墙应该使您的端口“隐身”我刚刚运行了我的个人盒子,它针对 Sheilds Up 暴露在互联网上,我的所有端口都被列为隐身。
当我配置防火墙时,我不希望关闭端口将信息通过防火墙传回,攻击者可以使用这些端口来了解我的环境,但是让攻击者可以利用的开放端口要糟糕得多。