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.

quinta-feira, 4 de novembro de 2010

Windows Live não Conecta

Dias desses algums clientes reportaram que não estavam conseguindo estabelecer a conexão com o Windows Live (esse programa é f@d#). Em algumas buscas pela Internet encontrei uma informação muito importante, o problema pode estar relacionado com a lista de contatos em seu computador. Logo:

:: Finalize o processo do Windows Live
taskkill -f -im msnmsgr.exe

:: Vá para o diretorio %UserProfile%\AppData\Local\Microsoft
cd %UserProfile%\AppData\Local\Microsoft

:: Remova o diretorio Windows Live Contacts
rd -s "Windows Live Contacts"

Esta dica resolveu grande parte dos problemas deste tipo.

Ping funciona mas acesso via UNC não

Me deparei com vários problemas neste sentido. Não conseguia "ver" computador nenhum no ambiente de rede e não consegui acessar nenhum via UNC (\\servidor\compartilhamento), mas consegui executar o comando ping em todos eles, através de IPs e nomes.

Depois de muitos dias e vários tentativas, como atulizações, anti-vírus, alterações no registros, etc. descobri que a opção "Clientes para Rede Microsoft" dentro da configuração do Adaptador de Rede estava desabilitada.
Ativada a opção todos os acessos normalizaram.

Fica ai mais uma dica. Até +

sexta-feira, 3 de setembro de 2010

Exchange - Setar tamanho das Caixas via Shell

Para ajustar o tamanho da caixa postal via Shell Script, utilize o seguinte comando

Set-Mailbox -Identity <caixaPostal> -IssueWarningQuota <valor> -ProhibitSendQuota <valor> -ProhibitSendReceiveQuota <valor> -UseDatabaseQuotaDefault $false

Onde:
IssueWarningQuota - Exchange avisa que o limite da cota está próximo
ProhibitSendQuota - Exchange bloqueia o envio e Mensagens
ProhibitSendReceiveQuota - Exchange bloqueia o Envio/Recebimento de Mensagens

valor = Valor em KB; ou
valor = unlimited

Exchange - Filtros nos Imports/Exports de Caixa

Algumas vezes precisamos filtrar algum tipo de mensagem com base no Assunto, Rementete,
Destinário. O console Shell do Exchange dá um força para isso. (Estes comandos são utilizados
com os comandos do post Anterior "Exchange - Manipulação de Caixas Postais>

:: Para excluir mensagens
-DeleteContent

:: Para filtrar por Assunto
-SubjectKeywords <palavras>

::Para filtrar por Rementente
-SenderKeywords <palavras>

:: Para filtrar por Destinatário
-RecipientKeywords <palavras>

Exchange - Manipulação de Caixas Postais

Para exportar emails de uma determinada caixa postal para outra, utilize os seguintes comandos Shell Script no console do Microsoft Exchange:

:: Setar Permissões
Add-MailboxPermission -Identity <caixaUsuario> -User <usuario> - AccessRights FullAccess

caixaUsuario = a caixa postal que será manipulada
usuario = o usuário que realizará a manipulação

:: Exportar Mensagens para outra Caixa
Export-Mailbox -Identity <caixaOrigem> -TargetMailbox <caixaDestino> -TargetFolder <pasta>

:: Exportar Mensagens para um arquivo .pst
Export-Mailbox -Identity <caixaOrigem> -PstFolderpath <caminho\nomeArquivo.pst>

:: Importar Mensagens de um arquivo .pst
Import-Mailbox -Identity <caixaDestino> -PstFolderpath <caminho\nomeArquivo.pst>

::Filtrar por Assunto
-SubjectKeyWords <palavra>


:: Filtrar por Rementente
-SenderKeywords <palavra>

:: Filtrar por Destinatário
-RecipientKeywords <palavra>


:: Filtrar por Data de Inicio
-StartDate dd/MM/yy


:: Filtrar por Data Final
-EndDate dd/MM/yy

Editor padrão no Linux

Para setar o editor de texto padrão em Linux basta exportar a variável EDITOR com o valor para o novo editor de texto.

#export EDITOR=/usr/bin/vi

Para tornar esta alteração "eterna" para todos os usuários digite este comando no arquivo /etc/rc.local

Para tornar esta alteração "eterna" para apenas um usuário digite este comando no arquivo <usuario>/.bashrc

quinta-feira, 2 de setembro de 2010

Erro ao aplicar "Encaminhar Mensagem"

Algumas vezes quando vamos configurar o encaminhamento de mensagens para outro usuário nos deparamos com algums problemas no Exchange. Uma provável solução para este problema é certificar-se que o serviço "Atendedor do Sistema do Microsoft Exchange" está iniciado e executando sem problemas. Para isso:
  1. Iniciar > Executar > Digite "services.msc" > ENTER
  2. Localize na Janela Serviços o serviço referido e verifique seu Status

Exchange não Aplica Novo de Tamanho de Caixa

As alterações realizadas com relação ao tamanho das Caixas Postais dos usuários do Microsoft Exchange acontecem através de processo de manunteção agendamento pelo próprio Exchange. Algumas vezes temos pressa em aplicar estas alterações, então ai vai a dica:

Reinicie o serviço "Armazenamento de Informação do Microsoft Exchange"

  1. Clique em Iniciar > Executar > Digite services.msc.
  2. Localize o serviço "Armazenamento de Informação do Microsoft Exchange"
  3. Reinicie o serviço da forma que preferir.

sexta-feira, 27 de agosto de 2010

Login Automático no Windows

Para realizar o login automático de um usuário no Windows mesmo que este computador faça parte de um domínio AD, entre o registro do Windows e altera/crie as seguintes chaves.

Iniciar > Executar > regedit > ENTER

Navegue até a chave de registro abaixo e faças as alterações necessárias

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AutoAdminLogon"="1"
"DefaultUserName"="nome do usuário"
"DefaultPassword"="senha do usuário"  --> Criar Chave (Sequencia)
"DefaultDomainName"="dominio local"
"DontDisplayLastUserName"="0"         --> Criar chave (Sequencia)

quinta-feira, 26 de agosto de 2010

Linux - Liberando NAT entre interfaces

:: Criar regra de NAT através do iptables
iptables -t nat -A POSTROUTING -s 192.168.x.x/24 -o eth0 -j MASQUERADE

:: Permitr o NAT
# echo 1 > /proc/sys/net/ipv4/ip_forward

1 - Esta alteração será persistida até o reinicio do linux;
2 - Este comando poderá ser incluido no arquivo /etc/rc.local para ser executado toda vez que for reiniciado, ou;
3 - Pode-se alterar o arquivo /etc/sysctl.conf descomentado a linha net.ipv4.ip_forward=1.

Microsoft TMG/ISA FTP

O Firewall o desenvolvido pela Microsoft (TMG ou ISA) ao libera o upload de arquivos através do FTP. Tem-se a impressão que alguma restrição no servidor FTP mas...

1) Encontrar a regra de liberação
2) Clique contrário
3) Opção configurar FTP
4) Desmarcar somente leitura
5) Aplicar regras

Microsoft TMG

:: Requisitos de Software

.Net Framework
Servidor de Diretiva de Rede
Serviço de Roteamento e Acesso Remoto
Ferramentas AD LDS
Ferramentas de Balanceamento de Carga
Windows Power Shell
SNMP
Console de Gerenciamento do IIS (Devido aos Certificados)

quarta-feira, 25 de agosto de 2010

Instalando Postfix com Relay Autenticado

:: Remover Exim
apt-get remove exim4 exim4-base exim4-config exim4-daemon-light mailx mutt

 :: Instalar o Postfix e bibliotecas necessárias para autenticação
apt-get install postfix postfix-pcre postfix-tls procmail sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-gssapi-heimdal

 :: Configurações arquivo postfix /etc/postfix/main.cf -  incluir/alterar as seguintes linhas
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $mydomain

#smtpd_tls_auth_only = no
#smtpd_sasl_application_name = smtpd

smtpd_recipient_restrictions =
   permit_mynetworks,
       permit_sasl_authenticated,
   #reject_non_fqdn_sender,
   #reject_non_fqdn_recipient,
   reject_unauth_destination

#reject_unauth_pipelining,
#reject

:: Criar o arquivo /usr/lib/sasl2/smtpd.conf com o seguinte conteúdo
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

:: Criar o seguinte link simbólico
ln -f /usr/lib/sasl2/smtpd.conf /etc/postfix/sasl/smtpd.conf

:: Criar o seguinte diretório
mkdir -p /var/spool/postfix/var/run/saslauthd

:: Editar o arquivo /etc/default/saslauthd e editar os seguintes itens
[...]
START=yes
[...]
MECHANISMS="shadow"
[...]
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

:: Setar as permissões necessárias
chown postfix /var/spool/postfix/var/run/saslauthd/

:: Adicionar o usuário postfix ao grupo sasl
adduser postfix sasl

:: Reiniciar os servicos postfix e saslauthd
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

Remover Exim

Após realizar a instalação do Linux Debian, me deparei com um serviço de SMTP sendo executado. Como precisava instalar o PostFix fui obrigado a remover este MTA. Segue receita:

apt-get remove exim4 exim4-base exim4-config exim4-daemon-light mailx mutt

Início dos Trabalhos

Após passar por vários problemas e encontrar possíveis soluções, sempre acabamos por esquecê-las. Depois de muito sofrimento resolvi anotar estas soluções em arquivo no próprio computador, mas "caramba", trabalhamos com informática, então nada mais justo do que utilizar as tecnologias que temos como aliada. Foi para este fim que criei o meu blog. A partir de hoje, vou postar todos os problemas e soluções que me deparar com assuntos relaciados a tecnologia, desta forma, manterei estes itens centralizados e ainda de quebra poderei ajudar alguém que se deparou com o mesmo problema.

Vamos nessa!