Proxy Squid autenticando no Samba PDC
Prezados Colegas,
Primeiramente saudações pinguianas a todos.
Vou aproveitar o “gancho” do artigo anterior, no qual ensinei como instalar um Servidor Samba como controlador de domínio (PDC) para ensinar como montar um Proxy com o Squid autenticando na própria base do PDC. Clique aqui para ler o artigo do PDC.
Bom, chegou a hora de começarmos as configurações.
Em primeiro lugar, você deve descobrir através do arquivo smb.conf onde está armazenado o compartilhamento NETLOGON e criar um arquivo chamado “proxyauth” dentro dele. Esse arquivo deve conter uma linha apenas com a palavra “allow”.
vim /etc/samba/netlogon/proxyauth
Deixe-o assim:
allow
Agora salve e saia.
O segundo passo é instalar o proxy squid e o cliente do samba. Faça o comando abaixo:
apt-get -y install squid smbclient winbind
Fazendo isso, vamos então testar a integração entre as duas ferramentas com o comando abaixo:
Agora devemos inserir algumas opções do Winbind no samba. Para isso, vamos editar o arquivo de configuração:
vim /etc/samba/smb.conf
Insira as linhas abaixo na seção [global]:
winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users = yes winbind enum groups = yes
Salve e saia!
Agora precisamos editar o arquivo “/etc/nsswitch.conf”.
vim /etc/nsswitch.conf
Vamos alterar as linhas que começam com passwd, group e shadow:
Vamos deixa-las assim:
passwd: compat winbind group: compat winbind shadow: compat winbind
Agora vamos corrigir um problema do winbind que faz com que as permissões fiquem erradas:
vim /etc/init.d/winbind
Deixe-o exatamente assim:
#!/bin/sh # Start/stops the winbindd daemon. PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/winbindd # clear conflicting settings from the environment unset TMPDIR # See if the daemon is there test -x $DAEMON || exit 0 run_dir="/var/run/samba" if [ ! -d ${run_dir} ]; then mkdir -p ${run_dir} fi case "$1" in start) echo -n "Starting the Winbind daemon: winbindd" start-stop-daemon --start --quiet --exec $DAEMON sleep 5 chown -R proxy.proxy /var/lib/samba/winbindd_privileged echo "." ;; stop) echo -n "Stopping the Winbind daemon: winbindd" start-stop-daemon --stop --quiet --oknodo --exec $DAEMON sleep 2 rm -r /var/lib/samba/winbindd_privileged echo "." ;; restart|force-reload) /etc/init.d/winbind stop sleep 2 /etc/init.d/winbind start ;; *) echo "Usage: /etc/init.d/winbind {start|stop|restart|force-reload}" exit 1 ;; esac exit 0
Agora precisamos reiniciar o samba e o winbind:
/etc/init.d/samba restart /etc/init.d/winbind restart
Agora, vamos ingressar o próprio servidor no domínio:
net rpc join -W APRENDENDOLINUX -U root
Insira a senha que você definiu para o usuário root no samba e tecle “enter”.
A saída deve ser mais ou menos assim:
Joined domain APRENDENDOLINUX.
Agora vamos testar a integração:
ntlm_auth --doamain=APRENDENDOLINUX --username=maria
Insira a senha do usuário “maria” e tecle “enter”.
A saída do comando deve ser mais ou menos assim:
NT_STATUS_OK: Success (0x0)
Você pode usar também o comando “wbinfo -u” para listar os usuários do PDC:
wbinfo -u
Estando tudo ok, vamos finalmente configurar o proxy. Não vou entrar no mérito de fazer uma configuração detalhada sobre o Squid, até porque existe milhares de tutoriais na internet sobre isso. Vou apenas demonstrar como configurar as linhas necessárias para o Proxy autenticar no PDC. Vou tomar como base o arquivo de configuração padrão do Squid com os comentários removidos:
acl all src all auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 5 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # https acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # https-mgmt acl Safe_ports port 488 # gss-https acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling https acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT acl usuarios proxy_auth REQUIRED # Usuarios com acesso total acl cpd-total proxy_auth henrique https_access allow cpd-total # Usuários com acesso controlado pelos sites bloqueados acl acesso_restrito proxy_auth joao acl url_bloqueado url_regex -i "/etc/squid/bloqueados.txt" https_access deny url_bloqueado https_access allow acesso_restrito !url_bloqueado # Usuarios com acesso somente aos sites liberados acl acesso_bloqueado proxy_auth maria acl url_liberado url_regex -i "/etc/squid/liberados.txt" https_access allow url_liberado https_access deny acesso_bloqueado !url_liberado https_access allow manager localhost https_access deny manager https_access allow purge localhost https_access deny purge https_access deny !Safe_ports https_access deny CONNECT !SSL_ports https_access allow localhost https_access deny all icp_access allow localnet icp_access deny all https_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 acl shoutcast rep_header X-https09-First-Line ^ICY.[0-9] upgrade_https0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT hosts_file /etc/hosts coredump_dir /var/spool/squid
Eu não vou entrar no mérito de explicar cada linha do squid. Vou explicar apenas as necessárias para integração funcionar.
As linhas 2 e 3 são as linhas responsáveis pela autenticação.
A linha 30 é a linha responsável por forçar os usuários a se autenticarem.
Daí por diante você configura o proxy ao seu gosto.
A próxima etapa é configurar o navegador Internet Explorer para utilizar o proxy autenticado:
Nas máquinas com ruWindows faça o seguinte:
Internet Explorer > Menu Ferramentas > Opções > Conexões > Configurações da LAN
Na opção “Servidor proxy” entre com o IP do servidor proxy (Squid) e a porta na qual o Squid está configurado (No nosso caso é 3128).
É interessante também marcar a opção de “não usar proxy para endereços locais”.
A ultima etapa é bloquear no firewall a porta 80. Assim os usuários só conseguirão navegar se o proxy estiver corretamente configurado no servidor. Para isso execute ou insira a linha abaixo em seu script de firewall:
iptables -I FORWARD -p tcp --dport 80 -j DROP
Observação importante: A versão do samba utilizada para essa integração foi a “3.4.17”. Eu havia tentado antes com a versão “3.5.6” do Debian Squeeze mas não obtive exito.
Você encontra a versão 3.4.17 do samba clicando aqui.
Isso é tudo galera. Espero ter colaborado.
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes