Configurar servidor proxy squid Definição
Definição O Squid é um servidor proxy utilizado util izado para gerenciar o acesso a internet (rede externa), pois ele implementa um controle sobre sobre o conteúdo que que deve ou não ser acessado acessado pelas máquinas clientes gerenciadas por este servidor.
Funcionamento O Squid trabalha com ACLs (Listas de Controle de Acesso) e através dessas listas de controle ele se torna uma poderosa ferramenta na administração de tráfego de conteúdo entre a rede interna e a externa. São através dessas listas que conseguimos criar e definir o controle de acesso a internet i nternet de forma simples e flexível, fl exível, tornando o Squid uma ferramenta precisa em seu objetivo, que é basicamente bloquear o acesso a determinados sites, que podem ser fornecidos dentro de um arquivo de texto, e os que não estiverem dentro deste arquivo o Squid reconhece que são sites de livre acesso. O Squid também conta com um cache que serve para armazenar sites visitados, dando a impressão ao usuário de estar navegando mais rapidamente, que de fato é verdade, pois ele está buscando um site ou uma parte do site que já está salva dentro do servidor e as outras partes ou sites que ainda não estão, o servidor irá buscá-los e armazená-los até um certo limite.
Tipos de ACLs As ACLs são definidas da seguinte forma: acl nome tipo string | "arquivo"
Existem vários tipos de ACL que podemos utilizar, abaixo temos os mais comuns:
srcdomain - tipo indicado para verificar o domínio da máquina cliente. Os
domínios serão obtidos por resolução reversa de IP, o que pode causar atrasos para a resposta resposta da requisição. requisição. A definição do domínio domínio deve ser feita da seguinte forma: ".meudominio.com.br", não podendo ser esquecido o "." (ponto) no início; time - usado para especificar dias da semana e horários. Os dias da semana são definidos através de letras que os representam, e os horários através de intervalos na forma hora:minuto_inicio-hora:minuto_final. Os dias da semana são especificados assim: S - Sunday (Domingo), M - Monday (Segunda-feira), T
- Tuesday (Terça-feira), W - Wednesday (Quarta-feira), H - Thursday (Quintafeira), F - Friday (Sexta-feira) e A - Saturday (Sábado); src - tipo utilizado para indicar endereços IP de origem. Pode-se especificar um endereço de rede, como 192.168.16.0/24, um endereço de um determinado host, como 192.168.16.10/24 ou uma faixa de endereços, como 192.168.16.10192.168.16.20/24; dst - semelhante ao tipo anterior, mas está relacionada ao endereço de destino; dstdomain - usado da mesma forma que srcdomain, entretanto com relação ao destino; srcdom_regex - avalia o domínio usando expressões regulares. Seu uso é semelhante às duas anteriores, acrescentando a flexibilidade do uso da expressão regular; dstdom_regex - usado da mesma forma que srcdom_regex, entretanto com relação ao destino; url_regex - este tipo percorre a URL à procura da expressão regular especificada. Deve ser observado que a expressão é case-sensitive, para que seja case-insensitive deve ser usada a opção -i. É o tipo mais comum de ACL, dada a flexibilidade proporcionada pelo uso de expressões regulares; urpath_regex - tipo semelhante à url_regex, mas procura a expressão regular na URL sem levar em conta o nome do servidor e o protocolo, isto quer dizer que a procura será feita apenas na parte da URL após o nome do servidor, como por exemplo, na URL http://www.servidor.com.br/pasta/sexo.html, a procura será realizada apenas na parte /pasta/sexo.html. Ela é também case-sensitive, para que seja case-insensitive deve ser usada a opção -i; port - realiza o controle pela porta de destino do servidor, neste tipo deve ser especificado o número da porta; proto - serve para especificar o protocolo, como por exemplo FTP ou HTTP; method - especifica o tipo de método usado na requisição, como por exemplo GET, CONNECT ou POST; browser - usa uma expressão regular para tentar "casar" com os dados do cabeçalho HTTP e combinando então com o navegador utilizado pelo cliente; ident - Realiza o controle de acesso baseado no nome do usuário. Este tipo requer um servidor Ident rodando na máquina do cliente; ident_regex - semelhante a ident, mas utilizando expressão regular; proxy_auth - tipo usado para implementar autenticação de usuários no proxy. A autenticação é feita com uso de softwares externos. Podem ser passados os nomes dos usuários ou usada a opção REQUIRED para que seja autenticado qualquer usuário válido; snmp_community - tipo usado para especificar o nome da comunidade SNMP para que se possa monitorar o Squid através deste protocolo; maxconn - especifica um limite de conexões vindas de um determinado cliente, interessante para uso com outras ACLs de forma a limitar quantidades de conexões para determinados endereços específicos; req_mime_type - especifica uma expressão regular para ser verificada no cabeçalho da requisição em busca de um tipo MIME que coincida com o especificado; arp - tipo usado para construir lista de acesso baseada no MAC Address da interface de rede do cliente, ou seja, em vez de endereço IP da placa, usa-se o seu endereço MAC.
Configurando o servidor proxy Squid no servidor A configuração do servidor é muito simples, mas precisamos prestar atenção nos passos a serem realizados para que possamos ter um servidor configurado e rodando de modo a cumprir com o seu objetivo, que é administrar o tráfego de conteúdo na internet. 1° passo: Instalar o Squid. Para isso basta estarmos no shell como root e digitarmos o seguinte comando: # apt-get install squid E esperar até que ele termine de baixar e instalar o pacote. 2° passo: Agora vem a parte mais crucial, que é a edição do arquivo que nos garantirá todo o controle entre as máquinas clientes e o mundo externo. Este arquivo é o /etc/squid/squid.conf. Estando no shell como root digite: # vim /etc/squid/squid.conf O vim abrirá o arquivo e você notará que é uma arquivo gigantesco, de mais de 3.000 linhas, mas não se assuste, pois a maior parte dessas linhas são comentários. Ele parece mais um manual do que um arquivo de configuração... rsrsrs As linhas que devem ser editadas ou criadas são as seguintes: http_port 3128
Quando você conseguir encontrar essa l inha ela pode estar comentada com um "#" antes dela, então você deve removê-lo. Esta linha indica ao Squid em que porta ele ficará escutando as requisições de tráfego. Na internet a mais comum é a porta 3128. cache_dir Esta linha pode estar comentada ou nem existir. Se tiver comentada, basta remover, se não existir, basta criá-la e complementá-la da seguinte forma: cache_dir ufs /var/spool/squid 100 16 256
Esta configuração serve para que o servidor reserve um espaço em disco para armazenar as páginas mais navegadas pelos clientes, fazendo com que o acesso às mesmas seja mais rápido e que o servidor só as atualize se realmente houver essa necessidade, diminuindo, assim, o tráfego na internet. O 100 diz que será reservado 100 MB em disco, o 16 que poderá haver 16 diretórios e o 256 indica o número máximo aceito de arquivos por diretório. cache_mem Aqui será especificado o tamanho de memória RAM que o servidor disponibilizará para realizar as consultas. Essa linha deve ficar assim: cache_mem 8 MB
Geralmente 8 MB de memória. visible_hostname Esta linha serve para informar qual servidor bloqueou o acesso a um site, exemplo: a máquina 192.168.10.104 tentou acessar o Orkut e não conseguiu devido ao proxy ter barrado essa solicitação, então ao navegador do cliente é informado o servidor que barrou, para que ele não pense que foi um erro do computador. Essa linha deve ficar assim: visible_hostname lab1-pc01
No caso meu servidor se chama: lab1-pc01. Atenção: Geralmente as linhas a seguir devem ser criadas por você, se elas já existirem, comente-as e faça com que a suas sejam as válidas no arquivo. Para comentar uma linha basta adicionar um "#" na linha que desejar que seja um comentário. acl máquinas src 192.168.10.0/24
Com esta linha estamos criando uma ACL de nome "máquinas", onde esta define que "máquinas" é um grupo de máquinas que vão do intervalo de 192.168.10.0 até 192.168.10.244. acl proibir url_regex "/etc/squid/proibidos/sites_proibidos"
Com esta linha estamos criando uma ACL de bloqueio chamado "proibir", que posteriormente será aplicada ao grupo "máquinas". Note que o comando url_regex está fazendo referência a um arquivo chamado sites_proibidos, onde este arquivo co ntém os endereços que devem ser bloqueados. Mais adiante vou ensinar como este arquivo deve ser criado. Também ensinarei
como colocar esse arquivo em outra máquina que não seja a que tenha o servidor Squid instalado. http_access deny máquinas proibir
Esta linha está aplicando a ACL de bloqueio chamada "proibir" à acl "máquinas", bloqueando assim, este grupo de máquinas. acl lab1 src 192.168.10.0/24
Agora que definimos o que não pode acessar, precisamos por último definir o que pode ser acessado, senão não irá acessar nada, hehehe. Para isso estou criando uma ACL que tem a mesma faixa de IP da ACL "máquinas", porém eu preciso especificar um nome diferente, pois as ACLs nunca podem ter o mesmo nome. http_access allow lab1
Por fim estou liberando a ACL "lab1" para acessar qualquer conteúdo (site) que não seja os que estão dentro do arquivo de bloqueio. 3° passo: Este passo é o mais simples: salvar o arquivo! ;-)
Criando o arquivo de bloqueio no servidor Este tópico só deve ser seguido se você desejar que o arquivo fique no servidor, do contrário pule para o próximo tópico. Agora é hora de aprendermos como criar o arquivo que será utilizado pela nossa ACL de bloqueio para podermos começar a blo quear alguns sites. 1° passo: Criar o arquivo com o nome e no diretório que você colocou dentro da ACL, que no nosso caso foi /etc/squid/proibidos/sites_proibidos. Para isso basta dar o comando: # vim /etc/squid/proibidos/sites_proibidos Então sera criado um arquivo vazio com este nome.
A estrutura do arquivo é muito importante para que ele seja um arquivo válido para o Squid. Ele só pode conter um site ou nome por linha, jamais coloque mais de um site por linha ou nome. Exemplo de arquivo com sites: orkut sexo www.orkut.com baixaki www.baixaki.com.br
Note que no arquivo existe a palavra "orkut" e o endereço "www.orkut.com". Bem, o www.orkut.com serve para bloquear o acesso quando o pessoa digitar este endereço no browser, já o nome orkut server para impedir que ele pesquise sobre esse nome, nem mesmo no Google, evitando que com isso ele encontre um site que possibilite entrar no Orkut... Bom d+, não é? :D 2° passo: Criado seu arquivo, basta salvá-lo.