Bagaimana saya bisa mematikan internet untuk teman sekamar yang belum membayar tagihan bulan ini?

56

Saya memiliki beberapa teman sekamar yang membagi tagihan internet saya dengan saya setiap bulan. Kadang-kadang mereka lupa membayar saya, dan saya harus mengganggu mereka untuk mendapatkan uang.

Jika setelah 3 hari mengganggu mereka masih belum membayar, saya membuat aturan firewall di router berbasis unix saya yang memblokir lalu lintas ke alamat mac mereka. Ini terbukti sangat efektif untuk mendapatkan teman sekamar nakal untuk menambah uang tunai.

Bagaimana saya bisa mengotomatiskan penambahan / penghapusan alamat mac ke aturan firewall pada tanggal 3 setiap bulan? Saya ingin cara sederhana untuk membuka blokir mereka selama sisa bulan setelah mereka membayar.

Saat ini saya menggunakan pfsense. Meskipun ada modul portal captive , modul ini tidak mendukung pengaturan akses per pengguna / per bulan.

Bagaimana saya mengotomatiskan pemblokiran / pemblokiran akses internet teman sekamar?

spuder
sumber
14
Apa yang Anda lakukan saat ini sepertinya cara yang paling efisien tentang hal itu - saya tidak dapat membayangkan solusi captive portal menjadi lebih dari sekadar pembunuhan berlebihan. Jika ada, Anda bisa membuat skrip shell sederhana untuk mengotomatiskan aturan itu sendiri.
NReilingh
8
Alamat MAC sangat, sangat, mudah diubah dan tidak boleh digunakan untuk membentuk ukuran keamanan apa pun. Windows memerlukan satu pengeditan registri. Linux membutuhkan satu perintah. Dengan satu perintah di Linux dia bahkan bisa menyalin alamat MAC Anda. Menurut saya solusi yang lebih baik adalah mengotomatiskan perubahan kata sandi sebulan sekali. Batasi akses berdasarkan pada pengetahuan Anda dan bukan karena kurangnya pengetahuan Anda.
Mark Lopez
3
@Nikolay Anda benar, mengubah alamat MAC mungkin merupakan topik yang lebih maju. Namun, saya hanya ingin menekankan bahwa untuk referensi oleh keturunan kami - filter MAC tidak dapat diandalkan. Selain itu, pemfilteran MAC dalam banyak kasus bukanlah solusi terbaik. Saya ingin mengganti banyak tutorial online yang mengatakan penyaringan MAC adalah praktik keamanan yang baik.
Mark Lopez
6
Ingatlah, semuanya, ini adalah situasi ROOMMATE. Alih-alih mencoba memblokir alamat mereka dengan MAC, @spuder, saya akan merekomendasikan Anda MENGIZINKAN hanya alamat MAC Anda, dan mengecualikan semua yang lain. Jika Anda memiliki 4 perangkat maka Anda hanya mengizinkannya. Semua alamat MAC lainnya (bahkan palsu) akan dikecualikan. Ingat ini HANYA sebuah apartemen, kan? Lalu, ketika teman-temanmu yang licik mencoba membuat MAC addy spoof ... dan itu tidak berhasil ... kamu tersenyum. Ingat anak-anak: Kadang-kadang ada baiknya "membalikkan" pemikiran Anda ...
leo of borg
11
Saya terkejut belum ada yang menyebutkan Upside-Down-Ternet . Jauh lebih menyenangkan daripada hanya memblokir.
SQB

Jawaban:

33
  1. Buat skrip bash yang menambahkan aturan iptables terbatas.
  2. Letakkan skrip ini di cron bulanan.
  3. Di dalam skrip bash buat syarat - jika file ~/do_not_block_friendsada dan waktu modifikasinya dalam periode bulan ( stat -c %y filename) - jangan jalankan skrip.
  4. Begitu mereka membayar Anda lakukan touch ~/do_not_block_friends.

Script akan berjalan dan melihat yang do_not_block_friendssudah dimodifikasi, sehingga tidak akan menjalankan perintah iptables.

Jika mereka tidak membayar Anda - skrip akan memblokir mereka.

Setelah mereka membayar, Anda menjalankan skrip siap lain untuk membuka kunci mereka.

Ini adalah rencana umum tanpa banyak detail, tetapi saya rasa tidak akan sulit untuk mengetahui sisanya.

Edit :

Berikut ini cara yang lebih sederhana untuk menulis skrip tersebut:

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

Kami menggunakan findperintah dengan opsi berikut:

  • maxdepth 1 - Jangan mencari rekursif
  • type f - Cari file
  • name - Cari nama ini
  • mtime -31 - Temukan file yang diubah kurang dari 31 hari yang lalu

wc -lakan menghitung jumlah baris yang dihasilkan oleh perintah. Itu akan terjadi 0jika teman belum membayar (tidak ada yang ditemukan) dan itu akan terjadi 1jika teman membayar dan kami memang touchmengontrol file.

Script ini tidak menghitung jumlah hari dalam sebulan dan default ke 31, saya pikir itu baik-baik saja karena kita tidak membangun sistem penagihan komersial, tapi saya percaya bahkan itu dapat dihitung dalam bash.

VL-80
sumber
Pekerjaan Cron jelas merupakan cara untuk pergi!
Rob
14

Mungkin lebih dari yang Anda cari, tetapi apakah Anda mempertimbangkan untuk mengatur kredensial nirkabel menggunakan otentikasi 802.1x terhadap RADIUS sebagai backend?

RADIUS dapat diatur untuk memeriksa validator apa pun yang Anda inginkan (sesuatu yang Anda mungkin harus skrip dan simpan dalam database atau sesuatu) untuk melihat apakah roomies Anda telah membayar sewa mereka. Ketika mereka mengautentikasi dan telah membayar, RADIUS mengautentikasi mereka. Kalau tidak, tidak. Aspek positifnya adalah Anda tidak mengandalkan pemfilteran pada alamat MAC. Dengan begitu jika Anda memiliki roomies yang mengerti teknologi, mereka tidak akan dengan mudah dapat mem-bypass kontrol yang Anda buat.

berjubah1
sumber
solusi terbaik untuk kehidupan nyata. dan akan dengan mudah beradaptasi dengan yang baru / lebih teman sekamar atau orang lain seperti menambahkan penting lainnya sehingga tidak akan memblokir mereka
PsychoData
terdengar cukup sederhana, lebih baik daripada penyaringan mac dan lebih sederhana dari portal
MDT Guy
1

Periksa apakah rekening bank Anda atau solusi transaksi lain yang dapat Anda gunakan (PayPal?) Memberikan cara pembayaran notifikasi otomatis, seperti:

  • notifikasi email per transaksi
  • email ringkasan transaksi harian
  • beberapa API yang layak

Jika ada metode seperti itu tersedia, yang tersisa adalah menulis beberapa skrip sederhana yang akan memantau pembayaran. Anda dapat mem-parsing email dari bank untuk mencari pembayaran bulanan dari teman Anda. Anda memerlukan file konfigurasi yang menyimpan nomor akun atau ID setiap teman, jumlah yang harus dibayar (mungkin juga konstanta global) dan alamat MAC.

Script kemudian akan menyesuaikan entri firewall sesuai dengan status pembayaran bulanan.

Setelah itu, beri tahu teman-teman Anda tentang opsi pembayaran yang tersedia dan - saat mengonfigurasi firewall Anda - ingatlah untuk memberi teman Anda akses ke mekanisme pembayaran sehingga mereka masih bisa membayar ketika melewati masa tenggang 3 hari :)

Michał Sacharewicz
sumber
ya, tapi kemudian dia harus membayar biaya pemrosesan, karena dia di perguruan tinggi itu tidak baik
iamkrillin