* Proposed new target SESSION allow for session/accounting management [RADIUS/802.1x]
@ 2012-04-09 12:14 Gregory Nietsky
2012-04-11 23:39 ` Pablo Neira Ayuso
0 siblings, 1 reply; 2+ messages in thread
From: Gregory Nietsky @ 2012-04-09 12:14 UTC (permalink / raw)
To: netfilter Dev List
Ive got a requirement for disabling / enabling IP based on the following
criteria
- Only allow pre authenticated traffic [hostapd/wired 802.1x for example]
- Limit this to a predetermined session limit by duration or throughput
- Disable traffic once idle for a predetermined duration
- Ability to read the information / reset sessions from user space
the application in mind is to deliver small micro servers running our
linux distro
for remote office / SOHO VPN connectivity with out the need for mid to
high end
switches control and monitor the usage on the VPN and or other points after
authenticating to the Remote site.
i have a embryonic framework of this that is coming together nicely and
consists of the following
a table structure consisting of 2 list head pointers [arrays] one for
mac one for ipaddr the
list data is linked to each based on jhash of mac address [only
information available from userland pre dhcp]
and the IP[4/6] addr set latter by the target [ideally based on DHCP i
may add a DHCP protocol
based match target] this allows for quick lookups and access based on
IP/MAC pair.
the block of memory used for this is (2 + 2 * num_buckets) *
sizeof(struct list_head).
struct list_head consists of 2 pointers [next/prev].
this is similar to the method borrowed from the xt_recent match.
the userland interface is done via a char dev with sysfs/udev support
- /proc/net/ interface using seq operations for listing all sessions
- /dev/ char dev for reading / writing session information memory is
allocated
for each access and a buffer used for reading / writing userland will
write a
action [add/delete/view/....] the output will be placed in a buffer
to be read
- netfilter target and iptables extension that will restrict traffic
im currently busy with this. it at the moment passes traffic has no check
and allows 2 flags --use-dest [should not be needed] --save-ip [to
assosiate the
ip with MAC this should ideally be done based on the IP assigned via
DHCP] this
will only be done if there is no IP set. as the MAC is only available
on INPUT traffic
we need to have the IP for accounting of traffic from dest.
using the incoming packet look up the session by mac addr and store the
source IP
to match returning traffic latter if there is no session traffic is
DROPED if the ip
is set and the IP/MAC is mismatched drop the packet
iptables -A [INPUT/FORWARD/PREROUTING] -j SESSION --save-ip
once the IP has been set returning packets will be allowed as the IP
will be
looked up and if assosiated to a valid session it will be allowed to
continue
iptables -A [ANY] -j SESSION [--use-dest]
for every packet that is allowd the len / time will be updated in the
session.
a session is only valid when a MAC[if avail]/IP match or the session
timer has not
expired or the last packet seen and current packet do not differ by more
than optional
idle time.
the current code is available here
http://pbx.distrotech.co.za/svn/netfilter_session/
please note work is been done on the actual target and what is written
here is a proposal
the current target passes all traffic.
once the module is loaded the following works
echo "[6 char]" > /dev/8021x
cat /proc/net/8021x
ie
echo "abcdef" > /dev/8021x
cat /proc/net/8021x
61:62:63:64:65:66 1333973169
this creates the session for MAC 61:62:63:64:65:66 @ timestamp there is
no session limit or time out so all traffic will pass once the ip
is registered.
Hope this is found to be potentially useful something that is suitable
for inclusion once complete.
all comments are welcomed
Regards Greg
--
This message has been scanned for viruses and
dangerous content by Distrotech Solutions,
it is believed to be clean.
http://www.distrotech.co.za
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Proposed new target SESSION allow for session/accounting management [RADIUS/802.1x]
2012-04-09 12:14 Proposed new target SESSION allow for session/accounting management [RADIUS/802.1x] Gregory Nietsky
@ 2012-04-11 23:39 ` Pablo Neira Ayuso
0 siblings, 0 replies; 2+ messages in thread
From: Pablo Neira Ayuso @ 2012-04-11 23:39 UTC (permalink / raw)
To: Gregory Nietsky; +Cc: netfilter Dev List
On Mon, Apr 09, 2012 at 02:14:49PM +0200, Gregory Nietsky wrote:
>
> Ive got a requirement for disabling / enabling IP based on the
> following criteria
>
> - Only allow pre authenticated traffic [hostapd/wired 802.1x for example]
> - Limit this to a predetermined session limit by duration or throughput
> - Disable traffic once idle for a predetermined duration
> - Ability to read the information / reset sessions from user space
>
> the application in mind is to deliver small micro servers running
> our linux distro
> for remote office / SOHO VPN connectivity with out the need for mid
> to high end
> switches control and monitor the usage on the VPN and or other points after
> authenticating to the Remote site.
>
> i have a embryonic framework of this that is coming together nicely
> and consists of the following
>
> a table structure consisting of 2 list head pointers [arrays] one
> for mac one for ipaddr the
> list data is linked to each based on jhash of mac address [only
> information available from userland pre dhcp]
> and the IP[4/6] addr set latter by the target [ideally based on DHCP
> i may add a DHCP protocol
> based match target] this allows for quick lookups and access based
> on IP/MAC pair.
>
> the block of memory used for this is (2 + 2 * num_buckets) *
> sizeof(struct list_head).
> struct list_head consists of 2 pointers [next/prev].
>
> this is similar to the method borrowed from the xt_recent match.
>
> the userland interface is done via a char dev with sysfs/udev support
>
> - /proc/net/ interface using seq operations for listing all sessions
>
> - /dev/ char dev for reading / writing session information memory is
> allocated
> for each access and a buffer used for reading / writing userland
> will write a
> action [add/delete/view/....] the output will be placed in a
> buffer to be read
>
> - netfilter target and iptables extension that will restrict traffic
> im currently busy with this. it at the moment passes traffic has no check
> and allows 2 flags --use-dest [should not be needed] --save-ip [to
> assosiate the
> ip with MAC this should ideally be done based on the IP assigned
> via DHCP] this
> will only be done if there is no IP set. as the MAC is only
> available on INPUT traffic
> we need to have the IP for accounting of traffic from dest.
>
> using the incoming packet look up the session by mac addr and store
> the source IP
> to match returning traffic latter if there is no session traffic is
> DROPED if the ip
> is set and the IP/MAC is mismatched drop the packet
>
> iptables -A [INPUT/FORWARD/PREROUTING] -j SESSION --save-ip
>
> once the IP has been set returning packets will be allowed as the IP
> will be
> looked up and if assosiated to a valid session it will be allowed to
> continue
>
> iptables -A [ANY] -j SESSION [--use-dest]
>
> for every packet that is allowd the len / time will be updated in
> the session.
>
> a session is only valid when a MAC[if avail]/IP match or the session
> timer has not
> expired or the last packet seen and current packet do not differ by
> more than optional
> idle time.
>
> the current code is available here
> http://pbx.distrotech.co.za/svn/netfilter_session/
>
> please note work is been done on the actual target and what is
> written here is a proposal
> the current target passes all traffic.
>
> once the module is loaded the following works
> echo "[6 char]" > /dev/8021x
> cat /proc/net/8021x
>
> ie
> echo "abcdef" > /dev/8021x
> cat /proc/net/8021x
> 61:62:63:64:65:66 1333973169
>
> this creates the session for MAC 61:62:63:64:65:66 @ timestamp there
> is no session limit or time out so all traffic will pass once the ip
> is registered.
>
> Hope this is found to be potentially useful something that is
> suitable for inclusion once complete.
This looks to me like an ad-hoc all-in-one target. I'm not telling
that this is not useful for you, but there's no room for this in
mainline, sorry.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-04-11 23:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-09 12:14 Proposed new target SESSION allow for session/accounting management [RADIUS/802.1x] Gregory Nietsky
2012-04-11 23:39 ` Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).