Server proxy gratis untuk perusahaan dengan otentikasi domain



pfSense + Squid dengan filter https + Teknologi Single Sign-On (SSO) dengan filter grup Active Directory

Latar Belakang Singkat


Di perusahaan, ada kebutuhan untuk mengimplementasikan server proxy dengan kemampuan untuk memfilter akses ke situs (termasuk https) oleh grup dari AD, sehingga pengguna tidak memasukkan kata sandi tambahan apa pun, dan itu dapat dikelola dari antarmuka web. Bukan aplikasi yang buruk, bukan?

Jawaban yang benar adalah dengan membeli solusi seperti Kerio Control atau UserGate, tetapi seperti biasa tidak ada uang, tetapi ada kebutuhan.

Kemudian Squid tua yang baik datang untuk menyelamatkan kita, tetapi sekali lagi - di mana mendapatkan antarmuka web? SAMS2? Sudah usang secara moral. Di sini pfSense datang untuk menyelamatkan.

Deskripsi


Artikel ini akan menjelaskan cara mengkonfigurasi server proxy Squid.
Kerberos akan digunakan untuk mengotorisasi pengguna.
SquidGuard akan digunakan untuk memfilter berdasarkan grup domain.

Untuk pemantauan, sistem pemantauan internal Lightsquid, sqstat dan pfSense akan digunakan.
Ini juga akan memecahkan masalah umum yang terkait dengan pengenalan teknologi sistem masuk tunggal (SSO), yaitu aplikasi yang mencoba mengakses Internet di bawah akun sistem \ akun komputer.

Bersiap untuk Memasang Squid


Dasarnya akan diambil pfSense, Petunjuk Instalasi.

Di dalamnya kami mengatur otentikasi ke firewall itu sendiri menggunakan akun domain. Petunjuk

Sangat penting!

Sebelum memulai instalasi Squid, Anda perlu mengkonfigurasi server DNS di pfsense, membuat catatan A dan PTR untuk itu di server DNS kami dan mengkonfigurasi NTP sehingga waktunya tidak berbeda dari waktu pada pengontrol domain.

Dan di jaringan Anda, berikan antarmuka WAN pfSense dengan kesempatan untuk pergi ke Internet, dan pengguna di jaringan lokal untuk terhubung ke antarmuka LAN, termasuk pada port 7445 dan 3128 (dalam kasus saya 8080).

Semuanya sudah siap? Apakah koneksi LDAP dengan domain untuk otorisasi pada pfSense terinstal dan waktu disinkronkan? Baik. Saatnya memulai proses utama.

Instalasi dan Preset


Instal Squid, SquidGuard dan LightSquid dari manajer paket pfSense di bagian "System / Package Manager".

Setelah instalasi berhasil, buka "Layanan / Squid Proxy server /" dan pertama-tama, pada tab Cache Lokal, konfigurasikan cache, saya atur semuanya ke 0, karena Saya tidak melihat banyak gunanya dalam situs caching, dan browser baik-baik saja dengan ini. Setelah pengaturan, klik tombol "Simpan" di bagian bawah layar dan ini akan memberi kita kesempatan untuk membuat pengaturan proxy dasar.

Pengaturan utama adalah sebagai berikut:

gambar

Port default adalah 3128, tetapi saya lebih suka menggunakan 8080.

Parameter yang dipilih di tab Antarmuka Proxy menentukan antarmuka mana yang akan didengarkan oleh server proxy kami. Karena firewall ini dirancang sedemikian rupa sehingga terlihat di Internet dengan antarmuka WAN, meskipun LAN dan WAN dapat berada di subnet lokal yang sama, saya sarankan menggunakan LAN untuk proxy.

Lupbek diperlukan agar sqstat berfungsi.

Di bawah ini Anda akan menemukan pengaturan proxy Transparan (transparan), serta Filter SSL, tetapi kami tidak membutuhkannya, proxy kami tidak akan transparan, dan untuk memfilter https kami tidak akan berurusan dengan substitusi sertifikat (kami memiliki aliran dokumen, klien bank, dll.), tapi lihat saja jabat tangan.

Pada tahap ini, kita perlu pergi ke pengontrol domain kami, membuat akun di dalamnya untuk otentikasi (Anda dapat menggunakan yang dikonfigurasi untuk otentikasi pada pfSense itu sendiri). Ini adalah faktor yang sangat penting - jika Anda ingin menggunakan enkripsi AES128 atau AES256 - centang kotak yang sesuai dalam pengaturan akun.

Jika domain Anda adalah hutan yang sangat kompleks dengan sejumlah besar direktori atau domain .local Anda, itu MUNGKIN, tetapi tidak persis, Anda harus menggunakan kata sandi sederhana untuk akun ini, bug yang dikenal, tetapi itu mungkin tidak berfungsi dengan kata sandi yang rumit, Anda perlu periksa kasus tertentu.

gambar

Setelah itu, kami membuat file kunci untuk Kerberos, pada kontroler domain, buka baris perintah dengan hak administrator dan masukkan:

# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:\keytabs\PROXY.keytab

Di mana kami menentukan pfSense FQDN kami, pastikan untuk mengikuti case ini, masukkan akun domain kami dan kata sandinya di parameter mapuser, dan pilih metode enkripsi di crypto, saya menggunakan rc4 untuk bekerja dan di bidang -out kami memilih di mana kami akan mengirim file kunci siap pakai kami.
Setelah berhasil membuat file kunci, kami akan mengirimkannya ke pfSense kami, saya menggunakan Far untuk ini, tetapi Anda juga dapat melakukan ini dengan kedua perintah dan dempul, atau melalui antarmuka web pfSense di bagian "Diagnostics \ Command Line".

Sekarang kita dapat mengedit \ create /etc/krb5.conf di

gambar

mana /etc/krb5.keytab adalah file kunci yang kita buat.

Pastikan untuk memeriksa operasi kerberos dengan kinit, jika tidak bekerja, maka tidak ada gunanya membaca.

Konfigurasikan otentikasi Squid dan daftar akses tanpa otentikasi


Setelah berhasil mengkonfigurasi kerberos, kami akan mengencangkannya ke Squid kami.

Untuk melakukan ini, buka Layanan \ Squid Proxy Server dan dalam pengaturan utama turun ke paling bawah, di sana kita akan menemukan tombol "Pengaturan Lanjut".

Di bidang Opsi Khusus (Sebelum Auth), masukkan:

#
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
# 
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
# 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

di mana auth_param menegosiasikan program / usr / local / libexec / squid / negotiate_kerberos_auth - memilih pembantu otentikasi Kerberos yang kita butuhkan.

The -s beralih dengan nilai GSS_C_NO_NAME - mendefinisikan penggunaan akun apapun dari file kunci.

Switch -k dengan nilai /usr/local/etc/squid/squid.keytab - mendefinisikan penggunaan file keytab ini. Dalam kasus saya, ini adalah file keytab yang sama yang kami buat, yang saya salin ke direktori / usr / local / etc / squid / dan menamainya karena saya tidak ingin berteman dengan direktori itu, tampaknya tidak ada cukup hak.

Switch -t dengan nilai -t tidak ada- Menonaktifkan permintaan siklik ke pengontrol domain, yang sangat mengurangi beban jika Anda memiliki lebih dari 50 pengguna.
Selama pengujian, Anda juga dapat menambahkan sakelar -d - yaitu diagnostik, lebih banyak log akan ditampilkan.
auth_param negosiasikan anak 1000 - tentukan berapa banyak proses otorisasi bersamaan yang dapat dijalankan
auth_param negosiasikan keep_alive aktif - tidak memutus koneksi saat pemungutan suara rantai otorisasi
acl proksi auth proxy_auth DIBUTUHKAN adalah - membuat dan memerlukan daftar kontrol akses yang mencakup pengguna yang diotentikasi
acl nonauth dstdomain " /etc/squid/nonauth.txt "- Kami menginformasikan cumi-cumi tentang daftar akses nonauth yang berisi domain tujuan, di mana setiap orang akan selalu diizinkan mengakses. Kami membuat file itu sendiri, dan di dalamnya kami memasukkan domain dalam format

.whatsapp.com
.whatsapp.net

Whatsapp tidak sia-sia digunakan sebagai contoh - sangat pemilih tentang proksi otentikasi dan tidak akan berfungsi jika tidak diizinkan sebelum otentikasi.
http_access izinkan nonauth - izinkan akses ke daftar ini ke semua
http_access tolak! auth - nonaktifkan akses oleh pengguna yang tidak sah ke situs lain
http_access izinkan auth - izinkan akses oleh pengguna yang berwenang.
Semuanya, squid itu sendiri dikonfigurasi untuk Anda, sekarang saatnya untuk mulai memfilter berdasarkan kelompok.

Konfigurasikan SquidGuard


Pergi ke Layanan \ SquidGuard Proxy Filter.

Dalam Opsi LDAP kami memasukkan detail akun kami yang digunakan untuk otentikasi Kerberos, tetapi dalam format berikut:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Jika ada spasi dan / atau karakter non-Latin, seluruh entri ini harus diapit dengan tanda kutip tunggal atau ganda:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

Selanjutnya, pastikan untuk menaruh tanda centang ini:

gambar

Untuk memotong DOMAIN yang tidak perlu \ pfsense DOMAIN.LOKAL dimana seluruh sistem sangat sensitif.

Sekarang kita pergi ke Group Acl dan ikat grup akses domain kita, saya menggunakan nama-nama sederhana dalam semangat group_0, group_1, dll hingga 3, di mana 3 hanya akses ke daftar putih, dan 0 adalah segalanya.

Grup dilampirkan sebagai berikut:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

kami menyimpan grup kami, pergi ke Times, di sana saya membuat satu interval yang artinya selalu berfungsi, sekarang buka Kategori Target dan buat daftar sesuka Anda, setelah membuat daftar kami kembali ke grup kami dan di dalam grup kami memilih dengan tombol yang dapat di mana dan di mana tidak. .

LightSquid dan sqstat


Jika selama proses pengaturan kami memilih loopback di pengaturan squid dan membuka kemampuan untuk mengakses 7445 di firewall baik di jaringan kami dan di pfSense sendiri, maka ketika kami pergi ke Diagnostics \ Squid Proxy Reports kami dapat membuka sqstat dan Lighsquid tanpa masalah, untuk yang terakhir Anda harus membuat nama pengguna dan kata sandi di tempat yang sama, dan ada juga kesempatan untuk memilih desain.

Penyelesaian


pfSense adalah alat yang sangat kuat yang dapat melakukan banyak hal - baik proxy lalu lintas dan kontrol akses pengguna ke Internet hanyalah sebagian kecil dari semua fungsi, namun, di perusahaan dengan 500 mesin ini menyelesaikan masalah dan menghemat pembelian proxy.

Saya harap artikel ini membantu seseorang memecahkan masalah yang cukup relevan untuk perusahaan menengah dan besar.

All Articles