Comment puis-je désactiver Internet pour les colocataires qui n'ont pas payé la facture ce mois-ci?

56

J'ai plusieurs colocataires qui partagent ma facture Internet avec moi chaque mois. Ils oublient parfois de me payer et je dois les harceler pour obtenir de l'argent.

Si après trois jours de harcèlement ils n'ont toujours pas payé, je crée une règle de pare-feu dans mon routeur basé sur Unix qui bloque le trafic vers leur adresse mac. Cela s'avère très efficace pour inciter les colocataires délinquants à payer le prix fort.

Comment puis-je automatiser l'ajout / la suppression d'une adresse Mac à une règle de pare-feu le 3 de chaque mois? Je voudrais un moyen simple de les débloquer pour le reste du mois une fois qu'ils paient.

J'utilise actuellement pfsense. Il existe un module de portail captif , mais il ne prend pas en charge la réglementation des accès par utilisateur / par mois.

Comment puis-je automatiser le blocage / déblocage de l'accès Internet aux colocataires?

spuder
la source
14
Ce que vous faites actuellement semble être le moyen le plus efficace de le faire. Je ne peux imaginer une solution de portail captif ne serait-ce que de la surexploitation complète. Au mieux, vous pouvez créer un script shell simple pour automatiser l'ajout de la règle.
NReilingh
8
Les adresses MAC sont très, très faciles à changer et ne doivent en aucun cas être utilisées comme mesure de sécurité. Windows nécessite une modification du registre. Linux nécessite une commande. Avec une commande sous Linux, il pourrait même copier votre adresse MAC. Il me semble qu'une meilleure solution serait d'automatiser un changement de mot de passe une fois par mois. Restreindre l'accès en fonction de vos connaissances plutôt que de son absence.
Mark Lopez
3
@ Nikolay, vous avez raison, le changement d'adresse MAC pourrait être un sujet plus avancé. Cependant, je voulais juste souligner que, pour référence par notre postérité - le filtrage MAC n’est pas fiable. De plus, dans la plupart des cas, le filtrage MAC n'est pas la meilleure solution. Je souhaite déplacer les nombreux didacticiels en ligne selon lesquels le filtrage MAC est une bonne pratique de sécurité.
Mark Lopez
6
Gardez à l'esprit, tout le monde, c'est une situation ROOMMATE. Au lieu d’essayer de bloquer leurs adresses par MAC, @spuder, je vous recommande d’AUTORISER uniquement vos adresses MAC et d’exclure toutes les autres. Si vous avez 4 appareils, vous ne les autorisez que. Toutes les autres adresses MAC (même usurpées) seraient exclues. Rappelez-vous que ce n'est qu'un appartement, non? Ensuite, quand vos colocataires sournois essaient de MAC addy spoof ... et ça ne marche pas ... vous souriez. Rappelez-vous les enfants: Parfois, il est rentable "d'inverser" votre pensée ...
leo de borg
11
Je suis surpris que personne n'ait encore mentionné Upside-Down-Ternet . Bien plus amusant que de bloquer.
SQB

Réponses:

33
  1. Créez un script bash qui ajoute une règle restrictive iptables.
  2. Mettez ce script dans le cron mensuel.
  3. Dans le script bash, créez une condition - si le fichier ~/do_not_block_friendsexiste et que son heure de modification est comprise dans le délai (month stat -c %y filename) ( ) - n'exécutez pas le script.
  4. Une fois qu'ils paient vous faites touch ~/do_not_block_friends.

Le script s'exécutera et verra que celui-ci a do_not_block_friendsété modifié, il ne lancera donc pas la commande iptables.

S'ils ne vous paient pas - le script les bloquera.

Une fois qu'ils ont payé, vous exécutez un autre script préparé pour les déverrouiller.

C'est un plan général sans trop de détails, mais je ne pense pas qu'il sera difficile de trouver le reste.

Modifier :

Voici un moyen plus simple d'écrire un tel script:

#!/bin/bash

count=`find ~ -maxdepth 1 -type f -name do_not_block_friends -mtime -31 | wc -l`

if [ "$count" -eq 1 ]; then

# Friends have paid. Do nothing;

else

# Friends have not paid. Run iptables command;

fi

Nous utilisons la findcommande avec les options suivantes:

  • maxdepth 1 - Ne cherchez pas récursif
  • type f - Recherche de fichier
  • name - Rechercher ce nom
  • mtime -31 - Trouver le fichier qui a été modifié il y a moins de 31 jours

wc -lcomptera le nombre de lignes générées par la commande. Ce sera 0si les amis n'ont pas payé (rien trouvé) et ce sera 1si les amis ont payé et nous avons touchcontrôlé le fichier.

Ce script ne calcule pas le nombre de jours dans le mois et prend par défaut 31, je pense que c'est correct, car nous ne construisons pas de système de facturation commerciale, mais je pense même que cela peut être calculé en bash.

VL-80
la source
Le travail de Cron est définitivement la voie à suivre!
Rob
14

Cela pourrait être plus que ce que vous recherchiez, mais avez-vous envisagé de configurer des informations d'identification sans fil utilisant l'authentification 802.1x contre RADIUS en tant que serveur principal?

RADIUS peut être configuré pour vérifier le validateur que vous désirez (quelque chose que vous devrez probablement écrire et stocker dans une base de données ou quelque chose du genre) pour voir si vos colocataires ont payé leur loyer. Quand ils s'authentifient et ont payé, le RADIUS les authentifie. Sinon, ça ne va pas. L'aspect positif de ceci est que vous ne comptez pas sur le filtrage d'adresses MAC. De cette façon, si vous avez des colocataires férus de technologie, ils ne pourront pas facilement contourner les contrôles que vous avez mis en place.

cloaked1
la source
meilleure solution pour la vraie vie. et serait facilement adaptable à de nouveaux / plus de colocataires ou d'autres personnes comme l'ajout de votre autre significatif pour qu'il ne les bloque pas
PsychoData
semble assez simple, mieux que le filtrage mac et plus simple qu'un portail
MDT Guy
1

Vérifiez si votre compte bancaire ou une autre solution de transaction que vous pouvez utiliser (PayPal?) Fournit un moyen de notification automatique de paiement, tel que:

  • notification par e-mail par transaction
  • e-mail récapitulatif quotidien des transactions
  • une API décente

Si une telle méthode est disponible, il ne reste plus qu'à écrire un script simple permettant de surveiller les paiements. Vous pouvez simplement analyser les e-mails de la banque pour rechercher les paiements mensuels de vos amis. Vous aurez besoin d'un fichier de configuration contenant le numéro de compte ou l'ID de chaque ami, la somme à payer (pouvant également être une constante globale) et l'adresse MAC.

Le script ajusterait ensuite les entrées du pare-feu en fonction du statut du paiement mensuel.

Ensuite, informez vos amis des options de paiement disponibles et, lors de la configuration de votre pare-feu, veillez à donner à vos amis l'accès au mécanisme de paiement afin qu'ils puissent toujours payer s'ils ne respectent pas le délai de grâce de 3 jours :)

Michał Sacharewicz
la source
oui, mais alors il devra payer des frais de traitement, car il est au collège c'est pas bon
iamkrillin