|
|||||||
| Wiki | Classificados | Galeria | Reviews | Jogos | Comunidades | RSS Feeds | FAQ | Termos de Uso | Sobre |
| Cadastre-se | Fotos | Blogs | Lista de Membros | Calendário | Pesquisar | Mensagens de Hoje | Marcar Fóruns Como Lidos |
FerramentasPublicidade |
From UnderLinux WikiSquid 2.5 / SARG / NCSA / HTPASSWD
[editar] IntroduçãoAntes de mais nada vou colocar todos os links dos sites que vc vai precisar pegar os arquivos de instalação, lembre sempre de pegar a versão estável (stable) dos programas:
Durante toda a apostila vc deverá usar o usuário root. Essa apostila foi elaborada por Thiago Tassele - firekeyboard (thiagotassele@yahoo.com.br) e Tiago Durante - replicante (replicante.slack@uol.com.br), entao se vc for xingar alguém é a gente mesmo! :-)
[editar] Instalação[editar] SquidEntre na pasta onde o arquivo tar.gz ou tar.bz2 que vc fez download no site, os dois são iguais, só muda o tanto que o compactador "aperta" as letrinha. :-) Descompacte-o, com a opçao para qual arquivo vc pegou:
* tar.gz
# tar -xvzf squid-2.5.STABLE4.tar.gz
* tar.bz2
# tar -xvjf squid-2.5.STABLE4.tar.bz2
Entre na pasta criada depois da descompactação, e vamos compilar. # ./configure --enable-default-err-language=Portuguese --prefix=/usr/local/ # make all # make install Pronto! O Squid está instalado.
[editar] 1. Diretórios, arquivos e usuário do SquidVamos lá, antes de mais nada vc deve ter um usuário para administar o Squid, aqui vou usar o squidadm como exemplo, mas vc pode usar o que vc quizer, de preferencia um user sem poderes de root. # useradd squidadm # passwd squidadm (coloque a senha que vc quizer) Temos que criar uma pasta para servir de cache para o Squid: # mkdir /usr/local/squid/cache Agora vamos transformar o squidadm como dono das pastas do Squid, isso deve ser feito com atenção pois se ele nao puder gravar nos arquivos de log (var/logs) o Squid nao vai subir. # cd /usr/local/ # chown -R squidadm squid/ # chmod -R 775 squid/ Quando o Squid é instalado ele coloca seus binários em squid/sbin vamos colocado em squid/bin: # cp /usr/local/squid/sbin/squid /usr/local/squid/bin/ ATENÇAO! Na pasta squid/var/ e squid/var/logs ficam os arquivos de log do squid, nunca deixe esses arquivos atingirem um tamanho muito grande ou seu squid pode travar! Na parte do SARG colocarei um script para isso. :-)
[editar] Configuração do Squid - squid.confA configuarçao do Squid é bem simples mas deve-se prestar bastante atençao para nao morrer de ódio. Acredite, por experiencia própria, vc está no Linux se alguma coisa der errado verifique as configuraçoes que vc fez e pára de querer reiniciar o computador! :-) Preste bastante atenção na ACLs, lembre-se sempre que elas são lidas da esquerda para a direita e de cima para baixo. Vamos configurar o arquivo squid/etc/squid.conf: # vi /usr/local/squid/etc/squid.conf Vou passar as configurações básicas para ter um servidor rodando legal, com bloqueio a sites de pornografia, bate-papos e downloads de arquivos .mp3. As linhas do squid.conf são comentadas (em inglês) com uma explicação detalhada das outras opções, não é dificil descubrir sozinho como se configura ele. :-) Primeiro vamos na linha onde tem o endereço da porta por onde será compartilhada a net, para descomentar é só tirar o # que está na frente da TAG, descomente a linha: http_port 3128 Aqui vc pode colocar a porta que você preferir, caso for fazer um proxy transparente nao vai fazer muita diferença, pois vc vai setar o pedido via firewall. Agora a linha da cache, que vai estar assim: cache_dir ufs /usr/local/squid/var/cache 100 16 256 E vc vai deixar assim, não esqueça de descomentar: cache_dir ufs /usr/local/squid/cache 100 64 64 Esse 100 64 64 na frente do endereço significa o seguinte:
* 100 é o tamanho em megas que vai ser desponibilidado para o cache.
* 64 é o número de pastas que poderam ser criadas no squid/cache
* 64 é o número de sub-pastas que poderam ser criadas sob os diretorios criados anteriormente
Agora coloque o squidadm, aquele usuário que a gente criou, como administrador do Squid. Para isso descomente a linha chace_effective_user e deixe ela assim: cache_effective_user squidadm ACL - HTTP_ACCESS As acls são as regras para o funcionamento do Squid, são nelas que vc vai setar, por exemplo, um grupo de usuários que terá autorização para entrar em sites entre outras coisas mais. A configuração das acls não são dificeis, mas vc deve ficar atento em relação a ordem em que os comando vão aparecer, lembre-se sempre que as acls são lidas de CIMA para baixo e da ESQURDA para a direita. A string para criar acls é assim: acl nome_da_acl comando parametros;parametros http_access (deny|allow) nome_da_acl Veja alguns tipos de acls:
src Determina um endereço ip acl teste src 192.168.100.1
url_regex Determina um texto na url do site acl teste url_regex uol.com.br
urlpath_regex Determina uma subpasta na url alc teste urlpath_regex .br/sexo
urlpath_regex Determina por tipo de arquivo acl teste urlpath_regex .mp3$ .exe$ .zip$
proxy_auth Determina que o login deve ser efetuado, precisa do NCSA acl teste proxy_auth user01 user02
port Determina um porta acl teste port 8080
time Determina um horário especifico acl teste time dia_semana hr_inicial-hr_final
-> acl almoco MTWHF 12:00-13:00
arp Determina MAC address, para usar adicione
--enable-arp-acl no configure acl teste arp 01:02:03:04:05:06
Você pode usar um arquivo onde estarão os parâmetros, que eu acho bem mais limpo e deixa o squid.conf mais fácil de ler. Para fazer isso basta colocar um "link" para fora do arquivo, eu costumo criar uma pasta listas/ dentro da squid/etc/, fica assim: acl teste url_regex "/usr/local/squid/etc/listas/teste.txt" Exemplo de uma regra de acl que vai proibir acesso a sites de pornografia, download de mp3 e acesso total para os usuário do ip 192.168.100.2 e 192.168.100.3. Para fazer essa configuração você deve baixar os arquivos porn e noporn no link: <nowiki>
* Blocking Porn http://web.onda.com.br/orso/
<nowiki>
Baixe as duas listas e coloque-as no diretório squid/etc/listas, para isso crie o diretório: # mkdir /usr/local/squid/etc/listas # chown -R squidadm /usr/local/squid/etc/listas Primeiro procure no arquivo squid.conf pelas linhas: #Recomended minimum configuration: Coloque as suas acls após a ultima acl da lista, que deve ser acl CONNECT method CONNECT: ## Minhas Acls acl acesso_total src 192.168.100.2 192.168.100.3 acl mp3 urlpath_regex .mp3$ acl porno url_regex "/usr/local/squid/etc/listas/porn" acl noporno url_regex "/usr/local/squid/etc/listas/noporn" Pronto as acls foram colocadas, mas agora vc deve colocar as regras das acls para dizer se elas vão liberar ou proibir. Ainda dentro do squid.conf encontre a linha onde está: <nowiki> # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS <nowiki> Coloque suas regras logo abaixo esse comentário, o que está depois do # é um comentário e não precisa ser colocado no squid.conf: http_access allow diretoria # Libera o acesso para a acl diretoria http_access deny mp3 # Nega acesso a alc mp3 http_access deny porno # Nega acesso a alc porn, que busca seu conteudo em um arquivo de fora http_access allow noporn all # Libera o acesso para a acl noporn que busca o conteudo em um arquivo de fora Acho que ficou bem fácil de entender, mas mesmo assim vamos dar mais uma olhada:
* Se for diretoria pode tudo
* Se for qualquer outro tem 3 opções
-- Se tentar pegar mp3 não passa
-- Se o conteudo do site tiver alguma das palavra do porn ele não passa
-- Se o conteudo do site tiver ou nao alguma palavra do noporn ele passa
Essa é uma configuração bem simples de acls para o Squid, depois mesmo se vc não for colocar autenticação no Squid, dê uma olhada na parte do NCSA porque lá tem uma configuração um pouco mais arrojada das acls.
[editar] NCSAAgora vamos instalar o NCSA. A instalaçao do NCSA não é obrigatória para o funcionamento do Squid, mas muitas vezes vc pode acabar precisando.
* HTPASSWD http://www.squid-cahe.org/related-software.html
Na pasta onde o Squid foi descompactado entre no diretório: <nowiki> # cd helpers/basic_auth/NCSA <nowiki> Compile o NCSA agora: # make # make install Copie o autenticador para a pasta de binários do Squid: # cp ncsa_auth /usr/local/squid/bin Agora temos que editar o arquivo squid/etc/squid.conf # vi /usr/local/squid/etc/squid.conf Siga até a linha onde está: #auth_param basic program Subistitua e descomente por: auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd Descomente também esta linha, ela define o número de autenticações simultaneas: auth_param basic children 5 Agora vamos configurar os usuários que poderão ter acesso ao Squid, agora o negocio começa a ficar mais legal! :-) Primeiro temos que criar o arquivo passwd na pasta squid/etc, como foi especificado dentro do squid.conf. Os usuários e as senhas vão ficar dentro do passwd. Na primeira vez que você for usá-lo deve ser assim: # htpasswd -c passwd usuário Nas vezes seguintes use assim: # htpasswd passwd usuário Caso queira alterar a senha de algum usuário é só dar o mesmo comando com o nome do usuário que voce quer alterar a senha. Esses usuários devem estar dentro de uma lista onde vc vai dizer que tipo de permissão ele vai ter, aqui vou criar duas listas uma com acesso total e uma que bloqueia porno e multimedia (mp3, mov, mpeg, mpg, avi). Se vc for fazer um Squid em um lugar onde cada usuário tem o seu computador não acho muito necessario criar autenticação. Acho mais interessante usar essa configuração em algum lugar onde as pessoas trocam muito de computador e tem alguns niveis de permissão diferentes. Voltando a explicação... Vc vai ter 2 arquivos que vão ficar dentro de squid/etc/listas, um arquivo sera o auto e o outro o noauto. A cada usuário que vc criar vc terá que adiciona-lo ou em auto que serão os users que poderão fazer de tudo na internet ou no arquivo noauto que são os "mortais". Eu acho q seria um saco ficar adicionando user por user entao fiz este script que ajuda um pouco na hora de fazer os cadastros. #!/bin/bash clear while true do clear echo -e " Opcao Acao ==================================================================== 1 Adicionar usuário com permissão total 2 Adicionar usuário com permissao controlada 3 Alterar senha de usuário (qualquer permissao) 4 Listar usuário cadastrados - permissao total 5 Listar usuário cadastrados - permissao controlada 0 Sair ==================================================================== Escolha uma das opcoes acima (0-5): c" read Opcao case "$Opcao" in 1) echo -e " Entre com o nome: c" read nome if cat /usr/local/squid/etc/passwd | grep "$nome:" 1>/dev/null 2>/dev/null then echo "ERRO! Usuário já cadastrado" sleep 2 else htpasswd /usr/local/squid/etc/passwd "$nome" echo "$nome" >> /usr/local/squid/etc/listas/auto echo "Cadastro efetuado com sucesso!" sleep 2 fi ;; 2) echo -e " Entre com o nome: c" read nome if cat /usr/local/squid/etc/passwd | grep "$nome:" 1>/dev/null 2>/dev/null then echo "ERRO! Usuário já cadastrado" sleep 2 else htpasswd /usr/local/squid/etc/passwd "$nome" echo "$nome" >> /usr/local/squid/etc/listas/noauto echo "Cadastro efetuado com sucesso!" sleep 2 fi ;; 3) echo -e " Entre com o nome: c" read nome if cat /usr/local/squid/etc/passwd | grep "$nome:" 1>/dev/null 2>/dev/null then htpasswd /usr/local/squid/etc/passwd "$nome" echo "Senha alterada com sucesso!" sleep 2 else echo "ERRO! Usuário não existe" sleep 2 fi ;; 4) echo "Usuário com acesso total" echo "------------------------" cat /usr/local/squid/etc/listas/auto echo "------------------------" ;; 5) echo "Usuário com acesso controlado" echo "------------------------" cat /usr/local/squid/etc/listas/noauto echo "------------------------" ;; 0) echo "Até logo..." exit ;; *) echo " Somente sao validas opcoes entre 0 e 5" sleep 2 ;; esac done exit Coloque o script no /bin com o nome de addsquid e de permissao de execuçao: # chmod +x /bin/addsquid Para rodar o script basta dar o comando: # addsquid ATENÇÃO! Voce não é obrigado a fazer esse script, é só uma dica! :-)
[editar] Acls de AutenticaçãoAgora é necessário criar as acls para que o Squid peça a senha. A pré-configuração já foi feita, que era a parte se setar o NCSA dentro do squid.conf e criar os usuários. Eu vou fazer assim, como vc já conseguiu entender um pouco de acl depois de chegar até aqui entao eu vou colocar as regras todas aqui em baixo com um comentário na frente explicando o que ela faz, acho que fica mais dinamico. No arquivo squid.conf: # Acls acl diretoria src 192.168.100.1 192.168.100.2 acl auto proxy_auth "/usr/local/squid/etc/listas/auto" acl noauto proxy_auth "/usr/local/squid/etc/listas/noauto" acl mult urlpath_regex .mp3$ .mpeg$ .mpg$ .mov$ .avi$ acl noporn url_regex "/usr/local/squid/etc/listas/noporn" acl porn url_regex "/usr/local/squid/etc/listas/porn" # Regras http_access allow diretoria # A diretoria tem computadores pessoais entao nao precisa logar, acesso total http_access allow auto # Faz com que quem tenha a senha de permissao total tenha net sem passas por outras acls http_access deny noauto # Vai fazer com que quem esteja na lista noauto tenha que passar pelas acls abaixo http_access deny mult # Proibe acesso aos tipos de arquivos setados http_access allow noporn # Libera lista de palavras que parecem porno mas naum sao http_access deny porn # Segura sites com pornografia http_access allow all # O que não ficar preso nas regras acima pode ser usado
[editar] SARGNota A instalaçao do SARG é realmente muito simples, mas tem alguns detalhes a que se deve dar atençao como:
Lá tem o SARG para todas as matrizes, Slackware, Debian e RedHat. Aqui eu vou ensinar a instalação do pacote .tar.gz, que ae serve para todo mundo. Mas caso vc queira pegar o pacote da sua distro é só instalar com o comando que vc usa para instalar seus pacotes (lógico). :-) Isso é só se vc for usar o .tar.gz: # tar -xvzf sarg-1.4.1.tar.gz # cd sarg-1.4.1 # ./configure # make # make install
[editar] ConfiguraçãoDepois de instalado vamos configurar, aqui nos temos que dizer: - Onde devem ser gerados os relatórios - Onde esta o access.log - lingua padrão - Definir IP - Relatórios que queremos O arquivo onde se configura o SARG fica em: /usr/local/sarg/sarg.conf Para determinar onde os relatórios deverão ser gerados procure pela linha: output_dir /www/docs/relatorios/ Aqui eu mandei ele criar os relatórios dentro da pasta do Apache, que ae eu já posso ver os relatórios em qualquer micro da rede. O access.log é o arquivo em que o Squid joga todos os pedidos que chegaram a ele e o resultado do pedido, se foi negado ou não e de onde veio. Para configurar procure a linha access_log e deixe como está aqui em baixo: access_log /usr/local/squid/var/logs/access.log Para determinar a lingua padrao que o SARG vai usar basta colocar Portuguese na tag language e descomenta-la assim: language Portuguese Voce deve colocar para o SARG resolver o ip das maquinas, assim vc sabe de onde vieram os pedidos do Squid, basta descomentar a tag resolve_ip yes: resolve_ip yes E por último, porem mais importante, vamos dizer o que nos queremos no nosso relatorio. Para isso vamos editar a tag: #TAG: repot_type type # What kind of reports to gererage E na linha onde está: #report_type topsites users_sites sites_users date_time denied auth_failures site_user_time_date É só descomentar e pronto. Ficando assim nossa tag: report_type topsites users_sites sites_users date_time denied auth_failures site_user_time_date Pronto a configuração básica está feita, mas se vc deixar só assim não vai resolver nada, vc tem que adicionar um comando no crontab para gerar esse relatório diariamente, para isso eu fiz mais um scriptzinho que ajuda um pouco. Ele faz um backup do relatório do dia e manda gerar o novo relatório. Veja como fica o script: #!/bin/bash ## Gera variavel do dia dia=`date +%Y"-"%b"-"%d` ## Cria a pasta do dia e copia os arquivos mkdir /usr/local/squid/var/logs/backup/"$dia" cp /usr/local/squid/var/logs/access.log /usr/local/squid/var/logs/backup/"$dia"/access.log cp /usr/local/squid/var/logs/cache.log /usr/local/squid/var/logs/backup/"$dia"/cache.log cp /usr/local/squid/var/logs/store.log /usr/local/squid/var/logs/backup/"$dia"/store.log ## Inicia o Sarg sarg ## Apaga os arquivos antigos >/usr/local/squid/var/logs/access.log >/usr/local/squid/var/logs/cache.log >/usr/local/squid/var/logs/store.log É muito importante deixar os aquivos de log com pouco tamanho, porque quando ficam muito grandes o Squid começa a demorar muito para conseguir abri-los, pensa que o usuário não tem permissão e trava. Com esse script os logs não são deletados, eles apenas ficam em um backup separado, quando vc quizer consultar eles estão lá. Isso vai tomar espaço em seu disco mas é o mesmo espaço que tomaria se ficasse em um arquivo só. Se vc não precisar do backup é só comentar as linhas onde o scrip faz backup. Coloque o script no /bin com o nome de relat_backup e de permissao de execucao: # chmod +x /bin/relat_backup Bem, vamos adicionar esse script no crontab, de o comando do crontab e adicione a linha que eu vou colocar aqui: # crontab -e Agora adicione a linha: 40 23 * * * /bin/relat_backup 1> /dev/null O crontab lê primeiro os minutos depois as horas entao isso siguinifica que todo dia as 23:40 ele vai rodar o scritp.
[editar] EpílogoBom é isso! Chegamos ao fim... Qualquer dúvida, sugestão ou se vc for uma mina muito gata e esteja solitária manda um e-mail! :-)
[editar] Créditos
|