Como configurar para um servidor proxy de autenticação

8

Meu servidor proxy de trabalho requer autenticação com as credenciais de usuário do domínio do Microsoft AD. Todo mundo sabe como funciona: Se você efetuar login em uma estação de trabalho Windows, as solicitações de acesso à Internet baseadas no navegador "Internet Explorer" serão automaticamente autenticadas (e identificadas) usando suas credenciais de login no domínio.

Eu descobri que o Firefox também pode se autenticar nesses servidores proxy e há muito tempo presumia que eles "fazem algo especial". Recentemente, um colega instalou o Linux Mint em uma VM e, para minha surpresa, ele estava ocupado recebendo atualizações da Internet. Quando perguntei como ele conseguiu o trabalho, ele deu de ombros e disse: "Funcionou"

Isso me levou a olhar novamente para as configurações de proxy. Eu executo o Kubuntu (com uma mistura de aplicativos G * e K *, mas só uso os aplicativos GTK quando estou convencido de que eles são muito melhores do que qualquer outro K *)

Ainda tenho uma cópia do convidado do Windows em execução em uma VM VirtualBox, principalmente para impressão e para acessar sites internos / corporativos (que exigem autenticação e identificação por meio de credenciais de domínio MS), bem como para alterar minha senha de domínio a cada dia. .

Portanto, seria muito útil que eu conseguisse fazer com que alguns dos meus aplicativos Linux funcionassem através do servidor proxy. Minhas necessidades mais urgentes são que Akregator e Muon possam trabalhar. Outros aplicativos que podem se beneficiar são alguns aplicativos que se atualizam automaticamente (por exemplo, Extensões de caixa virtual) ou se envolvem em torno de um navegador (lembre-se de obter mais temas / papéis de parede / etc) e o uso ocasional do wget)

Os clientes SSH / SCP conseguem trabalhar através do firewall sem autenticação.

Qual é a maneira correta (ferramenta e / ou procedimento) para configurar isso, idealmente em um único local, porque ter que manter minha senha em vários locais é uma receita para ficar bloqueado na minha conta: - /

Ah, e seria um sonho se eu pudesse ter o equivalente ao utilitário de desativação / ativação de proxy "Quick Proxy" do Firefox, por exemplo, um clique para ativar ou desativar o uso de proxy, sem precisar pressionar para sair e voltar, dependendo da rede em que estou. Na verdade, pensando nisso, um utilitário deve ser treinado para examinar seu endereço IP e saber quando você precisa usar o proxy! Mas eu discordo.

Eu imagino rodar um servidor proxy local que pode adicionar dinamicamente a autenticação e encaminhar para um servidor proxy upstream, quando necessário, pode ser a única solução real.

Johan
fonte
Que tipo de proxy é esse? Baseado em Linux ou Windows?
midnightsteel
O servidor proxy é baseado no Windows.
31413 Johan Johan
Parece que o proxy está passando por uma configuração e seu firewall está permitindo o tráfego da web de saída de todos os hosts. Foi assim que seu colega conseguiu navegar sem autenticação. O servidor proxy que você está usando ISA ou TMG?
midnightsteel
O firewall não permite a saída de todos os hosts, caso contrário, eu ignoraria o servidor proxy. O que significa "passar por configuração"? Deixe-me esclarecer: Na minha estação de trabalho Linux, o único aplicativo que pode acessar a Internet é: a) Firefox (usando sua própria configuração de proxy e autenticação armazenada no Firefox), bem como aplicativos em execução em uma VM do Windows (Observação - a VM do Windows é um membro do domínio e os autentica do utilizador contra o domínio quando login)
Johan
Não sei se é ISA ou TMG. Se a solução for diferente dependendo de qual, eu estaria interessado em ambas as soluções.
31413 Johan

Respostas:

2

Na minha estação de trabalho Linux, o único aplicativo que pode acessar a Internet é a) Firefox (usando sua própria configuração e autenticação de proxy armazenada no Firefox), bem como aplicativos em execução em uma VM do Windows (Observação: a VM do Windows é um membro do domínio e o usuário se autentica no domínio ao fazer login)

Opção de solução : execute um proxy da web na sua VM do Windows. Configure seu sistema para usar essa instância como seu proxy.

Como a sua VM do Windows já está autenticada e o tráfego é permitido através dela, a configuração de um proxy SOCKS nessa instância da VM centralizará suas necessidades de autenticação. Se for apenas para você e suas caixas, isso deve ser bom e provavelmente é bastante direto.

Seguir essa ideia é obter um daemon SSHD em execução na VM do Windows para que você possa fazer coisas como túneis SSH SOCKS de suas outras caixas através da VM:

ssh -D 1080 windows-user@windows-vm

Para os aplicativos que podem ter problemas ou onde você não deseja reconfigurá-los, você pode usar o sshtunnel , que configurará as regras do iptables para rotear o tráfego. Funciona para sistemas Linux e Mac.

Se você precisar evitar a instalação de um proxy na própria VM do Windows, poderá configurar uma caixa de proxy do Squid configurada para se autenticar no Windows AD. Um guia sobre como fazer isso localizado aqui:

Opção de solução : Proxy Squid autenticado via AD / NTLM

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

Outra solução de proxy NTLM, embora eu ache que essa seja executada em uma máquina Windows:

Opção de solução : proxy NTLM http://cntlm.sourceforge.net/

Wing Tang Wong
fonte
Já estou investigando o cntlm, ele também está nos repositórios padrão do ubuntu.
11373 Johan
1
A solução cntlm parece ser promissora. Até agora, ele permite que o wget e o cromo funcionem. O Wget funciona com o endereço cntlm: port no arquivo .wgetrc. O Chromium trabalha sendo configurado para usar o que chama de "configurações de proxy do sistema do computador", onde eu configurei o proxy nas configurações do sistema KDE-> Proxy-> Configuração Manual. O Chromium usa isso dinamicamente, ou seja, se eu alterar a configuração no KDE, o Chromium é afetado sem precisar reiniciar o Chromium. TBC
Johan
Até agora, isso ainda não está funcionando para o Konqueror, o Muon ou o Akregator, nenhum dos quais expõe as configurações de proxy diretamente. Acredito que Muon usa o apt-get em segundo plano, que é configurável de maneira semelhante ao wget. Não entendo a diferença entre as opções de configuração "Proxy especificado manualmente" do KDE e "Proxy do sistema" do KDE; isso pode ser a chave para fazê-lo funcionar em todos os aplicativos. Percebo também que as configurações do KDE não estão sendo preenchidas em scripts de shell, mesmo depois de sair e voltar, o que é decepcionante.
11373 Johan
A solução de proxy através do MS-Windows não é aceitável para mim. Outros podem se sentir diferentes, mas executar uma instância extra de todo o SO apenas para adicionar autenticação aos pacotes de rede de saída é um pouco exagerado e não remove minha dependência do MS Windows.
11373 Johan
1
Resolvi o problema usando o cntlm conforme a sugestão acima e recomendo. O problema que tive com a maioria dos aplicativos KDE que não usava a configuração global do KDE foi devido ao formato incorreto usado na especificação do servidor proxy nas configurações de proxy do KDE. Aliás cromo parece não ser sensível a isso (eu deixei de fora a http://na configuração do proxy)
Johan
8

cntlm fornece uma solução, juntamente com algumas configurações.

Os passos básicos a seguir são:

  1. Instale o cntlm.
  2. Edite seu arquivo de configuração em /etc/cntlm.conf, os comentários incluídos facilitam bastante.
  3. Adicione um servidor proxy (ou dois).
  4. Especifique seu nome de usuário e nome de domínio NT nos locais apropriados e remova a entrada da senha.
  5. Inicie o serviço cntlm, por exemplo, via

    $ sudo /etc/init.d/cntlm start
    
  6. O cntlm fornece uma maneira de testar o proxy e gerar um hash a partir da sua senha - por exemplo, pelo comando (como root)

    $ cntlm -I -M http://www.test.com
    
  7. O cntlm solicitará sua senha de domínio. Em seguida, ele testará diferentes mecanismos de autenticação no servidor proxy configurado. Quando um método de trabalho é encontrado, ele imprime duas linhas que precisam ser inseridas no arquivo de configuração.

  8. Pare o servidor cntlm e adicione as linhas obtidas na etapa 6 acima a /etc/cntlm.conf.
  9. Reinicie o cntlm

Agora cntlmestá em execução e pronto para ser usado. Vários locais podem ser usados ​​para configurar vários programas para usá-lo. cntlmadicionará transparentemente tokens de autenticação de domínio NT aos pacotes enviados e os encaminhará para o servidor proxy configurado.

Usando o Qt / KDE

Para aplicativos nativos do Qt / KDE, especifique "Usar servidor proxy configurado manualmente" em Configurações do sistema KDE -> Configurações de rede -> Configurações de proxy . O proxy é especificado como http://localhostna porta 3128 (o padrão é, a cntlmmenos que você o tenha alterado). Esses aplicativos são atualizados dinamicamente com novas configurações e não é necessário reiniciar ou fazer logout / login para atualizar as configurações.

Dropbox e clientes do Google

Muitos aplicativos podem usar variáveis ​​de ambiente do shell. Digno de nota aqui são os clientes do Dropbox e do Google Earth. Para esses aplicativos, use variáveis ​​de ambiente do shell como estas:

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: Alguns aplicativos usarão apenas os nomes em minúsculas, outros apenas os nomes em maiúsculas, alguns tentarão primeiro um e depois o outro.

s3cmd(O cliente Amazon S3) curle , wgetadicionalmente , podem ser configurados por meio de seus próprios arquivos de configuração. Isso é útil porque eles lêem seus próprios arquivos de configuração em cada chamada. Como esses programas geralmente têm vida curta (existe uma única chamada após a conclusão do download), isso é muito útil.

O formato para s3cmdin ~/.s3cfgé:

proxy_host = localhost
proxy_port = 3128

O formato para o wget in ~/.wgetrcé:

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

O formato para curlin ~/.curlrcé:

proxy = localhost:3128

Por outro lado, a edição do perfil do shell ou de outros arquivos de configuração do ambiente geralmente requer reinicialização, logoff e logon ou similar. Vale a pena investigar /etc/environment, etc ~/.pam_environment, ~/.kde/env/proxy.shpois esses são locais padrão para definir configurações de proxy configuradas por meio de variáveis ​​de ambiente do shell, principalmente para afetar todos os usuários e serviços no sistema.

Também entendo que é possível alterar as configurações do ambiente por aplicativo usando seus respectivos .desktoparquivos, mas ainda não o tentei (com sucesso).

VirtualBox

O VirtualBox pode ser configurado para usar um proxy (por exemplo, para verificar e baixar atualizações de software) usando sua GUI ou usando o comando:

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

Para completar, para desativá-lo, use:

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

Raposa de fogo

Para o Firefox, eu uso o complemento QuickProxy. O próprio Firefox se configurado manualmente para usar o servidor proxy na máquina local, portanto, o QuickProxy simplesmente ativa / desativa a configuração.

APT

O APT (usado em segundo plano por synaptic, múon e amigos) usa um arquivo de configuração /etc/apt/apt.conf.d/, por exemplo, a 00proxy ativação do proxy para o APT é feita usando linhas como:

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

Nota: O add-apt-repository usa o perfil raiz, ou você pode configurar o sudo para permitir que todas as configurações http * _proxy sejam aprovadas.

Um script para governar todos eles

FWIW No momento, estou escrevendo um script modular para ativar / desativar o proxy para vários programas. Até agora escrevi os seguintes módulos:

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

Bem como um aplicativo de controle. Esperamos que em breve eles sejam transferidos para um github ou outra casa on-line.

Johan
fonte
Desde então, isso mudou para o GitHub, ganhou mais módulos e está lenta mas seguramente se aproximando da forma utilizável. Ousadia e tipos de aventureiros podem encontrar este útil: github.com/Tahaan/proxymanager
Johan
O que você precisa saber antes de começar a usar o cntlm na linha de comando ... Não quero nenhum prompt pedindo para inserir a senha?
Thushi 04/02
0

A autenticação de proxy com o ntlm é explicada bem nos links abaixo.

Mas o problema com o ntlm é que você precisa atualizar o cntlmarquivo de configuração várias vezes ao dia. Considere uma situação em que usuários diferentes compartilhem uma máquina comum e precisem atualizar sua senha do AD no cntlmarquivo de configuração sempre que fizerem login no sistema. Talvez haja um método disponível para atualizar automaticamente o cntlmarquivo de configuração sempre que um usuário estiver conectado.

user173141
fonte
Eu atualizo apenas meu arquivo de configuração cntlm quando minha senha de proxy NTLM (a senha do domínio) é alterada.
7279 Johan