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.