quinta-feira, 30 de dezembro de 2010

Servidor NFS em Linux

Acabei utilizando este recurso para realizar o backup de algumas VMs através do ghettoVCB em outro servidor na rede.

:: Instalar pacotes necessários
# apt-get install portmap nfs-kernel-server nfs-common

:: Configurar os diretorios a serem compartilhados
# vim /etc/exports
[...]
/bkp1 192.168.0.1/32(rw,no_root_squash,sync,no_subtree_check)
/bkp2 192.168.0.2/32(ro)
[...]

:: Exportar os diretorios
# exportfs -a

:: Verificar compartilhamentos
# exportfs

Trunk Linux - Bonding

Operação realizada no SO Debian 5.05 64bits

:: Instalar os módulos necessários
# apt-get install ifenslave-2.5

:: Criando o alias para a interface
# vim /etc/modprobe.d/aliases-bond
[...]
alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200
[...]

Obs 1.: mode=1 => ativo/passivo; mode=0 => ativo/ativo
Obs 2.: Para subir mais de uma interface inclua o parametro max_bounds=<qtd>

:: Configurando o Trunk
# vim /etc/network/interfaces
[...]
auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
        address 192.168.0.22
        netmask 255.255.252.0
        network 192.168.0.0
        broadcast 192.168.3.255
        gateway 192.168.3.254
        up /sbin/ifenslave bond0 eth0
        up /sbin/ifenslave bond0 eth1
[...]

Basta reiniciar o servidor e tudo ok

quarta-feira, 22 de dezembro de 2010

Exchange 2007 não aplica alterações nas Mailbox

Depois de transferir as FSMO para outro servidor AD, encontrei problemas
em aplicar alterações nas Mailbox, como por exemplo, tamanho das caixa, etc.

Erro: O serviço de lista de endereços do Exchange Server falhou ao responder

Para resolver este problema acabei reiniciando o serviço
Atendedor do Sistema do Microsoft Exchange (Microsoft Exchange System Attendant)

Após este procedimento consegui aplicar as alterações nas Maibox sem problemas.

terça-feira, 21 de dezembro de 2010

Transferir FSMO Windows Server 2008

Existem várias formas para transferir o FSMO (Flexible Single-Master Operation) para outro servidor.
Uma delas é utilizando linha de comandos, conforme veremos a seguir.

Entre no servidor que possue os papeis FSMO e carregue um CMD (Prompt de Commando)

:: Verificando os papéis do servidor
c:\>NETDOM QUERY FSMO
Schema master               dc1.microsoft.msft
Domain naming master        dc1.microsoft.msft
PDC                         dc1.microsoft.msft
RID pool manager            dc1.microsoft.msft
Infrastructure master       dc1.microsoft.msft
The command completed successfully.

:: Verificando o PDC principal
c:\>NETDOM QUERY PDC
Primary domain controller for the domain:

dc1
The command completed successfully.

:: Migrando os papéis
c:\>NTDSUTIL
NTDSUTIL: roles
FSMO MAINTENACE: connections
SERVER CONNECTIONS: connect to server dc2 (migrar para o dc2)
SERVER CONNECTIONS: q
FSMO MAINTENACE: transfer schema master
FSMO MAINTENACE: transfer naming master
FSMO MAINTENACE: transfer PDC
FSMO MAINTENACE: transfer infrastructure master
FSMO MAINTENACE: transfer RID master
FSMO MAINTENACE: quit
NTDSUTIL: quit

:: Verificando os papéis do servidor
c:\>NETDOM QUERY FSMO
Schema master               dc2.microsoft.msft
Domain naming master        dc2.microsoft.msft
PDC                         dc2.microsoft.msft
RID pool manager            dc2.microsoft.msft
Infrastructure master       dc2.microsoft.msft
The command completed successfully.

:: Verificando o PDC principal
c:\>NETDOM QUERY PDC
Primary domain controller for the domain:

dc2
The command completed successfully.

Assim todos os papéis do FSMO foram migrados com sucesso

sexta-feira, 17 de dezembro de 2010

Redirecionamento Porta 80 para 443 via Apache

:: Edite o arquivo do Site
# vim /etc/apache2/sites-avaliable/default

<VirtualHost *:80>
    ServerName www.dominio.com.br
    DocumentRoot /var/www/
    RedirectPermanent / https://www.dominio.com.br/
    UseCanonicalName Off
</VirtualHost>

Configurar Autenticação Básica no Apache

:: Editar o arquivo do site
# vim /etc/apache2/site-avaliable/default

[...]
<Directory /var/www/>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all

   AuthType Basic
   AuthName "Acesso Restrito"
   AuthuserFile "/var/www/.htpasswd"
   Require valid-user
</Directory>
[...]

:: Criar o arquivo de autenticação
# htpasswd -c /var/www/.htpasswd admin.www
New password: *******
Re-type password: *******

:: Reiniciar Site
# /etc/init.d/apache2 force-reload

Monitorando Conversas do MSN

:: Instalando dependências
# apt-get install gcc g++ make binutils libssl-dev libmysql++-dev mysql-server

:: Instalando o IMSpector
# cd /usr/src
# wget http://www.imspector.org/downloads/imspector-0.9.tar.gz
# tar -xvzf imspector-0.9.tar.gz
# cd imspector-0.9
# make
# make install

:: Compilando/Gerando Certificado
# cd /usr/src/imspector-0.9
# make install-ca-cert

:: Compilando o Plug-in para Log no MySQL
# make mysqlloggingplugin.so
# cp mysqlloggingplugin.so /usr/lib/imspector

:: Configurando o MySQL
# mysql -u root -p
mysql> CREATE DATABASE imspector;

mysql> USE imspector;

mysql> CREATE TABLE messages (
   id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   timestamp INT(11) NOT NULL default 0,
   clientaddress TEXT NOT NULL,
   protocolname TEXT NOT NULL,
   outgoing INT(11) NOT NULL DEFAULT 0,
   type int(11) NOT NULL default 0,
   localid TEXT NOT NULL,
   remoteid TEXT NOT NULL,
   filtered INT(11) NOT NULL default 0,
   categories TEXT NOT NULL,
   eventdata BLOB NOT NULL  
) ENGINE=InnoDB;

mysql> GRANT ALL PRIVILEGES ON imspector.* TO imspector@localhost IDENTIFIED BY "Senh@Secr3ta";
mysql> FLUSH PRIVILEGES;
mysql> quit

:: Configurando o IMSpector
# vim /usr/etc/imspector/imspector.conf
[...]
port=16667
http_port=18080
[...]
plugin_dir=/usr/lib/imspector
[...]
msn_protocol=on
[...]
log_typing_events=on
file_logging_dir=/var/log/imspector
[...]
mysql_server=localhost
mysql_database=imspector
mysql_username=imspector
mysql_password=Senh@Secr3ta

:: Configurando o iptables
# iptables -t nat -A PREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667

:: Iniciando o IMSpector
# /usr/sbin/imspector

:: Visualizando os Logs via shell
# cd /var/log/imspector/MSN

:: Visualizando os Logs via HTTP
# cp /usr/src/imspector-0.9/contrib/imspector.cgi /usr/lib/cgi-bin/
# a2enmod 
cgi

Aponte o Navegador para http://<ip_servidor>/cgi-bin/imspector.cgi

Obs.: O Gateway dos Desktops devem apontar para o servidor configurado.

:: Configurando Starting
# vim /etc/init.d/imspector

# Script de Starting/Stopping para IMSpector
#! /bin/sh
case "$1" in
  start )
        echo "Starting IMSpector"
        /usr/sbin/imspector
        ;;
  stop)
        echo "Stopping IMSpector"
        killall imspector
        ;;
  *)
        echo "Usage: /etc/init.d/imspector {start|stop}"
        exit 1
esac
exit 0

# cd /etc/rc2.d
# ln -s ../init.d/imspector S60imspector

:: Configurando o Stopping
# cd /etc/rc6.d
# ln -s ../init.d/imspector K60imspector

Squid Autenticado no Active Directory

Para a autenticação sem a solicitação de senha devemos utilizar o protocolo NTLM disposto no diretório
/usr/bin/ntlm_auth. Este protocolor realizada a troca de desafios e autentica o usuário sem a necessidade
de informar senha, utilizando para tal o login e senha logados no Windows.

Mãos na massa. Instalação realizada com Debian 5.07 lenny

:: Ingresse a máquina no Domínio AD 
Clique Aqui para Visualizar o POST
Após realizado os testes da integração conforme descrito no POST anterior vamos instalar o squid

:: Instalando o squid
# apt-get install squid

:: Configurando o squid
# cp /etc/squid/squid.conf /etc/squid/squid.conf.ori
# vim /etc/squid/squid.conf

Encontre as linhas
[...]
#Recommended minimum configuration per scheme:
#auth_param negotiate program <uncomment and complete this line to activate>
#auth_param negotiate children 5
#auth_param negotiate keep_alive on
#auth_param ntlm program <uncomment and complete this line to activate>
#auth_param ntlm children 5
#auth_param ntlm keep_alive on
#auth_param digest program <uncomment and complete this line>
#auth_param digest children 5
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#auth_param basic program <uncomment and complete this line>
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
[...]

Copie as linhas abaixo e altere conforme segue
[...]
# Autenticacao direta sem Pop-up de Senha
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param ntlm keep_alive on

# Autenticacao direta computadores não ingressadas no dominio
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
[...]

# ACL para autenticacao
acl all proxy_auth REQUIRED

# Liberando acesso
http_access allow all

:: Reinicie o squid
# squid -k shutdown
# squid -k kill
# squid -d 2

:: Olho nos logs do squid
# tail -f /var/log/squid/access.log

Tive uma série de problemas com esta autenticação, pois o Windows 7 insistia em solicitar a senha
e não era possível realizar a navegação. Depois de uma série de testes e mudanças, descobri que
o Windows 7 vem configurado por padrão para utilizar o NTLMv2. Foi só alterar para a versão anterior
do protocolo que a autenticação/navegação ocorreu certinho.

:: Alterando a versão do NTLM
1) Iniciar > Executar > secpol.msc
2) Navegue até Diretivas Locais > Opções de Segurança
3) Encontre o Item Segurança de Rede: nível de autenticação LAN Manager
4) Altere seu valor para Enviar LM e NTLM - usar segurança da sessão NTLMv2, se negociada

Obs.: Esta configuração pode ser realizada via GPO.

:: Utilizando os Grupos do AD para permissões

Crie o diretorio acl para manter as configurações organizadas
# mkdir /etc/squid/acl

Crie o arquivo que conterá os grupos Restritos por exemplo
# touch /etc/squid/acl/Grupos_Restritos.txt
# echo "Grupo Restrito AD" >> /etc/squid/acl/Grupos_Restritos.txt

# vim /etc/squid/squid.conf
[...]
acl Usuarios_Autenticados proxy_auth REQUIRED
external_acl_type groups children=20 %LOGIN /usr/lib/squid/wbinfo_group.pl
acl Grupos_Restritos external groups "/etc/squid/acl/Grupos_Restritos.txt"
http_access allow Usuarios_Autenticados Grupos_Restritos
[...]

sexta-feira, 3 de dezembro de 2010

Ingressar Linux no domínio Windows

:: Instale os seguintes pacotes
# apt-get install ntpdate samba-common winbind krb5-config krb5-user

:: Edite o arquivo /etc/krb5.conf e adicione as seguintes linhas
# vim /etc/krb5.conf

[libdefaults]
        default_realm = MICROSOFT.MSFT
 [...]
 [realms]
        MICROSOFT.MSFT = {
                kdc = 192.168.0.1
                kdc = 192.168.0.2
                admin_server = 192.168.0.1
               default_domain = microsoft.msft
        }
 [...]
 [domain_realm]
        .microsoft.msft = MICROSOFT.MSFT
        microsoft.msft = MICROSOFT.MSFT

:: Sincronize o horário com o Controlador de Domínio
# ntpdate 192.168.0.1

:: Teste a configuração do arquivo krb5.conf
# kinit administrator
password´s administrator@MICROSOFT.MSFT: **********

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ALDO.COM.BR

Valid starting     Expires            Service principal
12/03/10 11:12:35  12/03/10 21:12:41  krbtgt/MICROSOFT.MSFT@MICROSOFT.MSFT
        renew until 12/03/10 21:12:35

:: Configure o arquivo smb.conf, edite o arquivo e incluia os seguintes comandos
# vim /etc/samba/smb.conf
[...]
   workgroup = MICROSOFT
   server string = ServProxy
   netbios name = PROXY
   realm = MICROSOFT.MSFT
   winbind use default domain = yes
   security = ads
   idmap gid = 10000-20000
   idmap uid = 10000-20000
   os level = 20
   winbind enum users = yes
   winbind enum groups = yes

:: Adicionar servidor ao domínio
# net ads join -U administrator
Enter administrator's password:
Using short domain name -- MISCROFOT
Joined 'PROXY' to realm 'microsoft.msft'

:: Testar adição no domínio
# net ads testjoin
Join is Ok

# net ads info
LDAP server: 192.168.0.1
LDAP server name: dc1.microsoft.msft
Realm: MICROSOFT.MSFT
Bind Path: dc=MICROSOFT,dc=MSFT
LDAP port: 389
Server time: Sex, 03 Dez 2010 11:26:08 BRST
KDC server: 192.168.0.1
Server time offset: 0

:: Reinicie o winbind
# /etc/init.d/winbind restart

:: Teste se o servidor consegue recuperar usuários do domínio
# wbinfo -u

:: Teste de o servidor consegue recuperar grupos do domínio
# wbinfo -g

:: Alterar o arquivo /etc/nsswitch.conf
# vim /etc/nsswitch.conf
[...]
passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind
[...]

:: Teste a configuração do nsswitch.conf
# getent passwd
<Retornara os usuários do Linux e do AD>

Tudo OK.