我正在读一个关于潜行和closures港口之间差异的网站。
http://www.grc.com/faq-shieldsup.htm
封闭的端口如果closures,则会回显数据包。 但是,一个潜行的港口根本不会有任何反应。
build议隐藏所有不使用的端口吗? 如果是这样,你怎么这样做呢?
取决于你想要做的事情。 基本上,如果你没有回复说封闭端口的包,那么合法用户的生活就会变得更加困难,但是对于任何攻击者来说,试图打入盒子也是一件难事。 它不会阻止有人扫描盒子来查找哪些端口是打开的,但是可能会降低端口的速度。 这可能会让人们不太可能首先发现你的系统存在。
这是一个在世界知名港口提供服务的系统吗? (如networking服务器)然后试图“隐藏”您的端口将不会做太多。 好。
这是一个什么都不需要知道的系统吗? 去吧。
你没有说你正在运行什么操作系统等,所以答案如何变化。 在使用iptables的Linux上,你基本上做的是“-j DROP”而不是“-j REJECT”。
一些操作系统响应连接请求(在TCP的情况下)或未经请求的分组(在UDP的情况下),分组指示没有在那里监听。 某些操作系统可以configuration为将传入数据包丢弃到没有任何响应没有响应的端口。
对我来说,两种行为都不如对方好。 我承担这一点很简单:不要运行不必要的程序来监听传入的连接/数据包。 您必须运行的程序应尽可能安全地configuration。
担心你的盒子对端口扫描的响应似乎对我来说是错过了重点。 在我看来,运行GRC.com的史蒂夫·吉布森(Steve Gibson)有点疯狂。 (他的“nanoprobes”页面还在吗?)他的一些文章似乎是恐怖的。
是否有一个特定的原因,你想隐藏你的端口? 它不会使您的计算机不可见(因为您的开放端口仍然会响应端口扫描),为您做了额外的工作,并打破了RFC 791(TCP)的规则。 你是否经常进行港口扫描,或只是购买史蒂夫·吉布森的偏执狂;)
无论如何,史蒂夫·吉布森(Steve Gibson)在你链接的页面上回答这个问题:
http://www.grc.com/faq-shieldsup.htm#STEALTH
Q ShieldsUP! 将我的端口显示为“已closures”而不是“隐身”,但是我希望隐身! 我如何获得“隐身”?
严格来说,“Stealthed”端口是违反适当的TCP / IP规则的行为。 正确的行为要求一个封闭的端口回应一条消息,指出收到的请求已被拒绝,但已被拒绝。 这使得发送系统知道它的打开请求已被接收,所以它不需要继续重试。 但是,当然这个“肯定否定”也可以让发送系统知道接收端实际存在一个系统。 。 。 这是我们想要避免在恶意黑客试图探测我们的系统的情况下。
当我开发这个站点的端口探测技术来描述一个封闭的端口时,我创造了“隐身”这个术语,这个端口通过不向任何开放者发送任何东西而select保持完全隐藏,而宁愿看起来根本不存在。
由于“隐身”是互联网系统的非标准行为,它必须通过某种防火墙安全系统来创build和执行。 个人电脑使用的本地TCP / IP接口软件将总是回复一个端口被closures。 因此,必须在计算机系统中增加一些附加软件或硬件,以“隐藏防火墙”的forms来压制其“封闭端口”应答。
要从您的系统获得全面的隐形模式状态,我强烈推荐使用ZoneLabs,Inc.的完全免费的ZoneAlarm 2防火墙。访问他们的网站www.ZoneLabs.com,了解更多有关这款优秀免费防火墙的信息,然后下载最新版本。
将防火墙configuration为静默放置而不是回复。 大多数防火墙都有办法做到这一点。 上次我需要使用OpenBSD的ipf,这是“block drop”与“block return”的区别。
要理解这个页面有点困难。 也许它是由孩子写的,或者是出售无用产品的人写的。 所以让我们开始新鲜。
现在我们来讨论一下TCP。
当有人试图连接到你不想允许连接的TCP端口(发送一个SYN数据包)时,你有几个select你的响应:
1)如果你没有监听这个TCP协议的端口,则响应一个RST包。 通常你会把这称为“closures”端口。 如果你正在运行一些允许来自其他来源的连接的服务,把它称为“stealthed”端口是有意义的。
2)接受连接并立即断开连接(RST或FIN)。 历史上,TCP封装器对阻塞的连接有这种行为。
3)忽略数据包。 这很常见。 如果你正在运行一些允许来自其他来源的连接的服务,把它称为“stealthed”端口是有意义的。
4)接受连接并忽略该连接的更多数据包。 这可能会惹恼攻击者,尽pipe可能不会增加任何真正的安全性。
5)回应一个合理的ICMP错误。 通常由路由器(包括防火墙)完成,但不像通常基于主机的“防火墙”那样完成。
6)回应不合理的ICMP错误。 只是惹恼/混淆攻击者
7)反应不一致和随机。 这可以惹恼攻击者,但可能不会增加任何真正的安全。
你如何回应取决于你的目标是什么。 如果您希望计算机看起来不是一个有效的节点,则无论您是否运行了服务(允许来自其他来源的连接),都应该忽略该数据包。 但是如果你要回应任何stream量,这并不能掩盖你的存在。
如果你想禁止连接,而不是试图隐藏你的IP地址是一个活跃的,你最好的select可能是用RST数据包做出响应,不pipe你是否正在监听端口。 这隐藏了您是否在该端口上有一个允许来自某些地址的连接的服务,或者该端口上是否没有服务正在运行。
select#4或#7可以阻止某人运行端口扫描器,但可能会导致您偶尔的操作烦恼。 这对于你实际使用的地址来说并不是那么有用,但是对于一个蜜jar来说可能是有趣的。
select2是常见的,因为一些stream行的过滤软件(例如TCP Wrappers)要求连接被接受以获得源地址,以便确定是否应该被允许。 这是基于历史操作系统的限制,可能与现代操作系统的全新安装无关。
您的select将取决于您的要求。 这包括您是否有任何允许从每个地址进行连接的端口,以及是否有任何允许从某些地址进行连接的端口。
如果您不允许来自任何来源的传入连接,那么您最好放弃任何不允许的数据包。 这隐藏了你的机器的存在,使得随机攻击者不太可能相信这是一个有效的地址。
如果您允许某些端口上的任何来源以及其他端口上的某些来源的传入连接 – 一种非常常见的configuration – 您可以select一些合理的选项。 如果您发回的RST是您根本没有听的端口,但是对于您故意不允许的端口行为不同,则显示您允许从选定的源连接的端口。 我相信最好的select是发回RST,不pipe你是不是在这个港口上听,或者你不允许来源的连接。
这正是一种安全问题,应该包括威胁模型,解释您为每个人提供的服务和select的来源,以及您需要帮助定义安全策略的安全策略或说明。 由于引入新的术语而没有明确的定义,导致更多的混淆。
对于客户端系统,configuration正确的软件防火墙应该使您的端口“隐身”,我刚刚运行我的个人箱子,暴露在互联网上,对付Sheilds Up,我的所有端口都被列为隐身。
当我configuration防火墙时,我不喜欢closures端口通过防火墙传回信息,攻击者可以利用这些信息来了解我的环境,但是具有攻击者可以利用的开放端口更糟糕。
如果您使用防区防火墙,并且您发现端口20和21closures,但不是隐身,您将如何使这些隐身