Replicando base LDAP

14 03 2008

Demorei um pouco, mas estou postando as configurações para fazer réplica do OpenLDAP.
É interessante utilizarmos réplica da base ldap para autenticar serviços em outros servidores. É só pensar do seguinte modo: O que é melhor: meu squid ter que ir até o PDC se autenticar, ou ele fazer a consulta ldap localmente?
Com réplica matamos dois gatos com uma paulada só! Pois criamos uma base de contingência (ou várias) e amenizamos o tráfego na rede.

Levaremos em conta que o openldap esteja instalado e funcionando nos dois servidores.

Configuração do /etc/ldap/slapd.conf no servidor primário:

replogfile /var/log/ldap/slapd.replog
replica host=ip_servidor_secundario:389
 binddn="cn=admin,dc=dominio,dc=com,dc=br"
 bindmethod=simple credentials=senha

Atenção!! Atente para o espaço em branco no inicio das duas ultimas linhas. ;)

Configuração do /etc/ldap/slapd.conf nos servidores secundário:

updatedn "cn=admin,dc=dominio,dc=com,dc=br"
updateref ldap://ip-servidor-primario:380

É necessário que o servidor OpenLDAP secundario tenha os mesmo dados que o servidor OpenLDAP primario, para isto iremos gerar uma copia da base do servidor OpenLDAP primario:
slapcat -v -l /home/usuario/base.ldif
Transfira o arquivo para o servidor secundário, e importe os dados:
slapadd -v -l base.ldif

Antes de iniciar o ldap no servidor secundário verifique as permissões no diretório: /var/lib/ldap/. Todos os arquivos devem ser do usuário openldap. (chown openldap.openldap /var/lib/ldap/*)
inicie o ldap.

Agora faça uma alteração na base principal e verifique se o servidor secundário está sendo atualizado.

That’s all…





PDC Samba com OpenLDAP

11 02 2008

Recentemente precisei implantar Samba como PDC autenticando em uma base LDAP. Encontrei muito material na internet, porém alguns muito complexos, outros incompletos. A questão é que deve-se saber muito bem o que está fazendo antes de um projeto como esse. Ainda mais levando em conta que a base LDAP irá autenticar outros serviços, como squid e aplicações internas. Costumo aplicar a filosofia KISS (Keep It Simple, Stupid), pois quanto mais complexo for, mais fácil é de dar problemas e mais demorado é para solucioná-los. Tudo isso tive que levar em conta, afinal não quero perder meu emprego.

Após ler vários manuais e fazer inúmeros testes, fiz a implantação do Samba + OpenLdap + Squid. Este é um passo-a-passo que criei enquanto fazia a implantação.

Tutorial: Samba como PDC + OpenLdap + Squid no Debian Etch.

Instalar o Samba: aptitude install samba samba-doc winbind
Arquivo exemplo de configuração do smb.conf: smb.conf

Instalar o OpenLDAP: aptitude install openssl db4.2-util sasl2-bin libsasl2-modules libsasl2-modules-ldap slapd ldap-utils

Copiar o schema do samba para o ldap:
cd /usr/share/doc/samba-doc/examples/LDAP/
gunzip samba.schema.gz
cp samba.schema /etc/ldap/schema/
cd /etc/ldap

Arquivo exemplo de configuração do slapd.conf: slapd.conf

descomentar a linha: allow bind_v2
Adicionar o schema do samba(no final da lista):
include /etc/ldap/schema/samba.schema
suffix “dc=empresa,dc=com,dc=br”
password-hash {MD5}
rootdn “cn=admin,dc=empresa,dc=com,dc=br”
rootpw (senha MD5)
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
by dn=”cn=admin,dc=empresa,dc=com,dc=br” write

Comando para criar senha: slaplasswd -h {MD5} -s senha

reiniciar openldap: etc/init.d/slapd restart

verificar se está online: netstat -lnt |grep 389
ps aux |grep slapd

Instalar smbldap-tools:aptitude install smbldap-tools

Editar os arquivos em /etc/smbldap.conf:

smbldap.conf

smbldap_bind.conf

Pegar o SID do samba: net getlocalsid

Passar a senha do admin do openldap para o samba: smbpasswd -w senha_adm_ldap

Popular a base: smbldap-populate

Inserir usuário root na base ldap: smbpasswd -a root (caso dê erro, popule a base novamente)

Instalar nss: aptitude install libnss-ldap
editar /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
editar /etc/libnss-ldap.conf
bind policy soft (remover logs na inicialização do servidor)

Verifique se o sistema está reconhecendo os usuários da base com o comando: getent passwd

Por indicação do pessoal da lista debian-br estou utilizando a ferramenta LAM (LDAP Account Manager) para gerenciar minha base LDAP. Realmente é uma excelente opção para gerenciamento de um PDC.

instalar dependências: aptitude install apache2 apache2-ssl php5 php5-ldap php5-mhash php-fpdf
site oficial: http://sourceforge.net/projects/lam
wget http://ufpr.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.2.0-1_all.deb
dpkg -i ldap-account-manager_2.2.0-1_all.deb

Configurar a memória do apache:
editar o arquivo /etc/php5/apache2/php.ini
Alterar o parâmetro memory_limit para 64M

Acessar o endereço: http://seu_ip/lam

Para configurar o squid para acessar a base ldap basta utilizar a autenticação ldap_auth:

auth_param basic program /usr/lib/squid/ldap_auth -b “ou=users,dc=empresa,dc=com,dc=br” -h ip_do_servidor_ldap -v 3

No meu próximo post, abordarei backup e réplica da base LDAP.





Sarg - relatório de acessos

26 06 2007

Uma excelente ferramenta para saber se existe abuso no uso da internet na sua rede é o Sarg. Esse programa gera um relatório detalhado de acessos com base nos logs gerados pelo squid.

Site do projeto: http://sarg.sourceforge.net

cd /etc/squid
wget http://prdownloads.sourceforge.net/sarg/sarg-2.2.3.1.tar.gz?download
tar -xvzf sarg-2.2.3.1.tar.gz
mv sarg-2.2.3.1 sarg
mkdir /var/www/relatorios
./configure –enable-sysconfdir=/etc/squid/sarg –enable-htmldir=/var/www/relatorios/
cd sarg
make make install
edite o arquivo sarg.conf
edite o parametro access_log para apontar para seu log do squid (geralmente em /var/log/squid/access.log).

Não devemos nos esquecer de alterar a rotação dos logs no logrotate (/etc/logrotate.d/squid).

Agora basta agendar no cron para rodar o sarg toda semana.
crontab -e
1 0 * * 0 sarg

That’s all…





Instalando script para troca de senhas no squid

25 06 2007

Este How-to mostra como compilar e configurar o chpasswd, script cgi para que o próprio usuário possa trocar sua senha de internet. Muito útil para economizar o preciso tempo dos administradores de rede :D

Site do projeto: http://sarg.sourceforge.net/chpasswd.php

cd /etc/squid/
wget http://prdownloads.sourceforge.net/orsochpasswd/chpasswd-2.2.3.tar.gz?download
tar -xvzf chpasswd-2.2.3.tar.gz
mv chpasswd-2.2.3 chpasswd
cd chpasswd
mkdir /var/www/cgi-bin/chpasswd

# Aplicando patch:
wget http://sarg.sourceforge.net/htoi.patch
patch -p0 < htoi.patch

# compilando:
./configure –prefix=/etc/squid/chpasswd –enable-language=Portuguese –enable-cgidir=/var/www/cgi-bin/chpasswd/
make
make install

# configurando:
edite o arquivo chpasswd.conf
e altere o parâmetro password_file apontando para seu arquivo de senhas.

# testando:
http://ip_do_servidor/cgi-bin/chpasswd/chpasswd.cgi

That’s all…





Instalando Gerenciador de Contas do Squid (admuser.cgi)

22 06 2007

Todo administrador de redes sabe da importância de gerenciar o conteúdo que os usuários acessam na internet. Uma grande ferramenta para isso é o Squid, e para nos auxiliar na tarefa de administração das contas existe o admuser. Vamos para a instalação!

Site do projeto: http://sarg.sourceforge.net/admuser.php

Os comandos foram testados, pra quem não tem intimidade com a linha de comando é só copiar e colar.

cd /etc/squid
wget http://sarg.sourceforge.net/admuser-2.3.2.tar.gz
tar -xvzf admuser-2.3.2.tar.gz
mv admuser-2.3.2 admuser
cd admuser
mkdir /var/www/cgi-bin/admuser
cd ..
chown -R www-data.www-data admuser
cd admuser
./configure –prefix=/etc/squid/admuser –enable-language=Brazilian_Portuguese –enable-cgidir=/var/www/cgi-bin/admuser
make
make install

Vamos às configurações:
Editar o arquivo admuser.conf

alterar a linha password_file para:
password_file /etc/squid/admuser/pwd_files
Existem outras poucas opções que estão muito bem comentadas.

# criar arquivo pwd_files com o seguinte conteudo:
/etc/squid/senhas;Senhas do Squid

# Mudar dono do arquivo:
chown www-data.www-data pwd_files

acessar: http://ip_do_servidor/cgi-bin/admuser/admuser.cgi

###### Configurando o apache para restringir acesso ao arquivo

cd /var/www/cgi-bin/admuser
criar arquivo .htaccess com o seguinte conteúdo:
AuthName “Administracao Proxy”
AuthType Basic
AuthUserFile /var/www/cgi-bin/admuser/.senha
Require user admin

# Criar o usuário que irá administrar as contas. A opção “-c” deve ser usada apenas na primeira vez, para criar o arquivo de senhas. Se for criar um segundo usuário com permissão a este diretório, deve-se omitir a opção “-c” do comando abaixo:
htpasswd -c .senha admin

# Editar o arquivo /etc/apache2/apache2.conf e fazer as seguintes alterações:

descomentar a linha: AccessFileName .htaccess

# Adicionar:

Options Indexes FollowSymLinks Includes
AllowOverride AuthConfig
AuthName “ACESSO RESTRITO - RELATORIOS SQUID”
AuthType Basic
AuthUserFile /var/www/cgi-bin/admuser/.senha
require valid-user
Order allow,deny
Allow from all

# Reiniciar o apache
/etc/init.d/apache2 restart

Espero que este mini-tuto seja útil para todos!