{"id":4119,"date":"2015-07-29T11:20:22","date_gmt":"2015-07-29T14:20:22","guid":{"rendered":"https:\/\/www.viazap.com.br\/?p=4119"},"modified":"2015-07-29T11:20:22","modified_gmt":"2015-07-29T14:20:22","slug":"servidor-proxy-parte-i","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4119","title":{"rendered":"SERVIDOR PROXY &#8211; PARTE I"},"content":{"rendered":"<h1>CONSIDERA\u00c7\u00d5ES INICIAIS<\/h1>\n<p>&nbsp;<\/p>\n<div>Este artigo tem como principal objetivo orientar a implanta\u00e7\u00e3o de um servidor para oferecer os servi\u00e7os de proxy transparente, armazenamento\/compartilhamento de arquivos e controle de acesso, al\u00e9m de servir a novos usu\u00e1rios do <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">GNU\/Linux<\/a> como refer\u00eancia preliminar para estudo. O S.O. escolhido para implanta\u00e7\u00e3o ser\u00e1 a \u00faltima vers\u00e3o est\u00e1vel do <em>Debian 8<\/em>, em virtude desta escolha os seguintes pacotes far\u00e3o parte desta instala\u00e7\u00e3o:<\/p>\n<ul>\n<li>Squid 3<\/li>\n<li>ISC DHCP Server<\/li>\n<li>CUPS<\/li>\n<li>Samba<\/li>\n<li>BIND 9<\/li>\n<li>Sarg<\/li>\n<li>NFS<\/li>\n<li>NTP<\/li>\n<li>Apache 2<\/li>\n<\/ul>\n<p>Para a implanta\u00e7\u00e3o do servidor utilizaremos como checklist as seguintes etapas:<\/p>\n<ol>\n<li>Configura\u00e7\u00e3o das interfaces de rede.<\/li>\n<li>Atualiza\u00e7\u00e3o do S.O. e instala\u00e7\u00e3o dos pacotes.<\/li>\n<li>Configura\u00e7\u00e3o do servidor DHCP.<\/li>\n<li>Defini\u00e7\u00e3o de firewall e redirecionamento.<\/li>\n<li>Configura\u00e7\u00e3o do Squid e possibilidade de compila\u00e7\u00e3o para escuta da porta 443 (HTTPS).<\/li>\n<li>Ajustes no Sarg para gerar relat\u00f3rios de acesso.<\/li>\n<\/ol>\n<p><!--more--><\/p>\n<h1>CONFIGURA\u00c7\u00c3O DAS INTERFACES DE REDE<\/h1>\n<p>As configura\u00e7\u00f5es das interfaces de rede em sistemas baseados em Debian s\u00e3o poss\u00edveis atrav\u00e9s do arquivo interfaces localizado na pasta<em>\/etc\/network<\/em>. Antes da edi\u00e7\u00e3o deste arquivo ser\u00e3o necess\u00e1rias as seguintes informa\u00e7\u00f5es:<\/p>\n<ul>\n<li>Qual a interface recebe o sinal da internet e qual a interface que ser\u00e1 respons\u00e1vel por receber as requisi\u00e7\u00f5es da rede local. Preferencialmente opte pela interface eth0 para receber o link com a internet e demais interfaces para prover a rede local.<\/li>\n<li>Endere\u00e7o IP do modem.<\/li>\n<li>Defini\u00e7\u00e3o da classe de IP para a rede local.<\/li>\n<\/ul>\n<p>Todos os procedimentos devem ser realizados com a conta do superusu\u00e1rio e atrav\u00e9s da edi\u00e7\u00e3o de arquivos de configura\u00e7\u00e3o via terminal. Neste roteiro as informa\u00e7\u00f5es recolhidas foram as seguinte:<\/p>\n<ul>\n<li>Interface eth0 &#8211; link com a internet<\/li>\n<li>Interface eth1 &#8211; link com a rede local<\/li>\n<li>Endere\u00e7o IP do modem &#8211; 192.168.0.1<\/li>\n<li>Classe de IP da rede interna &#8211; 172.16.0.0<\/li>\n<\/ul>\n<p>Inicialmente \u00e9 necess\u00e1rio a edi\u00e7\u00e3o do arquivo interfaces. Abaixo temos um exemplo das configura\u00e7\u00f5es mediante as informa\u00e7\u00f5es recolhidas, ambas as interfaces foram setadas com endere\u00e7o IP est\u00e1tico. Pare o servi\u00e7o de rede e efetue a configura\u00e7\u00e3o necess\u00e1ria:<\/p>\n<p><strong># systemctl stop networking<\/strong><br \/>\n<strong># nano \/etc\/network\/interfaces<\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\"># Este arquivo prove as configura\u00e7\u00f5es de Rede<\/span><br \/>\n<span class=\"comentario\">#<\/span><br \/>\n<span class=\"comentario\"># Interface Loopback<\/span><br \/>\nauto lo<br \/>\niface lo inet loopback<br \/>\n<span class=\"comentario\">#<\/span><br \/>\n<span class=\"comentario\"># Configura\u00e7\u00e3o da Interface de rede prim\u00e1ria<\/span><br \/>\nauto eth0<br \/>\niface eth0 inet static<br \/>\naddress 192.168.0.2<br \/>\nnetwork 192.168.0.0<br \/>\nnetmask 255.255.255.0<br \/>\nbroadcast 192.168.0.255<br \/>\ngateway 192.168.0.1<br \/>\n<span class=\"comentario\">#<\/span><br \/>\n<span class=\"comentario\"># Configura\u00e7\u00e3o da Interface de rede secund\u00e1ria<\/span><br \/>\nauto eth1<br \/>\niface eth1 inet static<br \/>\naddress 172.16.0.1<br \/>\nnetwork 172.16.0.0<br \/>\nnetmask 255.255.0.0<br \/>\nbroadcast 172.16.255.255<\/div>\n<p>Encerre a edi\u00e7\u00e3o do arquivo e inicie os servi\u00e7os de rede:<\/p>\n<p><strong># systemctl start networking<\/strong><\/p>\n<p>Verifique com o comando ifconfig as configura\u00e7\u00f5es das interfaces:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<pre>eth0  Link encap:Ethernet  Endere\u00e7o de HW 08:00:27:0c:c3:73\r\n          inet end.: 192.168.0.2  Bcast:192.168.0.255  Masc:255.255.255.0\r\n          endere\u00e7o inet6: fe80::a00:27ff:fe0c:c373\/64 Escopo:Link\r\n          UP BROADCASTRUNNING MULTICAST  MTU:1500  M\u00e9trica:1\r\n          RX packets:606 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:380 errors:0 dropped:0 overruns:0 carrier:0\r\n          colis\u00f5es:0 txqueuelen:1000\r\n          RX bytes:582316 (568.6 KiB)  TX bytes:33198 (32.4 KiB)\r\n\r\neth1  Link encap:Ethernet  Endere\u00e7o de HW 08:00:27:77:c1:45\r\n          inet end.: 172.16.0.1  Bcast:172.16.255.255  Masc:255.255.0.0\r\n          endere\u00e7o inet6: fe80::a00:27ff:fe77:c145\/64 Escopo:Link\r\n          UP BROADCASTRUNNING MULTICAST  MTU:1500  M\u00e9trica:1\r\n          RX packets:0 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0\r\n          colis\u00f5es:0 txqueuelen:1000\r\n          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)\r\n\r\nlo       Link encap:Loopback Local\r\n          inet end.: 127.0.0.1  Masc:255.0.0.0\r\n          endere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina\r\n          UP LOOPBACKRUNNING  MTU:65536  M\u00e9trica:1\r\n          RX packets:0 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0\r\n          colis\u00f5es:0 txqueuelen:0\r\n          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)\r\n\r\n<\/pre>\n<p>Verifique atrav\u00e9s do comando ping se h\u00e1 conectividade:<\/p>\n<p><strong># ping -c 3 www.vivaolinux.com.br<\/strong><br \/>\n<samp>PING www.vivaolinux.com.br (162.144.34.3) 56(84) bytes of data.<br \/>\n64 bytes from 162-144-34-3.unifiedlayer.com (162.144.34.3): icmp_seq=1 ttl=52 time=185 ms<br \/>\n64 bytes from 162-144-34-3.unifiedlayer.com (162.144.34.3): icmp_seq=2 ttl=52 time=186 ms<br \/>\n64 bytes from 162-144-34-3.unifiedlayer.com (162.144.34.3): icmp_seq=3 ttl=52 time=187 ms<\/p>\n<p>&#8212; www.vivaolinux.com.br ping statistics &#8212;<br \/>\n3 packets transmitted, 3 received, 0% packet loss, time 2002ms<br \/>\nrtt min\/avg\/max\/mdev = 185.369\/186.339\/187.087\/0.800 ms <\/samp><\/p>\n<p>Atualize o conte\u00fado do arquivo <em>\/etc\/hosts<\/em> de forma que a interface loopback (127.0.0.1) aponte para o hostname:<\/p>\n<p><strong># cat \/etc\/hosts<\/strong><\/p>\n<div class=\"codigo\">127.0.0.1 localhost<\/p>\n<p><span class=\"comentario\"># The following lines are desirable for IPv6 capable hosts<br \/>\n<\/span>::1\u00a0\u00a0\u00a0\u00a0 onix ip6-onix ip6-loopback<br \/>\nff02::1 ip6-allnodes<br \/>\nff02::2 ip6-allrouters<\/div>\n<\/div>\n<h1>ATUALIZA\u00c7\u00c3O DO S.O. \/ CONFIGURA\u00c7\u00d5ES DO SERVIDOR DHCP E FIREWALL<\/h1>\n<p>&nbsp;<\/p>\n<div>Atualize o <em>Debian<\/em> e instale os pacotes necess\u00e1rios:<\/p>\n<p><strong># apt-get update &amp;&amp; apt-get upgrade -y<\/strong><\/p>\n<p>Instale os pacotes:<\/p>\n<p><strong># apt-get install -y squid3 samba sarg cups isc-dhcp-server ntp bind9 apache2 debmirror<\/strong><\/p>\n<h1>CONFIGURA\u00c7\u00d5ES DO SERVIDOR DHCP<\/h1>\n<p>O servidor DHCP ser\u00e1 o respons\u00e1vel por distribuir IPs na rede local, para editar as configura\u00e7\u00f5es iniciais localize o arquivo <em>dhcpd.conf<\/em> na pasta <em>\/etc\/dhcp<\/em> e tenha em m\u00e3os as informa\u00e7\u00f5es relativas ao servidor DNS prim\u00e1rio e secund\u00e1rio, para este exemplo foi usado o servidor do opendns.com:<\/p>\n<p><strong># nano \/etc\/dhcp\/dhcpd.conf<\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\"># Configura\u00e7\u00f5es do Servidor DHCP<\/span><br \/>\n<span class=\"comentario\">#<\/span><br \/>\nINTERFACES=eth1;<br \/>\nddns-update-style none;<br \/>\nauthoritative;<br \/>\n<span class=\"comentario\">#<\/span><br \/>\n<span class=\"comentario\"># Declara\u00e7\u00e3o da Rede Local<\/span><br \/>\nsubnet 172.16.0.0 netmask 255.255.0.0 {<br \/>\nrange 172.16.0.2 172.16.0.254;<br \/>\noption domain-name-servers 208.67.222.222,208.67.220.220;<br \/>\noption domain-name &#8220;opendns.com&#8221;;<br \/>\noption routers 172.16.0.1;<br \/>\noption broadcast-address 172.16.255.255;<br \/>\ndefault-lease-time 600;<br \/>\nmax-lease-time 7200;<br \/>\n}<br \/>\n<span class=\"comentario\"># Declara\u00e7\u00e3o para Interface Prim\u00e1ria<\/span><br \/>\nsubnet 192.168.0.0 netmask 255.255.255.0 {<br \/>\n}<\/div>\n<p>Status do funcionamento do ISC DHCP Server:<\/p>\n<p><strong># systemctl status isc-dhcp-server<\/strong><br \/>\n<samp>\u25cf isc-dhcp-server.service &#8211; LSB: DHCP server<br \/>\nLoaded: loaded (\/etc\/init.d\/isc-dhcp-server)<br \/>\nActive: active (running) since Qua 2015-07-08 23:28:36 BRT; 2s ago<br \/>\nProcess: 9399 ExecStart=\/etc\/init.d\/isc-dhcp-server start (code=exited, status=0\/SUCCESS)<br \/>\nCGroup: \/system.slice\/isc-dhcp-server.service<br \/>\n\u2514\u25009407 \/usr\/sbin\/dhcpd -q -cf \/etc\/dhcp\/dhcpd.conf -pf \/var\/run\/dhcpd.pid<\/p>\n<p>Jul 08 23:28:33 onix dhcpd[9406]: Wrote 0 leases to leases file.<br \/>\nJul 08 23:28:34 onix dhcpd[9407]: Server starting service.<br \/>\nJul 08 23:28:36 onix isc-dhcp-server[9399]: Starting ISC DHCP server: dhcpd. <\/samp><\/p>\n<p>Em car\u00e1ter opcional \u00e9 poss\u00edvel realizar a atualiza\u00e7\u00e3o do arquivo <em>\/etc\/resolv.conf<\/em> de forma que \u00e9 poss\u00edvel apontar quais servidores DNS ser\u00e3o consultados primeiramente. A cada nova conex\u00e3o o arquivo resolv.conf \u00e9 atualizado, a forma mais apropriada para a atualiza\u00e7\u00e3o deste arquivo e atrav\u00e9s do dhclient.conf na pasta \/etc\/dhcp. Localize no arquivo as linhas:<\/p>\n<p><samp>#supersede domain-name &#8220;fugue.com home.vix.com&#8221;;<br \/>\n#prepend domain-name-servers 127.0.0.1; <\/samp><\/p>\n<p>Modifique-as retirando o # e adicione as informa\u00e7\u00f5es necess\u00e1rias, neste exemplo ser\u00e1 usado OpenDNS.<\/p>\n<div class=\"codigo\">supersede domain-name &#8220;opendns.com&#8221;;<br \/>\nprepend domain-name-servers 208.67.222.222,208.67.220.220;<\/div>\n<p>Encerre a edi\u00e7\u00e3o do arquivo e reinicie o servi\u00e7o.<\/p>\n<h1>DEFINI\u00c7\u00c3O DE FIREWALL E REDIRECIONAMENTO<\/h1>\n<p>A defini\u00e7\u00e3o do firewall ser\u00e1 realizado pelo iptables atrav\u00e9s de um script. O conte\u00fado deste script deve ser definido de acordo com as necessidades e normas de seguran\u00e7a da rede. Neste exemplo ser\u00e1 utilizado um firewall b\u00e1sico para redirecionar todas as requisi\u00e7\u00f5es para a porta 3128:<\/p>\n<p><strong># touch \/etc\/init.d\/rc.firewall<\/strong><\/p>\n<pre class=\"prettyprint\">#!\/bin\/bash\r\n### BEGIN INIT INFO\r\n# Provides: Script Firewall\r\n# Required-Start: $remote_fs $syslog\r\n# Required-Stop: $remote_fs $syslog\r\n# Default-Start: 2 3 4 5\r\n# Default-Stop:\r\n# Short-Decription: Script Firewall based on Iptables\r\n### END INIT INFO\r\n\r\n# Clean modules\r\niptables -F\r\niptables -t nat -F\r\niptables -t mangle -F\r\n\r\n# Proxy\r\niptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128\r\n\r\n# Masquerading IP\r\niptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\r\n\r\n# Forward\r\necho 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<\/pre>\n<p>Atribua o valor de execut\u00e1vel para o arquivo e adicione o script \u00e0 inicializa\u00e7\u00e3o do sistema:<\/p>\n<p><strong># chmod +x rc.firewall<\/strong><br \/>\n<strong># update-rc.d rc.firewall defaults<\/strong><\/p>\n<p>Verifique as tabelas do iptables:<\/p>\n<p><strong># iptables -t nat -L<\/strong><br \/>\n<samp>Chain PREROUTING (policy ACCEPT)<br \/>\ntarget\u00a0\u00a0\u00a0\u00a0 prot opt source\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 destination<br \/>\nREDIRECT\u00a0\u00a0 tcp\u00a0\u00a0&#8212;\u00a0\u00a0anywhere\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 anywhere\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tcp dpt:http redir ports 3128<\/p>\n<p>Chain INPUT (policy ACCEPT)<br \/>\ntarget\u00a0\u00a0\u00a0\u00a0 prot opt source\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 destination<\/p>\n<p>Chain OUTPUT (policy ACCEPT)<br \/>\ntarget\u00a0\u00a0\u00a0\u00a0 prot opt source\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 destination<\/p>\n<p>Chain POSTROUTING (policy ACCEPT)<br \/>\ntarget\u00a0\u00a0\u00a0\u00a0 prot opt source\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 destination<br \/>\nMASQUERADE\u00a0\u00a0all\u00a0\u00a0&#8212;\u00a0\u00a0anywhere\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 anywhere <\/samp><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<h1>CONFIGURA\u00c7\u00c3O DO SQUID<\/h1>\n<p>&nbsp;<\/p>\n<div>O <em>Squid<\/em> \u00e9 o principal respons\u00e1vel pelo servi\u00e7o de webproxy com a possibilidade de proxy autenticado ou transparente, entre outras funcionalidades temos a possibilidade de cache, controle de banda, defini\u00e7\u00e3o de acesso por hor\u00e1rio e controle de acesso. Neste roteiro ser\u00e1 abordado a cria\u00e7\u00e3o de um proxy transparente, al\u00e9m da possibilidade da compila\u00e7\u00e3o para permitir que o Squid realize a escuta do protocolo HTTPS (porta 443) e a cria\u00e7\u00e3o e cache de certificados din\u00e2micos.<\/p>\n<p>Para a implanta\u00e7\u00e3o do proxy transparente h\u00e1 um exemplo de configura\u00e7\u00f5es m\u00ednimas, o arquivo alvo da edi\u00e7\u00e3o est\u00e1 localizado na pasta<em>\/etc\/squid3<\/em> com o nome <em>squid.conf<\/em>:<\/p>\n<p><strong># nano \/etc\/squid3\/squid.conf<\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\"># Este arquivo prov\u00ea as configura\u00e7\u00f5es b\u00e1sicas do Squid<\/span><br \/>\n<span class=\"comentario\">#<\/span><br \/>\n<span class=\"comentario\"># Inicio do arquivo<\/span><br \/>\n<span class=\"comentario\"># Configuracoes basicas<\/span><br \/>\nhttp_port 3128 transparent<br \/>\nvisible_hostname onix.arm<\/p>\n<p><span class=\"comentario\"># Configura\u00e7\u00f5es do servidor<\/span><br \/>\nerror_directory \/usr\/share\/squid3\/errors\/pt-br<br \/>\nacl all src<\/p>\n<p>acl localhost src 127.0.0.1\/255.255.255.255<br \/>\nacl SSL_ports port 443 563 873<br \/>\nacl Safe_ports port 80 # http<br \/>\nacl Safe_ports port 21 # FTP<br \/>\nacl Safe_ports port 443 563 873 # https,News<br \/>\nacl Safe_ports port 70 # gopher<br \/>\nacl Safe_ports port 210 # wais<br \/>\nacl Safe_ports port 280 # http-mgmt<br \/>\nacl Safe_ports port 488 # gss-http<br \/>\nacl Safe_ports port 591 # filemaker<br \/>\nacl Safe_ports port 777 # multiling http<br \/>\nacl Safe_ports port 901 # swat<br \/>\nacl Safe_ports port 1025-65535 # Portas altas<br \/>\nacl purge method PURGE<br \/>\nacl CONNECT method CONNECT<\/p>\n<p>http_access allow manager localhost<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow purge localhost<br \/>\nhttp_access deny purge<br \/>\nhttp_access deny !Safe_ports<br \/>\nhttp_access deny CONNECT !SSL_ports<\/p>\n<p>acl redelocal src 172.16.0.0\/16<\/p>\n<p><span class=\"comentario\"># Defini\u00e7\u00e3o de Cache<\/span><\/p>\n<p>cache_mem 64 MB<br \/>\ncache_dir ufs \/var\/spool\/squid3 820 16 256<br \/>\nmaximum_object_size_in_memory 52 KB<br \/>\nmaximum_object_size 512 KB<br \/>\nminimum_object_size 10 KB<br \/>\ncache_swap_low 85<br \/>\ncache_swap_high 95<br \/>\nrefresh_pattern ^ftp: 15 20% 2280<br \/>\nrefresh_pattern ^gopher: 15 0% 2280<br \/>\nrefresh_pattern . 15 20% 2280<\/p>\n<p><span class=\"comentario\"># Defini\u00e7\u00f5es de logs<\/span><\/p>\n<p>access_log \/var\/log\/squid3\/access.log<br \/>\ncache_access_log \/var\/log\/squid3\/access.log<br \/>\ncache_log \/var\/log\/squid3\/cache.log<br \/>\ncache_swap_log \/var\/log\/squid3\/swap.log<br \/>\nlogformat squid3 %ts.%03tu %6tr %&gt;a %Ss\/%03Hs %&lt;st %rm %ru %un %Sh\/%&lt;A %mt<br \/>\ncache_mgr onix.arm@onix.com # Email da p\u00e1gina de erro do Squid<\/p>\n<p><span class=\"comentario\"># Considera\u00e7\u00f5es finais<\/span><\/p>\n<p>http_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny all<\/p><\/div>\n<p>Reinicie o servi\u00e7o do Squid:<\/p>\n<p><strong># systemctl restart squid3<\/strong><\/p>\n<p>Verifique o status do servi\u00e7os.<\/p>\n<p><strong># systemctl status -l squid3<\/strong><br \/>\n<samp>\u25cf squid3.service &#8211; LSB: Squid HTTP Proxy version 3.x<br \/>\nLoaded: loaded (\/etc\/init.d\/squid3)<br \/>\nActive: active (running) since Seg 2015-07-13 23:44:12 BRT; 4s ago<br \/>\nProcess: 1531 ExecStop=\/etc\/init.d\/squid3 stop (code=exited, status=0\/SUCCESS)<br \/>\nProcess: 1554 ExecStart=\/etc\/init.d\/squid3 start (code=exited, status=0\/SUCCESS)<br \/>\nCGroup: \/system.slice\/squid3.service<br \/>\n\u251c\u25001590 \/usr\/sbin\/squid3 -YC -f \/etc\/squid3\/squid.conf<br \/>\n\u251c\u25001592 (squid-1) -YC -f \/etc\/squid3\/squid.conf<br \/>\n\u251c\u25001593 (unlinkd)<br \/>\n\u2514\u25001594 (pinger)<\/p>\n<p>Jul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/06<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/07<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/08<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/09<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0A<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0B<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0C<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0D<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0E<br \/>\nJul 13 23:44:12 onix squid3[1554]: 2015\/07\/13 23:44:12 kid1| Making directories in \/var\/spool\/squid3\/0F <\/samp><\/p>\n<p>Com este arquivo base nenhum acesso ser\u00e1 negado e a partir dele podemos definir as diretivas atrav\u00e9s das ACLs.<\/p>\n<h1>ACCESS CONTROL LIST<\/h1>\n<p>Com a configura\u00e7\u00e3o do Squid funcional \u00e9 poss\u00edvel definir acessos e seus controles atrav\u00e9s das ACLs (Access Control List). Antes de tratar das ACLs \u00e9 necess\u00e1rio o entendimento de algumas regras:<\/p>\n<p>1. Por defini\u00e7\u00e3o quando a requisi\u00e7\u00e3o \u00e9 realizada o Squid analisa o conte\u00fado do squid.conf do topo para o fim, procurando uma diretiva que se encaixe com o padr\u00e3o da requisi\u00e7\u00e3o at\u00e9 o final do arquivo.<\/p>\n<p>2. \u00c9 interessante definir como \u00faltima diretiva uma regra para bloquear todas as requisi\u00e7\u00f5es de acesso no caso do pacote n\u00e3o combinar com nenhuma diretiva anterior. Uma analogia que pode ser realiza \u00e9 a de que o Squid possui pol\u00edticas de acesso similares a um firewall.<\/p>\n<p>3. Evite regras desnecess\u00e1rias ou redundantes.<\/p>\n<p>A sintaxe b\u00e1sica para defini\u00e7\u00e3o da ACL \u00e9:<\/p>\n<p><samp>acl [nome_da_ACL] [Classe da ACL] <\/samp><\/p>\n<p>Para cada ACL criada \u00e9 necess\u00e1rio definir se acesso ser\u00e1 permitido, allow, ou negado, deny.<\/p>\n<p>Classes de acesso:<\/p>\n<ul>\n<li>SRC &#8211; classe baseada na origem da requisi\u00e7\u00e3o, ou seja, baseia-se no endere\u00e7o IP do cliente.<\/li>\n<li>DST &#8211; classe baseada no destino da requisi\u00e7\u00e3o, ou seja, baseia-se no endere\u00e7o IP do servidor requisitado.<\/li>\n<li>SRCDOMAIN &#8211; classe de acesso que baseia-se no dom\u00ednio DNS do cliente.<\/li>\n<li>DSTDOMAIN &#8211; classe de acesso que baseia-se no dom\u00ednio DNS do servidor de destino da requisi\u00e7\u00e3o.<\/li>\n<li>TIME &#8211; classe de acesso que define o acesso por dia da semana e hor\u00e1rio da requisi\u00e7\u00e3o.<\/li>\n<li>URL_REGEX &#8211; classe onde \u00e9 poss\u00edvel utilizar express\u00f5es regulares para libera\u00e7\u00e3o ou bloqueio das requisi\u00e7\u00f5es.<\/li>\n<li>PROXY_AUTH &#8211; classe que utiliza o login do usu\u00e1rio para definir a libera\u00e7\u00e3o ou bloqueio da requisi\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/div>\n<p>&nbsp;<\/p>\n<h1>A POSSIBILIDADE DE COMPILA\u00c7\u00c3O PARA ESCUTA DA PORTA 443 (HTTPS)<\/h1>\n<p>&nbsp;<\/p>\n<div>Uma das grandes desvantagens com o proxy transparente \u00e9 a escuta do protocolo HTTPS, em proxys autenticados o bloqueio\/acesso \u00e0 p\u00e1ginas acontece de acordo com as diretivas ligadas ao login do usu\u00e1rio, bloqueando ou permitindo acesso em sua requisi\u00e7\u00e3o. A partir deste ponto ser\u00e1 apresentada uma solu\u00e7\u00e3o para a escuta do protocolo 443 redirecionado \u00e0 porta 3127 do Squid.<\/p>\n<p>Para compila\u00e7\u00e3o ser\u00e3o utilizados os bin\u00e1rios da instala\u00e7\u00e3o corrente do Squid 3. A partir daqui utilizaremos a vers\u00e3o 3.5:<\/p>\n<p><strong># wget<\/strong> <a href=\"http:\/\/www.squid-cache.org\/Versions\/v3\/3.5\/squid-3.5.6.tar.gz\" target=\"_blank\" rel=\"nofollow\">http:\/\/www.squid-cache.org\/Versions\/v3\/3.5\/squid-3.5.6.tar.gz<\/a><\/p>\n<p>Descompacte o arquivo:<\/p>\n<p><strong># tar xvfz squid-3.5.6.tar.gz<\/strong><\/p>\n<p>Acesse a pasta rec\u00e9m criada <em>\/usr\/src\/squid-3.5.6<\/em>, resolva das depend\u00eancias e instale os pacotes adicionais:<\/p>\n<p><strong># apt-get build-dep squid3 &amp;&amp; apt-get install libssl-dev build-essential<\/strong><\/p>\n<p>Execute o .\/configure com as seguintes op\u00e7\u00f5es:<\/p>\n<p><strong># .\/configure &#8211;prefix=\/usr &#8211;includedir=${prefix}\/include &#8211;mandir=${prefix}\/share\/man &#8211;infodir=${prefix}\/share\/info &#8211;sysconfdir=\/etc &#8211;localstatedir=\/var &#8211;libexecdir=${prefix}\/lib\/squid3 &#8211;srcdir=. &#8211;datadir=\/usr\/share\/squid3 &#8211;sysconfdir=\/etc\/squid3 &#8211;mandir=\/usr\/share\/man &#8211;enable-icap-client &#8211;enable-ssl &#8211;enable-ssl-crtd &#8211;enable-follow-x-forwarded-for &#8211;enable-linux-netfilter &#8211;with-openssl &#8211;with-swapdir=\/var\/spool\/squid3 &#8211;with-logdir=\/var\/log\/squid3 &#8211;with-pidfile=\/var\/run\/squid3.pid &#8211;with-filedescriptors=65536 &#8211;with-large-files &#8211;with-default-user=proxy<\/strong><\/p>\n<p>Aguarde o final do processo, interrompa a execu\u00e7\u00e3o do Squid e execute:<\/p>\n<p><strong># systemctl stop squid3<\/strong><br \/>\n<strong># make all &amp;&amp; make install<\/strong><\/p>\n<p>Atualize as configura\u00e7\u00f5es no arquivo squid.conf adicionando as seguintes linhas:<\/p>\n<div class=\"codigo\">http_port 3128 intercept<br \/>\nhttps_port 3127 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=\/etc\/squid3\/ssl_cert\/onix.pem<br \/>\nacl broken_sites dstdomain .example.com<br \/>\nssl_bump none localhost<br \/>\nssl_bump none broken_sites<br \/>\nssl_bump server-first all<br \/>\nsslcrtd_program \/lib\/squid3\/ssl_crtd -s \/var\/lib\/ssl_db -M 4MB<br \/>\nsslcrtd_children 5<\/div>\n<p>Realize as c\u00f3pias dos bin\u00e1rios:<\/p>\n<p><strong># mv \/usr\/sbin\/squid3 \/usr\/sbin\/squid3_old &amp;&amp; mv \/usr\/sbin\/squid \/usr\/sbin\/squid3<\/strong><\/p>\n<p>Utilize o OpenSSL para gerar os certificados que devem ser importados para os clientes. A cria\u00e7\u00e3o do certificado deve apontar para o caminho descrito no squid.conf:<\/p>\n<p><strong># mkdir ssl_cert<\/strong><br \/>\n<strong># cd ssl_cert\/<\/strong><br \/>\n<strong># openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout onix.pem -out onix.pem<\/strong><\/p>\n<p>Crie o arquivo que ser\u00e1 importado para os clientes:<\/p>\n<p><strong># openssl x509 -in onix.pem -outform DER -out onix.der<\/strong><\/p>\n<p>Atualize as diretivas do firewall:<\/p>\n<pre class=\"prettyprint\">#!\/bin\/bash\r\n### BEGIN INIT INFO\r\n# Provides: Script Firewall\r\n# Required-Start: $remote_fs $syslog\r\n# Required-Stop: $remote_fs $syslog\r\n# Default-Start: 2 3 4 5\r\n# Default-Stop:\r\n# Short-Decription: Script Firewall based on Iptables\r\n### END INIT INFO\r\n\r\n# Clean modules\r\niptables -Fd \/etc\r\niptables -t nat -F\r\niptables -t mangle -F\r\n\r\n# Proxy\r\niptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128\r\niptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 3127\r\n\r\n# Masquerading IP\r\niptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\r\n\r\n# Forward\r\necho 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<\/pre>\n<p>Utilize o ssl_crtd para criar o diret\u00f3rio onde ser\u00e3o arquivados o cache de certificados din\u00e2micos:<\/p>\n<p><strong># \/lib\/squid3\/ssl_crtd -c -s \/var\/lib\/ssl_db -M 4MB<\/strong><\/p>\n<p>Mude o grupo e o usu\u00e1rio do diret\u00f3rio para que o Squid possa realizar o cache:<\/p>\n<p><strong># chown -R proxy:proxy \/var\/lib\/ssl_db<\/strong><\/p>\n<p>Reinicie o Squid:<\/p>\n<p><strong># systemctl status -l squid3<\/strong><br \/>\n<samp>\u25cf squid3.service &#8211; LSB: Squid HTTP Proxy version 3.x<br \/>\nLoaded: loaded (\/etc\/init.d\/squid3)<br \/>\nActive: active (running) since Seg 2015-07-20 15:39:45 BRT; 3s ago<br \/>\nProcess: 9493 ExecStop=\/etc\/init.d\/squid3 stop (code=exited, status=0\/SUCCESS)<br \/>\nProcess: 9552 ExecStart=\/etc\/init.d\/squid3 start (code=exited, status=0\/SUCCESS)<br \/>\nCGroup: \/system.slice\/squid3.service<br \/>\n\u251c\u25001452 \/usr\/sbin\/squid3 -YC -f \/etc\/squid3\/squid.conf<br \/>\n\u251c\u25001454 (squid-1) -YC -f \/etc\/squid3\/squid.conf<br \/>\n\u251c\u25001456 (logfile-daemon) \/var\/log\/squid3\/access.log<br \/>\n\u2514\u25001469 (pinger)<\/p>\n<p>Jul 20 15:39:45 onix squid3[9552]: Starting Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x cache structure &#8230; (warning).<br \/>\nJul 20 15:39:45 onix squid3[9552]: 2015\/07\/20 15:39:45| Squid is already running! Process ID 1454<br \/>\nJul 20 15:39:45 onix squid3[9552]: . <\/samp><\/p>\n<p>Importe o certificado onix.der para o cliente e verifique o acesso \u00e0 p\u00e1ginas HTTPS atrav\u00e9s do log em <em>\/var\/log\/squid3\/access.log<\/em>:<\/p>\n<p><strong># tail \/var\/log\/squid3\/access.log<\/strong><br \/>\n<samp>1437524554.277\u00a0\u00a0\u00a0\u00a0180 172.16.222.41 TCP_MISS\/200 642 GET https:\/\/www.google.com.br\/url? &#8211; ORIGINAL_DST\/74.125.196.94 text\/html<br \/>\n1437524554.277\u00a0\u00a0\u00a0\u00a0180 172.16.222.41 TCP_MISS\/200 642 GET https:\/\/www.google.com.br\/url? &#8211; ORIGINAL_DST\/74.125.196.94 text\/html<br \/>\n1437524560.693\u00a0\u00a0\u00a0\u00a0731 172.16.222.41 TAG_NONE\/200 0 CONNECT 157.56.172.28:443 &#8211; ORIGINAL_DST\/157.56.172.28 &#8211;<br \/>\n1437524560.693\u00a0\u00a0\u00a0\u00a0731 172.16.222.41 TAG_NONE\/200 0 CONNECT 157.56.172.28:443 &#8211; ORIGINAL_DST\/157.56.172.28 &#8211;<br \/>\n1437524570.129\u00a0\u00a0 9412 172.16.222.41 TCP_MISS\/302 1999 GET https:\/\/www.live.com\/ &#8211; ORIGINAL_DST\/157.56.172.28 text\/html<br \/>\n1437524570.129\u00a0\u00a0 9412 172.16.222.41 TCP_MISS\/302 1999 GET https:\/\/www.live.com\/ &#8211; ORIGINAL_DST\/157.56.172.28 text\/html<br \/>\n1437524580.790\u00a0\u00a0\u00a0\u00a0911 172.16.222.41 TAG_NONE\/200 0 CONNECT 131.253.61.66:443 &#8211; ORIGINAL_DST\/131.253.61.66 &#8211;<br \/>\n1437524580.790\u00a0\u00a0\u00a0\u00a0911 172.16.222.41 TAG_NONE\/200 0 CONNECT 131.253.61.66:443 &#8211; ORIGINAL_DST\/131.253.61.66 &#8211;<br \/>\n1437524590.058\u00a0\u00a0 9250 172.16.222.41 TCP_MISS\/200 9920 GET https:\/\/login.live.com\/login.srf? &#8211; ORIGINAL_DST\/131.253.61.66 text\/html<br \/>\n1437524590.058\u00a0\u00a0 9250 172.16.222.41 TCP_MISS\/200 9920 GET https:\/\/login.live.com\/login.srf? &#8211; ORIGINAL_DST\/131.253.61.66 text\/html <\/samp><\/p>\n<p>Ap\u00f3s a compila\u00e7\u00e3o aplique as configura\u00e7\u00f5es necess\u00e1rias ao squid.conf.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<h1>AJUSTES PARA SARG GERAR OS RELAT\u00d3RIOS DE ACESSO \/ CONCLUS\u00c3O<\/h1>\n<p>&nbsp;<\/p>\n<div>Para que o <em>Sarg<\/em> gere os relat\u00f3rios corretamente, basta localizar as linhas access_log e output_dir e atualiz\u00e1-las conforme exemplo:<\/p>\n<div class=\"codigo\"><span class=\"comentario\"># TAG: access_log file<\/span><br \/>\naccess_log \/var\/log\/squid3\/access.log<br \/>\n<span class=\"comentario\"># TAG: output_dir<\/span><br \/>\noutput_dir \/var\/www\/html\/squid-reports<br \/>\n<span class=\"comentario\">#output_dir \/var\/lib\/sarg<\/span><br \/>\n<span class=\"comentario\"># TAG: charset<\/span><br \/>\ncharset UTF-8<\/div>\n<p>Execute o comando:<\/p>\n<p><strong># sarg<\/strong><\/p>\n<p>O acesso ao relat\u00f3rio do Sarg pode ser acessado atrav\u00e9s do endere\u00e7o:<\/p>\n<ul>\n<li>http:\/\/IP-do-servidor\/squid-reports<\/li>\n<\/ul>\n<h1>CONCLUS\u00c3O<\/h1>\n<p>Na segunda parte deste artigo os seguintes t\u00f3picos ser\u00e3o apresentados:<\/p>\n<ul>\n<li>Configura\u00e7\u00e3o do Samba (compartilhamento Windows) e NFS (compartilhamento <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>).<\/li>\n<li>Cria\u00e7\u00e3o de scripts para atualiza\u00e7\u00e3o remota de esta\u00e7\u00f5es <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">GNU\/Linux<\/a> e desligamento agendado.<\/li>\n<li>Cria\u00e7\u00e3o de reposit\u00f3rio local para atualiza\u00e7\u00e3o das esta\u00e7\u00f5es GNU\/Linux.<\/li>\n<li>Verifica\u00e7\u00e3o do funcionamento dos servi\u00e7os a partir dos Logs.<\/li>\n<li>Configura\u00e7\u00f5es adicionais dos clientes.<\/li>\n<\/ul>\n<p>Refer\u00eancias:<\/p>\n<ul>\n<li><a href=\"http:\/\/pen-testing-lab.blogspot.com.br\/\" target=\"_blank\" rel=\"nofollow\">Penetration Testing<\/a><\/li>\n<li><a href=\"http:\/\/www.squid-cache.org\/\" target=\"_blank\" rel=\"nofollow\">squid : Optimising Web Delivery<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CONSIDERA\u00c7\u00d5ES INICIAIS &nbsp; Este artigo tem como principal objetivo orientar a implanta\u00e7\u00e3o de um servidor para oferecer os servi\u00e7os de proxy transparente, armazenamento\/compartilhamento de arquivos e controle de acesso, al\u00e9m de servir a novos usu\u00e1rios do GNU\/Linux como refer\u00eancia preliminar para estudo. O S.O. escolhido para implanta\u00e7\u00e3o ser\u00e1 a \u00faltima vers\u00e3o est\u00e1vel do Debian 8, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[455,460,91,1,730,830,540,772,725,42,51,439,495,85,68,501,127,111,548],"tags":[952,951,87,72],"class_list":["post-4119","post","type-post","status-publish","format-standard","hentry","category-apache2","category-awstats","category-banco-de-dados","category-viazap","category-clusterweb","category-debian","category-dhcp-2","category-dns-2","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-midia","category-profissional-de-ti","category-proxy","category-redes-2","category-shell-script","category-sistemas-de-armazenamento","category-squid-2","category-ubuntu-2","tag-i","tag-parte","tag-proxy-2","tag-servidor"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4119"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4119\/revisions"}],"predecessor-version":[{"id":4120,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4119\/revisions\/4120"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}