iptables untuk memblokir situs web https

9

Saya ingin memblokir beberapa situs web yang juga berjalan di https, seperti facebook, twitter, dan gmail, di organisasi saya. Squid tidak seharusnya digunakan di sini sesuai pesanan dari manajemen yang lebih tinggi. Kita bisa menggunakan Untangle Lite Package dan iptables.

Apakah ada opsi selain Squid untuk melakukan ini? Juga beberapa iptablesaturan untuk memblokir lalu lintas semacam ini akan sangat membantu.

aku menemukan ini

iptables -t filter -I INPUT -m string --string facebook.com -j LOG --algo bm
iptables -t filter -I INPUT -m string --string facebook.com -j REJECT --algo bm

tetapi https masih berfungsi pada mesin kecuali mesin lokal.

Dharmit
sumber
2
Anda harus menjelaskan perusahaan Anda bahwa menghindari https untuk akun pribadi bukanlah ide yang baik karena dapat menyebabkan pencurian identitas di dalam perusahaan, menyebarkan sertifikat pada semua mesin dan bertindak sebagai seorang pria di tengah akan menjadi cara yang lebih baik untuk memeriksa siapa menghubungkan ke facebook. juga saya tidak yakin, tapi saya pikir tidak mungkin lagi menghubungkan gmail tanpa https.
Kiwy
Bolehkah saya tahu bagaimana Anda mendapatkan semua alamat IP itu
Jagadeesh

Jawaban:

12

Alih-alih mencocokkan berdasarkan URL, coba cocokkan berdasarkan konten sertifikat.

iptables -t nat -I INPUT --sport 443 -m string \
                 --string www.facebook.com --algo bm -j REJECT

Anda juga dapat mencocokkan dengan sidik jari tetapi jika tujuan mengubah atau memperbarui sertifikat mereka, itu akan membatalkan aturan Anda.

pr0f3550r
sumber
dapatkah ini memblokir apa pun yang cocok dengan www.facebook.com bahkan di badan html, tetapi itu sah seperti ini di kotak komentar. Itu bisa diblokir di level url, tapi bagaimana dengan ipaddress?
Nikhil Mulley
@NikhilMulley: Tidak, itu hanya akan cocok dengan sertifikat SSL yang dilayani oleh Facebook. Semua yang lain dienkripsi dan tidak dapat dilihat.
bahamat
2
Hanya paket koneksi pertama yang memasuki nattabel (dan tidak ada rantai INPUT di tabel nat), saya pikir Anda bermaksud di filtersana. Juga, ada peluang (sangat) jauh yang cocok dengan paket di mana 443 adalah port klien
Stéphane Chazelas
Adakah yang menggunakan solusi ini? Terlepas dari kurangnya -p tcpaturan, ini tampaknya tidak menjadi sesuatu yang berguna ..
ivanleoncz
10

Firewall tidak dapat mengontrol URL HTTPS mana yang coba diakses oleh klien, karena URL dienkripsi. Firewall hanya dapat mengontrol situs mana yang disambungkan klien, menggunakan alamat IP, tetapi ini tidak membantu jika versi HTTP dan HTTPS situs berada pada URL yang sama (dan bahkan jika tidak, Anda harus untuk memelihara daftar besar alamat IP).

Satu-satunya cara realistis untuk memblokir HTTPS adalah dengan memblokirnya sama sekali. Bersikeras bahwa semua koneksi harus HTTP yang valid (yaitu klien mulai dengan mengirim HTTPgaris, dan sebagainya). Ini tidak dapat dilakukan hanya dengan IPtables, Anda memerlukan proxy yang sadar protokol seperti Squid. (Saya tidak tahu apa yang bisa dilakukan Untangle Lite.)

Anda dapat memblokir sebagian besar lalu lintas HTTPS dengan memblokir lalu lintas keluar ke port 443, karena hampir semua server HTTPS ada di port itu. Atau, mengikuti pendekatan daftar putih, hanya mengizinkan lalu lintas keluar ke port 80 (port HTTP normal).

Pendekatan yang berbeda adalah dengan mem-proxy semua koneksi HTTP dan HTTPS. Lalu Anda bisa mencocokkan dengan URL. Ini membutuhkan melakukan serangan man-in-the-middle pada klien. Anda dapat melakukannya jika Anda menggunakan otoritas sertifikasi Anda sendiri untuk semua mesin klien dan mendaftarkannya di sana sebagai akar kepercayaan. Ini mungkin dianggap tidak etis.

Apa pun yang Anda lakukan, pengguna yang ditentukan akan membuat proxy di luar lingkungan Anda dan menjalankan IP melalui HTTP atau sesuatu seperti itu.

Anda tampaknya berusaha memperbaiki masalah sosial dengan cara teknis, yang hampir tidak pernah berhasil, atau melakukan yang terbaik untuk menerapkan persyaratan konyol dari manajemen (dalam hal ini, saya akan pergi dengan memblokir port 443, mungkin hanya untuk IP tertentu, yang akan memungkinkan Anda untuk melaporkan bahwa Anda telah melakukan pekerjaan Anda, tidak peduli seberapa tidak berguna).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
firewall profesional seperti Checkpoint memungkinkan penyaringan https tanpa menggunakan sertifikat klien dalam versi terbaru, saya tidak tahu bagaimana mereka bisa melakukannya, tetapi berfungsi.
Kiwy
4

Saya tahu satu opsi.

Jika Anda memiliki server DNS internal untuk digunakan, maka letakkan beberapa referensi statis di data zona TLD Anda yang menyelesaikan domain (bahwa Anda tidak ingin membuat koneksi luar) menjadi hanya 127.0.0.1. Dengan cara ini, semua host yang menggunakan DNS pusat dalam jaringan Anda akan menyelesaikan (facebook.com/twitter.com per se) domain menjadi alamat loopback, yang tidak akan mengarah ke mana pun.

Ini akan berfungsi jika Anda memiliki kontrol otoritatif total pada konfigurasi penyelesai mesin klien jaringan Anda. Jika workstation / klien memiliki izin untuk mengubah / mengedit / etc / hosts, atau /etc/resolv.conf maka mereka dapat menghindari opsi ini.

Nikhil Mulley
sumber
+1 untuk itu. Ini dapat dilakukan dengan memasukkan referensi ini ke dalam /etc/hostsfile. Misalnya:127.0.0.1 www.facebook.com
2
Atau, untuk solusi yang lebih beradab, atur catatan DNS A (atau entri host / hosts.txt) untuk merujuk ke host intranet dengan server web yang menjelaskan dengan tepat mengapa pengguna tidak dikirim ke Facebook, dll. Harap perhatikan bahwa ini memecah HTTPS karena nama host yang dimaksudkan (mis. Www.facebook.com) tidak akan cocok dengan sertifikat CN.
Alexios
@Alexios: OpenDNS adalah solusi yang bagus untuk ini.
Kevin M
@KevinM: terima kasih, itu berguna untuk diketahui. Saya akan mengingatnya (meskipun kami memiliki ladang DNS kecil kami sendiri di tempat kerja)
Alexios
2

Pilihannya adalah rute blackhole ke blok jaringan: (Terdaftar untuk FB)

ip route add blackhole 69.171.224.0/19
ip route add blackhole 74.119.76.0/22 
ip route add blackhole 204.15.20.0/22
ip route add blackhole 66.220.144.0/20
ip route add blackhole 69.63.176.0/20
ip route add blackhole 173.252.64.0/18
diri
sumber
1
tidak bukan, itu cara yang rumit untuk mempertahankan daftar ip untuk facebook twitter atau bahkan google yang tidak berkomunikasi itu sendiri rentang jangkauan ip sendiri.
Kiwy
1

Filter konten biasa tidak dapat memblokir situs ssl.

Gunakan alat perlindungan intrusi seperti snort / suricata.

Contoh aturan IPS : Untuk memblokir URL ssl untuk alamat IP tertentu.

drop ip any 443 -> 192.168.3.30 any (content:".facebook.com"; msg:"Simplewall Ssl block for User30 : Urls => .facebook.com " sid:26648513;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".fbcdn.net"; msg:"Simplewall Ssl block for User30 : Urls => .fbcdn.net " ;sid:11469443;rev:1;)

drop ip any 443 -> 192.168.3.30 any (content:".youtube.com"; msg:"Simplewall Ssl block for User30 : Urls => .youtube.com " ;sid:13989722;rev:1;)

Unduh Simplewall : Dalam aturan kebijakan firewall yang dibagi oleh Squid + Suricata IPS.

Chetan Muneshwar
sumber
0

Anda harus meletakkan ini di rantai FORWARD, mis

iptables -I FORWARD  -m string --string "facebook.com" \
                     --algo bm --from 1 --to 600 -j REJECT

Ini akan memengaruhi sistem lain di jaringan, kecuali firewall.

Senthamil
sumber