Upstream NAS flooding my radius
Nathan M
locu.lists at gmail.com
Sat Dec 17 00:37:03 CET 2011
On Fri, Dec 16, 2011 at 5:18 AM, Alan DeKok <aland at deployingradius.com> wrote:
>
> People generally upgrade their systems to deal with peak loads.
>
Thanks for the input. As previously mentioned, it's not what I would
really consider a peak load issue, but more of a DOS from a
mis-configured or poorly managed NAS, which is entirely outside of our
control; however, we have to accept packets from it and have no
ability to resolve whatever their problem may be.
Rather than updating the systems to accommodate 6000 packets/second
from this one NAS when it sends a spew of authentication requests,
I'll share the solution I'm trying out in case anyone else winds up in
a similar predicament. In all tests thus far, this shaves off the
wild peak load and distributes it over a short period of time as the
NAS I'm working with will retry frequently if the first attempt is
dropped.
iptables has a recent module which seems to fit the bill as it also
tracks source IP. The limit module was also pretty close; however, it
limits all packets to a port ignoring the source IP. The rules below
using the recent module, which on RHEL/CentOS system go into
/etc/sysconfig/iptables limit inbound auth packet rates to no more
than 60/second, and acct packets to 120/second from any given source
IP. (ie.. if there are 2 separate sources of packets it would allow
60/s auth requests from each). These same rules would protect against
other DOS based attacks to these ports as well I believe.
-A INPUT -p udp -m udp --dport 1645 -m state --state NEW -m recent
--rcheck --seconds 1 --hitcount 60 --name RADAUTH --rsource -j LOG
-A INPUT -p udp -m udp --dport 1645 -m state --state NEW -m recent
--rcheck --seconds 1 --hitcount 60 --name RADAUTH --rsource -j DROP
-A INPUT -p udp -m udp --dport 1645 -m state --state NEW -m recent
--set --name RADAUTH --rsource
-A INPUT -m state --state NEW -m udp -p udp --dport 1645 -j ACCEPT
-A INPUT -p udp -m udp --dport 1646 -m state --state NEW -m recent
--rcheck --seconds 1 --hitcount 120 --name RADACCT --rsource -j LOG
-A INPUT -p udp -m udp --dport 1646 -m state --state NEW -m recent
--rcheck --seconds 1 --hitcount 120 --name RADACCT --rsource -j DROP
-A INPUT -p udp -m udp --dport 1646 -m state --state NEW -m recent
--set --name RADACCT --rsource
-A INPUT -m state --state NEW -m udp -p udp --dport 1646 -j ACCEPT
- N
More information about the Freeradius-Users
mailing list