quarta-feira, 15 de outubro de 2008

Nagios no slackware

Instalação, configuração e administração.

(1) - Instalação.

Espero poder ajudar com este tutorial, os admins que tem como sistema operacional base o slackware.
Não se trata de um tutorial complexo que abrange todos os campos do Nagios mas, um tutorial que permita uma instalação rápida, uma configuração simples que
permita a sua execução e utilização para o que é necessário.
Em caso de dúvidos quanto a recursos mais avançados, uma boa lida no manual ou até mesmo uma pesquisa no google poderá ajudar nas respostas.

Para instalar o Nagios, comece realizando o download dos seguintes pacotes:

- nagios-3.0.3.tar.gz
- nagios-plugins-1.4.13.tar.gz

Após o download, comece pelo Nagios. As opções de compilação vão do gosto de cada administrador.

# tar nagios-3.0.3.tar.gz
# cd nagios-3.0.3

Antes de continuar, deve ser adicionado um usuário e grupo para o nagios:

# groupadd nagios
# useradd -g nagios -s /bin/false nagios

Pronto, agora é só compilar:

# ./configure --sysconfdir/etc/nagios --localstatedir=/var/nagios --with-httpd-conf=/etc/httpd/extra --with-cgiurl=/cgi-bin --with-htmlurl=/nagios
# make all
# make install
# make install-init ( instala o script de inicialização em /etc/init.d/)
# make install-commandmode
# make install-config
# make install-webconf

O diretório base do Nagios ficou /usr/local/nagios, a instalação dos plugins e outros ficaram dentro deste diretório.
Este último comando, copiará os arquivos de configuração do nagios para dentro da pasta do apache, já configurado para acesso.


(2) - Instalando os plugins do Nagios.

Descompacte o Nagios-plugins (que neste caso é a versão 1.4.13), compile e instale.

# tar nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure
# make
# make check ( não é necessário )
# make install

Pronto, os plugins estarão instalados no diretório padrão /usr/local/nagios/libexec e todos serão utilizados tanto localmente como remotamente.


(3) - Configuração do Nagios.

Confeso que considerava o Nagios muito complexo antes de trabalhar com ele mas, percebi com a necessidade que não existe nada de mais em suas configurações.
Mostrarei as configurações que utilizei para permitir a execução básica do Nagios após a instalação.

Dentro do diretório /etc/nagios, edite os seguintes arquivos: nagios.cfg

Neste arquivo serão indicados os arquivos dos servidores a serem monitorados, os arquivos de log do nagios, os níveis de log, o diretório /var e etc.
Eu configurei as seguintes opções básicas para o funcionamento, acesso e acompanhamento da execução do nagios (debug):

log_file=/var/nagios/nagios.log
nagios_user=nagios
nagios_group=nagios
date_format=euro
admin_email=administrador@dominio.com ( em caso de problemas com o nagios, um email sera enviado )

# Essas opções abaixo ativarão o sistema de debug do nagios, para corrigir problemas entre outros.
debug_level=1
debug_verbosity=1
debug_file=/var/nagios/nagios.debug

Pronto, esse é o arquivo base de funcionamento do nagios, agora vamos ao cgi.cfg o qual permite acesso as configurações e visualizações via browser.

use_authentication=1
É responsável por solicitar usuário e senha para acesso ao nagios. Se for "0" (zero) qualquer pessoa pode acessar o nagios.

Para disponibilizar o acesso ao Nagios, inicie as configurações a partir da sessão SYSTEM/PROCESS INFORMATION ACCESS.
Para todas as opções do Nagios, exitem uma explicação para que serve. Leia atentamente

Esta opção permite acesso ao sistema de informação dos hosts e etc, separa mais de um usuário por vírgula.

authorized_for_system_information=usuario1, usuario2, usuario3, etc...

Estas linhas já possibilitam acesso dos usuários em praticamente todas as telas de administração do Nagios.

authorized_for_all_services=usuario1
authorized_for_all_hosts=usuario1


(4) - Configuração do Apache para acesso ao nagios.

Como dito anteriormente, (ítem 3) durante o processo de compilação o comando "make install-webconfig" copiará um arquivo com as opções de acesso ao nagios
via web prontos.
Este arquivo se chama nagios.conf e será copiado dentro da pasta a qual você indicou neste argunto "--with-httpd-conf=/etc/httpd/extra" durante
o processo de compilação.
Dentro do apache.conf ou httpd.conf inclua a configuração do arquivo para que o apache carregue assim que for iniciado.
No meu caso estou utilizado o apache versão 2 então, dentro do arquivo /etc/httpd/httpd.conf adicionei a seguinte linha:

Include /etc/httpd/extra/nagios.conf

Dentro deste arquivo de configuração é possível ver o ScriptAlias para o cgi-bin do nagios, o Alias para os arquivos html do nagios entre outras
informações verifique se os caminhos estão corretos.
Para acessar o nagios via web, será solicitado por padrão um usuário e senha, este deve ser criado utilizado o htpassd que já vem com o apache e,
o arquivo deve ser o mesmo indicado no nagios.conf:

AuthUserFile /etc/nagios/htpasswd.users

O comando básico para criar este arquivo inicialmente seria:

htpasswd -c /etc/nagios/htpasswd.users usuario1
New password:
Re-type new password:
Adding password for user usuario1


(5) - Acessando o nagios.

Agora o nagios está instalado e configurado. Como acessá-lo?

Carregue o nagios com o seguinte comando:

# sh /etc/rc.d/init.d/nagios start
Starting nagios: done

obs: Caso apareça alguma mensagem referente a: = /HOME, crie a pasta do usuários nagios:

# mkdir /home/nagios
# chown nagios.nagios /home/nagios
Esta mensagem aparece porque foi utilizado o binário useradd ao invés de adduser. O useradd não cria a pasta do usuário no /home.

Agora no navegador digite o endereço do seu servidor web /nagios:

http://servidor/nagios

Se tudo estiver corretamente instalado e configurado, a página do nagios será mostrada, clicando em qualquer um dos links ao lado será solicitado o usuário
e senha, estes

Espero ter ajudado, caso tenha alguma dúvida ou encontre algum erro e queira ajudar com esse mini-tutorial.. deixe uma comentário.
Abraço.

quarta-feira, 24 de setembro de 2008

Star Wars... em ascii ???

Olha o que o ser humano tem a capacidade de fazer...

Acesse esse endereço via telnet "telnet towel.blinkenlights.nl" e desfrute da bela art ascii desses "maníacos" por star wars..

Você pode conferir através do site esta obra prima

t+

quinta-feira, 18 de setembro de 2008

bookmarks na web...! fácil fácil

Há muito tempo venho atrás de algum serviço, software ou qualquer coisa que pudesse guardar meus históricos e que me permiti-se acessá-los de qualquer lugar a qualquer hora.
Navegando por ae.. me deparei com o plugin para o firefox chamado foxmarks.

Bom, instalei ele no firefox e comecei a utilizar, primeiro ele pede para que você faça um cadastro no site através de uma tela que aparecerá no navegador quando ele foi reiniciado.
Depois de feito este cadastro, é só começar a utilizar.

Você poderá fazer a sincronização dos dados com o servidor da aplicação, depois que as informações forem enviadas para o servidor, é só acessar o endereço www.foxmarks.com, entrar com seu usuário e senha e pronto, o seu bookmarks igualzinho ao que está no seu navegador localmente.

É possível também, compartilhar seu bookmarks, importar e exportar entre outras opçòes, tudo pelo site.

A instalação pode ser feita através deste endereço também.
Ferramenta muito interessante, com certeza vou utilizar por um bom tempo até que apareça algo melhor..

fica aí mais uma dica legal.

Abraços..

terça-feira, 2 de setembro de 2008

MRTG simples assim...!

Há muito tempo atrás eu tinha problemas para configurar o MRTG por que achava ele muito complicado.
Hoje ainda acho ele complicado mas não tenho mais problemas para instalar e rodar o necessário :)

Recentemente eu tive que configurar em vários servidores o MRTG para monitorar a interface de rede interna, rede adsl e rede VPN (tunX), isto tudo para monitorar on-line (claro) como anda o consumo destes links.

Desta necessidade saiu um pequeno tutorial e alguns aprendizados referentes ao MRTG.
Vamos lá.

1. Verificar e instalar pacotes dependentes.
2. Instalar MRTG.
3. Instalar SNMP.
4. Configurar e iniciar o SNMP.
5. Configurar diretórios do MRTG.
6. Rodar os comandos básicos do MRTG.
7. Configurar o Apache para acesso as informacoes.
8. Configuracões adicionais.
9. Calculando
10. Problemas encontrados.

---------------------------------------------------
1. Verificar e instalar pacotes dependentes.

OBS: Antes de começar é preciso dizer que para todas as pesquisas para instalar as dependências foram realizadas como o slackpkg portanto, não vou abordar as compilações individuais dos pacotes. No arquivo de instalação do MRTG tem uma abordagem sobre isto.

É preciso listar os pacotes a serem instalados para funcionamento do mrtg e snmp
=> MRTG
+ libpng
+ libgd ou apenas "gd"
+ libjpeg
+ zlib

=> SNMP
+ net-snmpd

# slackpkg install pacotes*

Após instalados os módulos pendentes do mrtg, é possível realizar a instalação do mrtg.
Descompacte:
tar -zf mrtg-xxx.tar.gz
cd mrtg-xxx

2. Instalar MRTG.
Compile da seguinte forma:
./configure --infodir=/usr/share/info --mandir=/usr/share/man \
--with-gd=/usr --with-gd-lib=/usr/include --with-gd-inc=/usr/include \
--with-z=/usr --with-z-lib=/usr/lib --with-z-inc=/usr/include \
--with-png=/usr --with-png-lib=/usr/lib --with-png-inc=/usr/include

Apontando onde estão todas as bibliotecas e includes dos pacotes instalados.

3. Instalar SNMP.
=> Configuração basica do SNMP
Após instalado o net-snmpd, é necessário configurá-lo para que o mrtg possa capturar as informações e gerar os gráficos.
Existem formas de gerar gráficos sem o snmp porém, não serão abordados neste tutorial.

OBS: para instalar o net-snmp tarbal do slackware, troquei o mirror das configurações para a versão corrent. Nas versões antes da 12.x não encontrei o net-nmpd.tgz. Vale a dica.

4. Configurar e iniciar o SNMP.
# cd /etc/snmp
# vi snmpd.conf
rocommunity comunidade_nome
syslocation "Localidade do servidor" # Isto aparecerá no cabeçalho das informações quando for gerado o gráfico.
syscontact administrador@organizacao

Feito isto, é preciso carregar o SNMP que pode ser feito de duas formas.
No slackware, é criado um arquivo no /etc/rc.d/rc.snmpd que pode ser utilizado como padrão setando apenas permissão de execução para carregar no boot do sistema ou você pode executar o seguinte comando e colocá-lo no rc.local

# /usr/sbin/snmpd -c /etc/snmp/snmpd.conf -Lf /var/log/snmpd.log

Neste caso, é necessário que o snmp esteja rodando para que o MRTG possa capturar as informações e gerar os gráficos.

5. Configurar diretórios do MRTG.
=> Diretórios e aquivos de configuração do MRTG

O diretório padrão para os arquivos html são:
mkdir /var/www/htdocs/mrtg

O diretorio padrao para o arquivo .cfg:
mkdir /etc/mrtg

6. Rodar os comandos básicos do MRTG.
=> Rodando o MRTG

Com o SNMP rodando e o arquivo de hosts corretamente configurado para buscar o nome da máquina ao invés de IP's (como localhost), execute os comandos abaixo para buscar e gerar as informações:

Gerar o arquivo padrão de configuração do mrtg.
# /usr/local/mrtg-2/bin/cfgmaker --global 'WorkDir: /var/www/htdocs/mrtg' --global 'Options[_]: bits,growright' --output /etc/mrtg/configuracao.cfg comunidade_snmp_configurado@nome_do_servidor

comunidade_snmp_configurado = comunidade configurada dentro do arquivo /etc/snmp/snmpd.conf
exemplo:
# cat /etc/snmp/snmpd.conf
rocommunity comunidade_snmp_configurado

nome_do_servidor = referente ao arquivo de configuração hosts juntamente com o ip correto
exemplo:
# cat /etc/hosts
192.168.1.1 servidor.local servidor

Lembre-se: para gerar o gráfico utilizando o nome do servidor, a rocommunity no snmpd.conf e o hosts da máquina devem ser iguais e claro o snmp deve estar ativo.

Após gerar o arquivo de configuração .cfg é necessário rodar o mrtg para criar os arquivos de imagem e html
# /usr/local/mrtg-2/bin/mrtg /etc/mrtg/configuracao.cfg

Este comando será solicitado na primeira vez que gerar o arquivo .cfg e, deverá ser executado 3 vezes (normalmente) até aparecer apenas o prompt na próxima execução.
Pronto, os arquivos estão gerados no diretorio /var/www/htdocs/mrtg.

Como sugestão, seria interessante abrir os gráficos de forma ordenado, através de um arquivo index.html principal
Esse arquivo é totalmente personalizável e gerado de uma forma muito simples.
Assim que esse comando for executado, todas as informações geradas na saída do cfgmaker serão colocadas de forma organizada em uma página inicial caso você tenha apenas uma interface de rede ou mais de uma.

Execute o seguinte comando:
# /usr/local/mrtg-2/bin/indexmaker --output=/var/www/htdocs/mrtg/index.html --title="Analise de consumo de links" --sort=name --enumerate /etc/mrtg/configuracao.cfg

Ok, será gerado um arquivo index.html que poderá ser acesso via browser.

http://localhost/mrtg/index.html

7. Configurar o Apache para acesso as informações.
=> Configuracao do APACHE

Bom, levando em consideração que você já tenha o apache configurado, para habilitar o acesso ao MRTG basta acrescentar a seguinte configuração de VirtualHost:

VirtualHost *:80
ServerAdmin administrador@organizacao
DocumentRoot /var/www/htdocs/mrtg
ErrorLog /var/log/apache/server1-error_log
CustomLog /var/log/apache/server1-access_log common
/VirtualHost

Obs: Devido ao sinal de maior e menor serem interpretados pelo blogspot, eu removi eles deste exemplo. Mantenha a configuração conforme padrão do apache.conf

8. Configurações adicionais.

Linha do snmp para colocar no rc.local que será carregado na inicialização do servidor
echo "Carregando SNMP..."
snmpd -c /etc/snmp/snmpd.conf -Lf /var/log/snmpd.log

Permissão de execução para o rc.snmpd
# chmod +x /etc/rc.d/rc.snmpd

Adicione no rc.local:
/etc/rc.d/rc.snmpd start

Configuração da linha de comando no crontab
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg/configuracao.cfg --logging /var/log/mrtg.log

9. Calculando
Vou tentar explicar como funciona o esquema de cálculo para bytes utilizado pelo MRTG
O MRTG informa os gráficos em bits/s mas para isto o MaxBytes deve ser descrito em bits.

1Gb = 1024 Mb
1Mb = 1024 Kb
1Kb = 1024 bytes
1byte = 8 bits

Se for calcular um link de adsl por exemplo faça da seguinte forma:

600Kb x 1024 kb = 614.400 bits por segundo
614.400 / 8 = 76.800

O arquivo de configuracão padrão esta assim: 12500000 porquê?

100 X 1000Kb = 100.000 bytes X 1000 bytes = 100.000.000 kbytes
100.000.000 kbytes / 8 = 12.500.000 bits

Não sou nenhum perito com esses cálculos e ainda tenho dúvidas sobre como o MRTG trata essas informações portanto, se estiverem erradas, mesmo que seja na descrição dos valores, por favor me avisem para que possa corrigi-los aqui.

10. Problemas encontrados.
=> Problemas relacionados
Caso o nome da estacão estacão esteja diferente do nome utilizado no comando cfgmaker comunidade@nome_servidor, o snmp retornará um erro referente a essa configuração.


Espero ter ajudado.
Dúvidas, sugestões, críticas e contribuicões por favor fique à vontade.

Abraço.

terça-feira, 12 de agosto de 2008

Servidor DHCP com Dinamic DNS (DDNS)

Vou explicar os passos que segui, as configurações que utilizei, os problemas que enfrentei e as soluções dadas para esses problemas.
Foi realizada muitas pesquisas na internet, produtivas e não produtiva.
No final de tudo, percebi que o processo era simples porém requerer atenção em pequenos detalhes os quais fazem TOTAL diferença no funcinamento desta integração.

Then, let's go...!!!

Para montar o serivdor de DHCP juntamente com o servidor de DNS será preciso os seguintes passos:

1 - Configuração do dhcpd.conf
2 - Configuração do named.conf
3 - Configuração dos arquivos de zona do DNS
4 - Gerar uma chave de assinatura através do rndc-confgen.
5 - Acertando detalhes nas configurações.

1 => Configuração do dhcpd.conf
O arquivo dhcpd.conf responsável pela distribuição dos ips, em seu formato padrão é comumente conhecido porém para integrar-se ao DNS, algumas configurações devem ser adicinadas.
Vou postar o arquivo completo já com as alterações realizadas.

# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#

server-identifier ddns-dhcp.dominio.br;
ddns-update-style interim; # necessário para integracão entre os DNS
ddns-domainname "dominio.br";
ddns-rev-domainname "1.168.192.in-addr.arpa"; # arquivo de zona reversa do DNS
ddns-updates on;
# ddns-update-style ad-hoc;

# Para realizar os testes, diminui os tempos para 50 segundos =D
default-lease-time 50; # 600;
max-lease-time 50; # 7200;
authoritative;
log-facility local7;

# Esta parte da configuração é crucial
# 1 - O nome "chave-dominio.br", dado a chave gerada para autenticação deve ser o mesmo que está no arquivo named.conf,
# senão estiver um erro de "bad DNS key" vai aparecer.

key chave-dominio.br {
# algorithm HMAC-MD5.SIG-ALG.REG.INT;
algorithm hmac-md5;
secret "m3jfLjP/ygff7nze7WEZ8g==";
};

# Estas configurações de zona, devem estar identificas as criadas no named.conf, incluindo o nome identico da chave.
zone 1.168.192.in-addr.arpa. {
primary 127.0.0.1;
key chave-dominio.br; }

zone dominio.br {
primary 127.0.0.1;
key chave-dominio.br; }

# --------- Entrada de range de IPs ------- #
# Configuração padrão do dhcpd.conf #

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.9;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option broadcast-address 192.168.1.255;
option domain-name "ns1.dominio.br.";
option domain-name-servers 192.168.1.1;
option ip-forwarding on;

# configurações adicionadas
one-lease-per-client on;
use-host-decl-names on;

# Exemplo de configuração para IP fixo baseado no MAC
# host NOME_DO_EQUIPAMENTO {
# hardware ethernet 00:60:B0:43:B1:5A;
# fixed-address 192.168.1.223;
# }
}


2 => Configuração do named.conf
O arquivo named.conf tem sua configuração padrão com poucos detalhes adicionados.

// O nome da chave deve ser o mesmo em todas as configurações.
key "chave-dominio.br" {
algorithm hmac-md5;
secret "m3jfLjP/ygff7nze7WEZ8g==";
};
#
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; }
keys { "chave-dominio.br"; };
};

options {
directory "/var/named";
// query-source address * port 53;
recursion yes;
allow-update { none; };
};
// A parte de logging me ajudou muito a identificar problemas mais detalhadamente.
logging {
channel seguranca {
file "/var/log/named.log" versions 6 size 50m;
print-time yes;
print-severity yes;
print-category yes;
};
category security { seguranca; };
category notify { seguranca; };
};

# Use with the following in named.conf, adjusting the allow list as needed:
// a caching only nameserver config

// Arquivos de zona padrão para cache. Não são obrigatórios para testes.
zone "." IN { type hint; file "caching-example/named.ca"; };
zone "localhost" IN { type master; file "caching-example/localhost.zone"; allow-update { none; }; };
zone "0.0.127.in-addr.arpa" IN { type master; file "caching-example/named.local"; allow-update { none; }; };

// Zona reversa. Repare que o nome da zona e da chave são os mesmo especificado no dhcpd.conf em ambas as configurações,
// NÃO deve ser diferentes.
// É importante manter allow-update restrito para evitar que qualquer origem faça atualizações no arquivo de zona.
zone "1.168.192.in-addr.arpa" IN {
type master;
file "local/192.168.1.zone";
allow-update { key chave-dominio.br; };
notify yes;
};
#
zone "dominio.br" IN {
type master;
file "local/dominio.br.zone";
allow-update { key chave-dominio.br; };
notify yes;
};


3 => Configuração dos arquivos de zona do DNS
Os arquivos de configuração de zona devem ser mantidos como padrão de uma configuração convencional.
Assim que o dhcp iniciar a integração com o dns, ele fará alterações nos arquivos de zona criando os arquivos de journal necessários para registrar e sincronizar informações.

Configuração das zonas, dominio.br.zone e 192.168.1.zone

# cat /var/named/local/dominio.br.zone
$TTL 86400 ; 1 day
dominio.br IN SOA www.dominio.br. root.dominio.br. (
2008072501 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.dominio.br.

ddns-dhcp A 192.168.1.1
ns1 A 192.168.1.1
www A 192.168.1.1

# cat /var/named/local/192.168.1.zone
$TTL 86400 ; 1 day
1.168.192.in-addr.arpa IN SOA ns1.dominio.br. root.dominio.br. (
2008072501 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.dominio.br.

1 PTR ns1.dominio.br.


4 => Gerar uma chave TSIG através do dnssec-keygen ou rndc-confgen.
A senha em formato MD5 pode ser gerada utilizando rndc-confgen ou dnssec-keygen.
Executei normalmente o rndc-confgen, copiei e colei as configurações como já é conhecido.

# rndc-confgen

A chave md5 foi gerada utilizando o rndc-confgen.
Sua saída é parecida com esta:

# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "ZlWWb8VPzp+/9En8H9Zlsg==";
};

options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "ZlWWb8VPzp+/9En8H9Zlsg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

A parte superior do da saída deve ser copiada e colada dentro de um arquivo com o nome rndc.conf no diretório padrão /etc.
A parte inferior deve ser adicionada dentro do named.conf removendo os comentários.
A senha criptografada existente na linha "secret "ZlWWb8VPzp+/9En8H9Zlsg==";" deve ser a mesma adicionada nos arquivos de configuração do named e dhcpd incluindo o nome da chave (key) como mostrado nos exemplos acima.

Também é possível gerar a chave através do aplicativo "dnssec-keygen" porém não vou me aprofundar muito sobre isto não. Até mesmo por que eu não me aprofundei, achei o rndc-confgen mais simples.
Gere uma chave utilizando "dnssec-keygen", a saída será dois arquivos com a descriçào abaixo:
K++.key
K++.private

O comando para gerar essa chave é:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST _hostnamedoservidor.key
A palavra "HOST" é assim mesmo.

Copie a chave que está dentro do arquivo .key e cole nos arquivos named.conf e dhcpd.conf. Caso o nome das chaves sejam diferentes um mensagem de erro será exibida, algo como "bad DNS key", segue exemplo da mensagem logo abaixo.

O código gerado através do rndc-confgen também deve ser colocado igualmente dentro de todos os arquivos de configuração, named.conf e rndc.conf e, o nome das chaves nestes 2 arquivos devem ser as mesmas.
obs: fique à vontade para sugerir melhorias neste ponto.

5 => Acertando detalhes nas configurações.
Para refinar e realizar alguns ajustes nos arquivos de configuração do dhcp e named, será preciso ler e interpretar os arquivos de log, com as mensagens referente aos erros que irão aparecer.
Para acertar o named.conf é interessante verificar os arquivos de configuração através do "named-checkzone" e "named-checkconf".
A configuração de logging no named.conf é muito importante neste estágio pois, permite monitorar informações mais detalhadas do que nos arquivos normais syslog, messages e outros.

=> Algumas mensagens de ERRO
A mensagem de erro abaixo, significa que o nome das chaves nos arquivos de configuração estão diferentes. Acerte as mesmas e carregue o dhcp novamente.
==> /var/log/named.log <==
25-Jul-2008 15:41:48.270 security: error: client 127.0.0.1#32848: request has invalid signature: TSIG chave1-dominio.br: tsig verify failure (BADKEY)
==> /var/log/syslog <==
Jul 25 15:41:23 srv1 dhcpd: Unable to add forward map from cti-ar.dominio.br to 192.168.1.9: bad DNS key

Bom, espero ter sido mais claro possível neste artigo.
Estamos sempre abertos a correções no texto no artigo enfim. Fiquem a vontade para comentar dúvidas e sugestões.
Agradeço a ajuda do pessoal do lista MASOCH-L, que me esclareceram algumas dúvidas importantes.

Abraço e até a próxima.

quinta-feira, 7 de agosto de 2008

Log do Squid em real time...!

Há algum tempo atrás, estava procurando a solução de um problema e acabei encontrando a de um outro problema. Matei dois coelhos com uma cajadada só.. :)

Encontrei um aplicativo desenvolvido em php que acessa informações no cache do squid e mostra o que está sendo acessado em tempo real.

O nome da aplicação ée SqStat desenvolvido por Alex Samorukov cujo site é http://samm.kiev.ua/sqstat/

A instalação segue no próprio site do desenvolvedor e é extremamente simples.

-> Tenha um servidor apache configurado e rodando na mesma máquina em que roda o squid.
-> Baixe o arquivo do site e descompacte em uma pasta.
-> Assim que descompactar copie ele para dentro de uma pasta a qual possa ser acessada pelo navegador exemplo: /var/www/html/sqstat
-> Agora configure o squid.conf para dar acesso ao manager pela aplicação:
adicione as linhas conforme suas necessidades:

acl manager proto cache_object
acl webserver src 192.168.1.50/255.255.255.255 #no caso de estacao, se for rede toda ficaria:
acl webserver src 192.168.1.0/255.255.255.0
# no final do arquivo coloque.
http_access allow manager webserver
http_access deny manager # esta linha já existe.

Feito isto é preciso configurar o arquivo config.inc.php
Host do servidor
$squidhost[0]="hostname do servidor ou IP";
$squidport[0]=porta_do_squid;

Pronto, agora acesse os logs pelo navegador:
http://servidor/sqstat e voilá...

Não esqueça de configurar corretamente o acesso no apache.
Qualquer dúvida post um comentário ae.

Abraços

segunda-feira, 28 de julho de 2008

Cedilha chata...!

Há um tempo atrás, estava com problemas no uso da "cedilha" no teclado que uso no trabalho.
Comecei a pesquisar e então encontrei um site com essa dica que resolveu o problema 100%.
Ahh, o problema era que a cedilha quando acionada sempre aparecia sobre a letra "c" e não embaixo "ç".
obs: Peço desculpas ao autor da solução por não postar seus créditos aqui, eu fechei a página e não salvei o link pois foi resultado de uma pesquisa no google. Sorry

Editei dentro do /etc/gtk-2.0/gtk-immodules

acrescentei "en" na linha

"/usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so"
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"


"/usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so"
"cedilla" "Cedilla" "gtk20" "/usr/share/locale"
"az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"


Fechei o firefox e abri novamente, pronto, cedilha funcionando "Ç" "ç"
Nos testes, o problema ocorria no firefox e no thunderbird. Agora está tudo ok.

abraÇo..

quarta-feira, 23 de julho de 2008

Aplicativos para Mysql BenchMark

Bom, em uma pesquisa recente atrás de como realizar um benchmark no mysql, descobri algumas ferramentas interessantes que, não conhecia e que me ajudou bastante neste processo.

Uma delas é o mysqlreport que está disponível no site http://hackmysql.com/. (Desculpe pela falta de referência ao link, a função html do blogspot que faz isso, não está funcionando, não sei porque)

Outra ferramenta interessante é o Mytop, desenvolvido por Jeremy D. Zawodny é um clone do conhecido top mas, voltado para o mysql sendo possível visualizar as conexões com base de dados específicos, de usuários específicos entre outros.
O site é este, http://jeremy.zawodny.com/mysql/mytop/, confira e faça o teste.


Vale a pena dar uma olhada =D
Abraço.

terça-feira, 8 de julho de 2008


Muito bem, o firefox já bateu vários records, já comprovou que é melhor em gerenciamento de memória e agora mostra que fica muito melhor usando todo o seu poder com seus add-ons.
Um artigo postado no blog do PADOCA mostra mais de 40 motivos para você utilizar o firefox.




Valew a pena, dar uma olhadinha.. tem muita coisa boa..
Abraços.

terça-feira, 1 de julho de 2008

Live CD OpenSolaris 2008 direto da Sun.




Estava eu navegando por alguns blogs hoje, e me deparei com a notícia de que é possível solicitar um live CD direto da SUN então, entrei no link e fiz o meu pedido.
Agora é só aguardar e colocar em minha task list para testar o sistema.

Peça já o seu pelo link
https://www2.sun.de/dct/forms/reg_us_2307_228_0.jsp


Abraço.

sexta-feira, 23 de maio de 2008

PHP com suporte a Firebird/Interbase

Para instalar o php com suporte ao interbase, foram realizados os seguintes procedimentos: (atualizado)

1) Instalação do apache com suporte a módulos dinâmicos (DSO).
2) Instalação do padrao do firebird para funcionar a conexão.
3) Instaleção do php via DSO e, criação da biblioteca compartilhada para interbase.

1) Apache.- Versão 2.2.8
Depois de feito o download do apache, foi feito a seguinte configuração. Lembrando que a compilação vai do gosto de cada
um:
Obs: todas as compilações foram feitas com usuário normal (não-root), passando para root na hora de executar o make install.

$ ./configure --prefix=/usr/local/apache2 --exec-prefix=/usr/local/apache2 --enable-headers --enable-ssl --enable-vhost-alias --enable-proxy --enable-http --enable-rewrite --enable-so
$ make
$ su
# make install

Ok, o apache está compilado e instalado.

2) Firebird
Foi feito o download do Firebird na versão FirebirdCS-1.5.5.4926-0.i686.tar.gz.
Para instalação, foi executado em modo de instalação padrão o arquivo "install.sh" que se encontra dentro da pasta FirebirdCS-1.5.5.4926-0.i686 que é criada após a descompactação do arquivo "tar.gz"
Após a execução do arquivo install.sh, será criada a pasta /opt/firebird (que faz parte da instalação padrão).
A instalação do firebird não será abordada aqui.

OBS: Em alguns testes, era preciso que o firebird estive-se rodando para o php acessar os bancos de dados.

Agora vamos ao php...!

3) Php - Versão 4.4.8

Seguindo os mesmo passos do Apache, faça o download do php tarball do site e compile conforme sua necessidade. Toda a compilação foi feita em modo usuário normal.
A compilação do php também é temperada a gosto conforme à necessidade.

Neste exemplo, já existe uma instalação de apache e php em versões anteriores para outros testes e serviços rodando nos diretórios padrões /usr/local/apache e /usr/local/lib (para php) portanto, foi instalado o php e apache em diretórios diferentes como pode ser visto nas linhas do configure, abaixo.

$ ./configure --prefix=/usr/local/php-4.4 --exec-prefix=/usr/local/php-4.4 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-safe-mode --disable-ipv6 --with-zlib --with-zip=/usr --with-interbase=shared,/opt/firebird --with-openssl
$ make
$ su
# make install

A opção de compilação "--with-interbase=shared,/opt/firebird" deve estar presente para que o php gere um módulo do interbase para funcionar corretamente.
Depois de compilado e instalado, ainda no pasta fonte do php, entre na pasta "modules" e verifique a existencia do arquivo "interbase.so", copie este arquivo para a pasta de "extesions" que será configurada no php.ini.
Como já existia uma instalação do php-4.1.2 neste servidor, o diretório padrão desta versão 4.4.8 está em /usr/local/php-4.4.8.

# cp interbase.so /usr/local/php-4.4/lib/php/extensions

Feito isto, copie o php.ini-dist /usr/local/php-4.4/lib
Pronto, agora é só editar o php.ini e testar.

# cd /usr/local/php-4.4/lib

# vi php.ini
Dentro do php.ini você vai procurar pela linha "extension=interbase.so" e descomentá-la.
Procure também a linha "extension_dir" e coloque-a apontando para a pasta de extensões utilizadas pelo php, nesta caso ficaria assim:

extension_dir = "/usr/local/php-4.4/lib/php/extensions"

Ok, feito isto o servidor está apto a funcionar acessando banco de dados firebird.
Configure um vhost no apache, crie seus scripts de conexão com o firebird e faça os testes.

Obs: Em uma versão de testes, foi compilado o Apache 1.3.37 com php 4.1.2 onde o script que conectava no banco realizava a conexão mas a rotina só apresentava as informações até uma parte ou seja, não concluia todo o processo. Só para registrar =)

Abraço até a próxima...!

quarta-feira, 14 de maio de 2008

Argument list too long

Para remover muitos arquivos de um diretório de uma vez só, o comando seria o seguinte:

for i in `ls`; do rm -rf $i; done

ou usando xargs:

ls | xargs -n10 -i rm -rf {}

Dica de PiterPunk

sexta-feira, 9 de maio de 2008

Dicas interessantes para backup

Não sou expert em script para backups e assim como quase todos admins, tenho que me virar na hora da correria.

Estava escrevendo um script de backup esses dias e, precisava que o script ao gerar o backup do dia, apaga-se o backup do dia anterior.
Como os dados ficariam em fita, não precisava guardar os backups de todos os dias em disco mas, gostaria que ele apaga-se o backup feito no dia anterior, de uma forma "elegante" ao invés de mandar um "rm -rf" na pasta.

Para executar esse rm dos dias anteriores adicionei a seguinte linha dentro do script de backup, no final dele:

rm nome-do-arquivo-$(date --date="1 day ago" +%Y-%m-%d).tgz

Claro que tudo depende de como você fez o backup.
O nome do arquivo no meu caso é sempre o mesmo, o formato da data também é o mesmo e o tipo de compactacão que usei foi .tgz, se isto não estiver de acordo ele não vai encontrar o arquivo de backup que foi gerado.


Bom, nesta opcão posso colocar "4 days ago" para deletar o backup de 4 dias atrás mas, contato a partir da data em que rodo o script por exemplo, se rodar hoje 09-05-2008 ele vai apagar os backups do dia 05-05-2008.
Se omitir esta opcão de data na linha de comando, ele vai remover os backups não importa a data atual, será sempre da quantidade de dias que você colocar.

Essa dica é boa, contanto que você não ache melhor colocar um "rm" após gerar o backup. Mas lembre-se de transferi-lo para outro lugar antes de remover.

Até mais..

terça-feira, 6 de maio de 2008

Lynx e Wget via proxy

Para ativar o uso do Lynx e do Wget via proxy, proceda da seguinte forma:

Lynx:
Localize o arquivo lynx.cfg

# locate lynx.cfg
/etc/lynx.cfg

Utilizando um editor localize as seguinte variáveis proxy: http, https e ftp. Existem outras mas não entrarão neste contexto.
Depois de localizada as variáveis altere para o seguinte:
http_proxy:http://ip.do.servidor.proxy:porta/
https_proxy:http://ip.do.servidor.proxy:porta/
ftp_proxy:http://ip.do.servidor.proxy:porta/

Pronto está feito, domínios da intranet que não precisam de proxy podem ser acessados através da variável:
no_proxy:dominio.com.br, dominio2.com, IP

Para configurar o wget para sempre utilizar proxy proceda da seguinte forma:

Localize o arquivo wgetrc:
# locate wgetrc
/etc/wgetrc

Edite o arquivo e procure as seguintes variáveis:
http_proxy
ftp_proxy
use_proxy

Caso a opção use_proxy esteja ativa: use_proxy = on, as opções http e ftp devem estar configuradas.
http_proxy = http://ip.do.servidor.proxy:porta/
ftp_proxy = http://ip.do.servidor.proxy:porta/

obs: mantenha a barra no final das configurações.

Para utilizar o wget utilizando proxy digite o seguinte
#wget --proxy-user=usuario --proxy-password=senha endereço_para_baixar

Feito isto, é só utilizar as ferramentas.

segunda-feira, 5 de maio de 2008

Próximos posts...!

Os próximos posts a serem colocados aqui serão:

1) Como rodar o php com suporte a acesso ao banco de dados interbase/firebird
2) Rodando dois servidores apache no mesmo servidor para atender a domínios diferentes em portas diferentes.

Aguardem....!!!

sexta-feira, 25 de abril de 2008

Procurando arquivos grandes

Precisei pesquisar no servidor quais arquivos continham mais de 5Mb.
Para fazer isso executei o seguinte:

find / -size +5000k -print
ou
find / -size +5000 -print > saida_find.txt

Depois é só olhar o arquivo e o caminho.

Falows

SSH sem senha.

Bom, esse post já não é novidade no mundo linux mas, sempre que preciso tenho que ficar procurando no google.
Para economizar tempo eu vou postar aqui como fazer para criar um usuário de conexão remota via ssh em um servidor que não precise digitar senha.

Neste cenário teremos: Servidor A e Cliente A

Antes de começar é importante ressaltar o seguinte: como trata-se de usuário de conexão ssh o mesmo precisa existir em ambos os lados, Servidor e Cliente a menos que seu servidor aceite conexões remotas de usuário root, o que não é aconselhável.

O primeiro passo...!
Na minha estacão vou criar um usuário:
# adduser suporte
Depois de criado, passa para pasta deste usuário:
# su - suporte
Crio a pasta .ssh dentro do usuário suporte e acesso a mesma para gerar a chave:
$ mkdir .ssh
$ cd .ssh
Agora vou criar a chave no padrão de criptografia DSA. Poderia ser RSA também.
Feito isso vou enviar a chave gerada (id_dsa.pub) para o Servidor A
$ ssh-keygen -b 1024 -t dsa
$ scp id_dsa.pub suporte@ip_servidor:/home/suporte

Lembre-se de que o usuário suporte deve existir no outro servidor ou, você pode enviar para o usuário root, depois conectar-se no servidor e mudar o arquivo de pasta.

Logando com o usuário suporte, vou copiar e renomear o arquivo
$ pwd
$ /home/suporte
$ mkdir .ssh
$ mv id_dsa.pub .ssh/
$ cd .ssh/
$ mv id_dsa.pub authorized_keys

Feito isso é só deslogar do servidor e, a partir da estacão de suporte logar no servidor.
Na estacão de suporte é preciso estar como usuário suporte.

É isso ae.
Abraço

quinta-feira, 24 de abril de 2008

Limpar dados de uma tabela do mysql

Precisei remover alguns dados de uma tabela e para fazer isso, utilizei o comando TRUNCATE do mysql.

Fiz da seguinte forma:

mysql> truncate table nome_tabela;
Query OK, 0 rows affected (0.00 sec)

Não sou expert em mysql mas isso resolveu meu problema.
Obs: esse comando remove todos os dados de uma tabela, ou seja, limpa a tabela totalmente.
Veja o site: http://dev.mysql.com/doc/refman/4.1/pt/truncate.html para mais informações.

abraços

Exportar uma tabela de um database

Para exportar uma tabela de uma database do mysql o procedimento é o seguinte:

mysqldump -u usuario -p(senha) database table > dump.sql

mysqldump -u usuario -p(123456) minhacasa sala > dump.sql

Caso tenha usuário para conexão de banco use o: -u usuário -p e a senha
Depois o nome da database e o nome da tabela.

Pronto, foi exportado do mysql apenas a tabela sala do banco de dados minhacasa.

t+

quinta-feira, 3 de abril de 2008

google search...!

Quer pesquisar sobre Linux somente?

www.google.com.br/linux

Quer pesquisar sobre Windows somente?

www.google.com.br/microsoft

good search...! have fun...!

quinta-feira, 7 de fevereiro de 2008

Problema ao carregar o SSHd

Ao carregar o SSHD a seguinte mensagem apareceu:

sshd[250]: fatal: daemon() failed: No such device
obs: o número é aleatório.

O problema é o seguinte, após digitar algum comando ou instalar alguma aplicação o arquivo /dev/null tornou-se um arquivo comum do linux.

Para corrigir basta seguir os seguintes comandos:

# cd /dev/null
# rm null
# mknod /dev/null c 1 3

Ok, o arquivo null está criado corretamente e o serviço pode subir sem problemas.


domingo, 20 de janeiro de 2008

Drupal em português do Brasil (pt-br)

1. Entre na administração do seu site em Drupal e clique em módulos (Modules).

2. Marque a opção Locale. Ela vai habilitar a interface para outras línguas além do inglês.

3. Agora é preciso baixar a tradução do drupal para o português do Brasil (pt-br). Vamos usar a linha de comando:

# cd /var/www

# wget http://ftp.drupal.org/files/projects/pt-br-5.x-2.00.tar.gz

# tar -xvzf pt-br-5.x-2.00.tar.gz -C /var/www/seu_site/

4. Na administração, vá em Site configuration e, depois, clique em Localization. Ou digite no Firefox http://localhost/seu_site/?q=admin/settings/locale

5. Clique em add language, escolha o português do Brasil e add language!

6. Agora vamos importar o arquivo de tradução, em Import. Procure o arquivo pt-br.po (Ele vai estar em /var/www/seu_site/pt-br/pt-br.po). Certifique-se que em Import into está marcado o português do Brasil. Import!

7. Habilite este idioma em Enabled e marque como padrão (Default). Clique em Save configuration.

quarta-feira, 16 de janeiro de 2008

Vamos ajudar o meio ambiente.

Pois é.. ano novo.. td novo.. e o mundo? continua de que jeito..?

Muitas vezes é tão custoso para qualquer pessoa pegar um papelzinho, um copo de plástico e jogar no lixo.
Todo o lixo além de ser prejudicial ao meio ambiente, suja a cidade onde mora.

Não custa colaborar e não é só com a cidade, são com os lagos, rios, represas e etc...
Segue abaixo alguns links para você acessar e tomar consciência de algumas coisas...

http://www.ondazul.org.br/

A página de links tem outros endereços interessantes.
Faça a sua parte que o planeta faz a dele. =D