¿Cómo puedo apagar Internet para los compañeros de cuarto que no han pagado la factura este mes?

56

Tengo varios compañeros de cuarto que dividen mi factura de internet conmigo cada mes. En ocasiones se olvidan de pagarme y tengo que molestarlos por el dinero.

Si después de 3 días de molestar aún no han pagado, creo una regla de firewall en mi enrutador basado en Unix que bloquea el tráfico a su dirección MAC. Esto demuestra ser muy efectivo para conseguir que los delincuentes compartan el dinero.

¿Cómo podría automatizar la adición / eliminación de una dirección mac a una regla de firewall el 3 de cada mes? Me gustaría una manera simple de desbloquearlos por el resto del mes una vez que paguen.

Actualmente estoy usando pfsense. Si bien hay un módulo de portal cautivo , no admite la regulación del acceso por usuario / por mes.

¿Cómo podría automatizar el bloqueo / desbloqueo del acceso a internet de un compañero de cuarto?

Spuder
fuente
14
Lo que estás haciendo ahora parece ser la forma más eficiente al respecto: no puedo imaginar que una solución de portal cautivo sea algo más que una exageración total. En todo caso, podría hacer un simple script de shell para automatizar que la regla se agregue.
NReilingh
8
Las direcciones MAC son muy, muy fáciles de cambiar y no deben usarse para formar ninguna medida de seguridad. Windows requiere una edición de registro. Linux requiere un comando. Con un comando en Linux, incluso podría copiar su dirección MAC. Me parece que una mejor solución sería automatizar el cambio de contraseña una vez al mes. Restrinja el acceso en función de su conocimiento en lugar de su falta de allí.
Mark Lopez
3
@Nikolay tienes razón, el cambio de dirección MAC podría ser un tema más avanzado. Sin embargo, solo quería enfatizar que para referencia de nuestra posteridad, el filtrado MAC no es confiable. Además, el filtrado MAC en la mayoría de los casos no es la mejor solución. Quiero desplazar los numerosos tutoriales en línea que dicen que el filtrado MAC es una buena práctica de seguridad.
Mark Lopez
66
Tenga en cuenta, todos, esta es una situación de compañero de habitación. En lugar de tratar de bloquear sus direcciones por MAC, @spuder, recomendaría que PERMITIRÁ solo sus direcciones MAC y excluya todas las demás. Si tienes 4 dispositivos, solo los permites. Todas las demás direcciones MAC (incluso falsificadas) quedarían excluidas. Recuerda esto SOLO un apartamento, ¿verdad? Luego, cuando tus astutos roomies intentan hacer MAC addy spoof ... y no funciona ... sonríes. Recuerde niños: a veces vale la pena "invertir" su pensamiento ...
leo of borg
11
Me sorprende que nadie haya mencionado aún el Upside-Down-Ternet . Mucho más divertido que simplemente bloquear.
SQB

Respuestas:

33
  1. Haga un script bash que agregue la regla restrictiva de iptables.
  2. Pon este script en cron mensual.
  3. Dentro de la secuencia de comandos bash, haga una condición: si el archivo ~/do_not_block_friendsexiste y su tiempo de modificación está dentro del período de un mes ( stat -c %y filename), no ejecute la secuencia de comandos.
  4. Una vez que te paguen, hazlo touch ~/do_not_block_friends.

El script se ejecutará y verá que do_not_block_friendsse modificó, por lo que no ejecutará el comando iptables.

Si no te pagaron, el script los bloqueará.

Una vez que hayan pagado, ejecute otro script preparado para desbloquearlos.

Este es un plan general sin muchos detalles, pero no creo que sea difícil descifrarlo.

Editar :

Aquí hay una forma más simple de escribir tal 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

Usamos el findcomando con las siguientes opciones:

  • maxdepth 1 - No busques recursivo
  • type f - Buscar archivo
  • name - Busque este nombre
  • mtime -31 - Buscar archivo modificado hace menos de 31 días

wc -lcontará la cantidad de filas generadas por el comando. Será 0si los amigos no han pagado (no se ha encontrado nada) y será 1si los amigos pagaron y nosotros touchcontrolamos el archivo.

Este script no calcula la cantidad de días en el mes y el valor predeterminado es 31, creo que está bien ya que no estamos construyendo un sistema de facturación comercial, pero creo que incluso eso se puede calcular en bash.

VL-80
fuente
Cron trabajo es definitivamente el camino a seguir!
Rob
14

Puede ser más de lo que está buscando, pero ¿ha considerado la posibilidad de configurar credenciales inalámbricas utilizando la autenticación 802.1x contra RADIUS como back-end?

RADIUS se puede configurar para verificar el validador que desee (algo que probablemente tenga que escribir y almacenar en una base de datos o algo) para ver si sus compañeros de habitación han pagado el alquiler. Cuando se autentican y han pagado, RADIUS los autentica. De lo contrario, no lo hace. El aspecto positivo de esto es que no confía en el filtrado de direcciones MAC. De esa manera, si tienes compañeros expertos en tecnología, no podrán pasar por alto fácilmente los controles que has establecido.

camuflado1
fuente
La mejor solución para la vida real. y sería fácilmente adaptable a nuevos / más compañeros de cuarto u otras personas, como agregar a tu pareja para que no los bloquee
PsychoData
suena bastante simple, mejor que el filtrado de mac y más simple que un portal
MDT Guy
1

Compruebe si su cuenta bancaria u otra solución de transacción que pueda usar (¿PayPal?) Proporciona alguna forma de notificación de pago automático, como:

  • notificación por correo electrónico por transacción
  • correo electrónico de resumen de transacciones diarias
  • alguna API decente

Si alguno de estos métodos está disponible, todo lo que queda es escribir una secuencia de comandos simple que controle los pagos. Puede analizar los correos electrónicos del banco buscando los pagos mensuales de sus amigos. Necesitaría un archivo de configuración que almacene el número de cuenta o ID de cada amigo, la suma a pagar (también podría ser una constante global) y la dirección MAC.

El script luego ajustaría las entradas del firewall de acuerdo con el estado del pago mensual.

Luego, informe a sus amigos sobre las opciones de pago disponibles y, mientras configura su firewall, recuerde brindarles a sus amigos acceso al mecanismo de pago para que puedan pagar cuando se pierdan el período de gracia de 3 días :)

Michał Sacharewicz
fuente
sí, pero luego tendrá que pagar las tarifas de procesamiento, ya que él está en la universidad, eso no es bueno
iamkrillin