Cara mengkonfigurasi untuk Server Proxy Mengotentikasi

8

Server proxy pekerjaan saya memerlukan otentikasi dengan kredensial pengguna domain Microsoft AD. Semua orang tahu cara kerjanya: Jika Anda masuk pada workstation Windows, permintaan akses internet berbasis browser "Internet Explorer" Anda secara otomatis diautentikasi (dan diidentifikasi) menggunakan kredensial login domain Anda.

Saya menemukan bahwa Firefox juga dapat mengotentikasi terhadap server proxy ini dan lama berasumsi bahwa mereka "melakukan sesuatu yang istimewa". Baru-baru ini seorang kolega menginstal Linux Mint dalam VM dan saya terkejut dia sibuk mendapatkan pembaruan dari internet. Ketika saya bertanya bagaimana dia bisa bekerja, dia mengangkat bahu dan berkata, "Itu hanya berhasil"

Ini mendorong saya untuk melihat kembali pengaturan proxy. Saya menjalankan Kubuntu (dengan campuran aplikasi G * dan K *, tetapi saya hanya menggunakan aplikasi GTK ketika saya yakin mereka jauh lebih baik daripada K *)

Saya masih memiliki salinan tamu Windows yang berjalan di VM VirtualBox, terutama untuk Mencetak dan untuk mengakses situs web internal / perusahaan (Yang keduanya memerlukan otentikasi dan identifikasi melalui kredensial domain MS) serta untuk mengubah kata sandi domain saya setiap beberapa hari sekali .

Jadi akan sangat membantu jika saya bisa mendapatkan [sebagian / sebagian / semua] aplikasi Linux saya untuk bekerja melalui server proxy. Kebutuhan saya yang paling mendesak adalah agar Akregator dan Muon dapat bekerja. Aplikasi lain yang mungkin diuntungkan adalah beberapa aplikasi yang memperbarui secara otomatis (Misalnya Perluasan Kotak Virtual) atau membungkus diri mereka sendiri di sekitar browser (Dapatkan Lebih Banyak Tema / Wall Papers / dll), dan sesekali menggunakan wget)

Klien SSH / SCP berhasil bekerja melalui firewall tanpa otentikasi.

Apa cara yang benar (alat dan / atau prosedur) untuk mengonfigurasikan ini, idealnya di satu lokasi karena harus mempertahankan kata sandi saya di beberapa lokasi adalah resep untuk keluar dari akun saya: - /

Oh, dan itu akan menjadi mimpi yang menjadi kenyataan jika saya dapat memiliki yang setara dengan utilitas menonaktifkan / mengaktifkan proxy Firefox "Proxy Cepat", misalnya satu klik untuk mengaktifkan atau menonaktifkan penggunaan proxy, tanpa harus logout dan kembali, tergantung pada jaringan apa saya berada. Sebenarnya memikirkannya, sebuah utilitas harus bisa dilatih untuk melihat alamat IP Anda dan tahu kapan Anda perlu menggunakan proxy! Tapi saya ngelantur.

Saya membayangkan menjalankan server proksi lokal yang secara dinamis dapat menambahkan otentikasi dan meneruskan ke server proksi hulu ketika dibutuhkan mungkin merupakan satu-satunya solusi nyata.

Johan
sumber
Jenis proxy apa itu? Berbasis Linux atau berbasis windows?
midnightsteel
Proxy Server berbasis Windows.
Johan
Kedengarannya seperti proxy dalam konfigurasi by pass, dan firewall Anda memungkinkan lalu lintas web keluar dari semua host. Ini adalah cara rekan Anda dapat menjelajah tanpa otentikasi. Apakah server proxy yang Anda gunakan ISA atau TMG?
midnightsteel
Firewall tidak mengizinkan keluar dari semua host, kalau tidak saya hanya akan memotong server proxy. Apa yang dimaksud dengan "melewati konfigurasi"? Biarkan saya mengklarifikasi: Dari workstation Linux saya, satu-satunya aplikasi yang dapat mengakses internet adalah a) Firefox (menggunakan konfigurasi proksi dan otentikasi yang tersimpan di Firefox), serta aplikasi yang berjalan di Windows VM (Catatan - jendela VM adalah anggota domain dan pengguna mengautentikasi terhadap domain saat masuk)
Johan
Saya tidak tahu apakah itu ISA atau TMG. Jika solusinya berbeda tergantung pada yang mana, saya akan tertarik pada kedua solusi tersebut.
Johan

Jawaban:

2

Dari workstation Linux saya, satu-satunya aplikasi yang dapat mengakses internet adalah a) Firefox (menggunakan konfigurasi proksi dan otentikasi yang tersimpan di Firefox), serta aplikasi yang berjalan di Windows VM (Catatan - windows VM adalah anggota domain dan pengguna mengautentikasi terhadap domain saat masuk)

Opsi solusi : Jalankan proxy web pada VM windows Anda. Atur sistem Anda untuk menggunakan instance itu sebagai proxy Anda.

Karena Windows VM Anda sudah diautentikasi dan lalu lintas diizinkan melaluinya, menyiapkan proxy SOCKS pada instance VM tersebut akan memusatkan kebutuhan otentikasi Anda. Jika hanya untuk Anda dan kotak Anda, ini harus baik dan mungkin cukup mudah.

Membonceng ide ini adalah menjalankan daemon SSHD pada VM Windows sehingga Anda dapat melakukan hal-hal seperti terowongan SSH SOCKS dari kotak Anda yang lain melalui VM:

ssh -D 1080 windows-user@windows-vm

Untuk aplikasi yang mungkin memiliki masalah atau di mana Anda tidak ingin mengkonfigurasi ulang aplikasi, Anda dapat menggunakan sshtunnel , yang akan mengatur aturan iptables untuk merutekan lalu lintas. Bekerja untuk sistem Linux dan Mac.

Jika Anda perlu menghindari menginstal proxy pada Windows VM itu sendiri, Anda dapat mengatur kotak proxy Squid yang dikonfigurasi untuk mengotentikasi dirinya terhadap windows AD. Panduan tentang melakukan hal itu ada di sini:

Pilihan solusi : Squid Proxy Authentified via AD / NTLM

http://techmiso.com/1934/howto-install-squid-web-proxy-server-with-active-directory-authentication/( tautan mati )

Solusi proxy NTLM lain, meskipun saya pikir ini benar-benar berjalan pada mesin Windows:

Opsi solusi : Proxy NTLM http://cntlm.sourceforge.net/

Wing Tang Wong
sumber
Saya sudah menyelidiki cntlm, kebetulan juga ada di repositori standar ubuntu.
Johan
1
Solusi cntlm tampaknya menjanjikan. Sejauh ini memungkinkan wget dan kromium bekerja. Wget berfungsi dengan memiliki alamat cntlm: port di file .wgetrc. Chromium berfungsi sedang dikonfigurasikan untuk menggunakan apa yang disebutnya "pengaturan proxy sistem komputer", di mana saya telah mengonfigurasi proxy di pengaturan sistem KDE-> Proxy-> Konfigurasi Manual. Chromium menggunakan ini secara dinamis, yaitu jika saya mengubah pengaturan di KDE, Chromium akan terpengaruh tanpa harus memulai ulang chromium. TBC
Johan
Sejauh ini ini masih TIDAK berfungsi untuk Konqueror, Muon atau Akregator, tidak ada yang mengekspos pengaturan Proxy secara langsung. Saya percaya Muon menggunakan apt-get di latar belakang, yang dapat dikonfigurasi dengan cara yang mirip dengan wget. Saya tidak mengerti perbedaan antara opsi konfigurasi KDE "Proxy yang ditentukan secara manual" dan KDE "System Proxy", ini mungkin kunci untuk membuatnya berfungsi untuk semua aplikasi. Saya juga memperhatikan bahwa pengaturan KDE tidak sedang diisi ke dalam skrip shell, bahkan setelah log-out-dan-kembali, yang mengecewakan.
Johan
Solusi proxy-melalui-MS-Windows tidak dapat saya terima. Orang lain mungkin merasa berbeda tetapi menjalankan seluruh instance OS tambahan hanya untuk menambahkan otentikasi ke paket jaringan keluar adalah terlalu banyak sumber daya babi dan tidak menghapus ketergantungan saya pada MS Windows.
Johan
1
Saya telah memecahkan masalah menggunakan cntlm sesuai saran di atas, dan sangat merekomendasikannya. Masalah yang saya miliki dengan sebagian besar aplikasi KDE yang tidak menggunakan pengaturan global KDE adalah karena format yang salah digunakan dalam menentukan server proxy di pengaturan proxy KDE. Kebetulan Chromium tampaknya tidak peka terhadap hal ini (saya tinggalkan http://saat mengkonfigurasi proxy)
Johan
8

cntlm memberikan solusi, bersama dengan beberapa konfigurasi.

Langkah-langkah dasar untuk diikuti adalah:

  1. Instal cntlm.
  2. Edit file konfigurasinya di /etc/cntlm.conf, komentar yang disertakan membuatnya cukup mudah.
  3. Tambahkan server proxy (atau dua).
  4. Tentukan nama pengguna Anda dan nama domain NT di tempat yang sesuai, dan hapus entri kata sandi.
  5. Mulai layanan cntlm, mis. Via

    $ sudo /etc/init.d/cntlm start
    
  6. cntlm menyediakan cara untuk menguji proksi dan menghasilkan hash dari kata sandi Anda - misalnya dengan perintah (sebagai root)

    $ cntlm -I -M http://www.test.com
    
  7. cntlm akan meminta kata sandi domain Anda. Kemudian akan menguji mekanisme otentikasi yang berbeda terhadap server proxy yang dikonfigurasi. Ketika metode kerja ditemukan, ia mencetak dua baris yang perlu masuk ke file konfigurasinya.

  8. Hentikan server cntlm dan tambahkan baris yang diperoleh pada langkah 6 di atas /etc/cntlm.conf.
  9. Mulai ulang cntlm

Sekarang cntlmsedang berjalan dan siap digunakan. Sejumlah tempat dapat digunakan untuk mengonfigurasi berbagai program untuk menggunakannya. cntlmkemudian akan menambahkan token otentikasi domain NT secara transparan ke paket keluar dan meneruskannya ke server proxy yang dikonfigurasi.

Menggunakan Qt / KDE

Untuk aplikasi asli Qt / KDE, tentukan "Gunakan server proxy yang dikonfigurasikan secara manual" di Pengaturan Sistem KDE -> Pengaturan Jaringan -> Pengaturan proxy . Proxy ditentukan http://localhostdengan port 3128 (Default untuk cntlmkecuali Anda mengubahnya). Aplikasi ini diperbarui secara dinamis dengan pengaturan baru dan tidak ada restart atau logout / login diperlukan untuk memperbarui pengaturan.

Klien Dropbox & Google

Banyak aplikasi dapat menggunakan variabel lingkungan shell. Yang perlu diperhatikan di sini adalah klien Dropbox dan Google Earth. Untuk aplikasi ini gunakan variabel lingkungan shell seperti ini:

no_proxy=localhost,127.0.0.0/8,*.local
NO_PROXY=localhost,127.0.0.0/8,*.local
all_proxy=socks://localhost:3128/
ALL_PROXY=socks://localhost:3128
http_proxy=http://localhost:3128
HTTP_PROXY=http://localhost:3128
ftp_proxy=http://localhost:3128
FTP_PROXY=http://localhost:3128
https_proxy=http://localhost:3128
HTTPS_PROXY=http://localhost:3128

s3cmd, curl, & wget

Catatan: Beberapa aplikasi hanya akan menggunakan nama huruf kecil, yang lain hanya nama huruf besar, beberapa pertama akan mencoba yang satu, lalu yang lain.

s3cmd(Klien Amazon S3), curldan wgetjuga dapat dikonfigurasi melalui file konfigurasi mereka sendiri jika diinginkan. Ini berguna karena mereka membaca file konfigurasi mereka sendiri pada setiap doa. Karena program-program ini biasanya berumur pendek (Doa tunggal ada setelah selesai mengunduh) yang sangat berguna.

Format untuk s3cmddalam ~/.s3cfgadalah:

proxy_host = localhost
proxy_port = 3128

Format untuk wget in ~/.wgetrcadalah:

https_proxy = http://localhost:3128
http_proxy = http://localhost:3128
ftp_proxy = http://localhost:3128

Format untuk curldalam ~/.curlrcadalah:

proxy = localhost:3128

Di sisi lain, mengedit profil shell atau file konfigurasi lingkungan lainnya biasanya memerlukan restart, log-out dan back-in, atau serupa. Perlu menyelidiki /etc/environment, ~/.pam_environment, ~/.kde/env/proxy.shdll karena ini tempat standar untuk menetapkan pengaturan proxy dikonfigurasi melalui variabel lingkungan shell, terutama untuk mempengaruhi semua pengguna dan layanan pada sistem.

Saya juga mengerti bahwa adalah mungkin untuk mengubah pengaturan lingkungan berdasarkan per-aplikasi menggunakan .desktopfile masing-masing tetapi belum mencobanya (berhasil).

VirtualBox

VirtualBox dapat dikonfigurasikan untuk menggunakan proxy (misalnya untuk memeriksa dan mengunduh pembaruan perangkat lunak) menggunakan GUI atau menggunakan perintah:

$ VBoxManage setextradata global GUI/ProxySettings \
    "proxyEnabled,localhost,3128,authDisabled,,"

Demi kelengkapan, untuk menonaktifkannya gunakan:

$ VBoxManage setextradata global GUI/ProxySettings \    
    "proxyDisabled,,,authDisabled,,"

Firefox

Untuk Firefox saya menggunakan addon QuickProxy. Firefox sendiri jika dikonfigurasi secara manual untuk menggunakan server proxy pada mesin lokal, jadi QuickProxy hanya mengaktifkan / menonaktifkan pengaturan.

TEPAT

APT (digunakan di latar belakang oleh sinaptik, muon, dan teman-teman) menggunakan file konfigurasi /etc/apt/apt.conf.d/, misalnya 00proxy Mengaktifkan proxy untuk APT dilakukan dengan menggunakan baris seperti:

Acquire::http::Proxy "http://localhost:3128";
#Acquire::ftp::proxy "ftp://localhost:3128/";
#Acquire::https::proxy "https://localhost:3128/";

Catatan: add-apt-repository menggunakan profil root, atau Anda dapat mengkonfigurasi sudo untuk memungkinkan semua pengaturan http * _proxy jatuh.

Sebuah skrip untuk mengatur semuanya

FWIW Saya saat ini sedang dalam proses menulis skrip modular untuk mengaktifkan / menonaktifkan proxy untuk berbagai program. Sejauh ini saya telah menulis modul-modul berikut:

$ ls -lF proxymanager/modules/
total 60
-rwxr-xr-x 1 root root  919 Oct  8 17:27 apt*
-rwxr-xr-x 1 root root 1037 Oct  8 13:10 bashrc*
-rwxr-xr-x 1 root root  391 Oct  8 12:18 cntlm*
-rwxr-xr-x 1 root root  684 Oct  8 12:58 curl*
-rwxr-xr-x 1 root root  609 Oct  8 13:02 dropbox*
-rwxr-xr-x 1 root root  672 Oct  8 12:18 gnome*
-rwxr-xr-x 1 root root  691 Oct  8 12:18 kde*
-rwxr-xr-x 1 root root  689 Oct  8 13:03 root_bashrc*
-rwxr-xr-x 1 root root  691 Oct  8 13:03 root_curl*
-rwxr-xr-x 1 root root  827 Oct  8 13:03 s3cmd*
-rwxr-xr-x 1 root root  454 Oct  8 13:03 survive_reboot*
-rwxr-xr-x 1 root root  860 Oct  8 13:06 suse-sysproxy*
-rwxr-xr-x 1 root root  653 Oct  8 12:46 sysenvironment*
-rwxr-xr-x 1 root root  465 Oct  8 13:04 virtualbox*
-rwxr-xr-x 1 root root  573 Oct  8 13:04 wgetrc*

Serta aplikasi kontrol. Mudah-mudahan ini akan segera dipindahkan ke github atau rumah online lainnya.

Johan
sumber
Ini sejak pindah ke GitHub, memperoleh lebih banyak modul, dan perlahan tapi pasti mendekati bentuk yang dapat digunakan. Tipe pemberani
Johan
Hal baru untuk dipelajari. Terima kasih. Bagaimana saya bisa meneruskan kata sandi ke cntlm di baris perintah ... Saya tidak ingin ada prompt yang meminta untuk memasukkan kata sandi?
Thushi
0

Otentikasi proksi dengan ntlm dijelaskan dengan baik di tautan di bawah ini.

Tetapi masalah dengan ntlm adalah Anda harus memperbarui cntlmfile konfigurasi berkali-kali sehari. Pertimbangkan situasi di mana pengguna yang berbeda berbagi mesin yang sama dan mereka harus memperbarui kata sandi AD mereka dalam cntlmfile konfigurasi setiap kali mereka masuk ke sistem. Mungkin ada metode yang tersedia untuk memperbarui cntlmfile konfigurasi secara otomatis setiap kali pengguna masuk.

pengguna173141
sumber
Saya hanya memperbarui file konfigurasi cntlm saya ketika kata sandi proksi NTLM saya (Kata sandi domain) berubah.
Johan