Yesterday I wrote about the comment storms that were happening on my blog. Many people made some great suggestions and I plan on implementing many of them in the coming weeks. I found something, however, that was pretty simple and, so far, seems to be working beautifully.
Mod_limitipconn is a small Apache module that allows you to limit the number of simultaneous connections from any given IP address for any particular resource or mime-type. It built and installed without a hitch--within 15 minutes I was in business. Here's the configuration I'm using to limit connections to the comment CGI:
<IfModule mod_limitipconn.c>
<Location /mt/mt-comments.cgi>
MaxConnPerIP 1
</Location>
</IfModule>
Be sure you se
Now, I see lines like this in my error_log:
[Fri Dec 15 06:57:43 2006] [error] [client 219.95.92.19] Rejecting client at 219.95.92.19
I decided not to ban IP numbers, although banning them in bulk isn't too hard with mod_rewrite which I use for other reasons anyway. I did put together a little shell script to tell me the IP numbers of the offenders that others might find helpful.
#/bin/bash
Y=$(date +%Y)
M=$(date +%m)
D=$(date +%d)
grep $1 /web/logs/$Y/$M/$D/access.log
| sort
| awk -F\\ '{print $1}'
| uniq -c
| sort
(Remove the newlines in the pipe if you use this.) This program produces a report like this:
[web@lynx web]$ ~/bin/find_abuse mt-comment
1 125.22.112.78
1 128.178.149.52
1 132.177.218.74
.
.
.
6 85.255.119.132
7 195.225.177.137
7 195.225.177.40
7 195.225.177.46
7 85.255.119.74
8 213.42.21.77
The first number is the number of connections to mt-comment (specified as an argument) from that IP address. Clearly thre's still some abuse going on, but it's not happening with simultaneous connections which is what was killing me.




