Here is an example of why MAC and IP address banning is so difficult. We just expanded the seventh floor of our Corporate HQ, building 12 new cubicles and offices. At the same time, we completed our sixth floor complete with 30 new cubicles (we closed our old downtown HQ and moved the people into the new corporate HQ, strictly an office consolidation as we had out grown the one in the other location, and have the top three floors we are building as we grow at our new HQ).
Anyhow, I now have a T3 coming in which runs to our DMZ/firewall which has its own IP and MAC. That then runs to the public server switch, which has it's own IP and MAC and that in turn runs to our public web server farm. The other side of the firewall actually splits off the segment that is our internal network, running to the switch for the internal servers. that switch has the 6th floor and primary 7th floor switch attached to it, and will eventually have the 5th floor switch attached to it. Right now, the 7th floor switch has a second switch attached to it that runs all the new cubes and offices on 7. So, to get to some of my 7th floor laptops, you go through a firewall and three switches all with their own MAC codes and pakcet overheads to know where to route the packets. Half of the stuff isn't even visible to a web browser as it is part of the encrypted packet header and not part of the HTTP protocol headers the web servers can see.
When we complete the 6th floor, I will have to add another switch there and will probably have two by the time we have filled the 5th floor as well. We are only at 80 people right now, but grwoing and already a remote web browser would find it nigh on impossible to identify a unique computer based on header packets alone.