Iniciando / Roteamento / Kernel
IniciandoA máquina que configurei, foi um server Ubuntu 10.04 64 bits, dedicado para o seu fim, controlar o acesso na rede. Hardware:
Segue o passo a passo de forma fácil e rápida. Forneci no decorrer do tutorial, todos os arquivos para ajudar. Configure as placas eth0 e eth1. No meu caso, elas estavam desativadas. Dê o comando, para subir as placas: # ifconfig eth_ up Dentro do interfaces, configure as placas a seu critério: # nano /etc/network/interfaces No meu caso, a eth0 10.0.0.10 e eth1 10.0.1.10, máscaras 255.0.0.0. Dê o comando: # /etc/network/networking restart Para aplicar a configuração das placas. Após isso instale o BIND 9, servidor de DNS: # apt-get install bind9 Configure o resolv.conf para usar o DNS local, escrevendo dentro de /etc/resolv.conf: nameserver 127.0.0.0
Vale lembrar que, quando reiniciar, este arquivo se reseta, assim como as regras do IPtables. Por isso, adicione dentro de rc.local, os comandos a executar em cada boot. Neste caso, adicione a linha: echo nameserver 127.0.0.0 > /etc/resolv.conf
Para gravar no boot o DNS. Roteamento e algumas dicas de otimização do kernelAgora, é hora de ativar o roteamento trocando o 0 por 1, no arquivo /proc/sys/net/ipv4/ip_forward. Este arquivo também se reseta em cada boot, por isso, adicione novamente, em rc.local, a linha para gravar esta configuração no boot: echo 1 > /proc/sys/net/ipv4/ip_forward
Instalar o DHCP, para que cada máquina que entrar na rede, assuma o IP e o gateway desejado, assim, aplicando as regras à mesma: # apt-get install dhcp3-server Segue o meu dhcpd.conf, eu sempre uso meus arquivos prontos e simplesmente copio e faço as devidas alterações, para mim, facilita muito e agiliza a configuração. # nano /etc/dhcp3/dhcpd.conf default-lease-time 600;
max-lease-time 7200; option subnet-mask 255.0.0.0; option broadcast-address 10.255.255.255; option routers 10.0.0.10; option domain-name-servers 10.0.0.10; subnet 10.0.0.0 netmask 255.0.0.0 { range 10.0.1.1 10.0.1.100;} Li diversas mudanças de kernel em minha pesquisa, porém, sintetizei as que retornam melhores resultados e são fáceis de fazer, são elas: 1. Começar aumentando a quantidade de arquivos abertos, o padrão é 1024. Altera-se com: # ulimit -n 16384 2. Confirmando a mudança com o comando ulimit -a, na linha com o (-n), caso continue 1024 refaça o comando. 3. Outra mudança boa aplicada, foi aumentar as conexões simultâneas, escrevendo ao final do arquivo /etc/sysctl.conf as seguintes linhas: ####### TUNNING PARA SQUID ######## # Reduzir o tempo de limpeza da tabela ARP
# Expandir o seu tamanho net.ipv4.neigh.default.gc_interval = 15 net.ipv4.neigh.default.gc_thresh1 = 4096 net.ipv4.neigh.default.gc_thresh2 = 8192 net.ipv4.neigh.default.gc_thresh3 = 16384# Aumento do numero de conexoes simultaneas # Reducao do tempo de espera entre as conexoes net.core.somaxconn = 20480 net.core.netdev_max_backlog = 2048 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_max_syn_backlog = 2048 ############################### Após escrito, dar o comando sysctl -p, para ativar as mudanças. Pronto, o tuning no kernel para otimizar o Squid está pronto. Agora, continuamos. |
|
Configurando o Squid
Agora, o server está pronto para receber o serviço principal, o Squid. Sintetizei os meus estudos em um arquivo muito fácil e intuitivo, espero que agradem a todos e fique de fácil entendimento. Instale o Squid: # apt-get install squid Alterar o /etc/squid/squid.conf, pelo arquivo pronto abaixo: ################################################
##### Porta, Nome e Cache ##### ################################################ # http_port 3128 transparent visible_hostname APA-Proxy # ## Criar cache na memoria de 4 GB ## cache_mem 4096 MB maximum_object_size_in_memory 2 MB maximum_object_size 4 MB minimum_object_size 10 KB cache_swap_low 80 cache_swap_high 95 refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 # ################################################ ##### Log ##### ################################################ # cache_access_log /var/log/squid3/access.log cache_store_log /var/log/squid3/store.log cache_log /var/log/squid3/cache.log ## Criar um cache em disco de 5 GB ## cache_dir aufs /var/spool/squid3 5120 16 256 # ################################################ ##### ACLs ##### ################################################ # acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # swat acl Safe_ports port 1025-65535 # portas altas acl purge method PURGE acl CONNECT method CONNECT #Bloquear as portas não sitadas http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # ################################################ ##### Direitos de Acessos ##### ################################################http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge # ################################################ ## CONTROLE DE BANDA ## ################################################ # #acl livre src 192.168.0.0/255.255.255.0 #acl extensoes url_regex -i .exe$ .mp3$ .vqf$ .tar.gz$ .gz$ .rpm$ .zip$ .rar$ .avi$ .mpeg$ .mpe$ .mpg$ .ram$ .rm$ .iso$ .raw$ .wav$ .mov$#delay_pools 2 # # Classe 1 – Acesso a Internet a 512k # # delay_class 1 2 # delay_parameters 1 -1/-1 69000/69000 # # Classe 2 – Download a 180k # # delay_class 2 2 # delay_parameters 2 -1/-1 22500/22500 #delay_access 1 allow livre #delay_access 2 allow extensoes # ################################################ #### Liberando IP’S #### ################################################ # acl liberados src “/etc/squid/liberados.conf” # http_access allow liberados # ################################################ #### BLOQUEAR PALAVRAS #### ################################################ # acl bloquear_palavras url_regex -i “/etc/squid3/bloqueios.conf” # http_access deny bloquear_palavras # ################################################ ##### Rede Local #### ################################################ acl redelocal src 10.0.0.0/255.0.0.0 # ################################################ #### Liberando as Redes #### ################################################ http_access allow localhost http_access allow redelocal # ################################################ #### Bloqueando todo o Resto #### ################################################ http_access deny all http_access deny bloquear_palavras ####################################################### #### Diretorio de erro com imagem personalizada #### ################################################ error_directory /usr/share/squid3/errors/portuguese ####################################################### O arquivo acima, traz as configuração mais fáceis e mais utilizadas do Squid, deve-se trocar os IPs pelos seus próprios, e não esquecer de mudar o nome de host logo abaixo da porta. Caso queira personalizar mais, pode alterar a seu gosto os caches, pois, nem todas as máquinas tem este hardware disponível, fica a seu critério. Você deverá criar 2 arquivos de texto:
# nano “/etc/squid/liberados.conf” # Neste coloque nos IPs que ficam fora do bloqueio, pois na minha empresa tenho as máquinas da gerência aonde excluo elas do bloqueio. # nano “/etc/squid/bloqueios.conf” # Neste deve-se colocar as palavras que deseja bloquear quando aparecerem na URL. Outra linha relevante, é a ERROR_DIRECTORY, explicaremos ela, logo mais na página do Sarg. |
|
Apache 2 / Sarg com página de bloqueio personalizada
Instale o Apache 2, que vai servir a página para visualizar o relatório de acesso do Squid: # apt-get install apache2 Instale o Sarg, o nosso visualizador de relatório do Squid: # apt-get install sarg No Apache, não se configura nada, somente usamos a pasta compartilhada dele para enviar nossos arquivos do Sarg. Configurando o Sarg com página personalizadaEntre no sarg.conf: # nano /etc/sarg/sarg.conf Edite a linha output_dir, da forma que fique assim: output_dir /var/www/squid-reports
Dentro do mesmo arquivo, procure a linha que esteja escrito “RELATORIO DE ACESSO” e personalize. No meu caso: “Relatorio de acesso [nome da empresa]”. Desta forma, o Squid está configurado. Agora, a parte que eu acho a mais legal: criar uma página personalizada de bloqueio. Quando os usuários tentarem acessar uma página bloqueada, aparece a página de erro padrão do Squid, ensinarei a mudar-la para aparecer algo com a sua cara, pois podes criar uma página pessoal bem amigável. Dentro do squid.conf da página anterior, a última linha era uma “ERROR_DIRECTORY”. Ela indica a pasta de erro a buscar um arquivo HTML, a ser mostrado na página de bloqueio. Porém, se a pasta indicada na linha não existe, crie ela: # mkdir /usr/share/squid/errors/portuguese Dentro dessa pasta, deve conter um arquivo de nome “ERR_ACCESS_DENIED”, um arquivo de texto com o seu código HTML, vou postar o meu arquivo pronto para poderem editar: <html><head><body></br></br>
<b><center><font size=7 color=red>A Pagina que voce esta tentando acessar esta bloqueada!!!</font> <div align=center><img src=http://10.0.0.10/bloqueio.jpg></div></head></body></html> Se souber HTML, faça um arquivo como quiser, esta é a parte legal desta página de bloqueio, o que você colocar aí, aparece na hora do bloqueio. Colocando imagens, precisa usar da seguinte forma: http://ipdoservidor/nomedaimagem No meu caso, tenho um arquivo de imagem apontado. Sempre que tiver imagens, devem ser colocados na pasta /var/www/, a pasta pública que o Apache cria. Se não estiver dentro dela, não aparece. Finalizando com IPtablesAgora tudo pronto, serviços iniciados, página de bloqueio ativa, servidor DNS e DHCP resolvendo e distribuindo perfeitamente. Só falta mandar que as conexões sejam direcionadas à porta do Squid para começar a ativar os bloqueios, e definir a regra de NAT GLOBAL. Inserindo a NAT GLOBAL: # iptables -t nat -A POSTROUTING -o eth(internet) -p tcp -j MASQUERADE Inserindo a regra de redirecionamento da 80 para a 3128: # iptables -t nat -A PREROUTING -s (seu net id/mascara) -p tcp –dport 80 -j REDIRECT –to-port 3128 Pronto, seu proxy está ativo, rápido e fácil. Apenas de quebra, vou deixar a linha para DROPAR o Facebook e impedir o acesso via IPtables, já que o maior objetivo dos Squids, são sempre as redes sociais: # iptables -A POSTROUTING -s (sua rede / mascara) -m string –algo bm –string “facebook.com” -J DROP ConclusãoEspero ter ajudado quem, assim como eu, teve muitos problemas com o Squid, pois sintetizei tudo da maneira mais fácil possível. Com habilidade, este esquema está pronto em 30 minutos, no máximo 1 hora, se der algum imprevisto. |