ipfw: Too many dynamic rules

Ian Smith smithi at nimnet.asn.au
Fri Sep 10 03:46:14 UTC 2010


On Thu, 9 Sep 2010, Vlad Galu wrote:
 > 2010/9/9 Marat N.Afanasyev <amarat at ksu.ru>:
 > > I wonder, are these dynamic rules really necessary? let's see, a client
 > > connects to your web-server and you immediately should create a new dynamic
 > > rule, therefore you participate in this DoS attack as well as attacker. ;)
 > 
 > With a stateless firewall, you help the attacker even more. Because
 > he's able to connect to your httpd/whatever daemon is listening
 > directly and he can easily fill up the descriptor table of that
 > process. Limiting the number of states/connections from the same host
 > prevents that. Sure, those states eat up RAM, but so do the
 > established connections. Having a slightly more aggressive state
 > expiry policy always helps. Sure, there are accf_http(9), accf_data(9)
 > and various forking workarounds, but they don't work unless your TCP
 > server is specifically designed to use them.

Agreed.

 > PF also allows you to tarpit malicious hosts based on how often they
 > try to reconnect - you can dynamically add them to a table which you
 > can refer to from ALTQ.

As mentioned, ipfw 'limit' rules accomplish effectively the same without 
needing an extra table; eg only allowing N simultaneous connections from 
any one address.  If N were say 4, even a distributed attack by 20 hosts 
will only allow 80 concurrent connections, no big deal for the firewall 
and no need to bother trying to limit connections later at the server.

That said, I've also tables blocking noted pests, including some recent 
distributed bots seeking eg blocklist='scripts/setup.php p=phpinfo();'
which irritated me enough to knock up a script to knock them off :)

BTW, Gareth:
... while talking to mail.lordcow.org.:
>>> DATA
<<< 550 5.1.1 <bsd at lordcow.org>... User unknown
550 5.1.1 <bsd at lordcow.org>... User unknown
<<< 503 5.0.0 Need RCPT (recipient)

cheers, Ian


More information about the freebsd-stable mailing list