[Chilli] MAC blacklist and other security measures
David Bird
david at coova.com
Fri May 21 04:46:39 UTC 2010
Hi,
> Let me revive this thread in order to add a
> few comments that would be nice to have and publicly
> archived, specially because a few things have changed.
>
Thanks for your feedback!
> Using the scenario where you reply with
> Access-Accept as a DEFAULT entry has a side effect,
> traffic is allowed on all other ports (if you do a
> full NAT) without needing to authenticate on the
> captive portal.
>
Yes, giving an access-accept during MAC authentication will have it's
side effects. There are a few options, however, that you can put into
RADIUS replies, more on that below.
>
> On 06-04-2010 12:42, Felipe Augusto van de Wiel wrote:
> > On 21-03-2010 03:16, David Bird wrote:
> >> Hm.. one way might be to enable MAC authentication
> >> such that:
> >
> > That means enable 'macauth', right? Using
> > only 'macauthdeny' didn't result in the expected
> > behavior.
>
> Although it was not clear before, now it
> makes a lot of sense that macauthdeny depends on
> macauth, otherwise you are not authenticating MAC
> addresses.
>
Indeed, macauthdeny is used with macauth. It makes it such that an
Access-Reject means the user session is put in DROP state (where there
is no returning from).
>
> In this new scenario, it would be great to
> have a way to "drop" clients that got a Access-Reject
> from RADIUS.
>
That is what the macauthdeny option does, really. If you don't want all
Access-Accepted sessions to have full access, then you can try out the
feature where you also return this in the access-accept:
ChilliSpot-Config = 'splash'
which will put the user in a 'splash' state (full Internet access, just
with portal redirection). You can also try 'require-uam-auth' (which
requires using option --wpaguests even if not using WPA, btw) which will
put the user in the standard "DNAT" state. In an Access-Reject, you can
also use ChilliSpot-Config = 'admin-reset' to release the DHCP release
right away. Using that, you can also enforce a "DROP" state where you
keep revoking the lease (but will also potentially mean you get a LOT of
mac auth RADIUS requests).
>
>
> >> - You always return Access-Accept (plus attribute
> >> Chillispot-Config = 'splash') for non-blocked
> >> users.
> >
> >> - You can return an Access-Reject for blocked users.
> >> When used with --macauthdeny, it means these
> >> devices will be ignored.
> >
> > The proper way to achieve that would be to
> > use a DEFAULT user in RADIUS? Here is the relevant
> > part of my FreeRADIUS' users file:
>
> I changed it, now I add multiple entries but
> I check Calling-Station-Id, that gives the MAC and
> it is sufficient to make a blacklist.
>
>
> > <...>
> > | AA-BB-CC-DD-EE-FF Auth-Type := Reject
> > | Reply-Message = "MAC address administratively blocked."
> > |
> > | 11-22-33-44-55-66 Auth-Type := Reject
> > | Reply-Message = "MAC address administratively blocked."
> > |
> > | DEFAULT Auth-Type := Accept
> > | Chillispot-config = 'splash',
> > | Fall-Through = Yes
> > |
> > | "user" Cleartext-Password := "pass"
> > | Reply-Message = "Hello, %{User-Name}"
> > <...>
>
> Instead of the above, I now use:
>
> <...>
> | "user" Calling-Station-Id == AA-BB-CC-DD-EE-FF, Auth-Type := Reject
> | Reply-Message = "MAC address administratively blocked."
> |
> | "user" Calling-Station-Id == 11-22-33-44-55-66, Auth-Type := Reject
> | Reply-Message = "MAC address administratively blocked."
> |
> | "user" Cleartext-Password := "pass"
> | Reply-Message = "Welcome to our network!"
> <...>
>
>
> Of course, I had to disable the macauth and as
> this renders macauthdeny not very useful, I also turned
> it off.
>
>
> > Of course, that only worked after I added an
> > include line inside /etc/freeradius/dictionary:
> >
> > $INCLUDE /etc/freeradius/dictionary.chillispot
> >
> >
> > Now, the MAC addresses listed on the users
> > file gets a 'drop' state when chilli starts, the rest
> > gets a 'splash' state and addresses in the ethers file
> > stays as 'dnat'. Once the user authenticates thru the
> > splash screen they change to 'pass' as expected.
>
> It then goes back to the behavior where everybody
> is 'dnat' until authenticated and changed to 'pass'.
>
> I was wondering if it is possible to have the
> blocked MAC address to move to a 'drop' state after
> Access-Reject, is there such possibility in Coova?
>
It might be nice to have a "ChilliSpot-Config = 'blocked'" option that
can be used outside of macauthdeny for this kind of use.
> The idea is that MAC addresses block can't
> even navigate on the authorized pages like search
> engines or map sites.
>
>
> Once again, I do hope it help others looking for
> a blacklist implementation. :)
More information about the Chilli
mailing list