alexmontoanelli

a little fun!

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

XEN: Aumentando o desepenho da rede

Aqui vão algumas dicas para você aumentar o desepenho na rede de suas VM’s:

1 -> Desative a verificação de rx/tx nas placas de rede.
Supondo que você está usando a rede no modo bridge no xen, você pode economizar um bom tempo, deixando para que o guest’s que receberão o pacote final, verifiquem por erro de tx e rx nos pacotes.

Use o comando ‘ethtool -K tx eth0 off’ e  ‘eththool -K rx eth0 off’ // Troque o eth0 pela sua respectiva placa.

2 -> Para comunicação entre as máquinas sob o mesmo hyper-visor, utilize uma interface dummy em modo bridge, e coloque as suas VM nessa bridge.

3 -> Aumente o hellotime das interfaces bridges, com o comando ‘brctl sethello xenbr0 eth0′. Isso diminui o uso de interrupções por parte das VM’s.

4 -> Prefira maquinas ParaVirtualizadas ao invés de FullVirtualizadas. A difereça é mais do que gritante. O questão é que em modo Full-Virturalizado (hvm), a muito mais camadas no processo de comunicação, tornando muito lento. HVM é bom mais não ideal. Prefira máquinas pv ao invés de hvm.

Abraços

August 4th, 2008 by alexm
Posted in linux, xen | No Comments »

Alterando a interface de rede virtual criada pelo Xen

Nativamente o xen cria as interfaces virtuais, usando como o modelo padrão a Realtek.

As vezes precisamos alterar este modelo, seja por compatibilidade, ou pelo sistema operacional trabalhar melhor com um driver do que com outro.

Para fazer o xen informar a maquina virtual que outra placa esta no lugar, basta passar na linha vif=[], o parâmetro model=

Abaixo 2 exemplos, um usando a placa Intel, e outro usando ne2k.

Exemplo usando intel:
vif=['type=ioemu,bridge=xenbr0,model=e100']

Exemplo usando ne2k
vif=['type=ioemu,bridge=xenbr0,model=ne2k']

Abraços

July 21st, 2008 by alexm
Posted in linux | No Comments »

Replicando Bases Ldap em 10 minutos

Buenas.

Configurações para replicar bases ldap usando o método syncrpl.

No Servidor ldap Master adicione as seguintes linhas no slapd.conf, nas respectivas sessões:

moduleload      syncprov

index   entryCSN        eq
index   entryUUID       eq

overlay syncprov
syncprov-checkpoint     100     10
syncprov-sessionlog     100

As 3 últimas linhas devem ir no final no arquivo abaixo das especificações dos bancos.

As linha ‘syncprov-checkpoint     100     10′ diz que é para forçar sincronização a cada 100 gravações, ou a cada 10 minutos. E a linha ‘syncprov-sessionlog     100′ mantem um registro das ultimas 100 entradas sincronizadas.

Note que adicionamos duas entradas ‘index’, então devemos parar o slapd, e reindexar a base com um ‘slapindex -vv’. Após um chown -R ldap:ldap /var/db/ldap/*, e subimos o serviço novamente.

Do lado dos ‘slaves’, você deve adicionar o seguinte:

index   entryCSN        eq
index   entryUUID       eq

syncrepl      rid=001
searchbase="dc=dominio,dc=com"
provider="ldaps://endereco.do.servidor.master"
binddn="cn=Manager,dc=dominio,dc=com"
bindmethod=simple
credentials="minhasenha"
filter="(objectClass=*)"
attrs="*,+"
#type="refreshOnly"
type="refreshAndPersist"
interval=00:00:05:00
retry="60 10 300 3"
scope=sub

updateref       "ldaps://endereco.do.servidor.master"

Explicando as linhas:

rid 001: é o identificador interno, você pode ter várias sessões para sincronizar, esse número deve ser único para cada entrada, e não deve ter mais que 3 números;

searchbase: apartir de qual nó, do serivdor ‘master’ deve-se iniciar o sincronismo;
provider: é o endereço do servidor master;

binddn: bindmethod e credentials são os dados referentes a autenticação;
filter, são quais objetos que desejamos sincronizar, objectClass=*, vai sincronizar todos os objetos;

attrs: especifica quais os atributos a serem sincronizados, ‘*,+’ irá sincronizar todos os atributos;

type, pode vir a ser refreshOnly ou refreshAndPersist, no modo refreshAndPersist, é iniciado umaconexão ao servidor master, e a cada nova alteração no ‘master’ a mesma já e atualizada no ‘slave’, no modo refreshOnly, o sincronimo ocorrerá apenas no interfao especificado pela variavel ‘interval;

interval: O tempo em que se deve conectar no master para sincronizar os dados, seu formato é ‘dd:hh:mm:ss’ onde ‘dd’ => dia, ‘hh’ => hora, ‘mm’ => minutos, ‘ss’ => segundos. Um valor como ’00:00:05:00′, representa uma atualização a cada 5 minutos

retry: especifica o tempo entre tentativas caso ocorra uma falha de conexão para a sincronização. O valor ’60 10 300 3′, diz que é para executar 10 tentativas a cada 60 segundos, e caso estas falhem, é para executar mais 3 tentativas a cada 300 segundos.

scope=sub: especifica o nivel de sincronização, pode ser ‘sub,child, one ou  base’

Após tudo configurado basta reiniciar o slave, e partir pro abraço.

Não esqueça de copiar a base atual do master, via ‘slapcat’ para o slave, inportando com um ‘slapadd’.
A base no slave deve estar vazia antes da importação, e após importar, atribua o usuário ldap aos arquivos gerados no diretório onde está o banco.

Abraços

June 25th, 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

Aproveitando mais o SSH

Aqui vai uma dica para você tirar mais proveito do ssh, que é usado primariamente para estabelecer um conexão a um servidor de forma segura.

Imagine o Seguinte cenário:

Você atrás de nat, a maquina que você quer acessar com o ip 200.201.202.203 na Wan, e uma rede 192.168.0.0/24 na Lan. Você precisar acessar alguma porta no host 192.168.0.10, por exemplo, um vnc. Podemos usar o iptables e fazer um DNAT para acessar, ou você pode usar o ssh dessa forma:

ssh -l usuario -L portalocal:hostcomnat:portaremotadohost

No nosso caso, ficará:

ssh ssh -l usuario -L 5900:192.168.0.10:5900

Explicando os argumentos:

-L Ativa o redirecionamento de portas local,

portalocal é qual a porta que será usada para receber as conexões locais, na sua maquina

hostcomnat é o ip do host ao qual você vai se conectar através da portalocal

portaremotadohost é a porta no hostcomnat que iremos nos conectar.

Feito Isso, basta acessarmos o vnc no ip 127.0.0.1 porta 5900;

Conseguimos fazer o inverso também, conectarmos ao host remoto, e abrir uma porta lá, quando alguem conectar nessa porta, sera encaminhado para um host/porta especificados.

Usando o exemplo anterior, se trocarmos -L por -R e aplicarmos o seguinte comando,

ssh -l usuario -R 5900:127.0.0.1:5900 hostremoto,

lembre-se estou atras de nat, então o hostremoto não conseguira acessar meu vnc, mas, após eu conectar no hostremoto com o comando acima, e ele tentar conectar no vnc na porta 5900, eie será redirecionado para o meu pc na porta 5900.

Poderia ter trocado o ip 127.0.0.1, para um ip na minha lan, e redireciona-lo para outro host na rede.

Abraços e até.

May 21st, 2008 by alexm

Openvpn Client no Windows Vista

Estamos de voltas, depois de uma semana longe.

Bom nessa tarde tive o desafio de fazer um Windows Vista, conectar em um servidor de VPN usando o Openvpn. Bom até ai normal, tudo sem problemas, gerar certificados, arquivos de configuração, instalar o OpenVPN gui, e pimba conectado.

Mais ai veio o problema rotas estáticas no arquivo .ovpn. Se você tiver recebendo o um erro referente as rotas nos logs, faça o seguinte:

1 -> Adicione essas 2 linhas no seu arquivo .ovpn

route-method exe
route-delay 2

2 -> Execute o OpneVpnGui com Administrador. Como ? Crie um atalho para o ‘OpenvpnGui’ do menu iniciar, no seu Desktop, botão direito, e marque a opção, executar como Administrador. Ou, botão direito,  e clique em ‘Executar como Administrador’.

Deve resolver seu problema. Resolveu o meu.

Abraços e Até mais;

May 13th, 2008 by alexm
Posted in linux | 16 Comments »

Dicas Rápidas do vim

Seguem algumas dicas baseadas no Vim 7.1

Abrir mais de um arquivo na mesma janela, dividindo a tela ao meio horizontalmente:

vi -o /tmp/arquivo1 /tmp/arquivo2 …

Para dividir verticalmente, use -O, e para alternar entre as janelas, ctrl + w + w

Estando com o VI aberto em um arquivo e querendo abrir outro basta digitar

ctrl + w + n, a tela será dividia, agora ‘:vi /caminho/do/arquivo’

Para alterar o layout das janelas abertas, use: ctrl + w + k para levar a janela atual para cima,

ctrl + w + j , para leva-la para baixo, ctrl + w + l para leva-la ao lado direito, e ctrl + w + h para leva-la ao lado esquerdo.

Para ir ao shell, sem sair do vi, basta digitar um ‘:shell’, você receberá o shell, quando terminar, um ctrl + d, levará você ao vi novamente.

Apagar um endereço de ipv4 no meio do texto, é só teclar 7dw no modo comando, no inicio do ip.

Abraços e até.

May 2nd, 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