{"id":73,"date":"2016-08-06T21:41:54","date_gmt":"2016-08-07T00:41:54","guid":{"rendered":"http:\/\/www.tonev.pro.br\/?p=73"},"modified":"2016-08-10T10:15:04","modified_gmt":"2016-08-10T13:15:04","slug":"proxy-squid-com-autenticacao-ntlm-transparente","status":"publish","type":"post","link":"https:\/\/www.tonev.pro.br\/?p=73","title":{"rendered":"Proxy Squid com autentica\u00e7\u00e3o NTLM transparente"},"content":{"rendered":"<p>Solu\u00e7\u00e3o r\u00e1pida e pratica para quem utiliza Squid e quer integrar ele com a autentica\u00e7\u00e3o do Windows. J\u00e1 estou levando em considera\u00e7\u00e3o de que vai haver redund\u00e2ncia, tanto na autentica\u00e7\u00e3o, como no servi\u00e7o de proxy.<\/p>\n<p>Pr\u00e9-requisitos:<br \/>\n&#8211; Dom\u00ednio Windows AD com 2 servidores. Servidor 1 &#8211; IP 10.0.0.10, FQDN AD01.DOMINIO.LOCAL. Servidor 2\u00a0&#8211; IP 10.0.0.11, FQDN AD02.DOMINIO.LOCAL\u00a0;<br \/>\n&#8211; Dois servidores para o Squid j\u00e1 com a instala\u00e7\u00e3o b\u00e1sica do Debian 8.5 de 64bits. Servidor 1 &#8211; IP 10.0.0.20, FQDN PROXY01.DOMINIO.LOCAL. Servidor 1 &#8211; IP 10.0.0.21, FQDN PROXY02.DOMINIO.LOCAL. ( ambiente em que a solu\u00e7\u00e3o foi testada );<br \/>\n&#8211; Conta administrativa no AD ( ex: adm.tonev );<br \/>\n&#8211; Conhecimentos de AD, DHCP, DNS, DNS reverso, HTTP, cria\u00e7\u00e3o de GPOs, administra\u00e7\u00e3o Windows, administra\u00e7\u00e3o Linux;<\/p>\n<p>1 &#8211; Instale os pacotes b\u00e1sicos necess\u00e1rios:<br \/>\napt-get install squid3 telnet tcpdump ntpdate samba winbind vim telnet tcpdump mc xz-utils rsync<\/p>\n<p>2 &#8211; Em cada servidor Squid ajuste o arquivo \/etc\/hosts com o IP da maquina local e o IP dos ADs:<br \/>\nNo servidor proxy01.dominio.local:<br \/>\n10.0.0.20 \u00a0 proxy01.dominio.local \u00a0 proxy01<br \/>\n10.0.0.10 \u00a0\u00a0ad01.dominio.local \u00a0 ad01<br \/>\n10.0.0.11 \u00a0 ad02.dominio.local \u00a0 ad02<\/p>\n<p>No servidor proxy02.dominio.local:<br \/>\n10.0.0.21 \u00a0 proxy02.dominio.local \u00a0 proxy02<br \/>\n10.0.0.10 \u00a0\u00a0ad01.dominio.local \u00a0 ad01<br \/>\n10.0.0.11 \u00a0 ad02.dominio.local \u00a0 ad02<\/p>\n<p>3 &#8211; Em cada servidor Squid ajuste o arquivo \/etc\/samba\/smb.conf para o conte\u00fado abaixo:<br \/>\n[global]<br \/>\nunix charset = ISO-8859-1<br \/>\nworkgroup = DOMINIO<br \/>\nnetbios name =\u00a0proxy01 ( altere na segunda maquina para refletir o nome dela )<br \/>\nserver string =\u00a0proxy01\u00a0( altere na segunda maquina para refletir o nome dela )<br \/>\nlog level = 5<br \/>\nload printers = no<br \/>\nlog file = \/var\/log\/samba\/log.%m<br \/>\nmax log size = 500<br \/>\nrealm =\u00a0DOMINIO.LOCAL<br \/>\nsecurity = ads<br \/>\nauth methods = winbind<br \/>\npassword server =\u00a010.0.0.10, 10.0.0.11<br \/>\nwinbind separator = +<br \/>\nencrypt passwords = yes<br \/>\nprintcap name = cups<br \/>\nwinbind cache time = 15<br \/>\nwinbind enum users = yes<br \/>\nwinbind enum groups = yes<br \/>\nwinbind use default domain = yes<br \/>\nidmap uid = 10000-20000<br \/>\nidmap gid = 10000-20000<br \/>\nsocket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192<br \/>\nlocal master = no<br \/>\nos level = 233<br \/>\ndomain master = no<br \/>\npreferred master = no<br \/>\ndomain logons = no<br \/>\ndns proxy = no<br \/>\nldap ssl = no<br \/>\nprinting = cups<br \/>\ndisable spoolss = yes<br \/>\nshow add printer wizard = no<br \/>\ntemplate shell = \/bin\/bash<br \/>\ntemplate homedir = \/home\/%U<\/p>\n<p>4 &#8211; No AD crie o registro de DNS e DNS Reverso para o proxy01 e proxy02 e aguarde o tempo necess\u00e1rio para replica\u00e7\u00e3o e refresh do DNS;<\/p>\n<p>5 &#8211; Insira as maquinas Squid no dom\u00ednio do AD. Tem que ser feito localmente nas maquinas<br \/>\nnet ads join -U adm.tonev<\/p>\n<p>6 &#8211; Reinicie os servi\u00e7os do samba e winbind<br \/>\n\/etc\/init.d\/samba restart ; \/etc\/init.d\/winbind restart<\/p>\n<p>7- Teste a comunica\u00e7\u00e3o das maquinas proxy com o dom\u00ednio Windows:<br \/>\nwbinfo -t<\/p>\n<p>Tem que retornar &#8220;checking the trust secret for domain DOMINIO\u00a0via RPC calls succeeded&#8221;<\/p>\n<p>8 &#8211; Teste a autentica\u00e7\u00e3o no dom\u00ednio Windows:<br \/>\nwbinfo -a adm.tonev<\/p>\n<p>Depois de solicita a senha duas vezes, deve retornar as linhas abaixo:<\/p>\n<p>plaintext password authentication succeeded<br \/>\nchallenge\/response password authentication succeeded<\/p>\n<p>9 &#8211;\u00a0Alterar o chmod do \/usr\/bin\/ntlm_auth para que o autenticador rode como root. O \u00fanico problema \u00e9 que sempre que o pacote do samba for atualizado ser\u00e1 necess\u00e1rio reexecutar o comando para que a autentica\u00e7\u00e3o n\u00e3o pare:<br \/>\nchmod 6755 \/usr\/bin\/ntlm_auth<\/p>\n<p>10 &#8211; Ajuste a configura\u00e7\u00e3o do squid \u00a0( \/etc\/squid3\/squid.conf ) com o conte\u00fado abaixo:<br \/>\nauth_param ntlm program \/usr\/bin\/ntlm_auth &#8211;helper-protocol=squid-2.5-ntlmssp &#8211;domain=DOMINIO<br \/>\nauth_param ntlm children 512<br \/>\nacl WINDOWS_AUTH proxy_auth REQUIRED<br \/>\nacl SSL_ports port 80 443\u00a01025-65535<br \/>\nacl Safe_ports port 21 70 80 210 280 443 488 591 777 \u00a01025-65535<br \/>\nacl CONNECT method CONNECT<br \/>\nhttp_access deny !Safe_ports<br \/>\nhttp_access deny CONNECT !SSL_ports<br \/>\nhttp_access allow localhost manager<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow WINDOWS_AUTH<br \/>\nhttp_access deny all<br \/>\nhttp_port 3128<br \/>\ncache_mem 3072 MB<br \/>\nmaximum_object_size_in_memory 512 KB<br \/>\nminimum_object_size 2 KB<br \/>\nmaximum_object_size 512 KB<br \/>\noffline_mode off<br \/>\ncache_swap_low 90<br \/>\ncache_swap_high 95<br \/>\nrefresh_pattern ^ftp: 1440 20% 10080<br \/>\nrefresh_pattern ^gopher: 1440 0% 1440<br \/>\nrefresh_pattern -i (\/cgi-bin\/|\\?) 0 0% 0<br \/>\nrefresh_pattern . 0 20% 4320<br \/>\ndns_v4_first on<br \/>\ncache_mgr admin@dominio.local<br \/>\nlogfile_rotate 2<br \/>\nforwarded_for on<br \/>\nhttpd_suppress_version_string on<br \/>\nuri_whitespace strip<br \/>\nfqdncache_size 8192<br \/>\nipcache_size 8192<\/p>\n<p>11 &#8211; Ajuste o \/etc\/sysctl.conf para os parametros abaixo:<br \/>\nfs.file-max = 1048576<br \/>\nnet.ipv4.tcp_syncookies = 1<br \/>\nnet.ipv4.neigh.default.gc_interval = 15<br \/>\nnet.ipv4.neigh.default.gc_thresh1 = 4096<br \/>\nnet.ipv4.neigh.default.gc_thresh2 = 8192<br \/>\nnet.ipv4.neigh.default.gc_thresh3 = 16384<br \/>\nnet.core.netdev_max_backlog = 2048<br \/>\nnet.ipv4.tcp_fin_timeout = 20<br \/>\nnet.ipv4.tcp_tw_recycle = 1<br \/>\nnet.ipv4.tcp_tw_reuse = 1<br \/>\nnet.ipv4.tcp_syn_retries = 3<br \/>\nnet.ipv4.tcp_synack_retries = 3<br \/>\nnet.core.somaxconn = 49152<br \/>\nnet.core.rmem_max = 5242880<br \/>\nnet.core.wmem_max = 5242880<br \/>\nnet.ipv4.netfilter.ip_conntrack_max = 262144<\/p>\n<p>12 &#8211; Crie um arquivo com o nome wpad.dat com o conte\u00fado abaixo e o coloque em um servidor web que todas as maquinas cliente possam acessar.<br \/>\nfunction FindProxyForURL(url, host) {<br \/>\nreturn &#8220;PROXY proxy01.dominio.local:3128;PROXY proxy02.dominio.local:3128&#8221;;<br \/>\n}<\/p>\n<p>13 &#8211; Ajuste a configura\u00e7\u00e3o do DHCP da rede para incluir a op\u00e7\u00e3o 252 e informar a localiza\u00e7\u00e3o do arquivo wpad.dat<\/p>\n<p>14 &#8211; Crie uma GPO for\u00e7ada para o dom\u00ednio AD e especifique que os browsers devem usar autoconfigura\u00e7\u00e3o e especifique o caminho do wpad.dat. Opcionalmente pode travar a op\u00e7\u00e3o de usu\u00e1rio poder alterar a configura\u00e7\u00e3o de proxy. O Internet Explorer e o Chrome usam a mesma configura\u00e7\u00e3o ( a do IE ), para o Mozilla \u00e9 necess\u00e1rio baixar o modelo administrativo (\u00a0<a href=\"https:\/\/sourceforge.net\/projects\/firefoxadmx\/\">aqui o link do download<\/a>\u00a0)<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Aten\u00e7\u00e3o: nessa configura\u00e7\u00e3o do Squid as maquinas cliente somente poder\u00e3o navegar se conseguirem se autenticar via NTLM. Isso vale somente para maquinas que fazem parte do dom\u00ednio Windows. Maquinas que n\u00e3o fazem parte ser\u00e3o bloqueadas automaticamente e n\u00e3o vai aparecer nenhuma tela solicitando login\/senha. Para que isso aconte\u00e7a \u00e9 necess\u00e1rio especificar mais tipos de autentica\u00e7\u00e3o. O pr\u00f3ximo post\u00e1 ser\u00e1 sobre como implementar autentica\u00e7\u00e3o via RADIUS.<\/span><\/strong><\/p>\n<p><strong><span style=\"text-decoration: underline;\">Aten\u00e7\u00e3o [2]: Se a carga de autentica\u00e7\u00e3o for muito grande, pode ser que o Squid pare de atender as conex\u00f5es dos clientes. Agende um &#8220;squid3 -k reconfigure&#8221; no crontab para rodar a cada 5 minutos. Assim os processos do ntlm_auth ser\u00e3o reciclados e mantidos somente os necessarios. Ainda preciso reproduzir o bug para poder relatar.<\/span><\/strong><\/p>\n<p>Pronto. Reinicie o squid e aproveite.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solu\u00e7\u00e3o r\u00e1pida e pratica para quem utiliza Squid e quer integrar ele com a autentica\u00e7\u00e3o do Windows. J\u00e1 estou levando em considera\u00e7\u00e3o de que vai haver redund\u00e2ncia, tanto na autentica\u00e7\u00e3o, como no servi\u00e7o de proxy&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-rede"],"_links":{"self":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=73"}],"version-history":[{"count":14,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions"}],"predecessor-version":[{"id":88,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions\/88"}],"wp:attachment":[{"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tonev.pro.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}