Você está na página 1de 6

Aula de Squid

Como prometido, aula de squid em http://www.fix.inf.br/wiki/doku.php?id=squid_sarg. Honestamente, tenho me di ertido e aprendido muito !ompilando este material. "st# sendo uma fonte b#si!a de pesquisa, al$m de um guia pr#ti!o. %s mat$rias tem sido simples, mas farei atuali&a'(es nas aulas para que elas se)am mais abrangentes, !omo por exemplo, o iptables que fi!ou s* na parte de firewall. +e'o tamb$m que me a)udem !om as !orre'(es do material. ,ei que muita !oisa n-o de e estar exatamente !omo de eria, portanto fi!aria grato se o!.s me a)udassem na !orre'-o. Como antes, aqui ai um !trl/ !trl/! do texto, mas a leitura fi!a melhor na wiki. 0able of Contents Con!eitos b#si!os de ,quid 1nstalando 2m arqui o de !onfigura'-o b#si!o "ntendendo as !onfigura'(es %C3s 3ista de op'(es das %C3s H00+_%CC",, % 4rdem importa 5loqueando endere'os %utenti!a'-o 6elimitando hor#rios 6eixando !oisas de fora do squid Ca!he lo!al +rox7 0ransparente 8efer.n!ias Con!eitos b#si!os de ,quid 4 ,quid $ um ser idor prox7 e !a!he de web. % sua utili&a'-o mais !omum $ a a!elera'-o de a!esso web, atra $s de um !a!he de dados a!essados !om frequ.n!ia. 0amb$m pode ser utili&ado para reali&ar !ontrole de a!esso a internet, impedindo ou liberando o a!esso atra $s de %C3s 93istas de Controle de %!esso:. 6esen ol ido ini!ialmente para 2nix, roda agora tamb$m em sistemas windows. % melhor fonte de informa'(es sobre o squid $ a ,quid ;iki, do pr*prio squid: http://wiki.squid<!a!he.org/,quid=aq/ 1nstalando "m distribui'(es baseadas em redhat, instalaremos o squid !om a ferramenta 7um: 7um install squid "m distribu'(es baseadas em debian, usamos o apt<get: apt<get install squid %l$m dele, pre!isamos tamb$m do pa!ote httpd<tools. " pre!isamos fa&er uma altera'-o no sistema para permitir o redire!ionamento de pa!otes +odemos fa&er isso da seguinte forma: e!ho > ? /pro!/s7s/net/ip @/ip_forward 4u podemos editar o arqui o /et!/s7s!tl.!onf e mudar a op'-o net.ip @.ip_forward = A para > 2m arqui o de !onfigura'-o b#si!o 4 arqui o de !onfigura'-o fi!a em /et!/squid/squid.!onf por padr-o na maioria das distribui'(es: B

B 8e!ommended minimum !onfiguration: B B0radu'-o li re do squid.!onf do fedora B 8egra de exemplo permitindo a!esso de sua rede interna B %dapte ela para o endere'o de ip da sua rede, onde a na ega'-o ser# liberada a!l lo!alnet sr! >A.A.A.A/C B 8=C>D>C possible internal network a!l lo!alnet sr! >EF.>G.A.A/>F B 8=C>D>C possible internal network a!l lo!alnet sr! >DF.>GC.A.A/>G B 8=C>D>C possible internal network a!l lo!alnet sr! f!AA::/E B 8=C @>DH lo!al pri ate network range a!l lo!alnet sr! feCA::/>A B 8=C @FD> link<lo!al 9dire!tl7 plugged: ma!hines a!l ,,3_ports port @@H a!l ,afe_ports port CA B http a!l ,afe_ports port F> B ftp a!l ,afe_ports port @@H B https a!l ,afe_ports port EA B gopher a!l ,afe_ports port F>A B wais a!l ,afe_ports port >AFI<GIIHI B unregistered ports a!l ,afe_ports port FCA B http<mgmt a!l ,afe_ports port @CC B gss<http a!l ,afe_ports port ID> B filemaker a!l ,afe_ports port EEE B multiling http a!l C4JJ"C0 method C4JJ"C0 B B Configura'(es re!omendadas para permiss-o de a!esso B ,omente permitir a!esso ao !a!hemgr pela lo!alhost http_a!!ess allow lo!alhost manager http_a!!ess den7 manager B Jegar a!esso a !ertas portas n-o seguras http_a!!ess den7 K,afe_ports B Jegar !onex-o a outras portas que n-o se)am de ,,3 http_a!!ess den7 C4JJ"C0 K,,3_ports B B 1nsira suas pr*prias regras aqui para permitir a!esso de seus !lientes B B 8egra de exemplo permitindo a!esso de sua rede lo!al B %dapte para o que for ne!ess#rio para fun!ionar na sua rede http_a!!ess allow lo!alnet http_a!!ess allow lo!alhost B " finalmente, negar todos os outros a!essoas a este prox7 http_a!!ess den7 all B 4 ,quid normalmente es!uta na porta H>FC http_port H>FC B 6es!omente e a)uste a linha seguinte para adi!ionar o diret*rio de !a!he !a!he_dir ufs / ar/spool/squid >AA >G FIG B 6eixe !oredumps no primeiro diret*rio do !a!he !oredump_dir / ar/spool/squid B %di!ione suas pr*prias entradas de refresh abaixo dessas refresh_pattern Lftp: >@@A FAM >AACA refresh_pattern Lgopher: >@@A AM >@@A refresh_pattern <i 9/!gi<bin/NO?: A AM A refresh_pattern . A FAM @HFA "ntendendo as !onfigura'(es %C3s

% tag %C3 $ a lista de a!esso, ou regra, que definimos para o nosso ser idor. P atra $s delas que amos fa&er as limita'(es/permiss(es de uso. %s %C3s do squid s-o !ompostas sempre por um par. 2ma defini'-o de %C3 no estilo a!l nomedaa!l tipodaa!l op'-o/lo!aldaa!l "nt-o, uma a!l !hamada ,afe_ports que espe!ifique a porta CA, seria a seguinte. a!l ,afe_ports port CA "sta regra, no momento, n-o bloqueia nem libera essa porta. ,implesmente di& que temos uma %C3 !hamada ,afe_ports que rege sobre a porta CA. %s %C3s s-o somente as listas de a!esso. 6epois n*s iremos di&er se elas de er-o ser liberadas ou n-o. 2ma mesma %C3 pode !onter mais de uma informa'-o, !omo por exemplo: a!l ,afe_ports port CA a!l ,afe_ports port H>FC Chamamos a mesma %C3 duas e&es, mas !om alores diferentes. 3ista de op'(es das %C3s sr!: sour!e 9!lient: 1+ addresses dst: destination 9ser er: 1+ addresses m7ip: the lo!al 1+ address of a !lientQs !onne!tion arp: "thernet 9R%C: address mat!hing sr!domain: sour!e 9!lient: domain name dstdomain: destination 9ser er: domain name sr!dom_regex: sour!e 9!lient: regular expression pattern mat!hing dstdom_regex: destination 9ser er: regular expression pattern mat!hing sr!_as: sour!e 9!lient: %utonomous ,7stem number dst_as: destination 9ser er: %utonomous ,7stem number peername: name tag assigned to the !a!he_peer where request is expe!ted to be sent. time: time of da7, and da7 of week url_regex: 283 regular expression pattern mat!hing urlpath_regex: 283<path regular expression pattern mat!hing, lea es out the proto!ol and hostname port: destination 9ser er: port number m7port: lo!al port number that !lient !onne!ted to m7portname: name tag assigned to the squid listening port that !lient !onne!ted to proto: transfer proto!ol 9http, ftp, et!: method: H00+ request method 9get, post, et!: http_status: H00+ response status 9FAA HAF @A@ et!.: browser: regular expression pattern mat!hing on the request user<agent header referer_regex: regular expression pattern mat!hing on the request http<referer header ident: string mat!hing on the userQs name ident_regex: regular expression pattern mat!hing on the userQs name prox7_auth: user authenti!ation ia external pro!esses prox7_auth_regex: regular expression pattern mat!hing on user authenti!ation ia external pro!esses snmp_!ommunit7: ,JR+ !ommunit7 string mat!hing max!onn: a limit on the maximum number of !onne!tions from a single !lient 1+ address max_user_ip: a limit on the maximum number of 1+ addresses one user !an login from req_mime_t7pe: regular expression pattern mat!hing on the request !ontent<t7pe header req_header: regular expression pattern mat!hing on a request header !ontent rep_mime_t7pe: regular expression pattern mat!hing on the repl7 9downloaded !ontent: !ontent<t7pe header. 0his is onl7 usable in the http_repl7_a!!ess dire!ti e, not http_a!!ess. rep_header: regular expression pattern mat!hing on a repl7 header !ontent. 0his is onl7 usable in the http_repl7_a!!ess dire!ti e, not http_a!!ess. external: lookup ia external a!l helper defined b7 external_a!l_t7pe user_!ert: mat!h against attributes in a user ,,3 !ertifi!ate

!a_!ert: mat!h against attributes a users issuing C% ,,3 !ertifi!ate ext_user: mat!h on user= field returned b7 external a!l helper defined b7 external_a!l_t7pe ext_user_regex: regular expression pattern mat!hing on user= field returned b7 external a!l helper defined b7 external_a!l_t7pe H00+_%CC",, % tag Shttp_a!!essT $ quem define o que ser# feito !om a regra que listamos anteriormente, as %C3s. "la $ quem ai di&er se o a!esso ser# liberado ou bloqueado. +ara tanto, de emos utili&ar a seguinte forma: http_a!!ess allow/den7 nomedaa!l % op'-o allow ou den7 $ quem ai di&er se iremos liberar ou negar o a!esso a aquela %C3. P possU el utili&ar o !ara!ter TKT para reali&ar uma %C3 ao !ontr#rio. 4 seguinte !*digo: http_a!!ess allow ,afe_ports libera o a!esso para as portas definidas na %C3 ,afe_ports. Ras o !*digo: http_a!!ess allow K,afe_ports 3iberar para todas as portas R"J4, as definidas em ,afe_ports % 4rdem importa %s permiss(es s-o lidas na ordem que s-o !olo!adas. ,e primeiros bloquearmos algo e depois liberarmos, n-o fun!ionar#. P importante !olo!ar a ordem !orretamente. +ara isso, mantenha seu arqui o de !onfigura'-o sempre limpo 5loqueando endere'os Vamos agora er !omo podemos fa&er para bloquear sites, baseado em uma lista de sites proibidos. a!l proibidos url_regex W/et!/squid/sitesproibidosW http_a!!ess den7 proibidos Ve)amos: Ja primeira linha, !hamamos uma %C3 !om nome de SproibidosT. % op'-o url_regex di& ao squid pesquisar dentro do arqui o /et!/squid/sitesproibidos a lista de endere'os que queremos bloquear ou liberar. Ja segunda linha, o !omando http_a!!ess den7 nos di& que queremos negar o a!esso a esta %C3. 6epois, $ s* !riar o arqui o /et!/squid/sitesproibidos e adi!ionar os endere'os que queremos. 3embre<se que o squid $ !ase sensiti e, ou se)a, ele ai ler os endere'os na lista da forma que forem digitados. ;;;.X44X3".C4R $ diferente de www.google.!om ou ;w;.Xo4g3e.CoR. +ara e itar este detalhe , utili&e a op'-o T<iT !omo no exemplo: a!l proibidos url_regex <i W/et!/squid/sitesproibidosW http_a!!ess den7 proibidos 4 que esti er na lista ser# bloqueado. +odemos !olo!ar endere'os inteiros, ou podemos bloquear sites baseado em uma pala ra. ,e em nosso /et!/squid/sitesproibidos esti er a seguinte listagem: www.google.!om www.fix.inf.br somente os sites www.google.!om e www.fix.inf.br ser-o bloqueados. foo.google.!om e bar.fix.inf.br n-o ser-o bloqueados. Ras se !olo!armos na nossa lista o seguinte: google fix 0odos os sites que !onti erem essas pala ras ser-o bloqueados. foo.google.!om ser# bloqueado, assim !omo google.exemplo.!om.br %utenti!a'-o 2ma das outras possibilidades do squid $ o bloqueio por usu#rio. +odemos !riar uma lista de logins e senhas, ou

integrar !om outros m$todos, !omo uma base de dados 36%+ ou um ser idor m7sql. Veremos aqui !omo montar um sistema de autenti!a'-o b#si!o, !om uma lista de usu#rios e senhas em um arqui o de texto. +re!isamos adi!ionar a linha auth_param basi! program /usr/libG@/squid/basi!_n!sa_auth /et!/squid/passwd em nosso arqui o /et!/squid/squid.!onf se nosso linux for G@ bits e a linha: auth_param basi! program /usr/lib/squid/basi!_n!sa_auth /et!/squid/passwd em nosso arqui o /et!/squid/squid.!onf se nosso linux for HF bits. % lo!ali&a'-o do arqui o basi!_n!sa_auth pode ser diferente em seu sistema. 2tili&e um !omando !omo o whereis ou um find para en!ontrar o arqui o. "sta linha ati a o sistema de autenti!a'-o Sbasi!_n!sa_authT, !om o arqui o /et!/squid/passwd sendo nosso arqui o de usu#rios e senhas. Ve)amos: a!l todos prox7_auth 8"Y218"6 http_a!!ess allow todos http_a!!ess den7 all Ja primeira linha, definimos que uma %C3 !hamada todos que $ de autenti!a'-o 9prox7_auth:. 4 8"Y218"6 di& que qualquer usu#rio autenti!ado ir# se en!aixar nessa %C3. Ja segunda linha, o http_a!!ess allow todos libera o a!esso aos usu#rios autenti!ados. Ja ter!eira linha o http_a!!ess den7 all nega o a!esso a todo o resto dos usu#rios. 4 ,quid nos permite um !ontrole sobre os usu#rios que podem ou n-o a!essar a rede, atra $s de %C3s tipo: a!l diretoria prox7_auth usuario> usuarioF usuarioH %qui, temos uma a!l !hamada diretoria, onde ser-o lidados somente !om os usu#rios !hamados usuario>, usuarioF e usuarioH. +odemos ainda, !riar um arqui o !om esses usu#rios, assim !omo !riamos um arqui o !om sites bloqueados. a!l diretoria prox7_auth W/et!/squid/diretoriaW http_a!!ess allow diretoria 6elimitando hor#rios %gora, iremos limitar o a!esso a rede por hor#rio. Yue tal deixarmos o a!esso aos usu#rios !omuns somente durante o hor#rio !omer!ial? a!l usuarios prox7_auth 8"Y218"6 a!l diretoria prox7_auth W/et!/squid/diretores a!l horario!omer!ial time AC:AA<>C:AA http_a!!ess allow diretoria http_a!!ess allow usuarios horario!omer!ial http_a!!ess den7 all +ronto. 6efinimos a %C3 dos usu#rios, dos diretores e na ter!eira linha a %C3 do hor#rio, dando o nome para ela de Shorario!omer!ialT e definindo ela das C at$ as >C. 6epois, liberamos o a!esso da diretoria e na quinta linha, liberamos o a!esso aos usu#rios de a!ordo !om a %C3 horario!omer!ial. =inalmente, negamos o resto. ,imples, n-o $? 6eixando !oisas de fora do squid %lgumas e&es queremos deixar algum endere'o fora do !a!he. %lguns sites simplesmente fun!ionam melhor assim. Jeste !aso, de emos utili&ar o !*digo: a!l hotmail dstdomain .hotmail.!om alwa7s_dire!t allow hotmail %ssim, o hotmail.!om ser# a!essado diretamente, sem pre!isar passar pelo !a!he. Ca!he lo!al 4 squid usa uma diret*rio para arma&enamento de seu !a!he de p#ginas. +ara isso, pre!isamos utili&ar a linha

S!a!he_dirT seguido do tipo de arma&enamento, diret*rio a ser usado, nZmero em megabites, do nZmero de diret*rios prim#rios !riados e depois do nZmero de diret*rios se!und#rios. ,endo assim a linha: !a!he_dir ufs / ar/spool/squid/ EAAA >G FIG di& que, o sistema a ser usado $ o ufs, o diret*rio prin!ipal $ o / ar/spool/squid, ser-o usados EXb, ser-o !riados >G diret*rios dentro do / ar/spool/squid e mais FIG diret*rios dentro de !ada um desses >G. "ste tipo de arma&enamento em diret*rios $ o padr-o do squid e fun!iona muito bem. %V1,4: J-o deixe o squid o!upar todo o espa'o do seu dis!o. ,e for usar uma parti'-o separada, use FAM a menos do que o tamanho total dela. ,e for no seu dis!o prim#rio, !al!ule baseado no taamnho do seu dis!o e em quanto li re o!. quer ter. +rox7 0ransparente %lgumas e&es queremos deixa o squid transparente, ou se)a, !om que o usu#rio nem saiba da sua exist.n!ia. Chama< se prox7 transparente. %ssim, o usu#rio n-o tem es!olha, sen-o usar o prox7, sem pre!isar !onfigurar ele no na egador. +ara ati armos esta op'-o pre!isamos adi!ionar a op'-o: http_port H>FC transparent [# de emos ter uma linha !hamada http_port H>FC no squid.!onf. ,implesmente iremos adi!ionar a op'-o transparent ao lado. Ras ainda pre!isamos de mais. 0emos que fa&er !om que todas as requisi'(es que entrem na porta CA do nosso ser idor 9)# que $ a padr-o da web: se)am reen!aminhadas para a H>FC 9e itando assim de alterar as !onfigura'(es no na egador:. Yuem far# esse ser i'o $ o iptables, !om o !omando: iptables <t nat <% +8"84201JX <i ethA <p t!p <<dport CA <) 8"618"C0 <<to<port H>FC 3embrando das !onfigura'(es de iptables, emos que nessa linha di&emos ao iptables para utili&ar a tabela nat, na !hain +8"84201JX, utili&ando a interfa!e ethA9importante notar se essa $ a interfa!e usada:, no proto!olo t!p, na porta CA, para dar um 8"618"C0 para a porta H>FC. ,imples, temos nosso prox7 transparente agora. Be!ho > ? /pro!/s7s/net/ip @/ip_forward 4u, numa maneira mais SeleganteT: Bs7s!tl <w net.ip @.ip_forward=> 8efer.n!ias http://www.pi!oloto.!om.br/linux/squid.php http://www.linuxhomenetworking.!om/wiki/index.php/Yui!k_H4;04_:_ChHF_:_Controlling_;eb_%!!ess_with_,quid http://wiki.squid<!a!he.org/ http://wiki.squid<!a!he.org/,quid=aq/ http://www.mlaureano.org/guias_tutoriais/Xuia1nst,quid.htm

Você também pode gostar