Cara membatasi akses internet untuk pengguna tertentu di LAN menggunakan iptables di Linux

11

Katakanlah ada dua pengguna di LAN, A dan B. Bagaimana cara membatasi pengguna A dari akses internet menggunakan aturan iptables dan menyimpan aturan sehingga setelah reboot, mereka masih efektif. Misalkan saya ingin memberikan akses kepada pengguna itu di beberapa titik; bagaimana cara mengaktifkannya lagi? Saya menggunakan Ubuntu Linux 10.04. Alangkah baiknya jika ada yang menunjukkan kepada saya bagaimana melakukannya dari baris perintah, karena saya sering masuk ke mesin menggunakan login ssh lokal.

Marwan Tanager
sumber

Jawaban:

17

Saya berasumsi bahwa pengguna A dan B menggunakan mesin Linux yang sama di mana Anda adalah administrator. (Tidak sepenuhnya jelas dari pertanyaan Anda. Jika A dan B memiliki komputer sendiri yang menjadi administratornya, itu masalah yang sama sekali berbeda.)

Perintah berikut akan mencegah pengguna dengan uid 1234 mengirim paket pada antarmuka eth0:

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

Saya sarankan membaca panduan iptables Ubuntu untuk mendapatkan keakraban dasar dengan alat (dan merujuk ke halaman manual untuk hal-hal lanjutan seperti tabel mangle).

Pengguna masih dapat menjalankan ping (karena itu setuid root), tetapi tidak hal lain. Pengguna masih dapat terhubung ke proxy lokal jika proxy itu dimulai oleh pengguna lain.

Untuk menghapus aturan ini, tambahkan -Dke perintah di atas.

Untuk menjadikan aturan ini permanen, tambahkan ke /etc/network/if-up.d/my-user-restrictions(buatlah skrip yang dapat dieksekusi dimulai dengan #!/bin/sh). Atau gunakan iptables-save(lihat panduan iptables Ubuntu untuk informasi lebih lanjut).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih banyak. Dan ya, asumsi Anda benar. Berdasarkan jawaban Anda dan panduan ubuntu yang disebutkan, apakah itu cara yang tepat untuk melakukan sesuatu jika saya ingin juga memberikan akses ssh kepada pengguna yang dibatasi (kadang-kadang saya ingin login menggunakan akunnya melalui ssh): iptables -t mangle -A OUTPUT - o eth0 -m pemilik --uid-owner 1234 -p tcp --dport ssh -j MENERIMA iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP Saya menaruh aturan tersebut seperti pada file yang disebutkan dan hal-hal tampaknya berfungsi dengan baik.
Marwan Tanager
@Marwan saya pikir itu benar. Perhatikan bahwa jika Anda membolehkan akses ssh, Anda mengizinkan apa saja karena ssh dapat secara sepele terowongan protokol lain.
Gilles 'SO- stop being evil'
0

Saya tidak akan menggunakan iptables untuk ini.

Saya berasumsi bahwa A dan B dikaitkan dengan IP tetap ClientA dan ClientB. Saya berasumsi bahwa Internet-Proxy Anda adalah ServerI (Ubuntu-Server Anda?).

Jadi saya akan menambahkan entri routing tolak / jatuhkan dari ClientA ke ServerI.

Saya tidak menggunakan Ubuntu - jadi saya tidak bisa memberi tahu Anda file konfigurasi mana yang harus digunakan untuk membuat pengaturan itu permanen (selamat dari reboot).

Mungkin seseorang dapat menambahkan detail itu?

Nils
sumber