segunda-feira, 25 de outubro de 2010

ERR_ACCESS_DENIED personalizado

Veja como personalizar suas páginas de erros no seu proxy (squid)


Códigos para serem inseridos nos arquivos ERR_* templates
Esta lista descreve as TAGs que o Squid pode inserir nas mensagens:

%a - User identity
%B - URL with FTP %2f hack
%c - Squid error code
%d - seconds elapsed since request received (not yet implemented)
%e - errno
%E - strerror()
%f - FTP request line
%F - FTP reply line
%g - FTP server message
%h - cache hostname
%H - server host name
%i - client IP address
%I - server IP address (NP: upper case i)
%l - Local site CSS stylesheet. (Squid-3.1 and later) (NP: lower case L)
%L - contents of err_html_text config option
%M - Request Method
%m - Error message returned by external auth helper
%o - Message returned by external acl helper
%p - URL port \#
%P - Protocol
%R - Full HTTP Request
%S - squid default signature. (Squid prior to 3.1 automatically add unless %s is used.)
%s - caching proxy software with version
%t - local time
%T - UTC
%U - URL without password
%u - URL with password. (Squid-2.5 and later only.)
%W - Extended error page data URL-encoded for mailto links.
%w - cachemgr email address
%z - DNS server error message
%Z - Error message

Exemplo: ERR_ACCESS_DENIED
Localização: /usr/share/squid/errors/en-us

Fonte: http://wiki.squid-cache.org/Features/CustomErrors?highlight=%28faqlisted.yes%29

quarta-feira, 15 de setembro de 2010

Usando os Servidores do OpenDNS para Resolução de Nomes

Como utilizar em conexões com IP fixo

Utilizar o OpenDNS é muito fácil, mais fácil ainda se você utiliza uma conexão com IP fixo. Nesse caso, basta substituir os servidores DNS informados pelo seu provedor de acesso à internet pelos IPs do OpenDNS, os quais são:

Edite seu arquivo /etc/resolv.conf e adicione estes servidores

nameserver 208.67.222.222
nameserver 208.67.220.220

-----------------------
Fonte: http://www.guiadohardware.net/dicas/opendns.html

quinta-feira, 19 de agosto de 2010

Como bloquear audio e vídeo usando squid

Para bloquear audio e vídeo (stream) pesquisei na web e com a ajuda de vários tutoriais obtive sucesso seguindo os passos abaixo:

No arquivo /etc/squid/squid.conf insira as linhas abaixo antes das liberações

#acl bloqueio de extensõde ráos online / arquivos de streaming:
acl streaming rep_mime_type -i "/etc/squid/mimeaplicativo"
acl proibir_musica urlpath_regex -i "/etc/squid/audioextension"
http_reply_access deny streaming
http_reply_access deny proibir_musica

Ainda no arquivo SQUID.CONF, insira a seguinte linha de comando, isso para que o squid possa gerar os logs adequados.

log_mime_hdrs on


# vi /etc/squid/mimeaplicativo

application/vnd.audiograph
audio/32kadpcm
audio/3gpp
audio/amr
audio/amr-wb
audio/annodex
audio/basic
audio/flac
audio/g.722.1
audio/l16
audio/mid
audio/midi
audio/mp4a-latm
audio/mpa-robust
audio/mpeg
audio/mpegurl
audio/ogg
audio/parityfec
audio/prs.sid
audio/telephone-event
audio/tone
audio/vnd.cisco.nse
audio/vnd.cns.anp1
audio/vnd.cns.inf1
audio/vnd.digital-winds
audio/vnd.everad.plj
audio/vnd.lucent.voice
audio/vnd.nortel.vbk
audio/vnd.nuera.ecelp4800
audio/vnd.nuera.ecelp7470
audio/vnd.nuera.ecelp9600
audio/vnd.octel.sbc
audio/vnd.qcelp
audio/vnd.rhetorex.32kadpcm
audio/vnd.vmx.cvsd
audio/x-aiff
audio/x-gsm
audio/x-mpegurl
audio/x-ms-wax
audio/x-ms-wma
audio/x-pn-realaudio
audio/x-pn-realaudio-plugin
audio/x-realaudio
audio/x-scpls
audio/x-sd2
audio/x-wav
application/x-videolan
video/3gpp
video/annodex
video/dl
video/dv
video/fli
video/flv
video/gl
video/mp4
video/mp4v-es
video/mpeg
video/ogg
video/parityfec
video/pointer
video/quicktime
video/vnd.fvt
video/vnd.motorola.video
video/vnd.motorola.videop
video/vnd.mpegurl
video/vnd.mts
video/vnd.nokia.interleaved-multimedia
video/vnd.vivo
video/x-flv
video/x-la-asf
video/x-matroska
video/x-mng
video/x-ms-asf
video/x-ms-asx
video/x-msvideo
video/x-ms-wm
video/x-ms-wmv
video/x-ms-wmx
video/x-ms-wvx
video/x-sgi-movie


# vi /etc/squid/audioextension

\.aif$
\.aifc$
\.aiff$
\.asf$
\.asx$
\.avi$
\.au$
\.m3u$
\.med$
\.mp3$
\.m1v$
\.mp2$
\.mp2v$
\.mpa$
\.mov$
\.mpe$
\.mpg$
\.mpeg$
\.ogg$
\.pls$
\.ram$
\.ra$
\.ram$
\.snd$
\.wma$
\.wmv$
\.wvx$
\.mid$
\.midi$
\.rmi$


Crie um Shell Script para ficar analisando os logs que serão registrados no squid, assim você terá sempre seu arquivo de bloqueio atualizado.

# vi /etc/squid/checa.sh

# =================
# Script para atualizacao
# de Bloqueio de Radio/Video
# on-line
# Author: Leandro Moreira
# Date: 04-24-2009
set -x
# =================
# Variaveis
# =================
PERL="/usr/bin/perl"
AUDIO=`$PERL -p -e "s/\\\r/\r/g;s/\\\n/\n/g" /var/log/squid/access.log | egrep -v 'text/html|text/xml' | grep -i "Content-Type:" | sed 's/;/ /g' | awk '{ print$2 } ' | sort -u | grep audio > /tmp/audio`
VIDEO=`$PERL -p -e "s/\\\r/\r/g;s/\\\n/\n/g" /var/log/squid/access.log | egrep -v 'text/html|text/xml' | grep -i "Content-Type:" | sed 's/;/ /g' | awk '{ print$2 } ' | sort -u | grep video > /tmp/video`
# ======================/

cat /tmp/audio >> /etc/squid/mimeaplicativo
cat /etc/squid/mimeaplicativo | sort | uniq -c| awk '{print$2}' > /tmp/audio.tmp
cat /tmp/audio.tmp > /etc/squid/mimeaplicativo

cat /tmp/video >> /etc/squid/mimeaplicativo
cat /etc/squid/mimeaplicativo | sort | uniq -c| awk '{print$2}' > /tmp/video.tmp
cat /tmp/video.tmp > /etc/squid/mimeaplicativo



Mude o atributo do arquivo criado acima permitindo execução:
# chmod +x /etc/squid/checa.sh


Agora edite o arquivo /etc/crontab e insira os códigos abaixo:
1ª Linha - Agendei para rodar na cron a cada 5 minutos
2ª Linha - Atualizar o squid a cada hora

# vi /etc/crontab

*/5 * * * * /root/script.sh /var/log/script.log 2>&1
59 * * * * squid -k reconfigure



Reinicialize o cron, (service cron restart)


OBS: Complementando o bloqueio, adicione as seguintes regras em seu firewall:

#bloqueio da RADIO do UOL
iptables -A INPUT -d 0/0 -p tcp --dport 1935 -j DROP
iptables -A INPUT -d 0/0 -p udp --dport 1935 -j DROP
iptables -A FORWARD -d 0/0 -p tcp --dport 1935 -j DROP
iptables -A FORWARD -d 0/0 -p udp --dport 1935 -j DROP
#bloqueio da RADIO Bradesco
iptables -A INPUT -d 0/0 -p tcp --dport 29054 -j DROP
iptables -A INPUT -d 0/0 -p udp --dport 29054 -j DROP
iptables -A FORWARD -d 0/0 -p tcp --dport 29054 -j DROP
iptables -A FORWARD -d 0/0 -p udp --dport 29054 -j DROP



Créditos relevantes para:
http://www.mail-archive.com/debian-user-portuguese@lists.debian.org/msg124511.html

Como libero hosts no FIREWALL para não passar pelo proxy e ter acesso

Você pode criar uma regra na chain PREROUTING assim:




Essa regra deve vir antes da regra que redireciona as conexoes para o Squid... uma regra parecida com essa:



Talvez nao seja REDIRECT talvez seja DNAT porque o Firewall e o Proxy podem ser maquinas diferentes, isso depende de como esta ai.
Mas de qualquer maneira voce deve adcionar essa regra antes, porque senao nao tem efeito.


Créditos para: http://under-linux.org/f96/como-libero-hosts-no-firewall-para-nao-passar-pelo-proxy-ter-acesso-%5Bresolvido%5D-85433/

terça-feira, 10 de agosto de 2010

Onde localizar as páginas de erros do SQUID


Quando o Squid é instalado via pacote, em geral ele já possui um diretório padrão onde as páginas de erro são armazenadas. Por exemplo, no Debian, elas ficam em:

/usr/share/squid/errors/English

Em outros empacotamentos, elas podem estar em /etc/squid/errors. De qualquer forma, é possível escolher qual o diretório que lhe agrada, procurando no squid.conf pelo parâmetro error_directory, alterando-o se desejar.

Estas páginas são arquivos html com nomes em maíusculas correspondente ao erro que as carregará. Por exemplo, quando o acesso for negado ao usuário, o conteúdo da página ERR_ACCESS_DENIED será exibido.

Se as mensagens de erro de seu Squid estão em Inglês, uma forma bem simples de torná-las em português é copiar o conteúdo da pasta Portuguese para English:

sudo cp /usr/share/squid/errors/Portuguese/* /usr/share/squid/errors/English/

Após alterar as páginas, formatando-as a seu gosto, é preciso reiniciar o Squid para que as mudanças passem a vigorar.

Fonte: http://www.cybershark.net/tutoriais/squid

Como limitar o tamanho do download no squid


Esta é uma configuração de ACL no Squid de modo limitar o tamanho dos downloads efetuados pelos usuários.

acl html rep_mime_type text/html
reply_body_max_size 10485760 allow html

Onde:
  • html é uma acl do tipo html e texto puro --> páginas de sites;
  • Com o parâmetro reply_body_max_size 10485760 allow html --> informamos que somente será permitidos downloads de arquivos com no máximo tamanho de 10 Mb.
O cálculo para o tamanho do download é feito da seguinte maneira:
1 Mb equivale a 1024 * 1024 = 1048576 bytes e para chegar a 10 Mb multiplica-se por 10 = 10485760 bytes.

OBS: No momento em que um usuário tentar efetuar um download de algum arquivo com tamanho acima de 10 Mb, será retornado uma página do Squid informando que a requisição GET é muito grande. Já aí fica a teu critério personalizar a página de erro com uma mensagem mais amigável.

Fonte: http://www.vivaolinux.com.br/dica/Limitando-tamanho-de-downloads-com-o-Squid

quinta-feira, 5 de agosto de 2010

Como configurar o arquivo INTERFACES (Linux)

Veja abaixo um arquivo de configuração de interfaces com 3 interfaces de rede, sendo que uma delas faz conexão com ADSL (Velox) usando pppoeconf

#-- inicio do arquivo /etc/network/interfaces ----
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.10.6
netmask 255.255.255.0

auto eth2
iface eth2 inet static
address 172.30.9.4
netmask 255.255.255.248

auto eth3
iface eth3 inet static
address 111.111.111.111
netmask 255.255.255.0

post-up route add -net 172.30.11.0 netmask 255.255.255.248 gw 172.30.9.2
post-up route add -net 192.168.12.0 netmask 255.255.255.0 gw 172.30.9.2
post-up route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.10.20

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth3 up # line maintained by pppoeconf
provider dsl-provider
#
#--- final do arquivo /etc/network/interfaces -------

OBS: veja que neste arquivo você pode configurar inclusive as rotas para serem carregadas automaticamente no boot do sistema operacional.

Placa de rede Genérica REALTEK 8169 no Ubuntu Server 10.04 lts

Placas de Rede Não Reconhecida ao Instalar no Ubuntu Server 10.04 lts

Este problema ocorre quando se instala placas de rede com o chipset da Realtek 8169. para corrigir este problema, proceda da seguinte forma:

Abra um console, e digite os seguintes comandos:

sudo lshw -C network

ifconfig -a


OBS: Com a execução do comando "ifconfig -a" você verá suas interfaces de redes cadastradas, agora é só editar o arquivo /etc/network/interfaces e inserir as configurações desejadas para cada interface.

terça-feira, 20 de julho de 2010

Instalando AVAST WorkStation 4 no Ubuntu 10.04 LTS

Para instalar o Avast WorkStation 4 no Linux Ubuntu 10.04, acesse a página de download do Anti-Vírus (http://www.avast.com) ou click diretamente no link

http://www.avast.com/linux-home-edition

Acesse a aba de Downloads, no momento de escrita deste artigo, existem 3 plataformas:

Download

Como nosso artigo trata do Ubuntu 10.04 lts, eu baixei o pacote de instalação (.DEB), pois nossa distribuição é baseada no Debian.

Após o download, abra a pasta onde o arquivo foi baixado, click como botão direito sobre ele, e execute a opção: Abrir com o Instalador de Pacotes GDebi
Será aberto uma tela para instalação do pacote, click em INSTALAR, será solicitado a senha adminstrativa para a instalação.

Ao acessar o AVAST pela primeira vez, será solicitado o número da licença, o registro do avast para linux é grátis, você pode se registrar e receberá uma licença por e-mail.

Minha licença é: W34162177H1200A0612-BS3Z45J7
Válida até o dia 19 de julho de 2011

Após acessar o AVAST e digitar a licença de registro, click no botão (Atualizar Bando de Dados) e aguarde a conclusão do download. Após a atualização do seu anti-vírus, você poderá utilizá-lo normalmente, fazendo scans e eliminando vírus e trojans no seu disco rígido e pen-drives, etc...


OBS: no meu caso, após as atualizações, ocorreu um erro e o avast não acessou mais, recorri a net e encontrei umas dicas, faça o seguinte:

Abra um console como root (privilégios administrativos)
digite o comando:

#cd /home/nomedousuario
#rm -rf .avast
#echo 128000000 >/proc/sys/kernel/shmmax
#echo "echo 128000000 >/proc/sys/kernel/shmmax" >> /etc/rc.local

OBS: Com o primeiro echo, você configura o ambiente para sua sessão atual, com o segundo echo, você configura o script de inicialização para configurar o ambiente todas as vezes que você reinicializar o seu sistema operacional.

Abra o avast novamente: APLICATIVOS/ASSESSÓRIOS/AVAST ANTIVIRUS
Será solicitado novamente a licença, digite-a e atualize novamente, o erro não surgirá mais.

quarta-feira, 7 de julho de 2010

Utilizando o chmod parar mudar permissões em arquivos

Parar mudar as permissões de modo fácil e ágil, basta usar o modo "octais". Com apenas três dígitos você poderá mudar as permissões do proprietário, grupo e público, para isso considere os valores abaixo:

0 = Nenhuma permissão
1 = Apenas execução
2 = Apenas gravação
3 = Execução e gravação
4 = Apenas leitura
5 = Execução e leitura
6 = Leitura e gravação
7 = Todos; leitura, gravação e execução

Vamos citar um exemplo abaixo:

$ chmod 751 script.cgi

Com isso esse arquivo permite:

* Para o proprietário: TUDO; leitura, gravação e execução (7).
* Para o grupo: execução e leitura; (5)
* Para o público: apenas execução (1)

_____________
Créditos para: http://www.vivaolinux.com.br/dica/Utilizando-o-chmod-parar-mudar-permissoes-em-arquivos

quinta-feira, 1 de julho de 2010

Como descompactar arquivos zip, rar, tar.gz, bz2, tar.bz2 pelo terminal

Para descompactar estes formatos de arquivos os comandos são simples:

zip:
gunzip nomedoarquivo.zip

rar:
unrar x nomedoarquivo.rar

tar:
tar -xvf nomedoarquivo.tar

tar.gz:
tar -vzxf nomedoarquivo.tar.gz

bz2:
bunzip nomedoarquivo.bz2

tar.bz2:
tar -jxvf nomedoarquivo.tar.bz2

CRÉDITOS PARA: http://www.vivaolinux.com.br/dica/Como-descompactar-arquivos-zip-rar-tar.gz-tar.bz2-pelo-terminal

segunda-feira, 19 de abril de 2010

Ultimo acesso dos Usuários VPOPMAIL (E-mail)


Para visualizar o último acesso dos usuários cadastrados no Banco VPOPMAIL (mysql), abra o gerenciador do mysql (phpMyAdmin) do seu servidor, em seguida, abra o editor do sql e digite o texto (sql) abaixo:


SELECT
user, domain, remote_ip, timestamp, FROM_UNIXTIME( timestamp ) AS "Ultimo Acesso" FROM lastauth ORDER BY "Ultimo Acesso" DESC

Obs: Com isso você terá a relação de acesso dos usuários em ordem cronológica do mais rescente para o mais antigo.

Testei no servidor que administro, uso (mysql + qmail + vpopmail)

Servidor de Email ZIMBRA (Instalação)

Zimbra + Debian - Tutorial de Instalação

Página oficial do projeto: http://www.zimbra.com/

IMPORTANTE: utilizar diferentes versões dos pacotes poderá ocasionar erros não relatados nesse tutorial.

Pacotes utilizados:
Sistema operacional: Debian Etch 5 (instalação básica)
Zimbra: zcs-6.0.6_GA_2324.DEBIAN5.20100406160613.tgz (versão Open Source)
http://files2.zimbra.com/downloads/6.0.6_GA/

Configuração de exemplo:
Hostname: appserver
Domínio: empresa.com.br
Endereço IP: 192.168.0.13


INSTALAÇÃO

Instalar pacotes necessários:
# apt-get install fetchmail
# apt-get install sudo
# apt-get install libgmp3c2
# apt-get install libexpat1
# apt-get install libxml2
# apt-get install libltdl3
# apt-get install openssl

Desinstalar pacotes:
# apt-get remove --purge exim4
# apt-get remove --purge exim4-base
# apt-get remove --purge exim4-config
# apt-get remove --purge exim4-daemon-light

Editar arquivo /etc/hosts:
127.0.0.1       localhost.localdomain      localhost
127.0.1.1 appserver.empresa.com.br appserver
192.168.0.13 appserver.empresa.com.br appserver

Descompactar arquivo
zcs-6.0.6_GA_2324.DEBIAN5.20100406160613.tgz
# tar xzf zcs-6.0.6_GA_2324.DEBIAN5.20100406160613.tgz

Acessar o diretório descompactado:
# cd ~/zcs-6.0.6_GA_2324.DEBIAN5.20100406160613/

Iniciar a instalação:
# ./install.sh -l

Install zimbra-ldap [Y] Y
Install zimbra-logger [Y] Y
Install zimbra-mta [Y] Y
Install zimbra-snmp [Y] Y
Install zimbra-store [Y] Y
Install zimbra-apache [Y] Y
Install zimbra-spell [Y] Y
Install zimbra-proxy [N] N

The system will be modified. Continue? [N] Y

DNS ERROR resolving appserver.empresa.com.br
It is suggested that the hostname be resolveable via DNS
Change hostname [Yes] NO

DNS ERROR resolving MX for appserver.empresa.com.br
It is suggested that the domain name have an MX record configured in DNS
Change domain name? [Yes] NO

Address unconfigured (**) items  (? - help) 3

Select, or 'r' for previous menu [r] 4

Informe a sua senha ou utilize a senha sugerida:
Password for admin@appserver.empresa.com.br (min 6 characters): [ZRDuhHxY]

Select, or 'r' for previous menu [r] r

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] Yes
Save config in file: [/opt/zimbra/config.5818] /opt/zimbra/config.5818
Saving config in /opt/zimbra/config.5818...done.
The system will be modified - continue? [No] Yes

Notify Zimbra of your installation? [Yes] No

Algum tempo depois...
Configuration complete - press return to exit

Testar:
# su - zimbra
$ zmcontrol status

A saída deverá ser a seguinte:
Host appserver.empresa.com.br
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Running
mta Running
snmp Running
spell Running
stats Running

Caso algum serviço não tenha sido inicializado:
$ zmcontrol start

Acessar console administrativo:
https://192.168.0.13:7071/zimbraAdmin/

Usuário: admin
Senha:




Acessar aplicação:
http://192.168.0.13

Usuário: admin

Senha:




Créditos do Artigo para:
Renato Sulzbach
http://my.opera.com/renatobach/blog/zimbra-tutorial-de-instalacao

terça-feira, 13 de abril de 2010

Balanceamento de Carga (2 Velox + 1 Rede Interna)


Introdução:

Com o barateamento de links de acesso a internet e o aparecimento da conexão de banda-larga a um valor acessível, muitas empresas e edifícios residenciais começaram a utilizar soluções para prover acesso à internet através de pequenos servidores (routers) que fazem a comunicação entre a rede do cliente e a internet. Nesse momento surgiu a idéia de juntar duas conexões com a internet de modo que um unico canal de saída fosse visto fazendo com que a velocidade da conexão fosse duplicada, consequentemente barateando o custo de uma conexão de por exemplo 1Mbps, que sai pelo valor de 2 conexões ADSL de 512Kbps.

Para por em prática a idéia de se utilizar o balancemento de conexão com a internet e até mesmo o serviço de redundância a falhas contra queda de conexão, foi elaborado este "mini HOW-TO" que demonstra de forma simples e clara como esse tipo de configuração pode ser feita. Dando assim o chute inicial para que outros scripts com mais funcionalidades e mais complexos possam ser criados.

Requisitos:

Alguns requisitos são vitais para o funcionamento deste tipo de configuração tais como os ja descritos no título do artigo:


  • Iptables

  • Iproute2

  • Scripts de inicialização das conexões (caso seja velox, ou serviço parecido)

Cenário:

O cenário utilizado para a demonstração do exemplo é um edifício residencial no qual existem duas conexões com a internet através de assinaturas de acesso a banda-larga (Velox). Os dois modems ADSL estão configurados como ROTEADORES e existe um servidor linux (distribuição a escolha) com 3 placas de rede que estão configuradas da seguinte maneira:

 eth0: Rede interna (Rede do edifício) - (192.168.0.1/255.255.255.0)
eth1: Conexão Velox #1 - (192.168.1.2/255.255.255.0)
eth2: Conexão Velox #2 - (192.168.2.2/255.255.255.0)


O dispositivo de rede eth0 está ligado a um switch aonde as demais máquinas dos apartamentos estão conectadas.

OBS: Neste cenário devemos ressaltar que todos os computadores da rede interna do edifício poderão se comunicar por estarem ligadas diretamente ao segmento da rede.

Configurações:

Primeiro Passo: Inicializando as conexões.

Neste ponto começarei a mostrar os scripts utilizados para a configuração do servidor. Vou começar mostrando algumas configurações que foram feitas dentro do /etc/rc.local, que acabaram sendo de grande ajuda para que o serviço funcionasse corretamente.

 #---------------------------------- /etc/rc.local ---------------------------------
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

echo "Inicializando conexao com a internet.."
/sbin/ifdown eth1
/sbin/ifdown eth2

echo "Iniclizando VELOX #1"
/sbin/ifup eth1
/sbin/route add default gw 192.168.1.1
/etc/firewall/ip-velox.pl

echo "Inicializando VELOX #2"
/sbin/ifup eth2
/sbin/route del default gw 192.168.1.1
/sbin/route add default gw 192.168.2.1
/etc/firewall/ip-velox.pl

/sbin/route del default gw 192.168.2.1

echo "Configurando o firewall"
/etc/firewall/firewall.sh
#---------------------------------- /etc/rc.local ---------------------------------

Essas configurações foram feitas para que o velox pudesse conectar-se automaticamente usando o script ip-velox.pl (Desenvolvido pelo Fabio Vilan, e pode ser encontrado em http://www.isec.com.br/velox).

OBS: Não sei informar se este script ainda consegue conectar-se ao velox. O legal dele é a parte de teste de conexão (testa se está ativa ou não).

As configurações das rotas foram necessarias para que cada velox pudesse conectar e autenticar-se pois o problema que geralmente acontece quando se tem duas conexões no mesmo computador é que, quando a primeira conexão é estabelecida a rota padrão é automaticamente definida, assim a segunda conexão fica perdida, tentando enviar pacotes que usam a rota padrão, neste caso pela primeira que já está estabelecida. Assim não conseguiamos autenticar a segunda conexão do velox.

Lendo-se o script é possível identificar os passos para o estabelecimento das conexões:


  1. Derruba as duas conexões (uma de cada velox);

  2. Levanta a placa do primeiro velox (Velox #1);

  3. Adiciona uma rota padrão para esta placa que foi inicializada;

  4. Tenta se conectar e autenticar utilizando o script ip-velox.pl;

  5. Levanta a placa do segundo velox (Velox #2);
  6. Deleta a rota padrão criada para o primeiro velox (Velox #1);

  7. Adiciona a rota padrão para o segundo velox (Velox #2);

  8. Utiliza o script de conexão e autenticação para o segundo velox (Velox #2);

  9. Deleta a rota padrão criada para o segundo velox (Velox #2);

  10. Levanta o firewall.

OBS: Este script termina por não estabelecer uma rota padrão, pois estas configurações serão feitas dentro do script /etc/firewall/firewall.sh que é chamado pelo rc.local ao final do processo de autenticação.

Segundo Passo: Criando tabelas de conexões para roteamento.

Quando o iproute2 está instalado é criado um arquivo dentro do diretório /etc/iproute2 (ou /etc), chamado rt_tables. O arquivo onde as tabelas (de regras) de roteamento são definidas.

Cada tabela é definida por seu número identificador e nome. A ordenação vai de 0 à 255 (256 valores = 8 bits) e a faixa de 253 à 255 é reservada às tabelas do sistema (local, main e default).

O kernel trabalha exclusivamente com o identificador numerico da tabela. Assim podemos estabelecer novas tabelas e definir situações especiais de roteamento.

Exemplo de arquivo (/etc/iproute2/rt_tables) utilizado para a configuração do balanceamento de links de acordo com o cenário proposto.

 #---------------------------- /etc/iproute2/rt_tables ------------------------
#
# reserved values
#
#255 local
#254 main
#253 default
#0 unspec

#
# local
#
#1 inr.ruhep
10 velox1
11 velox2
30 velox
#---------------------------- /etc/iproute2/rt_tables ------------------------

Neste exemplo foram criadas 3 tabelas que serão utilizadas para a criação das regras de roteamento avançadas, necessárias para o funcionamento do balanceamento de links.

As tabelas cridas no arquivo rt_tables foram:

 Valor  Nome
10 velox1
11 velox2
30 velox

De acordo com o arquivo, uma tabela tem "ID" 10, outra tem "ID" 11 e outra tabela, com valor mais acima tem "ID" 30. A criação dessas tabelas foram necessárias, pois são utilizadas no momento em que serão criadas as regras de roteamento.

Para maiores explicações sobre rt_tables, e roteamento avançado, procure pelos documentos da RNP (GTER), http://eng.registro.br/gter17/videos/05-roteamento-avancado-linux.pdf, em sites de busca (google) www.google.com.br, tambem vale a pena dar uma olhada no how-to do iproute2, além disso existe uma empresa chamada Alto Rio Preto Informatica, que disponibilizou um excelente "case" em seu site: http://www.altoriopreto.com.br/case1_tech2.php

Terceiro Passo: Desenvolvendo o script do firewall e criando o roteamento.

O script /etc/firewall/firewall.sh (que é chamado pelo /etc/rc.local) contém não apenas configurações do firewall, mas também regras de NAT e ajustes nas tabelas de roteamento para que seja feito o balanceamento. Para os casos das configurações das tabelas de roteamento usaremos o comando "ip" e para o firewall e as regras de nat o "iptables". Este firewall foi escrito com base na documentação do firewall de exemplo do Márcio Oliveira (marcio@netkraft.com.br), que provê acesso à internet para uma rede interna através do squid (porém neste exemplo não o usamos).

Ao longo do script existirão comentários sobre as regras que o script está executando, mantendo assim uma linha lógica de configuração e simplificando a identificação de comandos.

 #---------------------------- /etc/firewall/firewall.sh -------------------------- 
#!/bin/sh
######################################
# Firewall for ADSL Velox Telemar #
# By Leandro R. leandro@cesan.com.br #
# OBS: Balanceamento de trafego para #
# 2 links ADSL #
######################################

# Legenda
#
# eth0 -> Rede interna (192.168.0.1/24)
# eth1 -> Velox #1 (192.168.1.2/24)
# eth2 -> Velox #2 (192.168.2.2/24)

# Variaveis
DNS1="200.202.93.75"
DNS2="200.202.0.34"

# Carregando os modulos basicos:

echo -n "Carregando os modulos..."
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_state
modprobe ipt_MASQUERADE
echo " [OK]"

# Resetando o Firewall:

echo -n "Resetando o firewall..."
iptables -F
iptables -Z
iptables -X

iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo " [OK]"

# Habilitando o roteamento de pacotes:

echo -n "Habilitando o roteamento..."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

echo " [OK]"

# Liberando a chain INPUT para o localhost:

echo -n "Liberando acesso do localhost..."
iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.0.1 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.1.2 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.2.2 -i lo -j ACCEPT
echo " [OK]"

# Otimizando o firewall:

echo -n "Otimizando o roteamento..."
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo " [OK]"

# Liberando resposta dos servidores DNS:

echo -n "Liberando servidores DNS..."
iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 53 -d $DNS1 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 53 -d $DNS2 -j ACCEPT
echo " [OK]"

# DHCP Server

echo -n "Liberando servidor DHCP..."
iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 79 -d 192.168.0.1 -j ACCEPT
echo " [OK]"

# Descartar pacotes fragmentados:

echo -n "Bloqueando pacotes fragmentados..."
iptables -A INPUT -i eth1 -f -j LOG --log-prefix "Pacote fragmentado: "
iptables -A INPUT -i eth1 -f -j DROP
iptables -A INPUT -i eth2 -f -j LOG --log-prefix "Pacote Fragmentado: "
iptables -A INPUT -i eth2 -f -j DROP
echo " [OK]"

# Bloqueando ataques do tipo SPOOF de IP:

echo -n "Bloqueando spoofing..."
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP

iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
echo " [OK]"

# Liberando alguns acessos por ping:

echo -n "Liberando acesso por ping..."
iptables -A INPUT -p icmp --icmp-type 8 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp -s 192.168.0.0/24 -d 0/0 -j ACCEPT
echo " [OK]"

# Regra para SSH: (opcional)

echo -n "Liberando acesso ao SSH..."
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
echo " [OK]"

# Regras do FORWARD

# Descarta pacotes invalidos:

echo -n "Descartando pacotes invalidos para reenvio..."
iptables -A FORWARD -m state --state INVALID -j DROP
echo " [OK]"

# Mantendo conexoes ativas:

echo -n "Manutencao de conexoes ativas..."
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
echo " [OK]"

# Liberando acesso ao DNS para a rede interna (Email):

echo -n "Liberando DNS para rede interna..."

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -p udp -s 192.168.0.0/24 -d $DNS1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 -d $DNS2 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s $DNS1 --sport 53 -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p udp -s $DNS2 --sport 53 -d 192.168.0.0/24 -j ACCEPT
echo " [OK]"

# Fazendo mascaramento de enderecos IP (NAO NAT):
# OBS: essa regra eh mutuamente excludente com a proxima, a do NAT
# ou seja, escolha uma das duas

echo -n "Habilitando o mascaramento..."
#iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
echo " [OK]"

# Marcando pacotes

echo -n "Marcando pacotes..."
iptables -A PREROUTING -t mangle -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 3
echo " [OK]"

# Desabilitando o filtro de pacotes do martian source
echo -n "Desligando rp_filter..."
for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 > $eee
done
echo " [OK]"

# Definindo regras de balanceamento de Link:
echo -n "Balanceando links velox..."

# velox #1
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table velox1
#ip route add 192.168.0.0/24 via 192.168.0.1 table velox1
ip route add default via 192.168.1.1 table velox1

# velox #2
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.2 table velox2
#ip route add 192.168.0.0/24 via 192.168.0.1 table velox2
ip route add default via 192.168.2.1 table velox2

# setando velox na tabela principal de roteamento
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.2

# setando a rota preferencial
ip route add default via 192.168.1.1

# regras das tabelas
ip rule add from 192.168.1.2 table velox1
ip rule add from 192.168.2.2 table velox2

# balanceamento de link
ip rule add fwmark 3 lookup velox prio 3
ip route add default table velox nexthop via 192.168.1.1 dev eth1
weight 1 nexthop via 192.168.2.1 dev eth2 weight 1
#OBS: o comando assima deve ser digitado em uma só linha, ou
# usando o caractere para dividí-la.

# flush no roteamento
ip route flush cache
echo " [OK]"
sleep 3
#---------------------------- /etc/firewall/firewall.sh --------------------------

O script ainda libera o acesso para que o nosso serviço de DHCP rodando neste mesmo servidor possa fornecer o pool de endereços IP para os apartamentos do edifício exemplo do nosso cenário.

No final do script, ou seja, na parte onde são feitas as configurações para o funcionamento do balanceamento dos links, é importante a observação que faz referencia ao comando de balanceamento que deve ser digitado em somente uma linha, não apertando a tecla [Enter] (ou usando o caractere para dividí-la):

 Regra: ip route add default table velox nexthop via 192.168.1.1 dev eth1
weight 1 nexthop via 192.168.2.1 dev eth2 weight 1

Outra importante consideração sobre o script é a utilização da marcação de pacotes para que os mesmos fossem roteados pelas duas conexões ADSL. Primeiramente foi criada uma regra para o firewall, através do iptables, dizendo para marcar todos os pacotes com destino de saída da rede.

 Regra: iptables -A PREROUTING -t mangle -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 3

Em segundo lugar foi utilizada essa marcação nos pacotes para servir de entrada como uma "Classificação" para a tabela de roteamento (30 Velox).

 Regra: ip rule add fwmark 3 lookup velox prio 3

Outro detalhe importante é a configuração da primeira rota padrão, as conexões, mesmo estando balanceadas, neste caso de 1:1 (soma dos links) precisam de ter uma rota padrão, pois esta será por onde o balanceamento deverá ser iniciado, ou seja, a primeira conexão que chegar ao servidor, será transmitida para a internet pela rota padrão, a próxima conexão que for solicitada, será transmitida pelo outro link (balanceamento de 1:1, uma conexão para cada link).

Assim um exemplo seria, o download de um arquivo de 200MBs, se fosse iniciado o download deste arquivo a partir de um gerenciador de downloads,e utilizando-se opções que permitam a divisão do download em outras conexões, seria possível por exemplo "baixar" 100mbs a partir de cada conexão, levando-se em consideração que foi escolhida a opção de dividir o download em duas partes.

Em números: Se o download através de uma conexão está sendo feito a 20kbps, dividindo este download, e utilizando o balanceamento para usar a conexão do outro modem ADSL, é possível que o download possa ser feito ao dobro da velocidade, como no exemplo, 40kbps.

Além do balanceamento este script já provê redundância de conexões, ou seja se uma conexão cair ele automaticamente redireciona todo o tráfego para a conexão que continuou ativa.

Recomenda-se o uso de alguma ferramenta que possa monitorar as conexões, uma excelente alternativa é o IpTraf: http://cebu.mozcom.com/riker/iptraf/download.html

Com ele será possível ver as conex�es ativas dos usuários, a velocidade real das conexões ADSL e ver o balanceamento em funcionamento.

Quarto Passo: Simples configuração de um servidor DHCP.

Este é um exemplo de configuração do servidor DHCP no Linux utilizando o serviço DHCPD, através do arquivo de configuração dhcpd.conf, localizado dentro do diretório /etc.

Não entrarei em detalhes sobre a sua configuração, as informações nele configuradas mostram a ativação deste serviço para uma rede 192.168.0.0/24 (ou seja, máscara de rede 255.255.255.0 com faixa de ips entre 192.168.0.0 até 192.168.0.255). Os endereços por ele distribuidos estão na faixa de .10 a .250, e algumas outras opções muito importantes também não poderiam deixar de ser setadas, como a rota padrão e os servidores de DNS.

 #---------------------------------- /etc/dhcpd.conf ------------------------------
default-lease-time 43200;
max-lease-time 43200;
option domain-name "minharede.intranet";
option domain-name-servers 200.X.X.X, 200.X.X.X;
ddns-update-style ad-hoc;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.250;
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;

allow unknown-clients;
}
#---------------------------------- /etc/dhcpd.conf ------------------------------

Para maiores informações sobre o serviço DHCP, é aconselhavel o uso do "man", pois existem muitas informações e parâmetros de configurações contidas nele.

Considerações Finais:

Este script está em funcionamento extamente do jeito que foi postado aqui.

É claro que milhares de outras configurações podem ser feitas e utilizadas com o balanceamento de links, como por exemplo a divisão de utilização de links por portas, ou aplicações, mas este Não é o objetivo deste pequeno artigo que se resume a demonstrar de forma simplificada o balanceamento de conexões.


Este Artigo foi extraído do site:
http://www.gulbf.com.br/?q=node/26

sexta-feira, 9 de abril de 2010

Como saber a versão do Linux instalada

Normalmente existe um arquivo localizado no /etc chamado ISSUE (minúsculo), basta executar o comando CAT neste arquivo:

cat /etc/issue

Este procedimento funciona no REDHAT, FEDORA, UBUNTU, DEBIAN

terça-feira, 6 de abril de 2010

Testar seu Servidor de DNS

Sites para Testar as Configurações do Servidor DNS (Primario e Secundário)


http://www.ipok.com.br
Obs: Este sites é muito bom, executa de forma simples os testes em seu servidor DNS emitindo relatórios de inconsistência e alertas, bem como se está bem ou não configurado corretamente.












http://www.dnsstuff.com
http://www.meuip.com.br
http://ip-lookup.net