alexmontoanelli

a place to have some fun..

Autenticação centralizada com Ldap, usando Postfix, Dovecot e Samba: Parte2

Essa é a segunda parte desta série.
A primeira etapa você confere aqui.

Hoje vamos configurar a libnss e o nsswitch.conf, para que o sistema possa ver os usuários cadastrados na base ldap.

Antes vamos criar o seguinte arquivo ldif,  inserindo alguns usuarios e grupos na nossa base:

dn: ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: organizationalUnit
objectClass: top
ou: usuarios

dn: ou=grupos,dc=empresa,dc=com,dc=br
objectClass: organizationalUnit
objectClass: top
ou: grupos

dn: ou=machines,ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: organizationalUnit
ou: machines

dn: cn=meugrupo,ou=grupos,dc=empresa,dc=com,dc=br
objectClass: posixGroup
objectClass: top
gidNumber: 10000
cn: meugrupo

dn: uid=meuusuario,ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: shadowAccount
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/meuusuario
loginShell: /bin/false
uid: meuusuario
cn: meuusuario
uidNumber: 10000
sn: meuusuario
gidNumber: 10000
givenName: Meu Usuario

Após criar os usuários, insira eles na base com o seguinte comanda:

slapadd -l meuarquivo.ldif # para usar com a base em modo off-line, ou
cat meuarquivo.ldif | ldapadd -W -D "cn=Manager,dc=empresa,dc=com,dc=br"

Agora vamos instalar o nss_ldap, no freebsd, execute o seguinte comando:

cd /usr/ports/net/nss_ldap/
make install

Vamos editar o arquivo /usr/local/etc/nss_ldap.conf para que fique da seguinte forma:

host 127.0.0.1
base dc=empresa,dc=com,dc=br
ldap_version 3
rootbinddn cn=Manager,dc=empresa,dc=com,dc=br
port 389
scope sub
timelimit 30
bind_timelimit 30
bind_policy hard
nss_connect_policy persist
nss_paged_results yes
pagesize 1000
pam_login_attribute uid
pam_lookup_policy yes
nss_base_passwd         ou=usuarios,dc=empresa,dc=com,dc=br?sub
nss_base_shadow         ou=usuarios,dc=empresa,dc=com,dc=br?sub
nss_base_group          ou=grupos,dc=empresa,dc=com,dc=br?one

Criamos o arquivo /etc/ldap.secret, contendo a senha do Manager

echo "mInhaSenh@Secr37A" > /etc/ldap.secret
chmod 600 /etc/ldap.secret

Agora modificamos o /etc/nsswitch.conf para que fique assim:

group: files ldap
hosts: files dns
networks: files
passwd: files ldap
shells: files

Para testar se tudo deu certo, digite:

getent passwd # você verá os usuarios do sistema, a ultima linha estara listado o seu usuario
getent groups # você verá os grupos do sistema, a última linha estará listado o grupo criado

Bom é isso, por hoje é só pessoAll, até a próxima parte.

Abraços

August 17th, 2008 by alexm

Autenticação centralizada com Ldap, usando Postfix, Dovecot e Samba

Olá.

Vou postar aqui uma série de 5 artigos mostrando como integrar os serviços de email (Postfix, Dovecot), e o servidor de arquivos Samba, para usarem a mesma base de autenticação, no caso com Openldap.

Toda a brincadeira foi realizada em um FreeBSD 6.3 -p3, mais pode ser implantada em qualquer Linux sem problemas.

Parte 1 : Preparando o Openldap.

No FreeBSD, tento o ports instalado, pasta fazer o seguinte:

cd /usr/ports/net/openldap24-server
make
make install

As seguintes opções foram usadas:

SASL
TCP_WRAPPERS
BDB
ACCESSLOG
LASTMOD
SEQMOD
SYNCPROV
DYNAMIC_BACKENDS

Após isso, iremos instalar o nss_ldap, usado para integrar os usuários que serão cadastrados no openldap, ao sistema.

cd /usr/ports/net/nss_ldap/
make
make install

Agora vamos configurar nosso ldap.conf e slapd.conf para colocar o open-ldap no ar.

Vamos editar o arquivo /usr/local/etc/ldap.conf e adicionar a seguinte no arquivo

BASE    dc=empresa,dc=com,dc=br

Feito isso partimos para a configuração do slapd.conf, esse é o arquivo responsável pelo daemon do openldap.

Seguem as alterações necessárias:

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/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema

access to dn.exact=""
        by * read

access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by anonymous auth
        by self write
        by * none

access to attrs=shadowLastChange
        by self write
        by * none

access to *
        by read

loglevel 256

#######################################################################
# BDB database definitions
#######################################################################

database        bdb
suffix          "dc=empresa,dc=com,dc=br"
rootdn          "cn=Manager,dc=empresa,dc=com,dc=br"
rootpw          {SSHA}D9t3cIySlQg2ugQYeSD5bkB+ZqWPaasx
mode    0700
directory       /var/db/openldap-data
# Indices to maintain
index   objectClass     eq
index   cn,uid,sn       eq
index   gidNumber       eq
index   mail,givenName,mailAlternateAddress,displayName eq,pres,sub
index   default eq

A senha no formato SSHA é obtida com o comando

slappasswd  -s mInhaSenh@Secr37A

Feito isso, vamos inserir a base do nosso banco, isso tudo em modo offline ainda.
Crie um arquivo com o seguinte conteúdo:

dn: dc=empresa,dc=com,dc=br
dc: empresa
objectClass: top
objectClass: domain

Agora vamos inserir esse registro na base:

slapadd -l MEU_ARQUIVO_TEMPORARIO -b 'dc=empreasa,dc=com,dc=br'

Feito isso, nosso banco pode ser posto no ar.
Adicione as seguintes flags ao seu arquivo /etc/rc.conf

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/"'
slapd_sockets="/var/run/openldap/ldapi"

Estas flags dizem para ativar o slapd no boot do bsd,  configura ele para ouvir em modo não ssl, em locallhost, e cria um unixsocket em /var. Abordagem com ssl será feita em outra etapa.

Agora vamos startar no OpenLdap

/usr/local/etc/rc.d/slapd start

Se tudo der certo, com um  simples ‘netstat -ln| egrep “\.389″‘ você verá uma saída semelhante a esta, informado que o slapd esta ouvindo na sua porta padrão:

[root@propague /root]# netstat -ln| egrep "\.389"
tcp4       0      0  127.0.0.1.389          127.0.0.1.63586        ESTABLISHED
tcp4       0      0  127.0.0.1.63586        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.50995        ESTABLISHED
tcp4       0      0  127.0.0.1.50995        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.57821        ESTABLISHED
tcp4       0      0  127.0.0.1.57821        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.61773        ESTABLISHED
tcp4       0      0  127.0.0.1.61773        127.0.0.1.389          ESTABLISHED

Para confirmar, execute:

ldapsearch -x

Deverá ser retornado a raiz de seu diretório informando que o mesmo foi criado com sucesso.
Caso você não consiga por seu ldap para rodar, tente rodar ele como root e modo debug.

/usr/local/libexec/slapd -d 256

Na maioria das vezes o erro é causado por permissões inválidas no diretório onde o ldap guarda seus arquivos.
Se for este o seu problema, você pode corrigir com o seguinte comando, e em seguida subir o daemon novamente

chow -R ldap:ldap /var/db/openldap-db
chmod -R 600 /var/db/openldap-db

Por hoje é isso, no próximo capitulo vamos inserir alguns usuários na base, e fazer o sistema enxergar eles, usando o nss, e editando o nsswitch.

Abraços e até mais.

August 7th, 2008 by alexm

Cisco + Squid 2.6 + FreeBSD 6.3 = WCCP2

Buenas.

Depois de sofridas semanas apanhando para fazer essa implantação, lendo muito manual, snifando tudo que dava, lendo código da interface ‘GRE’ tá ai um mini how-to de com colocar tudo isso pra funcionar.

Pra quem não conheçe muito, WCCP (Web Comunication Cache Protocol ) é um protocolo criado pela Cisco que visa diminuir seu tráfego web, redirecionando eles para servidores Cache na sua rede, de forma transparente.

Ai você me diz, ‘tá mais eu já tenho isso com meu Linux/Bsd usando iptables/pf, tudo transparente e de forma perfeita’, então te respondo, e se teu Squid cair, oque acontece ? Sua navegação pára certo ?

Então com o wccp isso não acontece, pois o roteador antes de encaminhar os pacotes, verifica se existe algum servidor cache disponivel, se sim, ai então ele faz o redirecionameto do pacote, via tunel GRE, mantendo a requisição intacta.

A requisição chegando no Cache, então ela é redirecionada para a porta do Squid, usando a mesma técnica de proxy transparente que você já usa hoje. Se o squid tiver a página no cache, a mesma é devolvida para o cliente, se ele não tiver, então ele busca, cacheia, e devolve para o cliente.

Vamos lá, passos nescessários:

No Cisco, no modo ‘configure’ faça o seguinte:

ip wccp web-cache
interface fastEthernet 0/1 #sua interface LAN
ip wccp web-cache redirect in
exit
exit

Compile o kernel do BSD com suporte a gre, adicionando a seguinte linha no seu arquivo de configuração do kernel:

device                  GRE

Detalhes de como compilar um kernel BSD, você encontra aqui.

Após compilado e rebootado o Server vamos criar o tunnel GRE:

ifconfig gre0 create
ifconfig gre0 IP_DESTE_SERVER 10.20.30.40 \
       netmask 255.255.255.255 link1 link2 \
       tunnel IP_DESTE_SERVER IP_INTERFACE_WAN_DO_CISCO up

No Firewall no caso pf.conf, vá as seguintes linhas redirecionando o trafego para o squid:

rdr on gre0 proto tcp from any to any port www -> 127.0.0.1 port 3128

Agora a configuração do squid, adicione o seguinte no seu squid.conf

wccp2_router IP_LAN_CISCO
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0
wccp2_address IP_DESTE_SERVER

Ok, restarte seu squid, e veja no cisco com o comando ‘show ip wccp’ se ele está registrado, você vê isso, no item ‘Number of Service Group’, se estiver igual a 1, muito bem, está tudo pronto, e em teoria funcionando. Só fazer a requisição que o router vai interceptar e enviar para o squid.

Lembre-se este é um exemplo bem simples, onde não há preocupação com segurança.
Você pode e deve, incrementar o cisco para permitir que apenas um grupo de Caches se registre nele, isso tudo via acl, e aplicando mais algumas regras no pf.conf para dar mais segurança ao servidor.

Um detalhe importante é a versão da IOS do Cisco.
Nesse exemplo foi usada a versão 12.4(18), versão antigas a 12.4.11, possuem alguns bugs, entre eles um que você deve criar uma acl para excluir o ‘cache’ da lista da rede a ser roteada, caso contrario entrará em loop.

Bom é isso, qualquer dúvida é só entrar em contato.

Abraços

June 18th, 2008 by alexm

XEN: FreeBSD domU com HVM em hardware Intel VT

—–English—-

For those who are  trying to install the freebsd on a Intel VT hardware based, in  full-virtualized (hvm) mode in XEN, which is not necessary any change in the system, here is a hint that save you.

In compiling of the packages xen, and xen-tools, in the command ‘make’, you must add the variable ‘vmxassist = n’.

Both in make xen, and in make install.

In Gentoo Linux, as the whole process is done via emerge, you need to change the ebuilds, to add these variables.

Those who need them is only contact me.

See you soon, and sorry for my poor english. I do my best.

—–

Buenas.

Para quem tá sofrendo tentando instalar o FreeBsd em hardware Intel VT, no modo full-virtualized ( hvm ) no XEN, onde não é necessária nenhuma alteração no sistema, aqui vai a dica que salvará você.

Ao Compilar os pacotes xen, e xen-tools, no comando ‘make’, você deve adicionar a variável ‘vmxassist=n’.

Tanto no make xen, como no make install.

No Gentoo Linux, como todo o processo é feito via emerge, você precisar alterar as ebuilds, para adicionar estas variaveis.

Quem precisar delas é só entrar em contato.

Abraços e boa Virtualização.

June 12th, 2008 by alexm

Compilando o Kernel do FreeBSD

Bom em alguns artigos anteriores falando sobre freeBSD, foi necessário a recompilação do kernel do mesmo.

Aqui vai um mini-how de como compilar o kernel, do freeBSD

Tendo os fontes do kernel instalado , entre no diretório /usr/src/sys/<arquitetura>/conf/.

Onde arquitetura será a correspondente a arquitetura da sua máquina (i386,amd64,ia64).

Copie o arquivo GENERIC para um arquivo que você usaŕa para seu kernel, por exemplo MEUKERNEL.

Edite o arquivo meu kernel, e adicione ou retire as opções que você desejar, por exemplo, para adicionar o suporte a PF (PacketFilter) e a Vlans, adicionas as seguintes linhas no final do arquivo:

device          pf
device          pflog
device          pfsync
options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_CDNR
options         ALTQ_PRIQ
options         ALTQ_NOPCC
options         BRIDGE
 
device          vlan

Agora digite

conf MEUKERNEL
cd ../compile/MEUKERNEL/
make clean;
make cleandepend;
make depend;
make;
make install

Pronto, basta rebotar para ter as nova opções de seu kernel ativadas.

Abraços

May 1st, 2008 by alexm

Criando VLANS no FreeBSD

Para começar compile o kernel do freeBSD com suporte a vlan, adicionado a linha abaixo no seu arquivo de configuração de Kernel.

device          vlan

Após kernel, compilado e rebotado, vamos as mágicas:

No rc.conf vão as seguintes linhas:

cat /etc/rc.conf
 
#aqui vão as id das vlans que você vai criar
cloned_interfaces="vlan12 vlan14" 
 
#subimos a interface que ira receber as vlans para UP
ifconfig_xl0="up"
 
#criamos nossa vlan12
ifconfig_vlan12="inet 10.1.1.1 netmask 255.255.255.0 vlan 12 vlandev xl0"
 
#criamos nossa vlan14
ifconfig_vlan14="inet 10.1.2.1 netmask 255.255.255.0 vlan 14 vlandev xl0"
 
#adicinamos um aliaas a vlan14 (2 ips na mesma interface)
ifconfig_vlan14_alias0="inet 10.1.3.1 netmask 255.255.255.0"

Bom é isso, reboote, ou digite

sh /etc/rc.d/netif restart

Abraços e até.

May 1st, 2008 by alexm

Montando volumes Netware em Linux e FreeBSD

Desafio desta tarde: ‘Montar volumes Netware em um servidor Linux e em um freeBSD’

Vamos lá:

No Linux:

Compile o kernel com suporte a IPX e a CIFS

cat /usr/src/linux/.config | egrep "(IPX|CIFS)"
CONFIG_IPX=y  e CONFIG_CIFS=y

No BSD, compile o kernel com suporte a IPX

cat  /usr/src/sys/i386/conf/UNETVALE | egrep "(IPX)"
options         IPX

Feito isso, reboote e carregue os módulos:

No bsd

kldload ipx

No Linux

modprobe ipx ( caso você tenha compilado como módulo )

Agora vamos colocar seu linux na rede IPX:

Digite:

ipx_configure --auto_primary=on --auto_interface=on

Você deve possuir os pacotes referentes a rede IPx instalados em sua distro.

No gentoo basta um

emerge net-misc/ipx-utils

No freeBsd você digita:

ifconfig interface ipx 0x101

Você já deve estar numa rede ipx, agora é montar os compartilhamentos:

No Linux:

Tento o pacote ncp instalado ( gentoo net-misc/ipx-utils), basta um

ncpmount -S SERVIDOR_NETWARE -U .usuario.usr.unetvale -P senha /ponto/de/montagem

No freeBSD,

Crie o arquivo cat /root/.nwfsrc com o seguinte conteudo:

cat /root/.nwfsrc
[SERVIDOR_NETWARE:USUÁRIO]
password=senha

Após digite:

mount_nwfs -A IP_SERVIDOR_NETWARE -S SERVIDOR_NETWARE \
       -U usuario -V VOLUMENNONETWARE  /ponto/de/montagem

Bom é isso.

Abraços e Até

April 28th, 2008 by alexm

Automatize a criação de Vhosts com o mod_macro no apache

Mãos a Obra:

Página do módulo: http://www.coelho.net/mod_macro/

Para instalar no Gentoo, apenas digite:

emerge mod_macro

e espere terminar, após isso, edite o arquivo /etc/conf.d/apache2/ e adicione na linha APACHE2_OPTS a seguinte entrada: “-D MACRO”

Agora vamos criar nosso template de vhost.
Criamos o arquivo ‘/etc/apache2/vhosts.d/01.vhosts.macro.conf, com o seguinte conteudo

<macro Virtual $server $docroot>
<virtualhost>
        servername $server
        documentroot $docroot
 
        <ifmodule>
                ServerEnvironment apache apache
        </ifmodule>
</virtualhost>
</macro>
 
Include /etc/apache2/vhosts.d/vhosts.include

e no arquivo Include /etc/apache2/vhosts.d/vhosts.include, indicamos nossa macro e passamos os parâmetros:

 Use Virtual meusite1.com.br /var/www/meusite1.com.br/htdocs/
 Use Virtual meuoutrosite.com.br /var/www/meuoutrosite/htdocs/

Bom é isso, muito menos código em seus arquivos para criar vhosts.

Abraços

December 8th, 2007 by alexm