Reduzir custo gerencial é papel de todo bom administrador. Nada mais recomendável então, para se iniciar uma boa gestão de TI, do que manter centralizado o máximo possível de informações. Tecnologicamente falando, uma base centralizada de usuários (e permissões à estes usuários) deixou de ser simplesmente uma opção de implementação e tornou-se uma real necessidade.
Isso se tornou bastante popular, os sistemas operacionais Microsoft Windows NT e Windows 2000 fazem uso de uma base de dados centralizada para manter a organização de todas as informações da rede: trata-se do Active Directory, que é o serviço de diretório implementado pela Microsoft para servir como depósito concentrador de informações comuns (objetos). São exemplos de objetos do Active Directory: contas de usuários, grupos de usuários, impressoras de rede, políticas de controle, etc.
O fato do sistema operacional Linux estar conquistando cada vez mais espaço dentro das corporações (atuando tanto como servidores quanto como estações de trabalho), incentivou a comunidade Open Source a integrá-lo às já existentes ” redes Windows”. É exatamente aí que entra o Samba, que faz a gerência de sistemas heterogêneos.
É bem verdade que máquinas com Linux e executando Samba podem completamente substituir os controladores de domínio (PDC e BDCs), mas AINDA não podem por si só implementar o Active Directory (característica esta que certamente estará presente na versão 4 do Samba). Sendo assim vemos a necessidade de colocar ambos sistemas operacionais para se comunicar em um ambiente de rede; e conseguimos tal feito graças ao protocolo SMB.
Neste documento será abordado em todos os detalhes necessários em como montar um Primary Domain Server (PDC) utilizando Samba + OpenLDAP. Este documento não aborda a explicação teórica, mas sim a parte prática de tudo isso.
Minha intenção na elaboração dessa solução é a unificação da autenticação dos usuários da empresa, podendo assim os clientes acessarem todos os serviços disponibilizados utilizando apenas 1 (um) usuário e senha.
Pacotes utilizados a seguir os pacotes que foram necessários nesta instalação. Neste instante considerarei que todo o sistema operacional esteja instalado e configurado, pois não abordaremos a instalação do Linux.
Sugiro que você crie um diretório e armazene todos os pacotes dentro desse, o meu foi criado dentro do /opt:
# mkdir -p /opt/ldap
Para a nosso LDAP-Server Linux, deveremos obter:
samba-3.0.20.tar.gz
http://us5.samba.org/samba/ftp/stable/samba-3.0.20.tar.gz
smbldap-tools_0.9.2.orig.tar.gz
http://ftp.ccc.uba.ar/download/…/smbldap-tools_0.9.2.orig.tar.gz
cyrus-sasl-2.1.22.tar.gz
http://sunsite.rediris.es/pub/mirror/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
openldap-2.3.24.tgz
ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.24.tgz
nss_ldap-251.tgz
http://www.padl.com/download/nss_ldap.tgz
MigrationTools-57.tgz
http://www.padl.com/download/MigrationTools.tgz
Authen-SASL-2.10.tar.gz
http://www.cpan.org/authors/…/Authen-SASL-2.10.tar.gz
Convert-ASN1-0.20.tar.gz
http://search.cpan.org/CPAN/…/Convert-ASN1-0.18.tar.gz
Crypt-SmbHash-0.12.tar.gz
ftp://ftp.inria.fr/pub/CPAN/…/Crypt-SmbHash-0.12.tar.gz
Digest-SHA1-2.11.tar.gz
http://search.cpan.org/CPAN/…/Digest-SHA1-2.11.tar.gz
IO-Socket-SSL-0.97.tar.gz
http://mirrors.ibiblio.org/pub/…/IO-Socket-SSL-0.97.tar.gz
Jcode-2.05.tar.gz
http://search.cpan.org/CPAN/…/Jcode-2.05.tar.gz
Net_SSLeay.pm-1.25.tar.gz
http://mirror.uta.edu/CPAN/…/Net_SSLeay.pm-1.25.tar.gz
URI-1.33.tar.gz
http://www.volity.org/frivolity/perl/URI-1.33.tar.gz
Unicode-Map-0.112.tar.gz
http://search.cpan.org/CPAN/…/Unicode-Map-0.112.tar.gz
Unicode-Map8-0.12.tar.gz
http://search.cpan.org/CPAN/…/Unicode-Map8-0.12.tar.gz
Unicode-MapUTF8-1.11.tar.gz
http://search.cpan.org/CPAN/…/Unicode-MapUTF8-1.11.tar.gz
Unicode-String-2.09.tar.gz
http://search.cpan.org/CPAN/…/Unicode-String-2.09.tar.gz
XML-SAX-Base-1.04.tar.gz
http://www.volity.org/frivolity/perl/XML-SAX-Base-1.04.tar.gz
perl-ldap-0.33.tar.gz
http://search.cpan.org/CPAN/…/perl-ldap-0.33.tar.gz
httpd-2.0.58.tar.gz
http://ftp.unicamp.br/pub/apache/httpd/httpd-2.0.58.tar.gz
php-5.1.4.tar.gz
http://br2.php.net/get/php-5.1.4.tar.gz/from/us2.php.net/mirror
ldap-account-manager-1.0.2.tar.gz
http://prdownloads.sourceforge.net/…/ldap-account-manager-1.0.2.tar.gz
Ambiente utilizado
Foi utilizado Slackware 10.2.0 com kernel 2.4.31, pois como já é um kernel default no Slackware, certamente está estável. O ambiente utilizado foi uma máquina virtual construída através do software Vmware Workstation.
Foi utilizado o ldap-account-manager como front-end, pois eu o achei mais amigável em relação aos outros front-ends utilizados, mas isso fica a critério do administrador.
Instalando O Cyrus-SaslO Cyrus-Sasl é um pacote de autenticação segura que vamos usar para o Samba:
# tar -zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./configure –with-bdb-libdir=/usr/lib –with-bdb-incdir=/usr/include/db4
# make
# make install
Se tudo correu bem, vamos criar um link simbólico para que o LDAP consiga acessar o DB. Para isso faça o comando:
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
OBS: É necessário que seu sistema tenha o DB4 instalado.
Atualize a biblioteca do seu sistema rodando o comando:
# ldconfig
O LDAP (Lightweight Directory Access Protocol) é um protocolo utilizado pelos servidores para concentrar informações em um repositório logicamente organizado. É graças a ele que informações comuns podem ser inseridas, alteradas, excluídas e consultadas de uma espécie de “banco de dados de informações”. Ao se registrar um usuário no domínio, por exemplo, as informações referentes a esse usuário estarão armazenadas e disponíveis graças ao uso deste protocolo. Por sua vez, o OpenLDAP é uma implementação OpenSource do LDAP.
# tar -zxvf openldap-2.3.24.tgz
# cd openldap-2.3.24
# env CPPFLAGS=”-I/usr/include/db4″ LDFLAGS=”-L/usr/lib” ./configure –enable-crypt
# make depend
# make
# make install
Configurando o servidor LDAP
No pacote do Samba existe o “samba.schema”, que será necessário aqui. Vamos apenas descompactar o Samba:
# tar -zxvf samba-3.0.20.tar.gz
Agora basta copiar o arquivo “samba.schema” para que seja carregado no LDAP:
# cp /opt/ldap/samba-3.0.20/examples/LDAP/samba.schema /usr/local/etc/openldap/schemas
Lembrando que o “qmail.schema” foi incluído porque usarei esta mesma base para a autenticação no Postfix, que instalarei futuramente.
O nosso slapd.conf, que está no diretório /usr/local/etc/openldap/slapd.conf, deverá ficar da seguinte forma:
OBS: O rootpw deve ser gerado com slappasswd.
# slapd.conf
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/samba.schema
include /usr/local/etc/openldap/schema/qmail.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
database bdb
suffix “dc=linuxajuda,dc=org”
rootdn “cn=administrador,dc=linuxajuda,dc=org”
rootpw {SSHA}KwwbIdAjWcAOlxLjgq0O4iRnl7C05NhZ
directory /usr/local/var/openldap-data
password-hash {CRYPT}
password-crypt-salt-format “$1$.8s”
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,mailAlternateAddress,givenname,accountStatus,mailHost,deliveryMode eq
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index default sub
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read
Navegação
Populando o LDAP
Como nossa base é bem simples, basta criar um arquivo chamado /root/base.ldif com o seguinte conteúdo:
dn: dc=linuxajuda,dc=org
dc: linuxajuda
objectClass: top
objectClass: domain
dn: ou=Usuarios,dc=linuxajuda,dc=org
ou: Usuarios
objectClass: top
objectClass: organizationalUnit
dn: ou=Grupos,dc=linuxajuda,dc=org
ou: Grupos
objectClass: top
objectClass: organizationalUnit
dn: ou=Computadores,dc=linuxajuda,dc=org
ou: Computadores
objectClass: top
objectClass: organizationalUnit
Agora é só incluir essas entradas no LDAP usando o comando abaixo:
# ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/base.ldif
Enter LDAP Password:
adding new entry “dc=linuxajuda,dc=org”
adding new entry “ou=Usuarios,dc=linuxajuda,dc=org”
adding new entry “ou=Grupos,dc=linuxajuda,dc=org”
adding new entry “ou=Computadores,dc=linuxajuda,dc=org”
Com isso nossa base já está inicializada, um simples “ldapsearch -x” mostra como ela ficou.
Agora migraremos nossas contas do sistema para o LDAP usando o MigrationTools.
Migrando os grupos e usuários
Agora migraremos nossas contas do sistema para o LDAP:
# tar zxvf MigrationTools.tgz
# cd MigrationTools-47
Edite o arquivo migrate_common.ph e altere as seguintes linhas:
$NAMINGCONTEXT{‘passwd’} = “ou=Usuarios”;
$NAMINGCONTEXT{‘group’} = “ou=Grupos”;
$DEFAULT_MAIL_DOMAIN = “linuxajuda.org”;
$DEFAULT_BASE = “dc=linuxajuda,dc=org”;
$DEFAULT_MAIL_HOST = “mail.linuxajuda.org”;
Salve e execute o seguinte comando para gerar o arquivo “grupos.ldif”, que conterá todos os grupos do sistema:
# ./migrate_group.pl /etc/group /root/grupos.ldif
Com isso ele irá gerar o arquivo /root/grupos.ldif com as entradas necessárias para o LDAP.
Agora vamos inserir as entradas dos grupos no LDAP:
# ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/grupos.ldif
Pronto! Ele adicionou todos os grupos do sistema no LDAP. Não podemos esquecer de adicionar também os usuários:
# ./migrate_passwd.pl /etc/passwd /root/usuarios.ldif
# ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/usuarios.ldif
Pronto, nossa base do sistema já esta ok, basta agora informarmos para o sistema se autenticar no LDAP.
Instale o pacote de configurações de contas:
# tar zxvf nss_ldap.tgz
# cd nss_ldap-251
# ./configure
# make
# make install
É necessário modificar o arquivo /etc/ldap.conf:
host 127.0.0.1
base dc=linuxajuda,dc=org
rootbinddn cn=administrador,dc=linuxajuda,dc=org
Vamos agora modificar as linhas do /etc/nsswitch.conf, esse arquivo é onde o sistema busca as informações de login.
Altere as seguintes linhas para que fique assim:
passwd: files ldap
shadow: files ldap
group: files ldap
passwd: compat ldap
group: compat ldap
Agora vamos testar o LDAP:
# id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy)
se você verificar nos logs, vai ver que ele buscou as entradas no LDAP:
# tail /var/log/debug
Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SRCH base=”dc=tropical,dc=local” scope=2 deref=0 filter=”(&(objectClass=posixGroup))”
Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SRCH attr=cn userPassword memberUid gidNumber
Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SEARCH RESULT tag=101 err=0 nentries=44 text=
Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SRCH base=”dc=tropical,dc=local” scope=2 deref=0 filter=”(&(objectClass=posixGroup))”
Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SRCH attr=cn userPassword memberUid gidNumber
Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SEARCH RESULT tag=101 err=0 nentries=44 text=
Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SRCH base=”dc=tropical,dc=local” scope=2 deref=0 filter=”(&(objectClass=posixGroup)(gidNumber=512))”
Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SRCH attr=cn userPassword memberUid gidNumber
Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SEARCH RESULT tag=101 err=0 nentries=1 text=
Jun 29 17:17:03 tropical slapd[2521]: conn=11 fd=12 closed (connection lost)
Bom, o LDAP já está funcionando!
Samba
Vamos agora à parte que devemos ter mais atenção, que é a do Samba.
Como já tínhamos descompactado anteriormente, vamos entrar no diretório dele:
# cd samba-3.0.20
# env CPPFLAGS=”-I/usr/local/include/”
# ./configure –bindir=/usr/local/bin –sbindir=/usr/local/sbin –libexecdir=/usr/local/libexec –with-configdir=/etc/samba –with-mandir=/usr/local/man –with-logfilebase=/var/log/samba –enable-cups –with-smbmount –with-ldapsam –with-syslog –with-quotas –with-acl-support –with-ads –enable-debug –with-winbind –with-krb5=/usr –enable-krb5developer
OBS: As duas últimas opções, –with-krb5=/usr e –enable-krb5developer, use somente se você tiver o kerberos instalado, caso contrário não precisa.
# make
# make install
Vamos agora ao smb.conf, depois de uns três dias ralando em cima do Samba, pude realmente chegar a configuração ideal para ele implementado ao LDAP. Segue o smb.conf:
[global]
workgroup = LINUXAJUDA
netbios name = PDC-SRV
server string = Slackware
security = user
encrypt passwords = yes
guest account = nobody
log file = /var/log/samba/%m.log
max log size = 50
os level = 100
local master = yes
domain master = yes
preferred master = yes
domain logons = yes
admin users = administrador root
logon script = %U.bat
logon path = %Lprofiles%U
hosts allow = 10.0.0. 127.
wins support = no
dns proxy = no
ldap passwd sync = yes
ldap delete dn = Yes
passdb backend = ldapsam:ldap://127.0.0.1/
ldap admin dn = cn=administrador,dc=linuxajuda,dc=org
ldap suffix = dc=linuxajuda,dc=org
ldap group suffix = ou=Grupos
ldap user suffix = ou=Usuarios
ldap machine suffix = ou=Computadores
ldap idmap suffix = ou=Idmap
idmap backend = ldap:ldap://127.0.0.1
idmap uid = 10000-15000
idmap gid = 10000-15000
template shell = /bin/false
winbind use default domain = no
;smb passwd file=/etc/samba/smbpasswd
passwd program=/usr/bin/passwd %u
passwd chat = *New*password* %n *Retype*new*password* %n
;#*passwd:*all*authentication*tokens*updated*successfully*
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
add machine script = /usr/local/sbin/smbldap-useradd -w “%u”
add user script = /usr/local/sbin/smbldap-useradd -m “%u”
delete user script = /usr/local/sbin/smbldap-userdel “%u”
add machine script = /usr/local/sbin/smbldap-useradd -w “%u”
add group script = /usr/local/sbin/smbldap-groupadd -p “%g”
delete group script = /usr/local/sbin/smbldap-groupdel “%g”
add user to group script = /usr/local/sbin/smbldap-groupmod -m “%u” “%g”
delete user from group script = /usr/local/sbin/smbldap-groupmod -x “%u” “%g”
set primary group script = /usr/local/sbin/smbldap-usermod -g “%g” “%u”
dos charset = UTF-8
unix charset = UTF-8
[homes]
comment = Diretório Home
browseable = no
writable = yes
create mask = 0700
directory mask = 0700
force user = %U
[profiles]
path = /home/profiles
browseable = no
writeable = yes
force user = %U
valid users = %U @”Domain Admins”
[netlogon]
path = /home/netlogon
browseable = no
guest ok = no
writeable = no
share modes = no
read only = yes
[printers]
comment = Impressoras
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[publico]
comment = Área Publica
path = /publico
browseable = yes
create mask = 0777
directory mask = 0777
guest ok = yes
writable = yes
force user = %U
[sistema]
comment = Área do Sistema da Empresa
path = /sistema
browseable = yes
create mode = 0777
directory mask = 0777
guest ok = yes
writable = yes
force user = %U
Edite-o de acordo com suas necessidades.
Agora vamos criar um script para iniciar o Samba:
# vim /etc/rc.d/rc.samba
#!/bin/sh
#
# /etc/rc.d/rc.samba
#
# Start/stop/restart the Samba SMB file/print server.
#
# To make Samba start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.samba
#
samba_start() {
if [ -x /usr/local/sbin/smbd -a -x /usr/local/sbin/nmbd -a -r /etc/samba/smb.conf ]; then
echo “Starting Samba: /usr/local/sbin/smbd -D”
/usr/local/sbin/smbd -D
echo “/usr/local/sbin/nmbd -D”
/usr/local/sbin/nmbd -D
fi
}
samba_stop() {
killall smbd nmbd
}
samba_restart() {
samba_stop
sleep 2
samba_start
}
case “$1″ in
‘start’)
samba_start
;;
‘stop’)
samba_stop
;;
‘restart’)
samba_restart
;;
*)
# Default is “start”, for backwards compatibility with previous
# Slackware versions. This may change to a ‘usage’ error someday.
samba_start
esac
Crie o diretório /var/log/samba e rode o script /etc/rc.d/rc.samba:
# /etc/rc.d/rc.samba start
Pronto, o Samba está no ar, agora vamos configurar o smbldap-tools, que é uma ferramenta de administração do LDAP.
Eu particularmente prefiro usar um front-end, pois pode acontecer de dar alguns erros com ela, mas não deixa de ser uma boa ferramenta para administração.
# tar zxvf smbldap-tools_0.9.2.orig.tar.gz
# cd smbldap-tools_0.9.2
# cp -f smbldap-* /usr/local/sbin/
# mkdir /etc/smbldap-tools/
# cp smbldap.conf smbldap_bind.conf /etc/smbldap-tools/
# chmod 644 /etc/smbldap-tools/smbldap.conf
# chmod 600 /etc/smbldap-tools/smbldap_bind.conf
Vamos editar o arquivo de configuração do smbladp-tools, que fica dentro do diretório que você acabou de criar. Lembrando que: o SID é obtido com o seguinte comando:
# net getlocalsid linuxajuda
# smbldap.conf
SID=”S-1-5-21-4172198711-3320573932-1449352776″
sambaDomain=”LINUXAJUDA”
slaveLDAP=”127.0.0.1″
slavePort=”389″
masterLDAP=”127.0.0.1″
masterPort=”389″
ldapTLS=”0″
verify=”"
cafile=”"
clientcert=”"
clientkey=”"
suffix=”dc=linuxajuda,dc=org”
usersdn=”ou=Usuarios,${suffix}”
computersdn=”ou=Computadores,${suffix}”
groupsdn=”ou=Grupos,${suffix}”
idmapdn=”ou=Idmap,${suffix}”
sambaUnixIdPooldn=”cn=NextFreeUnixId,${suffix}”
scope=”sub”
# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt=”CRYPT”
crypt_salt_format=”$1$%.8s”
userLoginShell=”/bin/false”
userHome=”/home/%U”
userHomeDirectoryMode=”700″
userGecos=”Ldap User”
defaultUserGid=”1000″
defaultComputerGid=”1000″
skeletonDir=”/etc/skel”
defaultMaxPasswordAge=”45″
userSmbHome=”PDC-SRV%U”
userProfile=”PDC-SRVprofiles%U”
userHomeDrive=”H:”
#userScript=”%U.bat”
mailDomain=”tropical.local”
with_smbpasswd=”0″
smbpasswd=”/usr/bin/smbpasswd”
with_slappasswd=”0″
slappasswd=”/usr/sbin/slappasswd”
# no_banner=”1″
E se notar, após isso ele automaticamente cria uma entrada no LDAP:
# ldapsearch -x
dn: sambaDomainName=linuxajuda,dc=linuxajuda,dc=org
sambaDomainName: linuxajuda
sambaSID: S-1-5-21-4172198711-3320573932-1449352776
sambaAlgorithmicRidBase: 1000
objectClass: sambaDomain
sambaNextUserRid: 31000
sambaNextGroupRid: 31001
Agora vamos armazenar a senha do admin do LDAP no secrets:
# smbpasswd -w SENHA
Edite o arquivo /etc/smbldap-tools/smbldap_bind.conf e configure da seguinte forma:
slaveDN=”cn=administrador,dc=linuxajuda,dc=org”
slavePw=”senha”
masterDN=”cn=administrador,dc=linuxajuda,dc=org”
masterPw=”senha”
Após isso é necessário copiar o arquivo smbldap_tools.pm para o diretório /usr/lib/perl5/5.8.7/i486-linux/:
# cp smbldap_tools.pm /usr/lib/perl5/5.8.7/i486-linux/
Pacotes Perl
Agora vamos instalar os pacotes de módulos para o Perl. Descompacte um por um e use logo abaixo os comandos para instalação:
# tar -zxvf (em cada arquivo desse)
Convert-ASN1-0.20.tar.gz
Authen-SASL-2.10.tar.gz
Crypt-SmbHash-0.12.tar.gz
Digest-SHA1-2.11.tar.gz
IO-Socket-SSL-0.97.tar.gz
Jcode-2.05.tar.gz
Net_SSLeay.pm-1.25.tar.gz
URI-1.33.tar.gz
Unicode-Map-0.112.tar.gz Unicode-Map8-0.12.tar.gz
Unicode-String-2.09.tar.gz
XML-SAX-Base-1.04.tar.gz
perl-ldap-0.33.tar.gz
Entre no diretório de cada um e execute:
# perl Makefile.PL
# make
# make test
# make install
Pronto, agora precisamos informar qual será o próximo uid disponível para ele criar os usuários. Para isso, inserimos a seguinte entrada no LDAP.
Salve as seguintes informações em um arquivo chamado “nextuid.ldif”:
dn: cn=NextFreeUnixId,dc=linuxajuda,dc=org
objectClass: inetOrgPerson
objectClass: sambaUnixIdPool
uidNumber: 1000
gidNumber: 1000
cn: NextFreeUnixId
sn: NextFreeUnixId
Inclua a entrada no LDAP:
# ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org, -W -f root/nextuid.ldif
Agora que temos nossa base praticamente pronta, vamos popular a base usando o comando abaixo:
# smbldap-populate
Pronto, nosso LDAP + Samba já está praticamente funcionando, bastando apenas administrá-lo. É agora que entra o LDAP Administrator Manager (LAM).
Primeiramente vamos instalar o servidor web (Apache):
# tar -zxvf httpd-2.0.58.tar.gz
# cd httpd-2.0.58
# ./configure –enable-so
# make
# make install
Em seguida vamos instalar o PHP, resolvi usar o PHP5 que já está bem estável:
# tar -zxvf php-5.1.4.tar.gz
# cd php-5.1.4
# env CPPFLAGS=”-I/usr/local/include”
# ./configure –with-ldap –with-gettext –libexecdir=/usr/libexec/apache –with-apxs2=/usr/local/apache2/bin/apxs –with-mhash
# make
# make install
Inclua as linhas abaixo no seu httpd.conf, que fica em /usr/local/apache2/confs/httpd.conf:
# Confira se o PHP já não incluiu essa linha no seu conf
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
Feito isso vamos iniciar o Apache:
# /usr/local/apache2/bin/apachectl start
LAM – Ldap Account Manager
Depois de muito estudar sobre um bom front-end que pudesse me dar todas as ferramentas para uma boa administração do LDAP, acabei encontrando o LAM, mas existem várias outras ferramentas, como o PhpLdapAdmin por exemplo.
Agora vamos instalar o Ldap Account Manager. Primeiro crie o usuário e o grupo httpd:
# useradd httpd
# groupadd httpd
Depois pegue o pacote ldap-account-manager-1.0.2.tar.gz e o mova para:
# mv ldap-account-manager-1.0.2.tar.gz /usr/local/apache2/htdocs
Descompacte-o:
# tar -zxvf ldap-account-manager-1.0.2.tar.gz
Renomeie-o:
# mv ldap-account-manager-1.0.2 lam/
Entre no diretório:
# cd /usr/local/apache2/htdocs/lam
# ./configure
# make install
Agora vamos configurá-lo. Entre no diretório /usr/local/apache2/htdocs/lam/config e copie os arquivos config.cfg.example e lam.conf.example:
# cp config.cfg.example config.cfg
# cp lam.conf.example lam.conf
Agora vamos editar os arquivos config.cfg e lam.conf.
Deixe seu config.cf exatamente assim:
password to add/delete/rename configuration profiles
password: system
# default profile, without “.conf”
default: lam
E o lam.config:
# LDAP Account Manager configuration
# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)
serverURL: ldap://localhost:389
# list of users who are allowed to use LDAP Account Manager
# names have to be seperated by semicolons
# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org
admins: cn=administrador,dc=tropical,dc=local
# password to change these preferences via webfrontend
passwd: system
# suffix of tree view
# e.g. dc=yourdomain,dc=org
treesuffix: dc=tropical,dc=local
usersuffix: ou=Usuarios,dc=tropical,dc=local
groupsuffix: ou=Grupos,dc=tropical,dc=local
hostsuffix: ou=Computadores,dc=tropical,dc=local
domainsuffix: ou=Dominios,dc=tropical,dc=local
# maximum number of rows to show in user/group/host lists
maxlistentries: 30
# default language (a line from config/language)
defaultLanguage: en_GB.utf8:UTF-8:English (Great Britain)
# Path to external Script
scriptPath:
# Server of external Script
scriptServer:
# Number of minutes LAM caches LDAP searches.
cachetimeout: 5
samba3: yes
# Module settings
modules: posixAccount_minUID: 10000
modules: posixAccount_maxUID: 30000
modules: posixAccount_minMachine: 50000
modules: posixAccount_maxMachine: 60000
modules: posixGroup_minGID: 10000
modules: posixGroup_maxGID: 20000
modules: posixGroup_pwdHash: CRYPT
modules: posixAccount_pwdHash: CRYPT
# List of active account types.
activeTypes: user,group,host,smbDomain
types: suffix_user: ou=Usuarios,dc=tropical,dc=local
types: attr_user: #uid;#givenName;#sn;#uidNumber;#gidNumber
types: modules_user: inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
types: suffix_group: ou=Grupos,dc=tropical,dc=local
types: attr_group: #cn;#gidNumber;#memberUID;#description
types: modules_group: posixGroup,sambaGroupMapping
types: suffix_host: ou=Computadores,dc=tropical,dc=local
types: attr_host: #cn;#description;#uidNumber;#gidNumber
types: modules_host: account,posixAccount,sambaSamAccount
types: suffix_smbDomain: ou=Dominios,dc=tropical,dc=local
types: attr_smbDomain: sambaDomainName:Domain name;sambaSID:Domain SID
types: modules_smbDomain: sambaDomain
Implementando SSL ao seu LDAP Server
Todo administrador sempre deve estar preocupado com a segurança de seus servidores, por isso aqui esta uma boa solução para acrescentar ao seu LDAP Server. A seguir vamos aplicar as configurações ao LDAP usando os utilitários do OpenSSL para gerar as chaves auto-assinadas para ele.
Gerando as chaves criptografadas
Note que as chaves deverão ser geradas dentro do diretório /usr/local/etc/openldap/certificates/.
Foi desabilitada a verificação do certificado (se há alguma entidade certificadora que garante que você é você mesmo). Estamos apenas interessados em usar um túnel criptografado.
Primeiramente vamos criar um diretório dentro do /usr/local/etc/openldap chamado certificates e depois um script para gerar as chaves criptografadas.
Utilize seu editor de textos preferido e crie o script gerador.sh:
#!/bin/sh
# /usr/local/etc/openldap/certificates/gerador.sh
# Certificado para a função “server”
echo “É necessário prover uma senha para a chave privada.”
openssl genrsa -des3 -out server.key 4096
# Esta linha agora REMOVE a passphrase da chave privada
echo “Digite primeiro a senha da chave privada, depois um para remova-la”
openssl rsa -in server.key -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.csr
# Certificado para a função “client”
echo “Gerando a chave para o client. Mesmo procedimento anterior”
openssl genrsa -des3 -out client.key 1024
openssl rsa -in client.key -out client.key
openssl req -new -key client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.csr
Use o comando a baixo para rodar o script:
# sh gerador.sh
Ele fará algumas perguntas (veja abaixo) como requisição se senhas, escolha uma senha de maneira que você não vá esquecê-la, eu usei a mesma do admin.
É necessário prover uma senha para a chave privada.
Generating RSA private key, 4096 bit long modulus
…
e is 65537 (0×10001)
Enter pass phrase for server.key:
Verifying – Enter pass phrase for server.key
Digite primeiro a senha da chave privada, depois um <ENTER> para removê-la.
Enter pass phrase for server.key:
riting RSA key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Goias
Locality Name (eg, city) []:Goiania
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Canal Linuxajuda
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:administrador
Email Address []:administrador@linuxajuda.org
Please enter the following ‘extra’ attributes
to be sent with your certificate request
challenge password []:system
An optional company name []:
Signature ok
subject=/C=BR/ST=Goias/L=Goiania/O=Canal Linuxajuda/CN=administrador/emailAddress=administrador@linuxajuda.org
Getting Private key
Gerando a chave para o client. Mesmo procedimento anterior
Generating RSA private key, 1024 bit long modulus
…
e is 65537 (0×10001)
Enter pass phrase for client.key:
Verifying – Enter pass phrase for client.key:
Enter pass phrase for client.key:
writing RSA key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Goias
Locality Name (eg, city) []:Goiania
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Canal Linuxajuda
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:administrador
Email Address []:administrador@linuxajuda.org
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:system
An optional company name []:
Signature ok
subject=/C=BR/ST=Goias/L=Goiania/O=Canal Linuxajuda/CN=administrador/emailAddress=administrador@linuxajuda.org
Getting Private key
OBS: Onde perdir “Enter pass phrase for client” ou server, digite uma senha.
O LDAP e seus arquivos de configurações
São necessários 2 pequenas configurações no OpenLDAP para que ele aceite o certificado criado.
Em /etc/openldap/slapd.conf:
TLSCertificateFile /etc/openldap/certificates/server.csr
TLSCertificateKeyFile /etc/openldap/certificates/server.key
TLSVerifyClient 0
Após isso modifique o arquivo /etc/ldap.conf para:
host ldap.luizoliveira.org
base dc=luizoliveira,dc=org
uri ldaps://ldap.luizoliveira.org
rootbinddn cn=administrador,dc=luizoliveira,dc=org
port 636
ssl true
TLS_CERT /etc/openldap/certificates/client.csr
TLS_KEY /etc/openldap/certificates/client.key
TLS_REQCERT never
Altere a linha no smb.conf de:
passdb backend = ldapsam:ldap://ldap.luizoliveira.org/
para:
passdb backend = ldapsam:ldaps://ldap.luizoliveira.org/
Vamos alterar também o lam.conf:
ServerURL: ldaps://ldap.tropical.local:636
Altere o smbldap.conf nas seguintes linhas:
slavePort=”636″
masterPort=”636″
Depois de gerar o certificado, tive que incluir uma entrada no DNS para o LDAP porque ele estava reclamando o hostname, aí bastou incluir ldap.luizoliveira.org no DNS e estava resolvido.
Edite o arquivo /etc/resolv.conf e acrescente a linha:
nameserver ldap.luizoliveira.org
Edite também o /etc/hosts:
10.0.0.101 ldap.luizoliveira.org
Agora basta inicializar o slapd com o seguinte comando:
# /usr/local/libexec/slapd -h “ldap:/// ldaps:///” -4
OBS: Acrescente essa linha no seu rc.local para carregar seu LDAP no boot.
Agora vamos aos testes:
# ldapsearch -x -ZZ -h ldap.luizoliveiraorg -b ‘dc=luizoliveira,dc=org’ (objectclass=*)’
Habilitando o SASL
Primeiro armazenamos a senha do usuário suporte com:
# saslpasswd2 -c administrador
Podemos listar os usuários com:
# sasldblistusers2
administrador@luizoliveira: cmusaslsecretOTP
administrador@luizoliveira: userPassword
Seu sistema ficou lento na inicialização?
Depois que instalei o LDAP e alterei o nsswitch.conf, percebi que o sistema operacional tinha ficado lento tanto pra iniciar quanto pra fazer login e digitar alguns comandos, foi então que quase sem querer encontrei a solução para o meu problema. Creio que você possa ter o mesmo problema que eu, mas vamos lá a solução:
Abra o arquivo /etc/rc.d/rc.S e localize o trecho “Create a fresh utmp file:”;
Comente a linha “chown root.utmp /var/run/utmp”;
Mude a linha “chmod 664 /var/run/utmp” para “chmod 666 /var/run/utmp”;
Abra o arquivo /etc/rc.d/rc.local e adicione as próximas duas linhas:
chown root.utmp /var/run/utmp
chmod 664 /var/run/utmp
Pronto, seu sistema está rápido de novo!
Adicionando as máquinas Windows 98 no Samba
1. Editar as propriedades de rede;
2. Editar as propriedades do “Cliente para redes Microsoft”;
3. Selecionar a opção “Efetuar logon no domínio do Windows NT”;
4. Na opção “Domínio do Windows NT”, digitar o nome do domínio;
5. Selecionar a opção de “Logon rápido” e pressionar OK;
6. Na opção “Logon primário da rede”, selecionar clientes para redes Microsoft, aplicar as alterações e reiniciar o computador.
Para alterar a senha do usuário logado:
1.Entrar no “Painel de Controle”;
2.Entrar no ícone “Senhas”;
3.Clicar em “Alterar a senha do Windows”;
4.Selecionar “Rede Microsoft” e pressionar OK;
5.Digitar a senha atual, digitar a nova senha e confirmá-la;
6.Clicar no botão detalhes e selecionar a opção “Rede Microsoft”;
9.Pressionar OK e fechar todas as janelas.
No servidor, rode o comando abaixo para cadastrá-la no domínio:
# smbldap-useradd -w Maq01
Adicionando máquinas Windows XP/2000/2003 no Samba1.
Logar como um usuário local e administrador do sistema;
2. Entrar no “Painel de Controle” em modo de exibição clássico, editar as propriedades do ícone “Sistema”;
3. Clicar na aba “Nome do Computador” e no botão “ID da Rede”;
4. Na janela que irá aparecer, clicar em “Avançar”;
5. Selecionar a opção “Este computador faz parte de uma rede corporativa…” e clicar em “Avançar”;
6. Selecionar a opção “Minha empresa usa uma rede com um domínio”, clicar em “Avançar” e clicar em “Avançar” novamente;
7. Digitar no “nome do usuário” um usuário que já exista no Samba, sua senha e o domínio e clicar em “Avançar”;
8. Digitar o nome do computador em questão, o domínio novamente e clicar em “Avançar”;
9. Digitar “root” no nome do usuário e sua senha e o domínio do Samba.
10. Deixar selecionado a opção “Inserir o seguinte usuário” e clicar em “Avançar”;
11. Selecionar o nível de acesso “Outros”, selecionar o grupo “Administradores” e clicar e “Avançar” e “Concluir”, mas NÃO reiniciar o computador;
12. Entrar no “Painel de Controle” em modo de exibição clássico e entrar em “Ferramentas Administrativas”;
13. Entrar em “Diretiva de Segurança local” e depois abrir a chave “Diretivas locais” e clicar em “Opções de Segurança”;
Dentro dessa janela as seguintes opções devem ser desabilitadas:
Membro do domínio: criptografar ou assinar digitalmente os dados do canal seguro (sempre).
Membro do domínio: desativar alterações de senha de conta da máquina.
Membro do domínio: requerer uma chave de sessão de alta segurança (Windows 2000 ou posterior).
No registro, alterar/incluir a chave:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices netlogonparameters”RequireSignOrSeal”=dword:00000000
Windows 2003/2000 Servers
1. Logar como um usuário local e administrador do sistema;
2. Entrar no “Painel de Controle”, editar as propriedades do ícone “Sistema”;
3. Clicar na Aba “Identificação de rede” e no botão “Identificação da Rede”;
4. Na janela que irá aparecer clicar em “Avançar”;
5. Selecionar a opção “Este computador faz parte de uma rede corporativa…” e clicar em “Avançar”;
6. Selecionar a opção “Minha empresa usa uma rede com um domínio” e clicar em “Avançar” e clicar em “Avançar” novamente;
7. Digitar no “nome do usuário” um usuário que já exista no Samba devidamente configurado, sua senha, domínio e clicar em “Avançar”;
8. Digitar o nome do computador em questão e também o domínio novamente e clicar em “Avançar”;
9. Digitar “root” no nome do usuário, sua senha e o domínio do Samba.
10. Deixar selecionada a opção “Inserir o seguinte usuário” e clicar em “Avançar”;
11. Selecionar o nível de acesso “Outros” e selecionar o grupo “Administradores” e clicar e “Avançar” e “Concluir”, e reiniciar o computador.
Não se esqueça de adicionar as suas estações no Samba:
# smbladp-useradd -w maq02
e assim por diante.
Integrando seu Squid ao LDAP
Bom, agora que já temos nosso servidor Samba com Active Directory usando o LDAP, pensei porque não colocar os usuários de internet para autenticar no LDAP para acessar a internet, lembrando que não vou abordar uma configuração mais afundo do Squid, para isso você deverá buscar em outras faqs ou manuais. Segue a baixo como instalar o Squid com suporte a LDAP:
# tar -zxpvf squid-2.5.STABLE8.tar.gz
# cd /root/ squid-2.5.STABLE8
Faremos a compilação básica e depois compilaremos os programas de autenticação LDAP separadamente. Para tanto, use a famosa seqüência:
# ./configure – -prefix=/usr/local/squid (sendo /usr/local/squid o local onde o squid será instalado)
# make
# make install
Mude a propriedade do diretório Squid de root para nobody e crie o cache:
# chown -R nobody.nobody /usr/local/squid
# squid -z
Depois mude a propriedade do diretório /usr/local/squid/cache:
# chown -R nobody.nobody /usr/local/squid/cache
Com isso o seu Squid já estará instalado e pronto pra ser configurado.
Agora passaremos para o passo seguinte, onde iremos acessar squid-2.5.STABLE8/helpers /basic_auth/LDAP e compilar o daemon squid_ldap_auth, que fará a autenticação de usuários no AD:
# cd /squid-2.5.STABLE8/helpers /basic_auth/LDAP
# make
Após a compilação, copie o daemon squid_ldap_auth para dentro da libexec:
# cp squid_ldap_auth /usr/local/squid/libexec
Acesse squid-2.5.STABLE8/helpers/external_acl/ldap_group e compile o daemon squid_ldap_group:
# cd /squid-2.5.STABLE8/helpers/external_acl/ldap_group:
# make
Após a compilação, copie o squid_ldap_auth para dentro da libexec:
# cp squid_ldap_group /usr/local/squid/libexec
Agora adicione as seguintes linhas no seu squid.conf:
## Configurações de autenticação do proxy <-> ldap (troque o IP pelo do seu domínio)
auth_param basic realm (Canal Linuxajuda): Autenticação de Usuário para Internet
auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -R -b “ou=Usuarios,ou=People,dc=linuxajuda,dc=org” -f “uid=%s” -s one -h 10.0.0.101
auth_param basic children 3
auth_param basic casesensitive off
auth_param basic credentialsttl 15 minutes
Feito isso, reinicie todos os serviços.
RSS Feed
Twitter

Posted in