Come configurare per un server proxy di autenticazione


8

Il mio server proxy di lavoro richiede l'autenticazione con le credenziali dell'utente del dominio Microsoft AD. Tutti sanno come funziona: se si accede a una workstation Windows, le richieste di accesso a Internet basate su browser "Internet Explorer" vengono automaticamente autenticate (e identificate) utilizzando le credenziali di accesso al dominio.

Ho scoperto che Firefox può anche autenticarsi con questi server proxy e da tempo ho ipotizzato che "facciano qualcosa di speciale". Recentemente un collega ha installato Linux Mint in una macchina virtuale e con mia sorpresa è stato impegnato a ricevere aggiornamenti da Internet. Quando gli ho chiesto come ha funzionato, ha fatto spallucce e ha detto "Ha funzionato"

Questo mi ha spinto a rivedere le impostazioni del proxy. Corro Kubuntu (con un mix di applicazioni G * e K *, ma utilizzo le applicazioni GTK solo quando sono convinto che siano molto meglio di qualsiasi cosa K *)

Ho ancora una copia del guest Windows in esecuzione in una VM VirtualBox, principalmente per la stampa e per l'accesso a siti Web interni / aziendali (che richiedono sia l'autenticazione e l'identificazione tramite credenziali di dominio MS) sia per cambiare la password del mio dominio ogni tanti giorni .

Quindi sarebbe molto utile se potessi far funzionare [alcune / la maggior parte / tutte] delle mie applicazioni Linux tramite il server proxy. I miei bisogni più urgenti sono che Akregator e Muon siano in grado di lavorare. Altre applicazioni che possono trarre vantaggio sono alcune app che si aggiornano automaticamente (ad es. Virtual Box Extentions) o si avvolgono attorno a un browser (vengono in mente più temi / carte da parati / ecc. E l'uso occasionale di wget)

I client SSH / SCP riescono a funzionare tramite il firewall senza autenticazione.

Qual è il modo giusto (strumento e / o procedura) per configurarlo, idealmente in una singola posizione perché dover mantenere la mia password in più posizioni è una ricetta per essere bloccato dal mio account: - /

Oh, e sarebbe un sogno diventato realtà se potessi avere l'equivalente dell'utility di disabilitazione / abilitazione proxy "Quick Proxy" di Firefox, ad esempio un clic per abilitare o disabilitare l'uso del proxy, senza doverti disconnettere e riconnetterti, a seconda della rete in cui mi trovo. A pensarci bene, un'utilità dovrebbe essere addestrabile per guardare il tuo indirizzo IP e sapere quando è necessario utilizzare il proxy! Ma sto divagando.

Immagino che l'esecuzione di un server proxy locale che possa aggiungere dinamicamente l'autenticazione e inoltrarlo a un server proxy upstream quando necessario possa essere l'unica vera soluzione.


Che tipo di proxy è? Basato su Linux o basato su Windows?
mezzanotte

Il server proxy è basato su Windows.
Johan

Sembra che il proxy sia in fase di configurazione e che il tuo firewall consenta il traffico web in uscita da tutti gli host. Ecco come il tuo collega è stato in grado di navigare senza autenticazione. Il server proxy che stai utilizzando ISA o TMG?
mezzanotte

Il firewall non consente l'outbound da tutti gli host, altrimenti ignorerei semplicemente il server proxy. Che cosa significa "passa per configurazione"? Vorrei chiarire: dalla mia stazione di lavoro Linux, l'unica applicazione che può accedere a Internet è a) Firefox (utilizzando la propria configurazione proxy e autenticazione memorizzata in Firefox), nonché le applicazioni in esecuzione in una macchina virtuale Windows (Nota: la macchina virtuale Windows è un membro del dominio e l'utente esegue l'autenticazione rispetto al dominio durante l'accesso)
Johan

Non so se si tratti di ISA o TMG. Se la soluzione è diversa a seconda di quale, sarei interessato a entrambe le soluzioni.
Johan

Risposte:


2

Dalla mia workstation Linux, le uniche applicazioni che possono accedere a Internet sono a) Firefox (utilizzando la propria configurazione proxy e autenticazione memorizzata in Firefox), nonché le applicazioni in esecuzione in una VM Windows (Nota: la VM Windows è un membro di dominio e l'utente esegue l'autenticazione rispetto al dominio durante l'accesso)

Opzione soluzione : eseguire un proxy Web sulla VM di Windows. Configura il tuo sistema per utilizzare quell'istanza come proxy.

Poiché la VM di Windows è già autenticata e il traffico è autorizzato attraverso di essa, la configurazione di un proxy SOCKS su tale istanza di VM centralizzerà le tue esigenze di autenticazione. Se è solo per te e per le tue scatole, questo dovrebbe andare bene ed è probabilmente abbastanza semplice.

Piggyback su questa idea è far funzionare un demone SSHD sulla VM di Windows in modo da poter fare cose come tunnel SSH SOCKS dalle altre caselle attraverso la VM:

ssh -D 1080 windows-user@windows-vm

Per quelle app che potrebbero avere problemi o in cui non si desidera riconfigurare le app, è possibile utilizzare sshtunnel , che imposterà le regole di iptables per instradare il traffico. Funziona con sistemi Linux e Mac.

Se è necessario evitare l'installazione di un proxy sulla macchina virtuale Windows stessa, è possibile impostare una casella proxy Squid configurata per l'autenticazione su Windows AD. Una guida su come farlo si trova qui:

Opzione soluzione : Squid Proxy autenticato tramite AD / NTLM

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

Un'altra soluzione proxy NTLM, anche se penso che questa funzioni effettivamente su un computer Windows:

Opzione soluzione : proxy NTLM http://cntlm.sourceforge.net/


Sto già studiando cntlm, capita anche di trovarsi nei repository Ubuntu standard.
Johan

1
La soluzione cntlm sembra essere promettente. Finora permette a wget e cromo di funzionare. Wget funziona avendo l'indirizzo cntlm: port nel file .wgetrc. Chromium funziona configurandosi per usare quelle che chiama "impostazioni proxy del sistema del computer", dove ho configurato il proxy nelle impostazioni di sistema di KDE-> Proxy-> Configurazione manuale. Chromium lo utilizza in modo dinamico, ovvero se cambio l'impostazione in KDE, Chromium viene interessato senza dover riavviare il cromo. TBC
Johan

Finora questo NON funziona ancora per Konqueror, Muon o Akregator, nessuno dei quali espone direttamente le impostazioni del proxy. Credo che Muon usi apt-get in background, che è configurabile in modo simile a wget. Non capisco la differenza tra le opzioni di configurazione "Proxy specificato manualmente" di KDE e "Proxy di sistema" di KDE, questa potrebbe essere la chiave per farlo funzionare per tutte le applicazioni. Ho anche notato che le impostazioni di KDE non vengono popolate in script di shell, anche dopo il log-out-and-back-in, il che è deludente.
Johan

La soluzione proxy-through-MS-Windows non è accettabile per me. Altri potrebbero sentirsi diversi, ma eseguire un'intera istanza di sistema operativo in più solo per aggiungere l'autenticazione ai pacchetti di rete in uscita è un po 'troppo un porco di risorse e non rimuove la mia dipendenza da MS Windows.
Johan

1
Ho risolto il problema usando cntlm secondo il suggerimento sopra e lo consiglio vivamente. Il problema che ho riscontrato con la maggior parte delle applicazioni KDE che non utilizzavano l'impostazione globale di KDE era dovuto al formato errato utilizzato per specificare il server proxy nelle impostazioni proxy di KDE. Per inciso, il cromo sembra non essere sensibile a questo (ne ho tralasciato la http://configurazione del proxy)
Johan

8

cntlm fornisce una soluzione, insieme ad alcune configurazioni.

I passaggi di base da seguire sono:

  1. Installa cntlm.
  2. Modifica il suo file di configurazione in /etc/cntlm.conf, i commenti inclusi lo rendono abbastanza semplice.
  3. Aggiungi un server proxy (o due).
  4. Specificare il nome utente e il nome dominio NT nelle posizioni appropriate e rimuovere la voce della password.
  5. Avviare il servizio cntlm, ad es. Tramite

    $ sudo /etc/init.d/cntlm start
    
  6. cntlm fornisce un modo per testare il proxy e generare un hash dalla tua password - ad es. dal comando (come root)

    $ cntlm -I -M http://www.test.com
    
  7. cntlm richiederà la password del tuo dominio. Quindi testerà diversi meccanismi di autenticazione sul server proxy configurato. Quando viene trovato un metodo di lavoro, stampa due righe che devono andare nel suo file di configurazione.

  8. Arrestare il server cntlm e aggiungere le righe ottenute nel passaggio 6 sopra /etc/cntlm.conf.
  9. Riavvia cntlm

Ora cntlmè in esecuzione e pronto per essere utilizzato. Un certo numero di posti può essere utilizzato per configurare vari programmi per usarlo. cntlmaggiungerà quindi in modo trasparente i token di autenticazione del dominio NT ai pacchetti in uscita e li inoltrerà al server proxy configurato.

Usando Qt / KDE

Per le applicazioni native Qt / KDE, specifica "Usa server proxy configurato manualmente" nelle Impostazioni di sistema di KDE -> Impostazioni di rete -> Impostazioni proxy . Il proxy è specificato come http://localhostcon la porta 3128 (impostazione predefinita a cntlmmeno che non sia stata modificata). Queste applicazioni vengono aggiornate dinamicamente con nuove impostazioni e non è necessario riavviare o disconnettersi / accedere per aggiornare le impostazioni.

Dropbox e clienti Google

Molte applicazioni possono utilizzare variabili di ambiente shell. Degno di nota qui sono i client Dropbox e Google Earth. Per queste applicazioni utilizzare variabili di ambiente shell come queste:

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 e wget

Nota: alcune applicazioni useranno solo i nomi in minuscolo, altre solo i nomi in maiuscolo, alcune proveranno prima l'una, poi l'altra.

s3cmd(Il client Amazon S3) curle , wgetse lo si desidera , può inoltre essere configurato tramite i propri file di configurazione. Questo è utile perché leggono i propri file di configurazione su ogni chiamata. Dal momento che questi programmi hanno in genere vita breve (esiste una sola invocazione dopo aver completato il download) che è molto utile.

Il formato per s3cmdin ~/.s3cfgè:

proxy_host = localhost
proxy_port = 3128

Il formato per wget in ~/.wgetrcè:

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

Il formato per curlin ~/.curlrcè:

proxy = localhost:3128

D'altra parte, la modifica del profilo della shell o di altri file di configurazione dell'ambiente richiede in genere un riavvio, il log-in e il back-in o simili. Vale la pena indagare /etc/environment, ecc ~/.pam_environment. ~/.kde/env/proxy.shPoiché si tratta di posizioni standard per l'impostazione delle impostazioni proxy configurate tramite variabili di ambiente shell, in particolare per influenzare tutti gli utenti e i servizi sul sistema.

Comprendo anche che è possibile modificare le impostazioni dell'ambiente in base all'applicazione utilizzando i rispettivi .desktopfile, ma non l'ho ancora provato (con successo).

VirtualBox

VirtualBox può essere configurato per utilizzare un proxy (ad esempio per verificare e scaricare gli aggiornamenti software) usando la sua GUI o usando il comando:

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

Per completezza, per disabilitarla utilizzare:

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

Firefox

Per Firefox utilizzo l'addon QuickProxy. Firefox stesso se configurato manualmente per utilizzare il server proxy sul computer locale, quindi QuickProxy semplicemente abilita / disabilita l'impostazione.

APT

APT (utilizzato in background da synaptic, muon e amici) utilizza un file di configurazione /etc/apt/apt.conf.d/, ad es. L' 00proxy abilitazione del proxy per APT viene eseguita usando linee come:

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

Nota: add-apt-repository utilizza il profilo radice, oppure è possibile configurare sudo per consentire il passaggio di tutte le impostazioni http * _proxy.

Una sceneggiatura per dominarli tutti

FWIW In questo momento sto scrivendo uno script modulare per abilitare / disabilitare il proxy per numerosi programmi. Finora ho scritto i seguenti moduli:

$ 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*

Oltre a un'applicazione di controllo. Speriamo che presto saranno spostati in un github o in un'altra casa online.


Da allora questo è passato a GitHub, ha guadagnato più moduli e si sta lentamente ma sicuramente avvicinando alla forma utilizzabile. I tipi audaci e avventurosi possono trovare questo utile: github.com/Tahaan/proxymanager
Johan

Nuova cosa da imparare. Grazie. Come posso passare la password a cntlm nella riga di comando ... Non voglio che venga richiesto di inserire la password?
Thushi,

0

L'autenticazione proxy con ntlm è spiegata bene nei collegamenti seguenti.

Ma il problema con ntlm è che devi aggiornare il cntlmfile di configurazione più volte al giorno. Considerare una situazione in cui diversi utenti condividono una macchina comune e devono aggiornare la propria password AD nel cntlmfile di configurazione ogni volta che accedono al sistema. Forse esiste un metodo disponibile per aggiornare automaticamente il cntlmfile di configurazione ogni volta che un utente ha effettuato l'accesso.


Aggiorna il mio file di configurazione cntlm quando cambia la mia password proxy NTLM (la password del dominio).
Johan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.