terça-feira, 8 de setembro de 2009
0day no IIS FTP - Microsoft Windows
No último dia 31/08/09 o hacker conhecido como Kingcope, divulgou no site milw0rm um exploit 0day que explora vulnerabilidades no serviço IIS FTP do windows server.
De acordo com a Microsoft as versões afetadas vão desde windows 2000 até 2008, passando por XP e Vista. Até o presente momento não existe correção para esta falha, porém a microsoft "recomenda" alguns "workarounds"(vulgo GATO):
1º Tire o serviço do ar se não utiliza-lo x);
2º Remova a permissão de escrita no diretório do FTP para usuários anônimos;
3º Não permita acesso de usuários anônimos (detalhe, por default o serviço permite);
4º Modifique as permissões do drive NTFS para não permitir a criação de diretórios;
Um vídeo exemplificando o ataque pode ser visto no link abaixo:
http://www.offensive-security.com/videos/microsoft-ftp-server-remote-exploit/msftp.html
Nos próximos posts, irei descrever como uma técnica(Single Packet Authorization) pode ser útil para que o ataque por um exploit 0day não tenha sucesso!!! =D
Links:
http://www.milw0rm.com/exploits/9559
http://www.microsoft.com/technet/security/advisory/975191.mspx
http://isc.sans.org/diary.html?storyid=7063
sexta-feira, 4 de setembro de 2009
Criando um Repositório CentOS
- Requisitos
* Apache (httpd)
* Rsync (rsync)
* Createrepo (createrepo)
* Espaço em disco (80GB)
- Configurando o Repositório
- Criação dos diretórios
Para cada versão do CentOS, um diretório será criado para servir de repositório. Obedecendo a seguinte lógica:
* /var/www/html/centos/VERSÃO/{os,updates}/{i386,x86_64}
Onde:
* VERSÃO → corresponde a versão do CentOS (4.4, 5, 5.2,…)
* os → corresponde ao diretório para onde serão copiados todos os CDs/DVDs da versão correspondente (diretório base)
* updates → corresponde ao diretório para onde serão sincronizados todas as atualizações do CentOS
* i386 → arquitetura 32 bits
* x86_64 → arquitetura 64 bits
Exemplos:
32 bits:
* mkdir /var/www/html/centos/5/os/i386
* mkdir /var/www/html/centos/5/updates/i386
64 bits:
* mkdir /var/www/html/centos/5/os/x86_64
* mkdir /var/www/html/centos/5/updates/x86_64
- Criando o repositório Base
O repositório base, localizado dentro do diretório “os”, é o local onde serão copiados os CDs/DVDs da versão correspondente. Por exemplo, na versão 5:
* cp -R /CDROM /var/www/html/centos/5/os/i386/
Após a criação do repositório base, devemos executar o comando createrepo que cria informações de repositório para oferecer suporte a novas versões do yum (e possivelmente para repositórios de outros programas clientes). O comando createrepo armazena estes dados numa pasta chamada repodata.
* createrepo /var/www/html/centos/5/os/i386/
- Sincronizando o Repositório
A sincronização do repositório, deve ser feita com algum Mirror oficial do CentOS, garantindo assim uma fonte confiável. Os mirrors disponíveis podem ser localizados neste link:
* http://www.centos.org/modules/tinycontent/index.php?id=30
Escolha um mirror que tenha um servidor rsync para a sincronização (ex.:kernel.org , stanford.edu,…). Após escolher, sincronize com o comando abaixo:
* rsync -avrt rsync://mirrors.kernel.org/centos/5/updates/i386/ /var/www/html/centos/5/updates/i386/
Obs1: Este passo, quando feito pela 1º vez tende a demorar bastante, visto que o rsync vai sincronizar seu servidor atual (vazio) com a base atualizada, tendo que fazer o download de todos os pacotes. Da 2º vez em diante, o rsync faz a adição/remoção apenas das diferenças, o que tende a ser muito mais rápido
Obs2: É recomendável colocar o comando descrito acima no crontab, para que em um intervalo de tempo programável ele seja executado.
Obs3: Certifique-se que a porta 22, que é utilizada pelo rsync, está aberta no firewall. Caso contrário a sincronização irá falhar.
Após este passo, o seu servidor de repositório CentOS já está em funcionamento.
Configurando o Cliente
A configuração do cliente se dá através da edição de um arquivo. Edite o arquivo CentOS-Base.repo e coloque apenas o conteúdo abaixo:
[base]
name=CentOS-$releasever - Base
baseurl=http://IP_DO_SERVIDOR/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
##############################################################
[update]
name=CentOS-$releasever - Updates
baseurl=http://IP_DO_SERVIDOR/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
- Informações Úteis
http://www.centos.org/modules/tinycontent/index.php?id=30
http://mirror-status.centos.org/
http://yum.baseurl.org/
http://createrepo.baseurl.org/
terça-feira, 14 de julho de 2009
Criptografia Quântica
Este foi um dos temas que estava na minha lista de possíveis temas para a monografia da pós em segurança da informação. Apesar de não ter sido escolhido, devido a falta de documentação, vale a pena um post no blog sobre o futuro da criptografia e de toda a computação.
A criptografia clássica, baseada na matemática, utiliza a fatoração de números primos para a construção dos seus problemas. Sabe-se que todo e qualquer problema baseado na criptografia clássica é vulnerável a um tipo de ataque, a força bruta. No entanto, pode acontecer o seguinte: os recursos gastos para a resolução de um problema, podem ser maiores do que a informação ali contida. Isto acontece devido ao poder computacional atual, que não consegue em tempo hábil resolver tais problemas.
Com o advento da computação quântica, os sistemas criptográficos baseados na criptografia clássica estão prestes a se tornarem obsoletos. Isto deve-se ao altissímo poder computacional dos computadores quânticos, que conseguirão resolver problemas matemáticos em um intervalo de tempo muito curto. Além disso, uma linha de pesquisa conhecida como criptografia quântica, está sendo considerada como a criptografia inquebrável, até mesmo pelos computadores quânticos.
A criptografia quântica, que tem seus princípios básicos na mecânica quântica, é uma linha de estudo que visa aperfeiçoar a criptografia clássica atual, utilizando a natureza quântica dos fótons para a distribuição segura de chaves em um meio inseguro (Internet).
quarta-feira, 1 de julho de 2009
FISL 10
sexta-feira, 19 de junho de 2009
Single Packet Authorization - III ENSOL
O vídeo da palestra está hospedado no seguinte link:
http://www.flavioribeiro.com/SPA/SinglePacketAutorization.avi
Valeu ai smurf pela hospedagem =D
quarta-feira, 15 de abril de 2009
Como adicionar um storage externo e compartilhado em máquinas virtuais no VMWare ESXi
- instalar a interface HBA no Hipervisor
- Conectar a Fibra na interface HBA e no Storage
- Criar e configurar o acesso dessa HBA as LUNs no storage
Feito isso, podemos partir para a configuração nas máquinas virtuais.
Depois de quebrar muito a cabeça, pude verificar que o processo é muito simples. Nas configurações da máquina virtual que terá acesso ao storage, você deve adicionar um novo controlador SCSI e marcá-lo como físico, como a imagem abaixo.
Feito isso, crie um novo disco, setando a LUN do storage que você deseja, e coloque como controlador SCSI o criado no passo anterior.
sexta-feira, 3 de abril de 2009
Integrando o Samba com o LDAP
Faz um tempo que estou com este post guardado, e agora resolvi colocar aqui pra esclarecer melhor as dúvidas sobre a integração do Samba com o LDAP. Não porque seja difícil e trabalhoso, mas sim por falta de organização da minha parte =D.
Um dos principais problemas que os administradores de rede (Linux) enfretam, é ter que gerenciar todas as informações (login e password) relativas a usuários de uma maneira descentralizada, por exemplo: um novo usuário chega na sua empresa e então começa a peregrinação dos admininstradores, tendo que percorrer todos os serviços(mail, proxy, domínio,...) que serão alocados para este usuário e criar contas separadamente para cada serviço.
Derivando do X.500, o LDAP (Lightweight Directory Access Protocol) surge como uma alternativa para o problema citado no exemplo acima. Existem diversas aplicações para o LDAP, dentre as mais conhecidas estão o OpenLDAP e o Active Directory.
Criei um cenário, que está exemplificado na figura abaixo:
Neste cenário utilizei um servidor Debian lenny, com o OpenLDAP instalado, além do phpLDAPadmin, que é uma interface WEB de gerenciamento para a base LDAP. No lado cliente utilizei um Windows 2000 professional, que irá acessar os compartilhamentos concedidos pelo Samba.
Os pacotes instalados (via apt-get) no servidor foram:
- slapd
- lpad-util
- libdb4.3
- libdb4.3-dev
- libdb4.3-util
- phpldapadmin
- samba
- smbldap-tools
- smbclient
- smbfs
Após a instalação, edite o arquivo /etc/ldap/slapd.confda sequinte maneira:
#Arquivos Schema
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema #obtido junto ao tarball do samba
#Parâmetros de log
loglevel 0
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_bdb
#Parâmetros do Banco de Dados
database bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
#Raiz da Arvore
suffix "dc=empresa,dc=com"
#Administrador do domínio
rootdn "cn=administrador,dc=empresa,dc=com"
rootpw "senha123"
Após a configuração do slapd.conf vamos criar os arquivos ldifs, que é um modelo de arquivo para a inserção de dados na árvore de diretório. Neste exemplo iremos criar 3 arquivos:
- Domínio
- Equipes
- Usuários
- dominio.ldif:
dn: dc=empresa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: empresa
o: empresa
- equipe.ldif:
dn: ou=atendimento,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: atendimento
dn: ou=redes,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: redes
dn: ou=seguranca,dc=empresa,dc=empresa
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: seguranca
dn: ou=bd,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: bd
- usuarios.ldif:
dn: uid=joao,ou=atendimento,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: joao
sn: Carneiro
mail: joao@empresa.com
telephonenumber: 3157-4403
uid: joao
userPassword: senha123
dn: uid=andre,ou=redes,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: andre
sn: Silva
mail: andre@empresa.com
telephonenumber: 3467-9251
uid: andre
userPassword: senha123
dn: uid=maria,ou=seguranca,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: maria
sn: Villas
mail: maria@empresa.com
telephonenumber: 3512-0245
uid: maria
userPassword: senha123
dn: uid=marcos,ou=bd,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: marcos
sn: Nobrega
mail: marcos@empresa.com
telephonenumber: 3234-7640
uid: marcos
userPassword: senha123
Após criar os arquivos, o próximo passo é adicionar a base LDAP. Adicione os arquivos com os seguintes comandos:
# ldapadd -f dominio.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
# ldapadd -f equipes.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
#ldapadd -f usuarios.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
obs: Parâmentros
- -f : indica qual arquivo será incluído no diretório
- -x : informa que irá utilizar autenticação simples
- -D : informa o dn
- -W : invoca um prompt pedindo a digitação da senha
Para visualizar a árvore criada, utilize o phpldapadmin. Para isso digite: http://ipdoservidorldap/phpldapadmin .
O Próximo passo é configurar o samba, para integrar-se ao LDAP. Edite o arquivo smb.conf, e deixe como abaixo:
[global]
workgroup = ldap
security = user
encrypt passwords = yes
#Configuração para a integração com o LDAP
ldap admin dn="cn=administrador,dc=empresa,dc=com"
passdb backend = ldapsam:ldap://127.0.0.1/
ldap suffix = "dc=suporte,dc=gti"
ldap ssl = off
[compart]
comment = Compartilhamento na máquina ldap/samba
writeable = yes
path = /arquivos
public = yes
browseable = yes
Feito isso, devemos configurar o cliente Windows seguindo os passos abaixo:
- Colocar a máquina Windows 2000 no mesmo grupo de trabalho do samba (variável workgroup)
- Criar os usuários no servidor debian(comando adduser).
Obs: este passo só será necessário porque o samba necessita de contas criadas no servidor.
- Remova o arquivo do samba “secrets.tdb”
- Digite o comando:
# smbpasswd -w (senha do admin-ldap)
- Coloque os usuário criados no samba (passo anterior) com o comando
# smbpasswd -a usuario (a partir deste momento os usuários serão inseridos no LDAP)
- Reinicie o samba:
# /etc/init.d/samba restart
- Na máquina windows faça:
iniciar(botao direito) → explorar → meus locais de rede → computadores próximos a mim → escolha o servidor samba.
- Informe um usuário/senha criado anteriormente no servidor samba.
Obs: Configure as permissões para os usuários acessarem os compartilhamentos criados.