Cara memblokir akses internet ke program-program tertentu di Linux

20

Baru-baru ini, saya mengalami masalah membatasi akses Internet ke program tertentu. Adakah yang bisa merekomendasikan cara yang baik untuk melakukan itu, tanpa menggunakan perangkat lunak tertentu?

Ilia Rostovtsev
sumber

Jawaban:

31

Solusi bagi saya kebetulan lurus ke depan.

  1. Buat, validasikan grup baru ; tambahkan pengguna yang diperlukan ke grup ini:
    • Membuat: groupadd no-internet
    • Mengesahkan: grep no-internet /etc/group
    • Tambahkan pengguna: useradd -g no-internet username

      Catatan: Jika Anda memodifikasi pengguna yang sudah ada, Anda harus menjalankan: usermod -a -G no-internet userName tanyakan:sudo groups userName

  2. Buat skrip di jalur Anda dan buat agar bisa dieksekusi:
    • Membuat: nano /home/username/.local/bin/no-internet
    • Dapat dieksekusi: chmod 755 /home/username/.local/bin/no-internet
    • Konten: #!/bin/bash
                    sg no-internet "$@"

  3. Tambahkan aturan iptables untuk menjatuhkan aktivitas jaringan untuk grup tanpa internet :
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      Catatan: Jangan lupa untuk membuat perubahan permanen, jadi itu akan diterapkan secara otomatis setelah reboot . Melakukannya, tergantung pada distribusi Linux Anda.


   4. Periksa, misalnya di Firefox dengan menjalankan:

  • no-internet "firefox"

Jika Anda ingin membuat pengecualian dan mengizinkan suatu program untuk mengakses jaringan lokal :

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

CATATAN: Jika terjadi pemijahan, aturan akan dipertahankan. Misalnya, jika Anda menjalankan program tanpa aturan internet dan program itu akan membuka jendela browser, aturan tetap akan diterapkan.

Ilia Rostovtsev
sumber
2
Beberapa catatan Ilia: Iklan 1: - untuk memodifikasi pengguna yang ada: usermod -a -G groupName userName - periksa dengan: sudo groups userName Iklan 3: - Saya sudah memiliki banyak aturan di iptables, Posisi aturan baru sangat penting . harus menjadi aturan pertama dalam rantai OUTPUT. Oleh karena itu saya menggunakan insert: iptables -I OUTPUT 1 -m pemilik --gid-pemilik no-internet -j DROP Untuk mengizinkan akses ke LAN: pastikan aturan ACCEPT di atas aturan DENY. Bekerja seperti pesona. Gunakan misalnya di Wifiguard. Prog memeriksa wlan untuk perangkat yang tidak dikenal, tetapi "telepon rumah" di setiap awal.
Script hanya akan melewati perintah. Jika Anda mencoba meluncurkan programm dengan parameter, Anda harus menggunakan "$ @" bukannya "$ 1". Untuk beberapa alasan, saya harus menyimpannya sementara di variabel agar bash memprosesnya dengan benar: cmd = "$ @"; sg no-internet "$ {cmd}"
onse
gunakan "nointernet" bukan "no-internet". Untuk alasan apa pun Ubuntu 14.04 tidak dapat menangani tanda hubung ketika Anda mencoba menggunakan sg atau chgrp (meminta kata sandi, lalu gagal).
1
unshare -n YourAppToBlock> gunakan "nointernet" bukan "no-internet". mungkin, 'no \\ - internet'?
SarK0Y
Saya mencobanya seperti dijelaskan tetapi bagi saya, setelah menambahkan saya ke "no-internet" dan mengatur ip-tables saya tidak dapat terhubung ke internet lagi (dengan dan tanpa skrip bash no-internet).
Viatorus