quinta-feira, 24 de junho de 2010

mais anti-spam

Acho que êste é um assunto que nunca termina. O Spam é realmente um problema, então achei mais um link, desta vez de um wiki, o "Fairly Secure Anti Spam Wiki";

Baseado no OpenBSD, com tudo a que tem direito :) postfix, spamassassin, greylist, razor, dcc..

segunda-feira, 21 de junho de 2010

mais monitoramento

O Leandro Malaquias (fug-br), sabendo do nosso sofrimento com o nagios/zabix, sugeriu o jffnms, cuja página "home" está aqui; algo para se ver :)

Olha só o comentário do Leandro:
"Cara, o nagios e assim mesmo se nao der problemas nao e o nagios, mas se estiver interessado em mexer com um nms mas facil use o "JFFNMS" facil de instalar e de tempo real permitindo analisar o SLA com maior precisao."

mas existem ainda várias outras páginas a respeito de nagios, cacti e monitoramento:

Aqui, um tutorial de nosso colega Diego:
:==

Ola, boa tarde lista! Montei ( com ajuda do amigo Wendel) um pequeno howto da configuracao do Nagios. Gostaria de opniao de voces e da verificacao de possiveis erros, obrigado ! abracos !!



Nagios (R) é um sistema de monitoramento de rede e de aplicação. Ele vigia hosts e serviços que você especificar, alertando você quando as coisas correm mal. Algumas coisas que o Nagios pode fazer por voce:


* Acompanhamento dos serviços de rede (SMTP, POP3, HTTP, NNTP, PING, etc);
* Acompanhamento de recursos (processador carga, uso do disco, etc);
* Design com simples plugins que permite aos usuários facilmente desenvolver seu próprio serviço de controle;
* Contato com notificações quando ocorrerem problemas de serviço ou parada de hosts (por e-mail, pager, ou definido pelo metodo pelo usuário);
* Log file rotation;
* Interface web para visualização do atual estado de rede, notificação e problema histórico, arquivo de registro, etc.

Ai vai um pequeno tutorial pra por o servico funcionando, para mais detalhes acesse http://www.nagios.org



Bom, let`s go ! Com o usuario root, baixe e instale o apache:

#cd /usr/ports/www/apache13; make install clean


Edite o httpd.conf e insira as seguintes linhas:

#vi /usr/local/etc/apache/httpd.conf

ScriptAlias /nagios/cgi-bin /usr/local/www/nagios/cgi-bin/

Options ExecCGI
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user


Alias /nagios /usr/local/www/nagios


Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user



Voce precisa definir o arquivo onde vai ficar o passwd dos usuarios autorizados:

#touch /usr/local/etc/nagios/htpasswd.users


#htpasswd -c /usr/local/etc/nagios/htpasswd.users ## caso queira mudar a senha, basta nao incluir o flag -c.




Baixe e instale o nagios:

#cd /usr/ports/net-mgmt/nagios; make install clean

Os arquivos de configuracao do nagios ficam em /usr/local/etc/nagios.
Os principais arquivos sao:

cgi.cfg = Esse arquivos diz onde o CGI vai encontrar os arquivos de configuracao.
commands.cfg = Os comandos que o nagios oferece e suas sintaxes. Aconselhavel da uma olhada.
nagios.cfg = Arquivo principal do nagios, aqui voce vai fazer o seguinte:

# cd /usr/local/etc/nagios; vi nagios.cfg


## Aqui voce ira procurar pelos cfg_file, nele voce setara onde estarao os arquivos de configuracao (objects):

cfg_file=/usr/local/etc/nagios/teste.cfg - Fica a seu criterio definir o nome do arquivo.
# vi teste.cfg ## Aqui esta tudo para localhost, cabe a voce fazer as alteracoes!!
## ## timeperiod voce define `grupos com horarios`. Voce pode especificar diversos horarios. Aqui eu criei 3: 24x7 (24 horas, ## 7 dias),
Hora de trabalho (de 9 ## as 17) e nonworkhours (no qual nao estamaremos trabalhando).

define timeperiod{
timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00 }

define timeperiod{
timeperiod_name workhours alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00 }

define timeperiod{
timeperiod_name nonworkhours alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00 }

define timeperiod{
timeperiod_name none alias No Time Is A Good Time }

## Contatos, a quem avisar caso algo ocorra:

define contact{ contact_name MY_NAME alias Administrador da Rede
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands
notify-by-email ## MTA tem que ta configurado !
host_notification_commands host-notify-by-email ## MTA tem que ta configurado !
email email@email # email para qual o nagios vai mandar as notificacoes. }

## Voce pode definir quantos for preciso, por exemplo, um grupo para a equipe tecnica da empresa:

define contact{
contact_name local alias Equipe Tecnica da Empresa
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email email email@email }

## Aqui voce define o grupo de contatos; quais vao ser os membros, etc.

define contactgroup{
contactgroup_name equipe-de-suporte alias EQUIPE DE SUPORTE
members ponha-os-nomes-aqui }

## Definicao do host a ser monitorado
define host{
name servidor
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 }

# localhost

define host{
use servidor
host_name localhost \\ mude para o nome da sua maquina alias localhost \\ como a maquina pode ser chamada pelo nagios.
address 127.0.0.1 \\ IP da maquina a ser monitorada
check_command check-host-alive
max_check_attempts 10
notification_interval 120 \\ Tempo de notificacao, em segundos.
notification_period 24x7 \\ Quando vai ser notificado?
notification_options d,u,r contact_groups equipe-de-suporte \\ Quem vai ser notificado? }

## Voce tambem pode montar um grupo de hosts a ser monitorado:

define hostgroup{
hostgroup_name servidores alias servidores members localhost }

### Servicos, aqui eh a parte legal !
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 }

define service{
name gw
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 } # roteador

define service{
use gw
host_name z
service_description PING is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 240
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60% } # este servidor

define service{
use generic-service
host_name localhost
service_description SMTP
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options c,r
check_command check_smtp
}
define service{
use generic-service
host_name localhost
service_description IMAP
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options c,r
check_command check_imap
}
define service{
use generic-service
host_name localhost
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use generic-service
host_name localhost
service_description POP3
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_pop
}
define service{
use generic-service
host_name localhost
service_description HTTP
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_http
}
define service{
use generic-service
host_name localhost
service_description / free space
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_local_disk!50%!30%!/dev/ad0s1a
# !!! }
define service{
use generic-service
host_name localhost
service_description /tmp
free space is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_local_disk!20%!10%!/dev/ad0s1e # !!! }

define service{
use generic-service
host_name localhost
service_description /usr
free space is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command check_local_disk!50%!30%!/dev/ad2s1f # !!! }

define service{
use generic-service
host_name localhost
service_description /var
free space is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 3
contact_groups equipe-de-suporte
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_command
check_local_disk!20%!10%!/dev/ad0s1d # !!! }

define service{
use generic-service
host_name localhost
service_description Total Processes
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 2
contact_groups equipe-de-suporte
notification_interval 240
notification_period 24x7
notification_options w,u,c,r
check_command check_local_procs!150!200!RSZDT }

O post original dêle está aqui monitoramento por snmp e PF

Acelerando o Cacti: ao invés de usar o poller original (em php), usa-se um compilado em C, conforme êste post do Marcello no fug-br

O colega rogério moura (sempre no fug) fez um script para coletar dados para o MRTG; vale analisar, de repente pode-se usa-lo para gerar dados para o nagios.


Fully Automated Nagios


O FAN, ou “Fully Automated Nagios“ (Nagios completamente automatizado), é uma distribuição em CD voltada para a simplificação da instalação do Nagios em conjunto com diversas ferramentas num servidor de monitoramento de rede. Sua versão atual é a 1.0.

URL para a notícia completa

a página de download está aqui

Controle de Banda com PF

Na lista FUG-BR o colega Renato Frederick deu uma receitinha bem
interessante para controle de banda com o pf, a qual reproduzo aqui:

Faz-se as filas na interface, neste exemplo o link é de 100Mb e está
conectado á xl0 e temos 2 clientes(e o "resto" que vai pro que não tem tráfego explicitamente detalhado):

altq on $ext_if bandwidth 100Mb queue { cliente1 cliente2 default_dmz }

define-se dos 100Mb quanto que cliente1 e cliente2 vai ter e o resto pra default_dmz:

queue cliente1 bandwidth 2Mb priority 4 qlimit 1000 cbq(red)
queue cliente2 bandwidth 8Mb priority 4 qlimit 1000 cbq(red)
queue default_dmz bandwidth 80Mb priority 4 qlimit 1000 cbq(default,borrow)

lembrando que a some dos queue nao pode passar o bandwitdh declarado acima.

note que estou usando o algorítimo RED para fazer o ALTQ, no link[1] você vê mais detalhes dos algorítimos disponíveis.

Também na DMZ eu joguei o borrow, ou seja, os 80Mb da DMZ pode "tomar" banda do cliente2 e cliente2, caso precise, seria como as prioridades que o IPFW tem.


Agora basta colocar uma linha no final de cada regra de pass out pra indicar que esta regra vai ser associada a uma destas queue:


Ex, uma regra que era assim, liberando o cliente1 a conectar a qq local:

pass out quick on $ext_if proto { tcp udp } from { $cliente1 } port > 1023 to any keep state

fica assim:

pass out quick on $ext_if proto { tcp udp } from { $cliente1 } port > 1023 to any queue cliente1 keep state

as regras que eu quero que compartilhem os 80Mb eu não declaro nenhum queue, ele vai pegar o que está como default acima:

pass out quick on $ext_if proto tcp from port $ftp_ports to any port > 1023 keep state



Observe que isto faz o tráfego de output.

para fazer de input, repete-se a mesma coisa, só que a ext_if vai ser substituida pela int_if(ou o nome que você dá pra interface interna) no altq e o queue nao vai ser no pass out, vai ser no pass in e você não vai poder
usar o keep state, vai ter que declarar uma regra de pass out e outra de pass in, senão o keep state cria o retorno sem queue.

a referência: [1]http://openbsd.org/faq/pf/queueing.html

o post original está aqui

sexta-feira, 18 de junho de 2010

pentelhices do Slackware

Embora eu goste do Slackware, pela sua estabilidade e pelos poucos serviços que são colocados como default (experimente dar um netstat -nlpt em uma Debian-like e compare com o Slackware), existem coisas que são "de amargar" também - nem tudo são flores

A parte boa:
Os serviços disponibilizados no Slackware são aquêles que VOCÊ quer disponibilizados, enquanto nos outros (incluindo o CentOS/RH, por exemplo) vc tem que DEPOIS de instalar ficar "caçando" os serviços a serem desativados. Um saco, não?

A parte err.. hmmm.. mais "amargosa": as outras tem praticamente TUDO o que vc possa precisar, em têrmos de "usuário convencional", enquanto no Slack.. veja mais adiante ;)

As demais:
A Debian deve (hoje em dia) estar com tudo atualizadíssimo, comparado a 1963, claro. O lado rosinha da Força mostra sua força com essa viadagem de só colocar algo MUITO testado nos seus servidores, normalmente umas 3 ou 4 versões anteriores à atual. Depois ficam chorando quando invadem os seus (dêles) servidores, como já aconteceu (risos maldosos).

Bem, mas como disse, nem tudo são flores no Slack. Vc tenta um aplicativo qualquer, diretamente de interêsse do já famigerado "usuário normal", e.. tome a sair buscando uma infinidade de dependências com informações das criptográficas a obscuras. "Não encontrei a lib-zedascouves.4.3.7.985.so.lib" e vc sai googlando a 'net inteira, dias a fio, até que uma alma caridosa te informe que a dita cuja está dentro de um "pacotaço" de "desenvolvimento de fritadoras de batata palha", em um site mais ou menos desconhecido. Fo**a, né?

Minha mais recente peripécia foi instalar o XCHM no slack 13.1. Juro, DESTA VEZ não foi tão dificil assim, em comparação com o que eu já encontrei (desde o Slack 3.algumacoisa).. xiii..

mas vamos lá: o XChm é um leitor de chm ("compiled html help"), que hoje em dia nem é mais um "tipo estranho".

vc pode ler êsse arquivo com o konkeror, no KDE. Muitos não dispôe/usam o KDE ou não gostam do modo dessa leitura no konkeror (eu NÃO GOSTO). Mas vamos ao Xchm, que é (IMHO) mais apropriado:

vc precisa instalar algumas libraries NÃO disponiveis diretamente do slack, mais alguns scripts do slackbuild, conforme ESTAS instruções:

tutorial bem interessante: How to read or view chm file in Linux

outro, complementar: Build and install Slackware chmlib

todas as instruções dessses tutoriais são válidas e funcionam bem. Agora eu posso ler meus *chm sem problemas :)

spamassassin - regras

dizem que "ensinar" o spamassassin é um trabalho de paciencia chinesa, coisa para séculos. É até possível que seja verdade, porque as dificuldades que tenho lido nas listas são de doer. Mas recentemente, o colega allan carvalho, na lista FUG-BR, apontou um link que (segundo êle) deve facilitar bem isso aí:

"Escrevendo regras para o SpamAssassin", artigo original que pretende acabar com a dificuldade.

aqui o post original do Allan Carvalho na lista FUG-BR

sexta-feira, 4 de junho de 2010

"arrumando" o teclado com o hald

as versões atuais dos Linux (todas as distribuições) confiam no "hald" para configuração do teclado no ambiente gráfico (xorg); então, não adianta alterarmos o xorg.conf como faziamos antigamente.

a solução:

cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy
vim /etc/hal/fdi/policy/10-keymap.fdi

o arquivo original está assim:
Here's an example of the four lines from above:
key="input.xkb.rules" type="string">base
key="input.xkb.model" type="string">evdev
key="input.xkb.layout" type="string">us
key="input.xkb.variant" type="string">intl
"
então, dentro do arquivo, alteramos as 2 ultimas linhas para ficarem assim:
key="”input.xkb.model”" type="string”>abnt2
input.xkb.layout”type="string”>br

e pronto; ao restartarmos o X (ou a máquina) estamos com o teclado certinho