BSD|LNX

OpenSource..Psytrance e World of Warcraft ;)

MRTG no FreeBSD sem snmp e gerando graficos de serviços

Escrito por bzanelato em Janeiro 12, 2007

freebsd.gif

Bom..a muito tempo eu tava querendo fazer isto no FreeBSD, pois no Linux eu ja tinha conseguido fazer seguindo aquele tutorial da BR-Linux

Mas na versão linux é bem mais facil..pois eu buscava as informações diretamente do device “/dev/proc/net” quando eu precisava fazer graficos de utilização da placa de rede, mas ..e no FreeBSD ?! como eu faria ?!

Depois de muito ..muito procurar acabei achando uma solução, usando ipfw + count + mrtg + scripts

Vamos botar a mão na massa:mrtg-graf.gif

Primeiro vamos instalar o mrtg

cd /usr/ports/net-mgmt/mrtg

make install clean

Agora vamos criar as regras do ipfw

Vamos supor que eu quero saber o quanto o meu squid esta consumindo de banda na minha placa de rede:

/sbin/ipfw add 800 count tcp from any 3128 to any via em0 # In
/sbin/ipfw add 801 count tcp from any to any 3128 via em0 # Out

Criamos as regras de count…agora sabemos que tudo o que passar será contado, sendo assim vamos configurar o mrtg e os scripts.

Vamos chamar este script de squid.sh, e eu vou salvar este script em /home/admin/squid.sh

!/bin/sh
in=`/sbin/ipfw show 800 | /usr/bin/awk ‘{print $3}’`
out=`/sbin/ipfw show 801 | /usr/bin/awk ‘{print $3}’`
echo $in
echo $out
echo 0
echo -n 0

Bem simples né….vc pode perceber que nós colocamos no script exatamente o numero as regras de count que criamos com o ipfw

Agora vamos criar um arquivo chamado mrtg.conf

WorkDir: /usr/local/www/data-dist/banda/mrtg/

Target[em0]: `/home/admin/squid.sh em0`
Title[em00]:”Tr\xe1fego na placa de rede - em0″
MaxBytes[em0]:1400000
PageTop[em0]: <h1>Tr\xe1fego de dados na placa de rede</h1>
Options[em0]: growright,bits,noinfo

Este script chama o squid.sh e na primeira linha ele indicar o path do meu webserver para onde ele vai jogar os graficos

Agora vamos adicionar esta linha no crontab

vi /etc/crontab

Adicione esta linha

*/2 * * * * root /usr/local/bin/mrtg /home/admin/mrtg.conf

Isto quer dizer que de 2 em 2 minutos..ele vai atualizar os graficos

Agora pra visualizar o conteudo faça

http://localhost/banda/mrtg/em0.html

Espero ter ajudado

Bruno Moreira Zanelato

bzanelato@gmail.com

Enviado em BSD | 1 Comentário »

Postfix + Postgrey - Eliminando uma grandeee parte dos SPAMS

Escrito por bzanelato em Janeiro 12, 2007

mysza.gif

Sou sysadmin de um provedor de internet bem grande..e conhecido no mercado …e eu realmente sei o quanto é pertubador quando um dos seus MTAs é totalmente derrubado por uma grande quantidade de spams..e a sua QUEUE de e-mail fica totalmente lotada..e os e-mails comecam a chegar..1…2 horas depois.

Esta solução eu ja tenho funcionando em todo o meu cluster de e-mail…e somente agora eu vou postar um documento sobre isto..e acredito tambem que ja devem existir varios outros textos ja falando sobre isto.

Quando eu tinha spamassassin + amavis , muito spam passava, o servidor ficava carregado por que esta dupla consome muita memoria da maquina, e no final..ela nao dava conta do recado.

Se você não conhece sistema de greylisting..segue abaixo um trexo retirado da wikipedia

“Para quem não conhece, greylisting é uma técnica simples que consiste em recusar-se a receber uma mensagem, indicando uma indisponibilidade momentânea, na primeira vez em que é feita a tentativa de entregá-la, aceitando-a mais tarde caso o servidor volte a tentar entregar. Como grande parte dos spammers não tenta enviar a mensagem novamente, esse método elimina uma boa parte das mensagens indesejadas que lotam as nossas caixas postais.”

Então parti para o solução usando postgrey em um Debian Linux:

Vou assumir que o seu postfix ja esta configurado e funcionando:

instalamos o Postgrey da seguinte maneira :

apt-get install postgrey

Isto irá instalar o Postgrey server no seu servidor. Você pode querer mudar algumas configurações padrões do postgrey, por exemplo , quando aplicamos o postgrey em nosso MTA o DELAY das mensagens irá AUMENTAR…por que o servidor irá receber a mensagem…aplicar a greylist…e quando ele receber novamente..ele entrega na caixa de e-mail du usuário

Por padrão..este delay leva 5 minutos…podemos mudar isto aletrando o arquivo de configuração /etc/default/postgrey.

Mude a linha

POSTGREY_OPTS="--inet=127.0.0.1:60000"

Para

POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=60"

Ficando assim “60″ = 1 minuto

Lembrando tambem que quanto menor o tempo do delay menor será a eficiência do Postgrey em barra spams.

Agora vamos iniciar o serviço:

/etc/init.d/postgrey start

O Postgrey ficara em modo listen na porta 60000.

Agora vamos configurar o Postfix

A configuração do Postfix esta localizada em /etc/postfix. Edite o arquivo /etc/postfix/main.cf e adicione a linha check_policy_service inet:127.0.0.1:60000 na parte smtpd_recipient_restrictions. ficando assim :

smtpd_recipient_restrictions = permit_sasl_authenticated,

permit_mynetworks,

reject_unauth_destination,

check_policy_service inet:127.0.0.1:60000

Agora vamos dar reload no Postfix e pronto!

postfix reload

Segue abaixo um grafico da pagina do postgrey mostrando a sua eficiência antes e depois de ser instalado

mailgraph_greylisting.png

Enviado em BSD, Linux | 3 Comentários »

Proxy Transparente com Squid + Packet Filter (OpenBSD)

Escrito por bzanelato em Janeiro 12, 2007

openbsd1.gif

Bom..esta semana tive que instalar um OpenBSD em um cliente ali na zona sul…e ele ficou bem legal…eu não coloquei ele em modo brigde ainda..mas vou relatar o processo do que ja foi feito..que é a parte de Proxy Transparente.

Este tutorial pode ajudar quem ta comecando a mecher com PF…para os que ja mechem…isto não vai interessar rs

Bom ..começando.

Instalando o Squid

Instale o squid pelo ports do OpenBSD.

# cd /usr/ports/www/squid
# env FLAVOR=transparent make install
Configurando o Squid

O arquivo de configuração do squid do OpenBSD é diferente do FreeBSD..ele fica em /etc/squid/squid.conf, já o do FreeBSD fica em /usr/local/etc/squid .

Vamos fazer as mudanças minimas na configuração padrão do squid .

http_port 127.0.0.1:3128
http_access deny to_localhost
acl rede_interna src 10.30.1.0/8
http_access allow rede_interna
visible_hostname proxy
# Parte referente ao proxy transparente
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Agora vamos iniciar o squid com a opção -z para que ele crie os diretórios de swap.

# squid -z
2007/01/04 15:10:18| Creating Swap Directories

Depois disso você pode iniciar o squid sem nenhuma parâmetro mesmo….

# squid

Configurando o Packet Filte (PF) Agora vamos editar o aquivo de configuração do pf que fica em /etc/pf.conf.

int_if="fxp0"
ext_if="fxp1"

rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128

pass in on $int_if inet proto tcp from any to 127.0.0.1 port 3128 keep state
pass out on $ext_if inet proto tcp from any to any port www keep state

Agora vamos dar permissão para o squid consultar o /dev/pf , por default a permissão esta setada para root somente. Então para que o squid tenha consiga acessar, vamos dar permissão!, faça o seguinte:

# chgrp _squid /dev/pf
# chmod g+rw /dev/pf

E pronto..simples né ?!

Bom..é isso ae..até a proxima

Bruno Moreira Zanelato

bzanelato@gmail.com

Enviado em BSD | Nenhum comentário »

Monitorando a sua Rede com o EtherApe

Escrito por bzanelato em Janeiro 12, 2007

O Ehterape diferente dos softwares como nagios…mrtg..pandora..etc.. não é baseado na web. Ele é um software que usa bibliotecas da gnome, Mas isto não quer dizer que ele deixe de ser poderoso por este motivo, pelo contrário, ele oferece uma característica muito útil para se descobrir um host na rede que esteja sendo atacado ou que esteja consumindo muita banda da rede. Ele marca com uma linha colorida, dependendo do protocolo, a ligação entre o host local e o host remoto e aumenta e diminui a largura da linha conforme aumenta e diminui o tráfego entre os dois hosts.

etherape.png

Segue o site do projeto EtherApe

Enviado em Linux | 1 Comentário »

Interface Web para OSSEC (IDS)

Escrito por bzanelato em Janeiro 10, 2007

O 1c3 M4n postou no seu blog a versão OSSEC Web ui (oswui) 0.1 beta2. Ela contém vário correções de bugs e novas funcionalidades como suporte a php5 e algumas melhorias no design feitas por ele.Com a interface é possível visualizar em tempo real os alertas gerados, o status de seus agentes, realizar buscas de alertas baseados em padrão/ip/nível de alerta além de estatísticas dos alertas.

Como todo mundo adora screenshots veja alguns:

Main page Search results (multiple authentication failures)
Search options
OSSEC Stats

O link para o tutorial esta aqui  ! Valew 1c3 M4n!

Enviado em BSD, Linux | Nenhum comentário »

Instalando o PFSENSE via WMWare Workstation

Escrito por bzanelato em Janeiro 10, 2007

fetchphp1.png

Segue um tutorial que mostra como instalar o PFSense Live CD via VMWare Workstation, vale a pena dar uma olhada.. principalmente aquelas pessoas que possuem alguma dificuldade

PFSense on VMWare Workstation

Enviado em BSD | 1 Comentário »

Pfsense em Português

Escrito por bzanelato em Janeiro 9, 2007

fetchphp.png

Ajude na tradução do pfSense

Ajude na tradução do pfSense, acesse o link abaixo, faça o cadastro e ajude na tradução do pfSense para o português.

Translation Project

Enviado em BSD | 9 Comentários »

Limitando banda no FreeBSD com ipfw + vlan

Escrito por bzanelato em Janeiro 9, 2007

Este artigo é referente a um projeto que eu desenvolvi para um condominio, para compartilhar a internet pra todos os assinantes, mas é claro, limitar o usuário a velocidade que ele contratou.

O q estrutura esta mais ou menos assim

LINK- | FreeBSD + IPFW |—- TRUNK — |CISCO |—— CLIENTE 1 192.168.30.X

                           |——- CLIENTE 2 192.168.31.X

                             |——– CLIENTE 3 192.168.32.X

Para limitarmos a banda, vamos usar o ipfw com suporte à DUMMYNET

options DUMMYNET

Feito isto, agora podemos começar a criar as regras:

Criei 2 scripts..para automatizar..a tarefa…vou explicar cada um deles

—————————————————————————

# Configuracao VLANS IPS c/ NAT

############# Parte Inferior ##############

# cliente 1

ifconfig vlan0 vlan 1 vlandev fxp0

ifconfig vlan0 inet 192.168.30.1 netmask 255.255.255.0

# cliente 2

ifconfig vlan1 vlan 2 vlandev fxp0

ifconfig vlan1 inet 192.168.31.1 netmask 255.255.255.0

# cliente 2

ifconfig vlan2 vlan 3 vlandev fxp0

ifconfig vlan2 inet 192.168.32.1 netmask 255.255.255.0

————————————————————————-

Este primeiro script configura as vlans automaticamente para cada cliente

 

Agora o segundo script que é responsável pelo limite de banda de cada cliente

—————————————————————————–

#! /bin/sh

sh /etc/vlans.sh


ipfw pipe 3 config bw 1740Kbit/s

ipfw pipe 4 config bw 1740Kbit/s

ipfw add 55 pipe 3 ip from any to 200.170.210.99/32

ipfw add 55 pipe 4 ip from 200.170.210.99/32 to any


 

# Conj:Terreo Cliente:Cliente 1

#ipfw pipe 10254 config bw 256Kbit/s

#ipfw pipe 11254 config bw 256Kbit/s

#ipfw add 10254 pipe 10254 ip from any to 192.168.30.0/24

#ipfw add 11254 pipe 11254 ip from 192.168.30.0/24 to any

#ipfw add 254 count ip from 192.168.30.0/24 to any

#ipfw add 254 count ip from any to 192.168.30.0/24

## Conj:13 Cliente: Cliente 2

ipfw pipe 1013 config bw 64Kbit/s

ipfw pipe 1113 config bw 64Kbit/s

ipfw add 1113 pipe 1113 ip from 192.168.31.0/24 to any

ipfw add 1013 pipe 1013 ip from any to 192.168.31.0/24

ipfw add 13 count ip from 192.168.31.0/24 to any

ipfw add 13 count ip from any to 192.168.31.0/24


## Conj:21/28 Cliente: Cliente 3

ipfw pipe 1022 config bw 512Kbit/s

ipfw pipe 1122 config bw 512Kbit/s

ipfw add 1122 pipe 1122 ip from 192.168.32.0/24 to any

ipfw add 1022 pipe 1022 ip from any to 192.168.32.0/24

ipfw add 22 count ip from 192.168.32.0/24 to any

ipfw add 22 count ip from any to 192.168.32.0/24

———————————————————————————–

Como podemos ver..o segundo script chama o primeiro…daeo primeiro levanta as interfaces..e logo depois o segundo cria as regras para limitar a banda.

Eu não entrei aqui na parte do roteador..pq eu não sou especialista..mas no caso de configurar a vlan no FreeBSD ..com porta trunk como é o caso deste artigo..

Vou colocar aqui um trecho do artigo da FUG que fala sobre vlans, e que eu tambem tomei como base.

Nossa configuração está concluída no lado do FreeBSD, vou colocar a configuração que deve ser realizada switchs cisco catalyst com o IOS mensionado abaixo:

Cisco Catalyst – IOS 12.2(25)SEE2

Logue no switch com seu usuário e senha, entre em modo enable:

Switch# enable

Defina uma porta onde será conectado o FreeBSD com as nossas interfaces vlans, no nosso exemplo vamos escolher a porta FastEthernet 1.

Entre em como de configuração

Switch# configure terminal
Switch (config)# interface FastEthernet 1/0/1

Lembrando que a interface pode variar conforme o modelo do switch.

Switch (config-if)# switchport trunk encapsulation dot1q
Switch (config-if)# switchport mode trunk
Switch (config-if)# switchport trunk allowed vlan 1,2,3

Switch (config-if)# description “DESCRIÇÃO DA PORTA”

Com estas configurações na porta estamos deixando apenas trafegar as vlans 1, 2, 3, caso queira adicionar mais uma vlan no trunk do switch, utilize o comando abaixo:

Switch (config-if)# switchport trunk allowed vlan add 4

Adicionamos a vlan 4 na porta do switch.

Configure o restante das portas do switch em mode access conforme mensionado abaixo:

Switch (config-if)# interface FastEthernet 1/0/2
Switch (config-if)# switchport mode access
Switch (config-if)# switchport access vlan 1

Com isso a porta dois consequirá conversar com a interface vlan 1 do FreeBSD através da porta 1 do switch que esta configurada em mode trunk. Faça o mesmo com as outras portas definindo a vlan que deve ser acessada pela porta.

Com isto finalizamos nosso how-to, espero ter ajudado, este tipo de configuração normalmente é utilizado em firewalls e roteadores, faça um calculo de tráfego para nao ter gargalo físico na placa de rede, se o tráfego for grande em cada vlan utilize uma placa gigabit de boa qualidade.

Bom é isso ae..espero ter ajudado

Referências

FUG

SECFORUM

Bruno Moreira Zanelato

Enviado em BSD | Nenhum comentário »

Relatórios do isoqlog em bash

Escrito por bzanelato em Janeiro 9, 2007

Este script pega as informações do isoqlog e transforma em texto para ser lido em bash, para ter um relatório rapido  e  simples..

 

#!/bin/bash

###############################

# Author: Bruno Zanelato   #

# #

###############################

set -f

 

echo Content-type: text/html

echo

 

data=$(cal | head -1)

 

echo “<html>”

echo “<head>”

echo “<title> Mês ${data}</title>”

echo “</head>”

echo “<center> Relatorio de e-mails<br>Mês ${data}<br><br>”

echo “<table border=8>”

 

lista=$(ls -1 /var/www/mail-status/)

echo “<tr>”

echo “<td></td>”

echo “<td>Enviado</td><td>Recebido</td><td>Total</td><td>Tamanho</td>”

echo “</tr>”

for dominio in $(echo ${lista})

do

            link=http://200.x.x.x/mail-status/${dominio}/index.html

            lynx -accept_all_cookies -dump $link > tmp/tempo.txt

            procurar=Total

            a=$(grep ${procurar} tmp/tempo.txt | tail -1 )

 

            enviado=$(echo ${a} | awk ‘{print $2}’)

            recebido=$(echo ${a} | awk ‘{print $3}’)

            total=$(echo ${a} | awk ‘{print $4}’)

            tamanho=$(echo ${a} | awk ‘{print $5}’)

            medida=$(echo ${a} | awk ‘{print $6}’)

 

            echo “<tr>”

            echo “<td>${dominio}</td><td>${enviado}</td><td>${recebido}</td><td>${total}</td><td>${tamanho} ${medida}</td>”

            echo “</tr>”

            cat /dev/null > tmp/tempo.txt

done

 

echo “</body>”

echo “</html>”

Enviado em Linux | Nenhum comentário »

Sincronização de Maildir

Escrito por bzanelato em Janeiro 9, 2007

Existem diversas maneiras de syncronizar arquivos e file system entre servidores

no meu caso eu precisava fazer isto com maildirs..pois o cliente tinha 2 máquinas..iguais..e uma seria o backup da outra…caso uma estivesse down..a outra assumiria ..isso pode ser feito por DNS usando a priorização das entradas..ex: MX 1 MX 0 etc…enfim..o foco aqui é sincronização de Maildir .

Eu tentei com o maildirsync mas nao rolo…
com o unison ele deu pau com grandes numeros de maildir
http://www.slackwarezine.com.br/download/slackzine4.pdf

Eu não estou falando que NÃO funciona com os softwares citados acima..mas comigo não deu certo.

Eu consegui fazer isto com o rsync
com a linha

rsync -Cravz –progress –partial –delete-excluded /var/server/postfix root@200.x.x.x:/var/server/postfix

Segue abaixo um script que sera executado no servidor “Mestre” e ira enviar as informações e o conteudo do maildir para o servidor slave.

 

#!/bin/sh
##################################################
#Backup remoto com rsync com log
#Autor: Bruno Moreira Zanelato
#Email: bzanelato@gmail.com
#Marco/2006

#Local onde se encontrara o log do Backup Remoto!! Nao esqueca de modificar o diretorio.
SYNC_LOG=/var/log/maildirsync.log
#Delimitador de Entrada do log
echo “******************************” >> $SYNC_LOG 2>> $SYNC_LOG
date >> $SYNC_LOG 2>> $SYNC_LOG
echo “inicio da sincronizacao” >> $SYNC_LOG 2>> $SYNC_LOG

rsync -Cravz –progress –partial –delete-excluded /var/server/postfix root@200.x.x.x:/var/server/ >> $SYNC_LOG 2>> $SYNC_LOG

echo “………………..” >> $SYNC_LOG 2>> $SYNC_LOG
echo “Fim da Sincronizacao” >> $SYNC_LOG 2>> $SYNC_LOG
echo “****************************” >> $SYNC_LOG 2>> $SYNC_LOG

Para o script não ficar pedindo senha…crie uma (chave pub/priv) e adicione no diretorio .ssh

# ssh-keygen -t dsa -f ~/.ssh/id_dsa

# cat ~/.ssh/id_dsa.pub | ssh root@maquina_remota ‘cat - >> ~/.ssh/authorized_keys’

# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Assim o rsync não vai pedir mais senha na hora de enviar as informações para a outra maquina

Bruno Moreira Zanelato

bzanelato@gmail.com

valew

Enviado em Linux | Nenhum comentário »