Backups e restauração

Tão importante como manter o servidor no ar, bem configurado, é definir uma política de backups adequada. Sem falar na verificação do procedimento de volta do backup, algumas vezes não verificado.

Vejamos como os dois métodos de backup:

Usando ldapsearch

A melhor forma de fazer o backup de uma base OpenLDAP é utilizando o comando “ldapsearch”. Isso mesmo, utiliza-se o comando de pesquisa para gerar um arquivo “ldif” que depois poderá ser utilizado para restaurar a base.

Vamos também usar a opção -LLL para reduzir o número de comentários.

Para fazer um backup completo utilize o seguinte comando:

ldapsearch -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha  -b dc=kyapanel,dc=com,dc=br -LLL > backup.ldif

O resultado do comando será escrito no arquivo backup.ldif

Usando slapcat

Apesar de não recomendado pode-se usar o comando “slapcat” para fazer o backup. A única vantagem de usar este comando é a não necessidade de fornecer a senha do administrador.

Para fazer um backup completo utilize o seguinte comando:

slapcat > backup.ldif

O resultado do comando será escrito no arquivo backup.ldif

Exemplo de script

Para automatizar o processo de backup aqui mostramos um exemplo de script para esse fim.

Instale o pacote “nail” com o comando:

aptitude install nail

Crie um arquivo chamado “ldap_backup.sh”, com o seguinte conteúdo:

#! /bin/bash

# Este script tem por objetivo fazer o backup de uma base LDAP e enviá-la 
# por e-mail para o administrador da rede.
# Copie este script para o diretório /etc/cron.daily para que seja executado
#todo dia às 04:00 da madrugada.
# Defina a variável abaixo:
ADMIN_MAIL=""
TODAY=`date +%Y%m%d`

# Este comando coleta toda a base LDAP e a escreve em um arquivo com 
#a data de hoje
ldapsearch -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w nuka -b  
dc=kyapanel,dc=com,dc=br -LLL > /tmp/$TODAY-backup.ldif

# Mudando de diretório
cd /tmp

# Compactando o arquivo com o comando tar
tar -zcvf $TODAY-backup.tar.gz $TODAY-backup.ldif

# Enviando por e-mail
echo "Backup da base LDAP" | nail -s "Backup de $TODAY" -a /tmp/$TODAY-backup.tar.gz $ADMIN_MAIL

Restaurando o backup

Restaurar o backup, apesar de simples, pode ser um procedimento penoso para usuários inexperientes. Aqui vamos descrever o passo a passo para recuperar a base LDAP.

1. Pare o OpenLDAP; 2. Remova o conteúdo do diretório /var/lib/ldap com o comando:

rm /var/lib/ldap/*

3. Ative o OpenLDAP; 4. Pare o OpenLDAP; 5. Restaure a base LDAP com o comando:

slapadd -l /caminho/completo/arquivo_de_backup.ldif

6. Indexe a base com o comando:

slapindex -v

7. Restaure as permissões com o comando:

chown openldap: /var/lib/ldap/*

8. Ative o OpenLDAP

Explicando

Se sua base está corrompida ou não confiável, então será necessário removê-la para restaurar o backup. A forma mais eficiente de remover a base LDAP é apagando os arquivos físicos da base, que no Gnu/Linux Debian estão localizados em /var/lib/ldap.

Para que seja possível restaurar a base o OpenLDAP precisa ser reiniciado sem nenhum arquivo, assim ele gera os arquivos DBD iniciais, mas vazios.

Para poder restaurar a base LDAP com o comando “slapadd” o OpenLDAP precisa estar parado.

Usando db_recovery

*”NUNCA PRECISAREI UMA FERRAMENTA DE RECONSTRUÇÃO”*

A frase, se seguida de todas as boas práticas de backup e administração, pode ter sentido. Se as rotinas de cópia de segurança e de verificação de erros estão sendo realizadas de forma periódica e correta, geralmente é muito mais simples recuperar os dados a partir de uma cópia de segurança do que recuperar os dados corrompidos.

Como a maioria dos mortais está sujeita a cometer erros, dentre os quais esquecer uma vez ou outra de criar as cópias de segurança, existe a necessidade eventual de recuperar a base de dados corrompida.

Para as bases baseadas em Berkeley DB, deve-se usar a ferramenta db_recover. O nome exato desta ferramenta varia de versão do BDB para versão.

O utilitário db_recover deve ser executado após uma falha de aplicação, de sistema ou para restaurar a base de dados para um estado consistente.

A linha de comando abaixo executa o utilitário db_recover em modo de recuperação catastrófica e com saída prolixa. O diretório onde ele será executado é aquele que consta no arquivo de configuração do servidor, o slapd.conf.

Para executar a recuperação de dados utilize o comando abaixo:

db_recover -c -v -h /var/lib/ldap

Recuperando a senha do usuário Admin

Caso você esqueça a senha do administrados de uma de suas bases de dados, é possível especificá-la diretamente no arquivo de configuração do “slapd”. Entretanto esta deve ser uma medida temporária para poder ter acesso à base LDAP e poder alterar a senha do usuário “admin” dentro da base.

Uma vez feita a alteração da senha na base LDAP, deve-se remover a especificação da senha de ”admin” de dentro do arquivo de configuração.

1. Dentro do arquivo slapd.conf, após a definição do sufixo da base de dados, adicione as seguintes diretivas que especificam o DN e a senha do usuário administrador da base de dados:

rootdn "cn=admin,dc=kyapanel,dc=com,dc=br"
rootpw 123456

Alternativamente, recomenda-se que caso a senha seja mantida dentro do arquivo de configuração alguma forma de criptografia seja usada. Para isso, podemos gerar uma hash criptográfica de nossa senha e adiciona-la ao arquivo de configuração.

slappasswd -h {CRYPT} -s "123456"

2. Substitua a string “123456” no parâmetro “rootpw” com a “hash” resultante do comando acima.

3. Reinicie o OpenLDAP com o comando:

/etc/init.d/slapd restart

4. Agora que a senha de “admin” está definida e sabemos qual é, vamos alterar a senha dentro da base LDAP, usando um arquivo “ldif”. Crie um arquivo chamado “altera_senha.ldif” com o seguinte conteúdo:

dn: cn=admin,dc=kyapanel,dc=com,dc=br
replace: userPassword
userPassword: {SSHA}PUdL9VEWvhj+lC7V3os4aCo5rV7e4d3K

Perceba que o valor da senha é resultante do uso do comando “slappasswd” e o seu valor literal é “senha”.

5. Para efetivar a alteração use o seguinte comando:

ldapmodify -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w 123456 -f altera_senha.ldif

Feita a alteração de senha, as opções “rootdn” e “rootpw” devem ser comentadas no arquivo de configuração “slapd.conf”

6. Reinicie o OpenLDAP

Suporte a criptografia

O servidor OpenLDAP suporta trabalhar com dois esquemas de criptografia, SSL – Secure Socket Layer – ou TLS – Transport Layer Security. A diferença básica entre ambos é que o SSL por ser uma camada de segurança a porta em que o serviço trabalha deve ser diferente da padrão, já TLS é criptografia na camada de transporte, como o próprio nome já diz. Sendo assim, TLS pode ser ativado sem a necessidade de alteração da porta do serviço.

A “força”’ da criptografia tanto do SSL quanto do TLS é basicamente a mesma pois ambos são fornecidos pelo OpenSSL.

A vantagem de se utilizar esquemas de criptografia é bastante óbvio: provar a identidade do servidor e proteger os dados em trânsito, que de outra forma trafegariam na rede em texto puro.

Licença

Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito

Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.

Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.

openldap_basico/backups_restauracao.txt · Last modified: 2009/08/19 14:00 by anahuac
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki