Je ne sais pas si il y a une solution "mieux" car cette notion de mieux dépend de beaucoup de paramètres mais il y a d'autres approches possibles.
Juste un exemple de ce que je considère comme définitivement mieux:
si les utilisateurs sont nominativement connus et donc avec un compte pour s'authentifier, ce qui me semble un minimum dans cet environnement, il est assez simple de mettre en place un filtrage, au niveau du proxy HTTP, pour que les utilisateurs d'un groupe (LDAP) particulier soient bloqués.
Il suffit alors de gérer 2 groupes dans LDAP:
les utilisateurs à jour de leur cotisation
les utilisateurs en retard
d’autoriser les utilisateurs "à jour" et de bloquer les utilisateurs "en retard".
Pratiquement, comment faire ça ?
soit en gérant du simple "group membership" mais ce n'est ni élégant ni efficace
soit en maintenant, pour chaque utilisateur, un ou plusieurs attributs LDAP relatifs à la cotisation et en créant des groupes dynamiques basés sur l'attribut qui dit "a payé".
Il est alors même possible de gérer une date de payement ou d'échéance et de se baser dessus pour envoyer des warning ;)
Avec SquidGuard, le profiling par groupe permet, dans SquidGuard, de définir une redirection particulière pour l'ACL associée à ce groupe, et donc de personnaliser la page d'erreur 8)
C'est une amorce d'identity management qui permet d'associer le service à un utilisateur et non plus à une machine. D’ailleurs, comment ça se passe avec l'utilisateur qui plusieurs devices (son ou ses laptop, son smartphone etc…) ?
Sauf cas très particuliers, les tâches administratives qui s'appuient sur l'adresse IP ou l'adresse MAC, c'est une fausse bonne idée :P
Une fois cette notion acquise, il faut en effet chercher d'autres solutions fiables.
(EDIT: typos)