Answers:
通常,当您希望另一端知道端口不可达时,请使用REJECT。对于与您不希望别人看到的主机建立连接,请使用DROP。
通常,LAN内部连接的所有规则都应使用REJECT。对于Internet,除了某些服务器上的ident外,通常会删除来自Internet的连接。
使用DROP会使连接看起来好像是到一个未占用的IP地址。扫描程序可以选择不继续扫描未占用的地址。假定可以使用NAT重定向防火墙上的连接,则众所周知的服务的存在不一定表示地址上服务器的存在。
标识应在提供SMTP服务的任何地址上传递或拒绝。但是,SMTP服务对Ident查找的使用已停止使用。有聊天协议也依赖于工作的身份服务。
编辑:使用DROP规则时:-UDP数据包将被丢弃,其行为与连接到无服务的无防火墙端口相同。-TCP数据包将返回一个ACK / RST,该响应与没有服务的开放端口将进行响应的响应相同。一些路由器将代表已关闭的服务器以和ACK / RST进行响应。
使用REJECT规则时,将发送一个ICMP数据包,指示该端口不可用。
区别在于REJECT目标向源发送拒绝响应,而DROP目标则不发送任何响应。
例如,这对于身份服务很有用。如果使用REJECT,则客户端不需要等待超时。
有关此的更多信息:http : //www.linuxtopia.org/Linux_Firewall_iptables/x4550.html
通常,您希望忽略攻击者对某些端口的探测,这意味着您不想发回“连接被拒绝”。“拒绝连接”的意思是:“这里有一台服务器”,可能会提供更多信息,而丢弃数据包并不会提供有关软件版本,可能存在的漏洞甚至是服务器正在监听您IP的事实的线索。
以上是使用DROP代替REJECT的主要原因之一。
我在这里看到很多矛盾的答案,这是Google上第一篇使用正确关键字的文章;这是正确的解释。
很简单:
DROP对该数据包什么也不做。它不会转发给主机,也不会得到答复。IPtables的联机帮助页说它将数据包丢在地板上,即对数据包不做任何事情。
REJECT与DROP的不同之处在于,DRJ确实将数据包发回,但是答案就像是服务器位于IP上,但端口没有处于侦听状态。如果使用TCP或使用UDP无法到达ICMP目标端口,则IPtables将发送RST / ACK。
如果您要完全隐藏计算机的存在,-j DROP
则适当。例如,您可以使用它来实现黑名单。
如果要隐藏端口已打开的事实,则应模仿端口未打开时发生的行为:
-p tcp -j REJECT --reject-with tcp-reset
-p udp -j REJECT --reject-with icmp-port-unreachable
如果端口扫描程序发现少数端口正在丢弃数据包,而大多数端口拒绝它们,则可以假定丢弃的数据包位于打开但隐藏的端口上。
尽管有很多正确答案,但我只有两美分:
这是我关于主题禁令(防火墙,IDS等)的简短PoC FW.IDS-DROP-vs-REJECT。
不久:
DROP
如果禁止所有端口,则可用于新旧入侵者(因此服务器似乎位于入侵者一侧)REJECT --reject-with tcp-reset
是多端口禁止的最佳选择,因为它看起来像一个真正的封闭端口DROP
并且REJECT
(没有tcp-reset
)将向入侵者发出“信号”,表明存在某种阻塞(因此可能会刺激他继续进行“攻击”,以期提供所需的数据)在某一点)是的,使用DROP是没有意义的。使用拒绝。
即使规则说“ DROP”,系统仍会使用TCP RST / ACK答复传入的SYN-这是没有服务运行的端口的默认行为。(tcpdump等未记录此信息。)
如果服务正在运行,则SYN与TCP SYN / ACK匹配。
因为DROP不会像往常一样使用TCP SYN / ACK响应,而是使用RST / ACK,所以您的DROP规则将通告您的防火墙,并且端口扫描程序将知道您正在对某些内容进行防火墙保护,并且可能会不断打击您赶上防火墙。
现在,nmap可以报告“已过滤”而不是“关闭”,例如:
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -I INPUT -p tcp --dport 1111 -j DROP
$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
1111/tcp filtered lmsocialserver
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
$ iptables -D INPUT 1
因此,唯一的“不可见”防火墙设置是专用设备位于设备之间并且仅选择性转发端口的设置。
如果您真的想弄乱基本的扫描器,可以使用TARPIT tcp连接,它将TCP窗口设置为0,这样在打开连接后就不会传输任何数据,而忽略关闭连接的请求,这意味着扫描器必须等待如果需要确保连接超时发生。但是,对于攻击者而言,检测到这一点并使超时时间非常短是微不足道的。
考虑到所有因素,您最好只使用REJECT-或在服务器和Internet之间放置专用的端口转发设备。
或者仅在不需要防火墙的面向互联网的机器上运行服务。
通常,REJECT最适合Web服务器,因为无论尝试访问它的任何服务(可能经常会出现这种情况,您)都将迅速获得响应,并且用户或其他服务将不会一直在等待网络中断。
DROP
会发出SYN/ACK
?我从来没有在我的机器上看到它。
DROP
返回a的声明SYN/ACK
。我也从未在任何版本的上看到这种行为iptables
。如果您有支持您主张的消息来源,那么查看该消息将非常有用;当然,我刚刚完成的数据包转储不支持您的要求。