quarta-feira, 15 de dezembro de 2010

Operações de backup em fita DAT no Ubuntu server 10.10

Olá comunidade.

Hoje trago uma dica para a criação de backups em fita DAT no Ubuntu Server 10.10.

Primeiramente devemos instalar o pacote mt-st que é o responsável pelas operações nos drives de fita com o comando abaixo:

apt-get install mt-st

Após a instalação já podemos realizar operações em fita conforme exemplos abaixo:

mt -f /dev/st0 rewind - Rebobina a fita.
mt -t /dev/st0 erase - Apaga a fita (Operação lenta).
mt -t /dev/st0 eject - Ejeta a fita.

Para o backup em si utilizamos o tar conforme os exemplos abaixo:

tar -cvf /dev/st0 /dir-origem-dos-dados
tar -cvf /dev/st0 -T /home/usuario/lista-de-arquivos.txt
tar -cvf /dev/st0 /dir-de-origem-dos-dados -X /home/usuario/lista-de-arquivos-excluídos-do-backup.txt

Conforme visto acima a opção -T aponta para um arquivo com a lista do que deve ser salvo, já a opção -X aponta para o arquivo com os arquivos que não devem ser salvos. Para maior dinamismo podemos utilizar expressões regulares nos mesmos.

A melhor maneira de realizar seus backups é através de um script de backup para automatizar o processo. Segue abaixo um exemplo de script de backup.

#!/bin/bash
#Script de backup escrito por PAULO ALEXANDRE SANTOS DE MELO
#Este script pode ser utilizado livremente e modificado uma vez que o nome do autor seja referenciado.

#Definição de variáveis
MT="/bin/mt"
TAR="/bin/tar"
DISPOSITIVO="/dev/st0"
ALVO="-T /opt/backup/alvos -X /opt/backup/excluir"
LOG="/var/log/bkp.log"

#Iniciando o Backup
echo "## Início do backup - `date +%e` de `date +%B` de `date +%Y` ##" >> $LOG
echo "Excluindo informações anteriores armazenadas na fita" >> $LOG
$MT -f $DISPOSITIVO erase
if [ "$?" == "0" ]
then
echo "Fita apagada" >> $LOG
else
echo "Erro na exclusão dos arquivos da fita" >> $LOG
fi

echo "Rebobinando a fita" >> $LOG
$MT -f $DISPOSITIVO rewind
if [ "$?" == "0" ]
then
echo "Posicionamento concluído" >> $LOG
else
echo "Erro no posicionamento" >> $LOG
fi

echo "Iniciando a cópia dos arquivos" >> $LOG
$TAR -cvf $DISPOSITIVO $ALVO
if [ "$?" == "0" ]
then
echo "## Backup concluído ##" >> $LOG
else
echo "Erro no Backup" >> $LOG
fi

echo " " >> $LOG
$MT -f $DISPOSITIVO eject


É isso ai galera, quaisquer dúvidas ou esclarecimentos estou a disposição.

Um grande abraço a todos.

quinta-feira, 25 de novembro de 2010

Obtendo informações sobre seu Squid em produção com o squidclient.

Olá comunidade.

Hoje trago uma dica de utilitário de linha de comando para acesso rápido a informações sobre o squid em ambiente de produção, o squidclient.

OBS: Esse post não irá tratar da instalação do squid uma vez que existem diversos tutoriais para tal disponíveis na web.

O squid é um proxy bastante poderoso, porém nem sempre é trivial fazer o dimensionamento do mesmo para um ambiente uma vez que existem diversas variáveis envolvidas como número de usuários acessando o proxy simultâneamente, quantidade de memória necessária, número suficiente de "file descriptors", a quantidade necessária de instâncias de autenticação quando em conjunto com o AD ou outra fonte de autenticação, etc.

Para facilitar os ajustes necessários a sua infraestrutura podemos utilizar a ferramenta squidclient.

No ubuntu server instalamos o utilitário diretamente dos repositórios com o seguinte comando:

apt-get install squidclient

Após a instalação faremos nossa primeira verificação.

squidclient mgr:info

Será exibida uma tela conforme a tela abaixo:

HTTP/1.0 200 OK
Server: squid
Date: Thu, 25 Nov 2010 20:08:11 GMT
Content-Type: text/plain
Expires: Thu, 25 Nov 2010 20:08:11 GMT
X-Cache: MISS from meuservidor
X-Cache-Lookup: MISS from meuservidor:3128
Via: 1.0 meuservidor:3128 (squid)
Connection: close

Squid Object Cache: Version 2.7.STABLE7
Start Time: Thu, 18 Nov 2010 14:41:54 GMT
Current Time: Thu, 25 Nov 2010 20:08:11 GMT
Connection information for squid:
Number of clients accessing cache: 604
Number of HTTP requests received: 10278482
Number of ICP messages received: 0
Number of ICP messages sent: 0
Number of queued ICP replies: 0
Number of HTCP messages received: 0
Number of HTCP messages sent: 0
Request failure ratio: 0.02
Average HTTP requests per minute since start: 987.7
Average ICP messages per minute since start: 0.0
Select loop called: 91903423 times, 6.794 ms avg
Cache information for squid:
Request Hit Ratios: 5min: 0.0%, 60min: 0.0%
Byte Hit Ratios: 5min: 7.6%, 60min: 12.0%
Request Memory Hit Ratios: 5min: 0.0%, 60min: 0.0%
Request Disk Hit Ratios: 5min: 0.0%, 60min: 0.0%
Storage Swap size: 0 KB
Storage Mem size: 108 KB
Mean Object Size: 0.00 KB
Requests given to unlinkd: 0
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 0.05331 0.00379
Cache Misses: 0.09736 0.09219
Cache Hits: 0.00000 0.00000
Near Hits: 0.00000 0.00000
Not-Modified Replies: 0.00000 0.00000
DNS Lookups: 0.05815 0.07284
ICP Queries: 0.00000 0.00000
Resource usage for squid:
UP Time: 624377.489 seconds
CPU Time: 4717.215 seconds
CPU Usage: 0.76%
CPU Usage, 5 minute avg: 0.65%
CPU Usage, 60 minute avg: 0.89%
Process Data Segment Size via sbrk(): 39908 KB
Maximum Resident Size: 174464 KB
Page faults with physical i/o: 1
Memory usage for squid via mallinfo():
Total space in arena: 39908 KB
Ordinary blocks: 23498 KB 4284 blks
Small blocks: 0 KB 0 blks
Holding blocks: 1108 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 16409 KB
Total in use: 24606 KB 60%
Total free: 16409 KB 40%
Total size: 41016 KB
Memory accounted for:
Total accounted: 9511 KB
memPoolAlloc calls: 1287300273
memPoolFree calls: 1287290977
File descriptor usage for squid:
Maximum number of file descriptors: 4096
Largest file desc currently in use: 1151
Number of file desc currently in use: 584
Files queued for open: 0
Available number of file descriptors: 3512
Reserved number of file descriptors: 100
Store Disk files open: 0
IO loop method: epoll
Internal Data Structures:
29 StoreEntries
29 StoreEntries with MemObjects
26 Hot Object Cache Items
0 on-disk objects

Observe que é possível verificar diversos pontos de interesse como a quantidade de "file descriptors" utilizada, a quantidade de memória utilizada, a quantidade de clientes acessando o cache, dentre outros.

Também podemos obter informações mais detalhadas sobre opções específicas. As opções possíveis podem ser exibidas com o comando:

squidclient mgr:menu

HTTP/1.0 200 OK
Server: squid
Date: Thu, 25 Nov 2010 20:13:18 GMT
Content-Type: text/plain
Expires: Thu, 25 Nov 2010 20:13:18 GMT
X-Cache: MISS from meuservidor
X-Cache-Lookup: MISS from meuservidor:3128
Via: 1.0 meuservidor:3128 (squid)
Connection: close

mem Memory Utilization public
cbdata Callback Data Registry Contents public
events Event Queue public
squidaio_counts Async IO Function Counters public
coss COSS Stats public
diskd DISKD Stats public
config Current Squid Configuration hidden
ipcache IP Cache Stats and Contents public
fqdncache FQDN Cache Stats and Contents public
idns Internal DNS Statistics public
ntlmauthenticator NTLM User Authenticator Stats public
external_acl External ACL stats public
http_headers HTTP Header Statistics public
menu This Cachemanager Menu public
shutdown Shut Down the Squid Process hidden
reconfigure Reconfigure the Squid Process hidden
offline_toggle Toggle offline_mode setting hidden
info General Runtime Information public
filedescriptors Process Filedescriptor Allocation public
objects All Cache Objects public
vm_objects In-Memory and In-Transit Objects public
openfd_objects Objects with Swapout files open public
pending_objects Objects being retreived from the network public
client_objects Objects being sent to clients public
io Server-side network read() size histograms public
counters Traffic and Resource Counters public
peer_select Peer Selection Algorithms public
digest_stats Cache Digest and ICP blob public
5min 5 Minute Average of Counters public
60min 60 Minute Average of Counters public
utilization Cache Utilization public
histograms Full Histogram Counts public
active_requests Client-side Active Requests public
store_digest Store Digest public
storedir Store Directory Stats public
store_check_cachable_stats storeCheckCachable() Stats public
store_io Store IO Interface Stats public
pconn Persistent Connection Utilization Histograms public
refresh Refresh Algorithm Statistics public
delay Delay Pool Levels public
forward Request Forwarding Statistics public
client_list Cache Client List public
asndb AS Number Database public
server_list Peer Cache Statistics public


Com as informações providas pelo squidclient podemos dimensionar de forma adequada o servidor squid aos mais diversos cenários, sempre com uma visão em tempo real do ambiente.

É isso ai, um grande abraço a todos...


sábado, 13 de novembro de 2010

Rumo a LPI 2.

Neste sábado prestei a prova lpi 201 que foi realizada pela Oficina livre aqui em Maceió.
Fiz uma boa prova e acredito que passei. :-D
O interessante é que de acordo com o Adrilan, a Oficina livre irá se tornar LPI Training Partner a partir de 2011 e passará a realizar as provas de certificação LPI com uma certa regularidade por aqui. Já não era sem tempo...
Agora é aguardar o resultado da prova e estudar para a lpi 202.

Fui...

sexta-feira, 5 de novembro de 2010

Otimizando o acesso a seus sites com o mod_pagespeed

Olá comunidade,

Recentemente o google disponibilizou o módulo mod_pagespeed para o Apache visando o carregamento mais rápido de páginas web.
A ferramenta realiza de forma automática ajustes que teriam de ser realizados de forma manual para otimizar o acesso à seu conteúdo web.

Instruções para instalação do módulo podem ser encontradas em:


Um grande abraço a todos da comunidade.

segunda-feira, 18 de outubro de 2010

Momento "Geek Fan" - Coalti II

No Coalti II tive meu momento fã pois pude conhecer, pegar autógrafo e tirar fotos com o Sr. John "Maddog" Hall que, apesar de grande guru do software livre é bastante simpático com caras chatos que querem autógrafos e tirar fotos. :D

Essa foto ai é a do celular, depois eu adiciono a foto mais bacana...



Como vcs podem ver ainda tenho um longo caminho a seguir para ter uma barba vistosa assim como a do Sr. "Maddog"... Mas com muito estudo eu chegou lá... :D

O Coalti II foi ao meu ver um bom evento. Os palestrantes poderiam ter se aprofundado mais no conteúdo mas, com apenas 45 min. para as palestras e 15 min. para perguntas não havia tempo suficiente para se abordar de uma maneira mais profunda os assuntos discutidos.
Apesar disso o evento foi bastante interessante e bem organizado, quem não foi perdeu uma boa oportunidade...

Um grande abraço a todos.

terça-feira, 17 de agosto de 2010

Integrando o FreeRadius ao AD com Centos 5.4 (PEAP + MSCHAP)

Olá comunidade,

Nesse post vou mostrar como integrar o FreeRadius ao AD a fim de autenticar clientes M$ windows XP de forma transparente ao usuário.

Utilizando-se um switch compatível com 802.1X e o servidor FreeRadius é possível realizar o controle de acesso às portas do switch mediante autenticação no AD, dessa forma apenas máquinas e usuários pertencentes ao domínio terão acesso à rede.

Para permitir a autenticação no AD devemos ter instalado o servidor Samba e o suporte a Kerberos, ao se instalar o Centos no modo server já temos os mesmos instalados. Para instalar o servidor freeradius devemos proceder conforme abaixo:

yum install freeradius2.i386 freeradius2-utils.i386 freeradius2-krb5.i386

Agora passamos a configuração de nosso ambiente.

Kerberos

Para configurar o kerberos devemos editar o arquivo /etc/krb5.conf conforme abaixo:

[libdefaults]
default_realm = SEUDOMINIO.COM.BR
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h

# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[realms]
SEUDOMINIO.COM.BR = {
kdc = seu_servidor:88
admin_server = seu_servidor:749
default_domain = seudominio.com.br
}

[domain_realm]
.seudominio.com.br = SEUDOMINIO.COM.BR
seudominio.com.br = SEUDOMINIO.COM.BR

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[login]
krb4_convert = true
krb4_get_tickets = false


Logo após configuramos o servidor Samba através do arquivo /etc/samba/smb.conf para que fique parecido com o descrito abaixo:

[global]
workgroup = SEUDOMINIO.COM.BR
netbios name = NOME_DO_SERVIDOR
password server = SEU_SERVIDOR_ACTIVE_DIRECTORY
realm = SEUDOMINIO.COM.BR
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = ads
encrypt passwords = true
domain master = no
preferred master = no
dns proxy = no
interfaces = lo eth0
bind interfaces only = yes
template shell = /bin/false
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
auth methods = winbind
winbind use default domain = yes
winbind nested groups = Yes
winbind enum users=yes
winbind enum groups=yes
log level=winbind:10


Concluída a configuração do Samba devemos editar o arquivo /etc/nsswitch.conf alterando as linhas conforme abaixo:

DE
passwd: files
group: files


PARA
passwd: files winbind
group: files winbind


Concluído este passo devemos realizar testes para verificar a comunicação entre o servidor e o AD. Primeiramente testamos o Kerberos com o comando:

kinit seu_usuario@SEUDOMINIO.COM.BR

Será solicitada a senha do usuário, se tudo estiver funcionando perfeitamente entre com o comando "klist", o resultado deve exibir um tícket gerado conforme abaixo:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: seu_usuario@SEUDOMINIO.COM.BR

Valid starting Expires Service principal
08/17/10 15:47:26 08/18/10 01:47:30 krbtgt/SEUDOMINIO.COM.BR@SEUDOMINIO.COM.BR
renew until 08/18/10 15:47:26


OBS: Para que haja a comunicação entre os servidores Kerberos é necessário que o horário de ambos esteja sincronizado, verifique a hora do servidor realize ajustes se necessário.

Verificado o funcionamento do Kerberos é a vez de testar o Samba adicionando o servidor ao AD.

Para tal reinicialize o servidor Samba e o Winbind.

/etc/init.d/samba restart
/etc/init.d /winbind restart


Logo após adicione o servidor ao AD com o comando:

net ads join -U seu_usuario -S SEUDOMINIO.COM.BR

Após a inserção no domínio podemos testar a comunicação do servidor com o AD com o comando abaixo:

wbinfo -t

O resultado esperado para este comando é:

checking the trust secret via RPC calls succeeded

Outro testes interessante é autenticar com um usuário válido conforme abaixo:

wbinfo -a usuario

A senha será solicitada por duas vezes.

Enter usuario's password:
plaintext password authentication succeeded
Enter usuario's password:
challenge/response password authentication succeeded


Ainda a título de testes podemos listar também os grupos e os usuários do domínio conforme abaixo:

wbinfo -g
wbinfo -u


Passamos agora para a configuração do servidor Freeradius. Para realizar a autenticação no domínio o módulo MSCHAP do Freeradius utiliza o utilitário ntlm_auth que faz parte do samba para realizar a autenticação. Vamos testar o mesmo com o comando abaixo:

ntlm_auth --request-nt-key --domain=SEUDOMINIO --username=usuario --password=senha

O resultado esperado para este comando é:

NT_STATUS_OK: Success (0x0)

Partimos agora para a configuração dos arquivos do servidor Freeradius.

/etc/raddb/clients.conf

client ip_do_switch {
secret = testing123
}

/etc/raddb/users

DEFAULT Auth-Type = MS-CHAP

/etc/raddb/eap.conf

eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
max_sessions = 2048

md5 {
}

leap {
}

gtc {

auth_type = PAP
}

tls {
certdir = ${confdir}/certs
cadir = ${confdir}/certs
private_key_password = whatever
private_key_file = ${certdir}/server.pem
certificate_file = ${certdir}/server.pem
CA_file = ${cadir}/ca.pem
dh_file = ${certdir}/dh
random_file = ${certdir}/random
cipher_list = "DEFAULT"
make_cert_command = "${certdir}/bootstrap"

cache {
enable = no
max_entries = 255
}
}

ttls {
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = no
virtual_server = "inner-tunnel"
}


peap {
default_eap_type = mschapv2
}

mschapv2 {
}
}


Para finalizar devemos configurar o módulo de autenticação do Freeradius.

/etc/raddb/modules/mschap

mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name} --domain=%{mschap:NT-Domain} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"
}


OBS:Devemos nos certificar de que o usuário radiusd possua acesso ao diretório /var/cache/samba/winbindd_privileged caso contrário será exibida a mensagem de erro abaixo:

winbind client not authorized to use winbindd_pam_auth_crap Ensure permissions on /var/cache/samba/winbindd_privileged are set correctly

Adicionamos o usuários radiusd ao grupo squid que possui os privilégios necessários com o comando:

usermod -a -G squid radiusd

Após definida a permissão de acesso devemos configurar o Switch para acessar o servidor. A configuração dos switches não será abordada neste post e varia de acordo com o fabricante e modelo dos mesmos. Antes de comprar seu equipamento verifique se o mesmo possui suporte 802.1X

O próximo passo é configurar as estações com o Windows XP. O windows XP deve estar com pelo menos o SP2 instalado.

Selecione as propriedades de sua interface de rede conforme abaixo:



No Windows XP com o SP2 instalado a guia autenticação estará disponível, clique sobre a guia autenticação e configure a mesma conforme abaixo:



Agora clique em configurações e desmarque as opções default deixando sua configuração conforme abaixo:



Para finalizar clique em configurar e desmarque a opção "Usar meu nome e minha senha de logon do windows automaticamente" conforme abaixo:


Pronto, agora para se ter acesso a rede será preciso fornecer usuário e senha para liberação do acesso às portas do switch. O que achei particularmente interessante é que as estações windows ao serem inicializadas realizam login no servidor Freeradius com suas contas de máquina para ter acesso a rede, o que é útil para o acesso remoto do administrador, mas quando o usuário realiza o login as credenciais do usuário são novamente enviadas ao Freeradius e caso o mesmo não pertença ao domínio a estação não terá a porta do switch liberada para acesso.

É isso ai galera. Quaisquer erros neste post, dúvidas ou esclarecimentos estou a disposição.

Para a realização deste post os links abaixo foram utilizados como base:


Um grande abraço a todos.

quinta-feira, 27 de maio de 2010

VPN IPSec com o Banco do Brasil no Centos 5.4

Recentemente fui incubido da tarefa de criar uma VPN utilizando IPSec entre minha empresa e o Banco do Brasil. Como não encontrei muita documentação disponível escrevo este artigo para facilitar a vida de nossos amigos da comunidade.

Decidi utilizar o Centos pois o mesmo possui uma documentação mais clara a respeito do funcionamento do IPSec em sua distribuição. O único pacote necessário para a configuração da vpn é o ipsec-tools.i386 que já vem instalado por padrão.

Para configurar o túnel IPSec entre minha empresa e o BB realizei as configurações abaixo:

01 - Inicialmente devemos criar o arquivo ifcfg-ipsec0 em /etc/sysconfig/network-scripts/ com a seguinte configuração:

TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=xxx.xxx.xxx.xxx
DSTGW=170.66.6.34
SRCNET=xxx.xxx.xxx.xxx/xx
DSTNET=170.66.50.0/24
DST=170.66.6.34

As configurações de SRCGW (Source Gateway) e SRCNET (Source Network) devem corresponder as suas informações.

02 - A conexão com o BB utiliza Pre-shared key para a autenticação, por isso devemos criar também em /etc/sysconfig/network-scripts o arquivo keys-ipsec0 que deve conter a chave utilizada para a conexão entre o BB e sua empresa conforme abaixo:

IKE_PSK=xxxxxxxxx

03 - Devemos configurar o Racoon que é o responsável pela troca de chaves através do arquivo /etc/racoon/racoon.conf conforme abaixo:

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
pfs_group 2 ;
lifetime time 1 hour ;
encryption_algorithm 3des ;
authentication_algorithm hmac_md5 ;
compression_algorithm deflate ;
}
include "/etc/racoon/170.66.6.34.conf";

Observe que ao se editar o arquivo racoon.conf pela primeira vez a entrada

include "/etc/racoon/170.66.6.34.conf";

ainda não existe uma vez que a mesma é criada automaticamente juntamente com o arquivo e é baseada no DSTGW citado anteriormente no arquivo ifcfg-ipsec0.

04 - Para criar o arquivo automaticamente deve-se iniciar o túnel com o comando ifup ipsec0
para desativá-lo digite ifdown ipsec0. Agora edite o arquivo 170.66.6.34.conf criado em /etc/racoon/ conforme abaixo:

remote 170.66.6.34
{
exchange_mode main;
my_identifier address;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
}
}

Note que a documentaçao oficial do Centos informa que não devemos alterar este arquivo diretamente porém, o arquivo criado automaticamente não corresponde as informações solicitadas pelo BB.

05 - Lembre de ativar o roteamento em seu servidor no arquivo /etc/sysctl.conf alterando a variável net.ipv4.ip_forward para 1

Para habilitar o roteamento use o comando

sysctl -p /etc/sysctl.conf

06 - Mais um passo é necessário para realizar a conexão. As configurações de setkey realizadas por padrão não atendem ao necessário para a conexão, por isso alterei as configurações através de um script iniciado automaticamente através do arquivo /etc/rc.local. O script deve conter os dados abaixo:

#!/sbin/setkey -f

flush;
spdflush;

spdadd 170.66.50.0/24 xxx.xxx.xxx.xxx/xx any -P in ipsec
esp/tunnel/170.66.6.34-xxx.xxx.xxx.xxx/require;
spdadd xxx.xxx.xxx.xxx/xx 170.66.50.0/24 any -P out ipsec
esp/tunnel/xxx.xxx.xxx.xxx-170.66.6.34/require;


07 - Feito isso podemos testar nossa conexão com o comando ifup ipsec0

Note que o IPSec não cria interfaces no sistema como o PPTPD ou o Openvpn, por isso deve-se utilizar o tcpdump para verificar a troca de pacotes com o comando:

tcpdump -ni eth0

Com o tcpdump é possível ver a negociação na primeira e na segunda fase do IPSec e logo após os pacotes criptografados.

EX:

1:41:14.935774 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident
11:41:14.935792 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident
11:41:15.009578 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident
11:41:15.009590 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident
11:41:15.015531 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident
11:41:15.015542 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident
11:41:15.090087 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident
11:41:15.090097 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident
11:41:15.095737 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident[E]
11:41:15.095748 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 1 I ident[E]
11:41:15.169339 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident[E]
11:41:15.169350 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 1 R ident[E]
11:41:15.169544 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I inf[E]
11:41:15.169553 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I inf[E]
11:41:16.175291 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I oakley-quick[E]
11:41:16.175303 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I oakley-quick[E]
11:41:16.250253 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 2/others R oakley-quick[E]
11:41:16.250264 IP 170.66.6.34.500 > xxx.xxx.xxx.xxx.500: isakmp: phase 2/others R oakley-quick[E]
11:41:16.250530 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I oakley-quick[E]
11:41:16.250540 IP xxx.xxx.xxx.xxx.500 > 170.66.6.34.500: isakmp: phase 2/others I oakley-quick[E]
11:41:16.493689 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x1), length 76
11:41:16.493702 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x1), length 76
11:41:16.949526 IP xxx.xxx.xxx.xxx > 170.66.6.34: ESP(spi=0x3bbaa20b,seq=0x1), length 116
11:41:16.949538 IP xxx.xxx.xxx.xxx > 170.66.6.34: ESP(spi=0x3bbaa20b,seq=0x1), length 116
11:41:17.027200 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x2), length 116
11:41:17.027212 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x2), length 116
11:41:17.950707 IP xxx.xxx.xxx.xxx > 170.66.6.34: ESP(spi=0x3bbaa20b,seq=0x2), length 116
11:41:17.950720 IP xxx.xxx.xxx.xxx > 170.66.6.34: ESP(spi=0x3bbaa20b,seq=0x2), length 116
11:41:18.025367 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x3), length 116
11:41:18.025377 IP 170.66.6.34 > xxx.xxx.xxx.xxx: ESP(spi=0x0e1e7ad2,seq=0x3), length 116
11:41:18.952179 IP xxx.xxx.xxx.xxx > 170.66.6.34: ESP(spi=0x3bbaa20b,seq=0x3), length 116

Caso haja algum erro com sua conexão um comando muito útil para verificar as possíveis causas é o racoon -Fd que inicia o racoon em modo debug.
OBS: Para iniciar o racoon em mode debug o instância que está rodando deve ser fechada.

É isso galera para a realização deste artigo utilizei como base a documentação de VPN do Centos que pode ser encontrada em:
http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_security_guide/s1-ipsec-net2net.html
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-vpn.html

Quaisquer dúvidas ou sugestões estou a disposição.
Um grande abraço a todos.

segunda-feira, 26 de abril de 2010

commandlinefu.com

Olá comunidade,

Todos nós sabemos do poder da linha de comando do linux, é como ter o "universo" ao alcance das mãos. Exageros a parte a dica de hoje é voltada para nós que nunca nos cansamos de utilizar a linha de comando. No site www.linuxcommandfu.com encontramos uma coletânea de informações sobre as ferramentas de linhas de comando e de como elas são utilizadas para resolver determinados problemas comuns a usuários ou administradores.
É uma excelente maneira de aprender novas formas de utilizar nossos velhos amigos do bash e de contribuir com a comunidade.

Um grande abraço a todos.

quinta-feira, 18 de fevereiro de 2010

Aumentar a memória do java para o Openfire

Olá amigos,

Hoje vou mostrar como aumentar a memória disponível para o java no Openfire no Ubuntu server 9.10.

Entre no arquivo /etc/default/openfire e altere a opção:

DAEMON_OPTS=""

para

DAEMON_OPTS="-Xms128m -Xmx256m"

Onde -Xms128m significa o mínimo de memória reservada, já o -Xmx256m indica o máximo de memória disponível para o java.

De acordo com alguns fóruns a configuração padrão atende bem a até umas 500 conexões, mas como em meu servidor eu também possuo alguns plugins notei que a memória utilizada estava rapidamente sendo consumida.
Portanto avalie seu servidor e altere a quantidade de memória alocada de acordo com sua realidade.

Um grande abraço a todos.

quarta-feira, 27 de janeiro de 2010

"gave up waiting for root device" while booting

Salve salve galera...

Hoje vou postar uma dica referente a um erro de boot no Servidor Ubuntu 9.10 e versões anteriores.

O erro ocorre durante a inicialização do ubuntu em certas placas mãe. A mensagem "gave up waiting for root device" while booting é exibida e logo após o administrador é enviado a um shell de raparo. Neste caso, após algum tempo ao se digitar exit neste shell o sistema inicia normalmente. Mas esse erro impede o servidor de reinicializar sem intervenção manual.

Para sanar este problema, ao se deparar com a mensagem de erro aguarde alguns minutos e entre com o comando exit no terminal de reparo.

Após a inicialização do sistema entre no arquivo /boot/grup/grub.cfg (No ubuntu 9.10 nas versões anteriores o arquivo a ser editado é o /boot/grub/menu.lst)

No arquivo de configuração edite a linha abaixo na menuentry referente a inicialização padrão de seu servidor.

De:
linux /vmlinuz-2.6.31-14-generic-pae root=UUID=064dda95-a53c-4aff-aba7-ec38ea5dd779 ro quiet splash

Para:
linux /vmlinuz-2.6.31-14-generic-pae root=UUID=064dda95-a53c-4aff-aba7-ec38ea5dd779 ro quiet splash rootdelay=90

O parâmetro adicional dá mais tempo para reconhecimento do dispositivo que possui a raíz do sistema e dessa maneira o sistema realiza login sem problemas.

Mais informações referentes as placas mãe e ao bug podem ser encontradas aqui.

Um grande abraço a todos.

segunda-feira, 4 de janeiro de 2010

Feliz 2010!!!

Salve galera.

Desejo um feliz 2010 para todos com muito Software Livre pra dar e vender.

Sei que não venho postando como gostaria mas em breve estarei de volta com novos posts.

Um grande abraço a todos.