Как я могу отключить интернет для соседей по комнате, которые не оплатили счет в этом месяце?

56

У меня есть несколько соседей по комнате, которые разделили мой счет за интернет со мной каждый месяц. Иногда они забывают заплатить мне, и я вынужден приставать к ним за деньги.

Если после 3 дней приставания они все еще не заплатили, я создаю правило брандмауэра в моем Unix-маршрутизаторе, которое блокирует трафик на их mac-адрес. Это оказывается очень эффективным при получении просроченных соседей по комнате, чтобы заработать деньги.

Как я могу автоматизировать добавление / удаление mac-адреса в правило брандмауэра 3-го числа каждого месяца? Я хотел бы простой способ разблокировать их до конца месяца, как только они заплатят.

В настоящее время я использую pfsense. Несмотря на то, что существует модуль портала для авторизации , он не поддерживает регулирование доступа на пользователя / в месяц.

Как я могу автоматизировать блокировку / разблокировку доступа в Интернет соседа по комнате?

spuder
источник
14
То, что вы делаете сейчас, звучит как самый эффективный способ - я не могу представить себе решение для портала в неволе, представляющее собой нечто большее, чем полное излишество. Во всяком случае, вы можете сделать простой сценарий оболочки, чтобы автоматизировать добавление правил самостоятельно.
NReilingh
8
MAC-адрес очень, очень легко изменить, и его не следует использовать для обеспечения какой-либо меры безопасности. Windows требует одного редактирования реестра. Linux требует одну команду. С помощью одной команды в Linux он мог даже скопировать ваш MAC-адрес. Мне кажется, что лучшим решением было бы автоматизировать смену пароля раз в месяц. Ограничить доступ на основе ваших знаний, а не его отсутствие там.
Марк Лопес
3
@ Николай, ты прав, изменение MAC-адреса может быть более продвинутой темой. Однако я просто хотел подчеркнуть, что для справки наших потомков - фильтрация MAC ненадежна. Кроме того, фильтрация MAC-адресов в большинстве случаев не является лучшим решением. Я хочу переместить многочисленные онлайн-уроки, в которых говорится, что фильтрация MAC-адресов является хорошей практикой безопасности.
Марк Лопес
6
Имейте в виду, все, это ситуация ROOMMATE. Вместо того, чтобы пытаться заблокировать их адреса с помощью MAC, @spuder, я бы порекомендовал вам РАЗРЕШИТЬ только свои MAC-адреса и исключить все остальные. Если у вас есть 4 устройства, то вы разрешаете только те. Все остальные MAC-адреса (даже поддельные) будут исключены. Помните это ТОЛЬКО квартира, верно? Затем, когда ваши хитрые соседи пытаются MAC подделать пародию ... и она не работает ... вы улыбаетесь. Помните детей: иногда стоит «перевернуть» ваше мышление ...
Лев Борг
11
Я удивлен, что никто еще не упомянул Upside-Down-Ternet . Намного веселее, чем просто блокировать.
SQB

Ответы:

33
  1. Создайте скрипт bash, который добавляет ограничительное правило iptables.
  2. Поместите этот скрипт в ежемесячный крон.
  3. Внутри bash-скрипта создайте условие - если файл ~/do_not_block_friendsсуществует и время его изменения не превышает месячного периода ( stat -c %y filename) - не запускайте скрипт.
  4. Как только они платят, вы делаете touch ~/do_not_block_friends.

Скрипт запустится и увидит, что он do_not_block_friendsбыл изменен, поэтому он не будет запускать команду iptables.

Если они вам не заплатили - скрипт их заблокирует.

Как только они заплатили, вы запускаете другой подготовленный скрипт, чтобы разблокировать их.

Это общий план без особых подробностей, но я не думаю, что будет сложно разобраться в остальном.

Редактировать :

Вот более простой способ написания такого скрипта:

#!/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

Мы используем findкоманду со следующими параметрами:

  • maxdepth 1 - не искать рекурсивный
  • type f - поиск файла
  • name - Поиск по этому имени
  • mtime -31 - Найти файл, который был изменен менее 31 дня назад

wc -lбудет считать количество строк, сгенерированных командой. Это будет, 0если друзья не заплатили (ничего не найдено), и это будет, 1если друзья заплатили, а мы сделали touchконтрольный файл.

Этот скрипт не рассчитывает количество дней в месяце и по умолчанию равен 31, я думаю, что это нормально, поскольку мы не строим коммерческую биллинговую систему, но я считаю, что даже это можно рассчитать в bash.

VL-80
источник
Cron работа, безусловно, путь!
Роб
14

Это может быть больше, чем вы ищете, но рассматривали ли вы возможность настройки беспроводных учетных данных с использованием аутентификации 802.1x против RADIUS в качестве бэкэнда?

RADIUS может быть настроен для проверки любого валидатора, который вы пожелаете (что вам, вероятно, придется написать и сохранить в базе данных или что-то в этом роде), чтобы увидеть, заплатили ли ваши сослуживцы за аренду. Когда они аутентифицируются и платят, RADIUS аутентифицирует их. В противном случае это не так. Положительным моментом является то, что вы не полагаетесь на фильтрацию по MAC-адресам. Таким образом, если у вас есть технические подковы, они не смогут легко обойти установленные вами элементы управления.

cloaked1
источник
лучшее решение для реальной жизни. и может легко адаптироваться к новым / более соседям по комнате или другим людям, таким как добавление значимого другого, чтобы оно не блокировало их
PsychoData
звучит достаточно просто, лучше, чем фильтрация Mac, и проще, чем портал
MDT Guy
1

Проверьте, предоставляет ли ваш банковский счет или другое решение для транзакций, которое вы можете использовать (PayPal?), Любой способ автоматического уведомления о платеже, например:

  • электронное уведомление для каждой транзакции
  • ежедневная сводка по электронной почте
  • какой-то приличный API

Если такой метод доступен, остается только написать простой скрипт, который бы отслеживал платежи. Вы можете просто анализировать электронные письма из банка, чтобы получить ежемесячные платежи от ваших друзей. Вам потребуется файл конфигурации, в котором хранится номер или идентификатор учетной записи каждого друга, сумма к оплате (также может быть глобальной константой) и MAC-адрес.

Затем скрипт будет корректировать записи брандмауэра в соответствии со статусом ежемесячного платежа.

После этого сообщите своим друзьям о доступных способах оплаты и - при настройке брандмауэра - не забудьте предоставить своим друзьям доступ к механизму оплаты, чтобы они могли по-прежнему платить, если пропустили 3-дневный льготный период :)

Михал Сахаревич
источник
да, но тогда он должен будет оплатить сборы за обработку, так как он в колледже, который не годится
iamkrillin