sábado, 24 de janeiro de 2009

Configurando Modem DLink DSL-500G para Speedy

Configurando Modem DLink DSL-500G para Speedy

Ola pessoal,

Segue um roteiro, utilizado com sucesso, junto ao suporte da D-Link Brasil, a quem gostaria de agradecer.

Enjoy

Abracos,
Alexandre Zancope


1) Primeiro passo depois da instalação física, conectar ao Modem, através:

2) Conectar com username e password como admin

3) Depois de conectado com o usuário correto a tela principal aparecerá:

4) Vá em Admin à Commit & Reboot:

5) Selecione a opção Reboot From Default Configuration na caixa de rolagem e em seguida clique no botão Reboot

6) Depois de renicializado o modem, a tela atual retorna com o sucesso do reboot. Neste momento o leds deve estar:

Power à verde e aceso

Status à verde e piscando

ADSL à verde e aceso

Ethernet à verde e aceso

7) Com o estado acima correto, vá em Home à Quick Configuration:

8) A tela Quick Configuration (a direita), deve conter as seguintes modificações:

PVC = 0

Operation Mode = Enabled

Connection Type = PPPoE LLC

VPI = 8

VCI = 35

Bridge = Disabled

Use IP Unnumber= Disable

IP Address, Subnet Mask e Gateway IP Address = tudo com 0 (zero)

Default Route = Enabled

Security Protocol = PAP

Username = usuário do provedor (azancope@uol.com.br)

Password = senha de conexão do usuário

Use DNS = Enable

Primary DNS Server e Secondary DNS Server = tudo com 0 (zero)

Depois de configurado, clique no botão Submit.

9) Depois disto vá em Services à NAT:

A opção NAT Global Info deve estar com opção Enable ativada. Caso não esteja, faça-o clicando sobre a opção Enable.

Depois clicar no botão Submit

10) Para salvar a configuração vá em Admin à Commit & Reboot e clique sobre o botão Save:

11) Depois de salvo a configuração, vá em WAN à PPP e a tabela Point to Point (PPP) Configuration aparecerá:

A coluna Oper. Status, deve estar com Link Up.

11.1) Caso esteja com o Link Up, vá em uma janela do DOS e faça o teste de ping para qualquer domínio:

Depois basta abrir uma janela do seu Browser favorito e sair navegando!!

11.2) Caso esteja com o Link Down, os seguintes problemas podem ocorrer:

1. Seu provedor não está autenticando seu usuário ou então trata-se de um usuário não habilitado para banda larga. Neste caso entre em contato com o provedor e regularize a situação

2. No outro caso, verifique se o LED ADSL esteja aceso. Se não estiver, contacte seu representante da linha telefônica e resolva o problema, pois muito provável que a portadora não esteja habilitada. Mas se ao contrário o LED estiver aceso, contacte o representante da linha, mesmo assim, pois algum problema de ordem física pode estar impactando na sua linha telefônica

Instalando o SQUID 2.6 (Proxy Transparente) - Completo com bloqueios de site, usuários, etc.

Instalando o SQUID 2.6
Comecei a instalação dos softwares pelo squid, não existe nenhuma versão atualizada de SQUID 2.6 no apt, pelo menos não encontrei, então baixei o fonte e instalei na mão.

Baixando o fonte

Baixe o fonte e descompacte na pasta /usr/src, não é obrigatório escolher esta pasta, deixo todos os fontes aqui por costume.

# wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE7.tar.gz

Após baixar o arquivo descompacte:

# tar xvzf squid-2.6.STABLE7.tar.gz

E entre no seu diretório:

# cd squid-2.6.STABLE7

Execute:

# ./configure --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/squid --enable-linux-netfilter --enable-delay-pools

Os parâmetros definem:
  • --bindir=/usr/bin - Diretório de instalação onde ficarão os arquivos binários;
  • --sbindir=/usr/sbin - Diretório de instalação onde ficarão os arquivos binários usuário do root;
  • --sysconfdir=/etc/squid - Diretório onde ficarão os arquivos de configuração;
  • --enable-linux-netfilter - SQUID otimizado para proxy transparente, não é obrigatório;
  • --enable-delay-pools - Para configurar a limitação de banda, caso você queira futuramente limitar a banda.

Agora execute:

# make all
# make install


Vamos agora configurar o squid, é extremamente simples, não requer prática nem habilidade. :)

Fiz uma configuração bem básica para esse squid, todas as máquinas ficarão com acesso http liberado, exceto os sites que são bloqueados por palavra-chave, temos as opções de liberar completamente algumas máquinas, nada mais.

Segue o arquivo de configuração:

# vim /etc/squid/squid.conf

###################################################
# SCRIPT DE CONFIGURACAO DO SQUID
#
#
# Porta utilizada pelo squid
#
http_port 3128 transparent
#
# Nome do servidor (sem espacos)

#
visible_hostname firewall02.fleetone.com
#
# Servidores DNS a serem consultados
#

dns_nameservers 192.168.100.2
#

# Local onde sera armazenado os logs do squid
#
cache_access_log /usr/local/squid/var/logs/access.log
#
# Converte as mensagens geradas pelo squid para o Portugues
#
error_directory /usr/local/squid/share/errors/Portuguese

#
#


refresh_pattern ^ftp: 1 20% 2280
refresh_pattern ^gopher: 1 0% 2280
refresh_pattern . 1 20% 2280

acl all src
0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80
# http
acl Safe_ports port 21
# ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210

# wais

acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488

# gss-http

acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901

# SWAT

acl purge method PURGE
acl post method POST
acl CONNECT method CONNECT
http_access allow post
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost

http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#
# Definiremos a seguir as regras para bloqueio dos sites pelas
# palavras adicionadas no arquivo
bloqueados.txt
# As regras serão estabelecidas por grupos de acessos conforme
# as ACLs criadas abaixo.
#

acl redelocal src
192.168.100.0/24

acl diretoria src "/etc/squid/acls/diretoria"

acl bloqueados url_regex -i "/etc/squid/acls/bloqueados"
acl permitidos url_regex -i "/etc/squid/acls/permitidos"
http_access allow localhost
http_access allow diretoria
http_access allow redelocal !bloqueados

#
# Abaixo bloqueamos a navegacao.
# Liberado apenas pra faixa definida na "acl redelocal".
#

http_access deny all

Altere as seguintes linhas:

Coloque o hostname da sua máquina, o mesmo nome que você definiu durante a instalação:

visible_hostname hostname.dominio

Coloque o ip do seu servidor DNS:

dns_nameservers 192.168.100.2

Nestas linhas você define de quanto em quanto tempo o squid vai ir na internet verificar se houveram alterações, normalmente ele vai utilizar a opção que está no cache quando você acessar um site, para alterar o tempo de refresh abaixe o valor, o primeiro 1 significa o tempo mínimo em minutos para refresh, após o percentual o 2280 é o tempo máximo em minutos:

refresh_pattern ^ftp: 1 20% 2280
refresh_pattern ^gopher: 1 0% 2280
refresh_pattern . 1 20% 2280

Aqui você define a faixa de sua rede:

acl redelocal src 192.168.100.0/24

No squid.conf são só essas alterações a serem realizadas e está pronto..

Crie os diretórios onde vão ficar as acls:

# mkdir /etc/squid/acls

Agora crie os arquivos que vão conter as acls:

# touch /etc/squid/acls/diretoria
# touch /etc/squid/acls/permitidos
# touch /etc/squid/acls/bloqueados


Descrição dos arquivos:
  • diretoria -> deve conter as máquinas que tem acesso total a qualquer site. Coloque o endereço IP das estações.
  • permitidos -> são sites que contem palavras chave bloqueadas, mas que podem ser acessados.
  • bloqueados -> são os sites que contem palavras-chave que devem ser bloqueadas.

Após colocar o squid.conf dentro de /etc/squid, dê permissão para o squid escrever na pasta var:

# chmod -R 777 /usr/local/squid/var

Agora criaremos os arquivos de swap do squid:

# squid -z

Tudo pronto, execute o squid com o comando:

# squid

Caso os arquivos diretoria, permitidos ou bloqueados estejam vazios é normal aparecer a seguinte mensagem:

2007/01/18 14:46:43| strtokFile: /etc/squid/acls/diretoria not found
2007/01/18 14:46:43| aclParseAclLine: WARNING: empty ACL: acl diretoria src "/etc/squid/acls/diretoria"

Esta mensagem é somente um alerta dizendo que não existem valores definidos dentro dos arquivos que contem as acls, assim que você preencher esses arquivos esta mensagem desaparecerá.

Feito isso, adicione o squid na inicialização da seguinte maneira, edite o arquivo /etc/init.d/bootmisc.sh e ao final do arquivo adicione as seguintes linhas.

# Inicializando o squid
if [ -x /etc/init.d/squid ]; then
. /etc/init.d/squid
fi

Agora crie um arquivo com nome squid dentro de /etc/init.d:

# vi /etc/init.d/squid

E adicione o seguinte conteúdo dentro do arquivo:

/usr/sbin/squid

Salve e saia. Dê permissão de execução ao arquivo:

# chmod +x /etc/init.d/squid

Finalizamos a configuração do SQUID.


Alterando a letra da Unidade C: , D: , E: , F: , etc.


Mais uma super dica do http://redesconexao.blogspot.com

Você não consegue alterar a unidade no qual está alocado o sistema operacional, OK?

Para alterar as unidades de DVD-RAM, CD-ROM e Dispositivo removível.

Clique em Iniciar » Executar e digite: diskmgmt.msc.

No console que será aberto, selecione a unidade que deseja alterar pressione botão direito e clique em Alterar Letra.

Moleza , molezaaaa....


Bloqueando site pelo C:\WINDOWS\system32\drivers\etc


Essa é mais uma dica super legal do http://redesconexao.blogspot.com

Para bloquear qualquer outro site, use este jeito que é o melhor. Pois não gastara memória adicional da máquina para verificar os endereços a serem bloqueados.

1- No WinXP vá em:

C:\WINDOWS\SYSTEM32\DRIVERS\ETC

2- E edite com o bloco de notas o arquivo hosts (Este arquivo não tem extensão)

Ele deve estar assim:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Este é um arquivo HOSTS de exemplo usado pelo Microsoft TCP/IP para Windows.
#
# Este arquivo contém os mapeamentos de endereços IP para nomes de host. Cada
# entrada deve ser mantida em uma linha individual. O endereço IP deve
# ser colocado na primeira coluna, seguido do nome de host correspondente.
# O endereço IP e o nome do host devem ser separados por pelo menos um
# espaço.
#
# Adicionalmente, comentários (como estes) podem ser inseridos em linhas
# individuais ou após o nome de computador indicado por um símbolo '#'.
#
# Por exemplo:
#
# 102.54.94.97 rino.acme.com # servidor de origem
# 38.25.63.10 x.acme.com # host cliente x

127.0.0.1 localhost

3- Se não estiver como acima copie e cole o conteudo acima do jeito q está para ele, apagando o que estiver nele. Pois ele pode ter sido modificado por um spyware.

4- Para bloquear o um site desejado adicione abaixo da linha 127.0.0.1 linhas assim:
127.0.0.1 www.xxxxx.com.xx (sendo que o www.xxxxx.com.xx é o endereco do site que vc quer bloquear)

Aqui vai um exemplo de como ele pode ficar no fim das contas. Este é apenas um exemplo onde os site fotolog.net e alguns do kazaa estao bloqueados.

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Este é um arquivo HOSTS de exemplo usado pelo Microsoft TCP/IP para Windows.
#
# Este arquivo contém os mapeamentos de endereços IP para nomes de host. Cada
# entrada deve ser mantida em uma linha individual. O endereço IP deve
# ser colocado na primeira coluna, seguido do nome de host correspondente.
# O endereço IP e o nome do host devem ser separados por pelo menos um
# espaço.
#
# Adicionalmente, comentários (como estes) podem ser inseridos em linhas
# individuais ou após o nome de computador indicado por um símbolo '#'.
#
# Por exemplo:
#
# 102.54.94.97 rino.acme.com # servidor de origem
# 38.25.63.10 x.acme.com # host cliente x

127.0.0.1 localhost
127.0.0.1 www.fotolog.net/lis_nightwish
127.0.0.1 www.fotolog.net
127.0.0.1 www.fotolog.net/phael_limits
127.0.0.1 www.altnet.com
127.0.0.1 search.kazaa.com
127.0.0.1 www.kazaaplus.com
127.0.0.1 ssa.kazaa.com
127.0.0.1 ssm.kazaa.com
127.0.0.1 www.cydoor.com
127.0.0.1 ads.kazaa.com
127.0.0.1 www.bullguard.com
127.0.0.1 www.certifiedkazaa.com

5- Depois disso tudo reinicie o computador.

Implementação de LDAP + SAMBA + SQUID

Tutorial completo de implementação de LDAP + Samba + Squid

Considerações iniciais

Este tutorial, criado por Braulio Gomes, aborda a criação de um servidor Samba baseado em banco de dados LDAP com suporte a autenticação de usuários, tanto pelo Samba quanto pelo Squid.

Tutorial criado em: 30/06/2006
Plataforma: Slackware 10.2
Versão do Tutorial: TUTORIAL-LDAP-1.0
Licença: LDP ( Linux Documentation Project )

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-Sasl

O 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


Instalando o OpenLDAP

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

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.


Nss_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


Smbldap-tools

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



Nextuid

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


Apache2 + PHP5

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 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key

Digite primeiro a senha da chave privada, depois um 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 (0x10001)
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.linuxajuda.org
base dc=linuxajuda,dc=org
uri ldaps://ldap.linuxajuda.org
rootbinddn cn=administrador,dc=linuxajuda,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.linuxajuda.org/

para:

passdb backend = ldapsam:ldaps://ldap.linuxajuda.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.linuxajuda.org no DNS e estava resolvido.

Edite o arquivo /etc/resolv.conf e acrescente a linha:

nameserver ldap.linuxajuda.org

Edite também o /etc/hosts:

10.0.0.101              ldap.linuxajuda.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.linuxajudaorg -b 'dc=linuxajuda,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@linuxajuda: cmusaslsecretOTP
administrador@linuxajuda: 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";
  7. 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 Samba

1. 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.



domingo, 18 de janeiro de 2009

Linux - SARG


Gerando relatórios do Squid com o SARG


Neste tutorial você poderá aprender como gerar relatórios completos de acesso ao Squid com o programa SARG, que apropósito é muito bom e feito por um brasileiro :)

O SARG (Squid Analysis Report Generator) é uma ferramenta muito boa desenvolvida por um brasileiro que permite à você ver para “onde” seus usuários estão indo na Internet através da análise do arquivo de log “access.log” do famoso proxy Squid. O poder da ferramenta é incrível, ele pode dizer para você quais usuários acessaram quais sites, em que horas, quantos bytes foram baixados, quantas conexões foram feitas, relatórios de sites mais acessados, usuários que mais acessam, relatório de sites negados, falha de autenticação, entre outros. A gerência que você pode obter com isso é muito boa, principalmente para as empresas que querem economizar o uso da Internet.

Vamos aqui instalar e configurar o SARG para ele gerar relatórios diários de acesso do Squid. Para isso precisaremos de um Squid já configurado e rodando (o que não vou cobrir neste tutorial em si), que gere os logs de acesso no arquivo access.log. Se você desconhece isso, vá ao arquivo de configuração do Squid e veja se existe a linha abaixo. Se não existir, adicione:

cache_access_log /var/log/squid/access.log

Geralmente o arquivo de configuração do Squid está em “/etc/squid/squid.conf”. A linha acima especifica que o arquivo de log deverá estar em “/var/log/squid/access.log”, lembre-se disso para posteriormente informarmos ao SARG. Se você teve que adicionar essa linha no Squid, reinicie-o (ou de um ‘reload’ no serviço) para que as mudanças sejam efetivadas.

Agora vamos ao que interessa. Você precisará baixar o SARG através do endereço:

No caso deste tutorial, peguei o codigo-fonte da versão 1.2.2. Você poderá notar também que há links para pacotes pré-compilados, e caso você tenha uma distribuição suportada, você pode pegar os pacotes e instalar através do gerenciador de pacotes. Mas como peguei o código-fonte, vamos compilar o programa:

# tar zpfx sarg-1.2.2.tar.gz
# cd sarg-1.2.2
# ./configure --enable-sysconfdir=/etc/sarg

[...configurando a compilação...]

# make

[...compilando...]

# make install

Fiz o procedimento como root porque quis, na verdade o root só é requerido no passo “make install”, porque ele instala o programa “sarg” no /usr/bin e o diretório de configuração em “/etc/sarg”. Isso tudo pode ser escolhido através do comando “./configure”, e para você saber de suas opções, digite “./configure –help”.

Agora que o programa foi compilado e instalado, precisaremos configurar para ele rodar. Escolhemos na compilação o diretório /etc/sarg para armazenar os arquivos de configuração, então vamos agora trabalhar nele.

# pwd
/etc/sarg
# ls
exclude_codes languages/ sarg.conf

Veja quais os arquivos padrões que ele cria. Como nossa instalação vai ser um pouco mais complexa, teremos de criar alguns arquivos mais, e organizar os já existentes:

# mv sarg.conf default.conf
# touch exclude.hosts
# touch exclude.strings
# touch exclude.users
# ls
default.conf exclude.hosts exclude.users
exclude_codes exclude.strings languages/

Uma breve explicação sobre os arquivos que criamos:

  • exclude.hosts - Aqui cada linha terá um domínio/URL que não será mostrada no relatório. Útil para você colocar, por exemplos, endereços de download da Intranet que passam pelo Squid, mas não gastam banda de Internet nenhuma.
  • exclude.strings - Se alguma linha do arquivo de log conter uma das strings deste arquivo (cada string por linha), esta linha do log será ignorada do relatório. Com isso você pode filtrar qualquer coisa do relatório.
  • exclude.users - Os usuários que estiverem neste arquivo (separados por linha) não serão incluídos no relatório.

Agora vamos ter que criar um arquivo de configuração para o SARG. Como eu disse anteriormente, este arquivo de configuração será para um relatório diário. Colocaremos essa configuração no arquivo “/etc/sarg/sarg-dia.conf”. Abaixo segue um arquivo de configuração comentado, para posterior análise:

# Relatório Squid por: Dia

# Língua Utilizada, coloquei em inglês aqui, mas será tudo em português
# do Brasil, veja o porquê depois.
language English

# Arquivo de LOG do Squid, lembra? Na sua configuração do Squid tem
# falando onde se encontra este arquivo.
access_log /var/log/squid/access.log

# Título da página HTML
title "Relatório Diário do Proxy"

# --- Visual ---
# Aqui tem várias variáveis que você pode mudar para deixar o
# visual do relatório (cores, fontes, etc) de acordo com o que
# você quiser. Aqui estou usando os valores padrões.
font_face Arial
header_color darkblue
header_bgcolor blanchedalmond
header_font_size -1
background_color white
text_color black
text_bgcolor beige
title_color green
#--- Fim do Visual ---

# Diretório Temporário
temporary_dir /tmp

# Diretório de Saída para as página de relatório, ou seja,
# onde o relatório vai ficar para consulta via um navegador.
# "Geralmente" esse diretório tem que estar dentro do root do seu
# servidor Web :D
output_dir /var/www/html/squid-report/dia

# Qual critério de ordem para a seção "TopUser?" USER/CONNECT/BYTES/TIME
# Isso irá organizar o relatório na seção de TopUsers, colocando os usuários
# que mais baixaram bytes primeiro.
topuser_sort_field BYTES reverse

# Qual critério de ordem para a seção "User"? SITE/CONNECT/BYTES/TIME
# Isso irá organizar a seção de usuários da mesma forma que o item anterior.
user_sort_field BYTES reverse

# Arquivo com usuários que não devem estar nos relatórios
exclude_users /etc/sarg/exclude.users

# Arquivo com hosts que não devem estar nos relatórios
exclude_hosts /etc/sarg/exclude.hosts

# Formato da data (e=dd/mm/yy, u=mm/dd/yy, w=yy/ww)
date_format e

# Limite de logs até os antigos serem removidos, quando houver mais
# de N relatórios, o mais antigo é automaticamente removido. Aqui
# estamos indicando para nunca apagar nada.
lastlog 0

# Remover arquivos temporários após o uso?
remove_temp_files yes

# Gerar o index.html? (only = gera só o index.html principal)
index yes

# Sobrescrever o relatório se já existe?
overwrite_report yes

# O que fazer com registros sem usuário? (ignore/ip/everybody)
records_without_userid ignore

# Usar vírgula ao invés de ponto?
use_comma no

# Qual a quantidade de sites mais visitados à listar?
topsites_num 100

# Qual critério de ordem para o topsites? CONNECT/BYTES A/D
# Aqui diz para ordenar os sites mais acessados por utilização de banda,
# em forma decrescente.
topsites_sort_order BYTES D

# Arquivo de códigos HTTP para serem ignorados no relatório
exclude_codes /etc/sarg/exclude_codes

# Tempo de checkagem
max_elapsed 28800000

# -- Tipo de Relatorio a ser gerado --
# + topsites - Mostra o site, conexão e bytes
# + sites_users - Mostra que usuários estavam acessando
um site
# + users_sites - Mostra sites acessados pelo usuário
# + date_time - Mostra quantidade de bytes usados por
dia e hora
# + denied - Mostra todos os sites negados com URL
completa
# + auth_failures - Mostra falhas de autentificação
report_typie topsites users_sites sites_users date_time denied
auth_failures
site_user_time_date

# Exibir URLs completas? (Não recomendado)
long_url no

# Se alguma linha do access.log conter uma das strings, será ignorada
exclude_string /etc/sarg/exclude.strings

# Mostrar mensagem de sucesso na geração do relatório no fim?
show_successful_message no

# Campos para a seçao topusers
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME
MILISEC %TIME TOTAL AVERAGE

# Quantidade de usuários para listar no relatório topsites
topuser_num 0

O arquivo de configuração em si já explica as configurações para você alterar. Mas também há mais opções disponíveis no programa, você pode ver explicações sobre estas novas configurações no arquivo padrão de configuração, que deixamos como “/etc/sarg/default.conf”.

Sobre a língua utilizada, eu verifiquei um erro que aconteceu comigo, então fiz uma solução simples e rápida pra isso. O que acontece é que mesmo mudando a variável language, o programa fica gerando relatórios em Inglês. Se acontecer isso com você, faça o seguinte:

# cd /etc/sarg/languages
# mv English English.old
# ln -s Portuguese English

O que fiz aqui foi fazer um link simbólico do English para o Portuguese, para que o programa pegue o conteúdo do arquivo Portuguese e não do English original. Repare que eu também fiz um backup do arquivo English, e lembre-se sempre disso: faça sempre backups! Tente nunca apagar algo.

Existe também outro erro em relação à isto, só que este é mais sério. O arquivo de tradução “Portuguese” está incompleto, e por isso ele não gera os links para os relatórios de falhas de autenticação e de sites mais acessados. Para consertar isso, edite o arquivo “/etc/sarg/languages/Portuguese” e adicione as seguintes linhas no final do arquivo:

"Negado"
"Topsites"

Assim a tradução não irá faltar, e os links estarão bonitinhos no lugar :) Mas agora falta rodar o programa para gerar o nosso relatório! Vamos supor que hoje seja o dia 05/02/2003 (epa, essa é a data em que estou escrevendo isso :P) e você queira gerar o que até agora acessaram no seu proxy. Execute isto:

# /usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d 05/02/2003-05/02/2003

E espere… Dependendo da quantidade de acessos ao seu proxy, e o tamanho do arquivo de log, o processo poderá demorar. Quando terminar, acesse o diretório que você configurou o “output” no seu servidor Web para ver o relatório na íntegra. Mas e agora, teremos que ficar rodando este comando todo dia pra ficar gerando? Não! :P Para isso que serve o crontab, vamos configurá-lo para rodar este comando todo dia às 01:01 da manhã.

Nota: Várias distribuições já vem com um crontab diário configurado. Ou seja, todos os arquivos executáveis que estiverem dentro do diretório “/etc/cron.daily” serão executados em um certo horário (geralmente 4 da manhã de todo dia).

Se sua distribuição tiver este diretório, crie o arquivo “/etc/cron.daily/sarg-dia”. Caso ela não tenha, crie um arquivo chamado “/usr/local/bin/sarg-dia”. Coloque o seguinte conteúdo em um desses arquivos:

#!/bin/bash

HOJE=$(date --date "1 day ago" +%d/%m/%Y)

/usr/sbin/sarg -f /etc/sarg/sarg-dia.conf -d $HOJE-$HOJE
exit 0

Se o seu caso foi de criar o arquivo “/usr/local/bin/sarg-dia”, então você terá que configurar também o crontab para rodar este programa às 01:01 da manhã como dissemos. Adicione a seguinte linha no arquivo “/etc/crontab”:

01 1 * * * root /usr/local/bin/sarg-dia

E não se esqueça de dar permissão de executável para o script que criamos:

# chmod +x /usr/local/bin/sarg-dia
(ou)
# chmod +x /etc/cron.daily/sarg-dia

Pronto. Com isso o crontab irá rodar o nosso script todo dia de madrugada. Para quem não entendeu o script, ele primeiro pega a data de 1 dia antes e coloca no formato DIA/MES/ANO, como queríamos para passar pro SARG, então ele chama e gera o relatório do dia anterior… Legal não?

Para cada dia, o SARG gera um diretório diferente, especificado por data. Experimente gerar os relatórios e verificar no diretório de saída (output), vai aparecer algo como:

# ls
01Feb2003-01Feb2003 03Feb2003-03Feb2003 index.html
02Feb2003-02Feb2003 04Feb2003-04Feb2003

Pronto! Você já pode ser um usuário feliz deste excelente gerador de relatórios :) Se você entendeu direitinho este tutorial, verá que é fácil fazer também relatórios semanais e mensais através dos scripts e crontab. Mas aí vai de exercício pra você.

Aviso: Os relatórios geram muitas páginas, e dependendo do relatório, pode gastar muito e muito espaço em disco, então tome cuidado. Por exemplo, aqui o dia 03 de Fevereiro deu 103MB de relatório. Mas ao compactar este diretório para .tar.bz2, consegui reduzir para 1.2MB :) Faça os relatórios, compacte-os, vá juntando e gravando em um CD, assim você poderá ter um histórico completo de quem acessou o que durante uma certa época.

Boa sorte!