Limit Internet usage by time by account

I would like to setup a proxy like the ones that exist in hotels where you must have an account to access the internet. My requirements are:

1. You must have an account when on the network to access the internet.
2. Accounts should be able to be time limited. So, if Jake has two hours, and he logs in to access the internet, and two hours expires, he cannot log in again until the next day.
3. Linux based solutions are preferred.
4. Firewall or Proxy based solutions (so this works no matter what computer the user logs in from) are preferred.

What is out there?
LVL 32
Who is Participating?
yarwellConnect With a Mentor Commented:
"Captive portal" and "Wireless hotspot" solutions like Chillispot and friends would do this. I'm not up to speed with the latest offerings but there are plenty around and some are provided as part of dd-wrt firmware for consumer routers
Monis MontherSystem ArchitectCommented:
Squdi is out there.

Linux O/S (I prefer CentOS)
Squid Proxy Server
NetFilter/IPtables FireWall

With squid you can have

user accounts
ACL (Access control lists) based on time, account, IP, MAC and some other 30 options
Bandwidth Limiting
Many more options
Fadi SODAH (aka madunix)Connect With a Mentor Chief Information Security Officer, CISA, CISSP, CFR, ICATE, MCSE, CCNA, CCNP and CCIPCommented:
KuppingerCole Reviews AlgoSec in Executive Report

Leading analyst firm, KuppingerCole reviews AlgoSec's Security Policy Management Solution, and the security challenges faced by companies today in their Executive View report.

I use squid proxy server on RH-like Linuxes.I searched the documentation,and there is no such feature as allowed duration of internet connection per day...That feature would be very welcome in such environments,and I guess that a script should be written for that purpose.The way I see is it should be:
1)The script(a croned script,actually) should check logs to see the unique users that connected and write the first appearance of the username  and the time in some kind of temporary file
2)Every now and then,a script should check if the present time is ALLOWED_DURATION more  than the first appearance of any username
3)If yes,the user should be disabled from accessing internet via squid
4)At the end of the day,a list of disable users should be reset...
Now,I am amazed that such a necessary feature has not been added to squid yet(someone correct me if I am wrong).
If I have more time next days,I will try to write a script to do that,but the problematic part will be disabling users that exceeded the time limit...involves reloading squid everytime someone is disabled..Anyway,is this Linux you plan to use RedHat-like?How many users(~10,~100?).
IPcop is a free linux option with addins that will do what you want.

Untangle is another linux based option with a choice of free or more advanced paid solutions

astaro has free and paid solutions as well ( this probably the best but the most expensive)
Fadi SODAH (aka madunix)Chief Information Security Officer, CISA, CISSP, CFR, ICATE, MCSE, CCNA, CCNP and CCIPCommented:
As said above by yarwell....  At home have a hardware firewall (erased the linksys firmware on my router with the DD_WRT) and on each PC running microsft. I run the Comodo Internet security (both firewall and anti-virus) and implemented beside that Squid Linux proxy server.

Be aware open source firmware DD-WRT offers a number of builds, from a Micro and Mini generic with limited capabilities  all the way to a VoIP-specific and VPN-specific build. Fortunately, a chart lists  all the capabilities and various versions of DD-WRT  include  from Hotspot, IPv6, OpenVPN, PPTP, ProFTPD, SNMP, SSH, and Telnetd to a Samba/CIFS client. It has EoIP (Ethernet over IP, allowing you to bridge networks), VLAN, QoS, and advanced firewall (including the ability to block specific P2P networks).

OpenWrt has a package system for additional add-ons, It has everything from Squid, NTP, OpenVPN, CUPS (printing support), and lightHTTPD to an IRC server, Nagios (network monitoring), Asterisk (a VoIP server), and the Perl programming language. The only catch is that you will need a router with a sufficiently large amount of storage space and memory
To upgrade your router and make it more secure, I would recommend replacing the default firmware if you can. Make sure you check the compatibility lists!  
As stated in
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.