On Wed, 5 Nov 2008, Stuart Jansen wrote:

If you leave even a single port open, and attacker can discover you. It can act as a tarpit, but it doesn't reveal less about you.

You could argue that REJECT leaves doubt about whether a firewall exists. If there's even a single port open, DROP confirms that a firewall exists. The attacker just has to figure out how to get around it. An advantage of DROP is that it uses less CPU and bandwidth.

I wouldn't go as far as saying that REJECT is more secure or that "REJECT acts more like TCP". Both act like TCP. REJECT acts like the port is closed. DROP acts like the IP doesn't exist. Each has its advantages, but I don't think they're large enough to declare one more secure.

There are different ways to use REJECT.

The default REJECT behavior for TCP is to send an icmp port-unreachable packet in response, which acts like a firewall and says loudly "there's a firewall there". nmap reports this as "filtered".

A REJECT rule using "--reject-with tcp-reset" acts like a plain TCP stack rejecting a connection attempt because there's nothing listening on that port, and doesn't reveal anything about a firewall being in place. nmap reports this as "closed".

The REJECT with tcp-reset approach makes more sense to me if there are any public ports on the machine at all, since there's no security advantage to merely dropping packets, and inconvenience to anyone trying to use a port with no service.

If the machine has no public services whatsoever, then DROP makes sense because any attempts to connect will go into a uniform black hole, and it's arguably more secure through a wee bit of obscurity.

Jon


--
Jon Jensen
End Point Corporation
http://www.endpoint.com/

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to