Archives for maio, 2008
Posted on mai 30, 2008 under Python |
This is my first post in English, sorry any is grammatical errors !!!
My intention is write a little tutorial in Python showing how to make an oriented objects chat server using sockets and threads.
A skeleton of the chat server is basically given by the following loop:
- Wait for client connection
- After the client to be connected start a thread to each new client
- Get the user name and nickname
- Entry in a loop to read the socket if exists new messages send all clients except client who generated the message
Read the rest of this entry »
Posted on mai 28, 2008 under Segurança |
Os vírus estão cada vez mais inteligentes, ele se disfarçam de arquivos que o usuário usa seguidamente como por exemplo: relatório.doc.exe. Os usuários atucanados de serviço acabam clicando e contaminado cada vez mais a máquina. Se os arquivos contaminados tiverem os mesmos nomes de arquivos protegidos do windows, não será possível removê-los, como por exemplo o arquivo c:\windows\system\scanreg.exe.
Uma solução boa que encontrei para resolver este problema é escanear a máquina infectada (windows), através do linux, o qual possui um excelente antivírus o CLAMAV, que também possui uma versão para windows o CLAWIN. Este antivírus é muito eficiente e remove até adwares.
Nesse pequeno tutorial mostrarei como escanear uma maquina windows infectada com vírus através do linux com o NFS(Network FileSystem).
O primeiro passo é iniciar a máquina windows com um cd do Kurumin 2007, eu prefiro utilizar como opção de boot knoppix 2, a qual inicia em modo texto, tornando mais rápido a inicialização.
Após inicializado o devemos desmontar o /dev/hda1 mas antes a swap deve ser desabilitada com o comando abaixo:
swapoff -a
umount /dev/hda1
Se a partição do windows for fat32, deve ser montada com o seguinte comando:
mount /dev/hda1 /mnt/hda1 -oumask=0,dmask=0
Com umask=0 e dmask=0 todos os usuários tem permissão de leitura e escrita.
Se a partição for ntfs
ntfs-3g -oumask=0,silent,locale=pt_BR.iso88591 /dev/hda1 /mnt/hda1
Agora devemos configurar o nfs informando o diretório que será exportado e o ip da máquina que pode montar remotamente este diretório.
vim /etc/exports
#diretório ipremoto(opções)
#exemplo
#exporta o diretório /mnt/hda1 para toda a rede 192.168.1.0 com permissão de leitura e escrita
/mnt/hda1 192.168.1.*(rw)
Após o exports configurado podemos iniciar o servidor nfs
nfs-server-ativar
Esta máquina pega o ip através de dhcp então devemos descobrir o ip que a maquina recebeu com o comando:
ifconfig eth0
Neste exemplo o ip é 192.168.1.200, iremos utiliza-lo para montar o diretório.
Agora o nfs estará exportando o diretório /mnt/hda1 devemos montá-lo na máquina que possui o clamav instalado e atualizado.
Opto por esta solução devido a minha maquina estar sempre com o clamav atualizado não utilizando os recursos da rede para baixar atualizações.
Caso você não possui o clamav instalado mostro um exemplo de como instalar no gentoo:
emerge -av clamav
Atualizar o antivirus
freshclam
Na máquina com o clamav devemos rodar os seguintes comandos:
mkdir /mnt/tmp
mount 192.168.1.200:/mnt/hda1 /mnt/tmp
Você também pode usar sshfs para montar o diretório remoto conforme mostrado neste post Montando SSHFS
Passar o antivírus em modo recursivo, informar quando encontrar um vírus e removê-lo
clamscan -ri --remove --unzip=/usr/bin/unzip /mnt/temp
Estou usando esta solução quando o antivírus instalado na maquina não resolve o problema, o clamav encontra e remove uma grande quantidade de vírus, sendo uma ótima solução de antivírus gratuito.
Comente!!Incentivem !!!
Posted on mai 25, 2008 under Dicas Linux, Segurança |
Deletar um arquivo com o comando rm, não apaga ele definitivamente do hd,pendrive ou diskette. O comando rm não é suficiente para deletar arquivos com conteúdos confidenciais pois o arquivo deletado pode ser recuperado com ferramentas de recuperação de dados.
Para deletar completamente o arquivo use bcwipe. Este comando sobrescreve repetidamente com padrões especiais o arquivo que será deletado. No modo normal, 35 passadas são usadas sendo 8 randômicas.
Exemplos de uso:
Remover a pasta src de modo recursivo
bcwipe -rvf /src
Apagar o HD inteiro com 7-passadas do padrão DOD
bcwipe -bvmd /dev/hda
Neste post é mostrado como usar o bcwipe no linux, mas esta ferramenta também existe para windows.
Posted on mai 23, 2008 under Dicas Linux, Segurança |
Olá Pessoal.
Seguidamente nas servidores onde presto suporte é necessário transferir arquivos entre a minha máquina e o servidor. Até então utilizava o comando scp para transferir arquivos o qual funciona super bem mas as vezes demora um pouco para elaborar o comando, informar senha, …
Então descobri o SSHFS(Secure Shell FileSystem), implemetado em FUSE(Filesystem in Userspace). Com o sshfs pode montar um diretório remoto, e trabalhar neste diretório de forma transparente.
Requisitos para Instalação no Cliente:
No gentoo
Instalar o fuse:
emerge sys-fs/fuse
Instalando o ssh-fuse:
emerge sys-fs/sshfs-fuse
Carregando o módulo:
modprobe fuse
Montando o diretório remoto através de SSH em um ponto de montagem local:
sshfs usuárioremoto@hostremoto:/caminho/para/diretorio_remoto pontodeMontagem_local
ou
# sshfs usuárioremoto@hostremoto:/caminho/para/diretorio_remoto pontodeMontagem_local
-o allow_other
Para permitir que outros usuários tenham acesso.
Para Desmontar:
fusermount -u pontodeMontagem_local
Tenho usado este recurso a bastante tempo, o melhor é que a transferência de arquivos com SSHFS
é segura.
Posted on mai 23, 2008 under Novidades |
Você já precisou acessar seu página favorita e ela estava fora do ar, ou o servidor estava em manutenção. Contudo a causa pode algo mais misterioso. Vem acontecendo a algum tempo um efeito semelhante a um buraco negro na internet e está sendo pesquisado pela universidade de washington através de um projeto chamado de Hubble que teve seu inicio em 17 de setembro de 2007, operando continuamente desde então. Até o momento já encontrou 986,194 buracos negros.
Este fenômeno ocorre da seguinte forma: Num determinado momento, uma porção do tráfego Internet, acaba caindo em “buracos negros”. Há situações em que existem caminhos para o destino, mas as mensagens – um pedido para visitar um site na Web, ou envio de e-mail – se perdem pelo caminho. O projeto Hubble monitora e mostra um mapa com os buracos negros e o tempo de duração. O mapa pode ser acessado aqui.
Fonte:http://www.dailytech.com
Posted on mai 18, 2008 under C, Dicas Linux, Segurança |
Tenho a intenção de fazer uma série de artigos sobre dicas básicas de segurança em Linux. Muitas coisas passam despercebidas, às vezes nos preocupamos com as regras do firewall, os serviços que estão rodando mas nos esquecemos do básico.
Você já deve ter ouvido falar sobre SUID (Set User ID) Bit), SGID (Set Group ID). Mas qual a função destes atributos especiais ?
SUID
Quando executamos um programa o sistema operacional aloca recursos baseado no usuário que está executando o processo. Quando o SUID bit, é setado por exemplo para o usuário “root” o sistema irá permitir que um usuário comum execute funções não autorizadas. Muitos buffer overflow exploits são o resultado de programas SUID.
Arquivos com SUID: -rwsr-xr-x
SGID
Este atributo define as permissões para o grupo, funciona do mesmo modo que o SUID, mas a diferença é que as permissões tem efeito em diretórios. Então todos os arquivos e programas que estão dentro do diretório, quando executados ou editados por um usuário comum o sistema irá executar ou editar como se fosse o dono do arquivo.
Exemplo de exploit escrito em C
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
int main()
{
setgid(0); setuid(0);
execl("/bin/sh","sh",0);
}
Com este código acima com SUID habilitado é possível conseguir acesso de root.
root@localhost ~ # gcc -o exploit exploit.c
root@localhost ~ # chown root exploit
root@localhost ~ # chmod u+s exploit
root@localhost ~ # exit
marlon@localhost ~ $ ./exploit
sh-3.2# id
uid=0(root) gid=0(root) grupos=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
sh-3.2#
!!! Não me responsabilizo por uso indevido deste código, a divulgação é somente para conhecimento e prevenção!!!
Com o comando abaixo todos os programas com SUID e SGID são escritos no arquivo suidfile.txt
# /usr/bin/find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; 2>/dev/null >suidfiles.txt
Executando o comando acima no gentoo retorna a seguinte lista.
# less suidfiles.txt
/bin/su
/bin/ping
/bin/mount
/bin/umount
/var/qmail/bin/qmail-queue
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/crontab
/usr/bin/chage
/usr/bin/expiry
/usr/bin/sperl5.6.1
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/suidperl
/usr/lib/misc/pt_chown
/usr/sbin/unix_chkpwd
/usr/sbin/traceroute
/usr/sbin/pwdb_chkpwd
Para remover o SUID executa-se o comando chmod -s em cada arquivo.
Eu removi quase todos deixando somente o necessário: su, gpasswd, qmail-queue, unix_chkpwd, pwdb_chkpwd.
Se estiver usando X, a lista com certeza será maior pois necessita de acesso mais elevado.
Referências:
http://tldp.org/HOWTO/Security-HOWTO/file-security.html
http://www.gentoo.org/doc/pt_br/security/security-handbook.xml?part=1&chap=6
http://www.homepage.montana.edu/~unixuser/051602/SUID.html
http://www.hoobie.net/security/exploits/index.html
Comentem, Incentivem !!!!!!!!!
Posted on mai 17, 2008 under C |
Desenvolvi um protocolo de transferência de arquivos em C linux, utilizando a porta serial. Este protocolo tem as seguintes características:
- Cabeçalhos de Controle
- Controle de Següência;
- Controle de CRC 16 Bits;
- Caso o pacote chegue no receptor com erro de CRC é solicitado o reenvio do pacote;
- Mostra um barra de progresso sobre a transferência de arquivo.
Para compilar:
gcc -o protocol protocol-1.2.5.c
Executar transmissor:
./protocol -d /dev/ttyS0 -t
No receptor
./protocol -d /dev/ttyS0 -r
protocol-15>>>Código Fonte<<
Desenvolvido por:
Marlon Petry
Gerson Tomas Schmitt
Posted on mai 17, 2008 under C |
Implementação do algortimo Heapsort, mostrando o pior caso, melhor caso e caso médio e o número de trocas.
heapdebug2
Posted on mai 17, 2008 under Tutoriais |
Este é um tutorial sobre postfix bem básico não implementamos verificação de spam, antivírus.
Não é aconselhável colocar um servidor no ar com estas configurações.
Postfix é um MTA(Mail Transfer Agent), sendo uma
alternativa ou sendmail, qmail e outros. Tem como vantagens
estabilidade, seguranca e fácil configuraçao
Neste tutorial mostraremos como compilar e configurar o servidor
de email Postfix, nas suas configurações básicas:
1) Passo realizar o download da ultima release estavel
wget ftp://ftp.pucpr.br/postfix/official/postfix-2.4.5.tar.gz
2) Após concluído o download devemos realizar um backup dos
arquivos de configuraçãoo do sendmail, se estiver instalado
mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
mv /usr/bin/newaliases /usr/bin/newaliases.OFF
mv /usr/bin/mailq /usr/bin/mailq.OFF
chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
3)Mover e descompactar os fontes
mv postfix-2.4.5.tar.gz /usr/src
cd /usr/src
tar -xzvf postfix-2.4.5.tar.gz
4)Como padrão no Linux sempre acompanha os fontes o arquivo
INSTALL que mostra detalhes da compilação do pacote
less INSTALL
make -f Makefile.init makefiles
make
Antes de executar o make install devemos criar o usuário postfix
Acrescentar a seguinte linha no passwd
vim /etc/passwd
postfix:*:12345:12345:postfix:/no/where:/no/shell
Acrescentar o grupo
#vim /etc/group
postfix:*:12345:
postdrop:*:54321:
6) Ao executar o make install será solicitado os caminhos do servidor de email neste caso usaremos os padrões do postfix
make install
install_root: [/]tempdir: o diretório de origem da instalação
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newalises_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [/var/www/htdocs/postfix/]
manpage_directory: [/usr/local/man]
readme_directory: [/etc/postfix]
A partir daqui o postfix já esta compilado e instalado só falta configurar
vim /etc/postfix/main.cf
myhostname = localhost
mydomain = localdomain.com.br
mydestination = $myhostname, localhost.$mydomain, $mydomain,
mail.$mydomain
#Parametro para configurar as redes que serao aceitas no servido de email
mynetworks = 127.0.0.0/8
#Configuração para restricao de envio de email
smtpd_recipient_restrictions = permit_mynetworks,check_client_access,hash:/etc/postfix/client_access
check_relay_domains
#Local de entrega dos emails
mail_spool_directory = /var/spool/mail
Após realizada as configurações podemos verificar se existe algum erro de configuração com o comando
postfix check
Não havendo erros podemos iniciar o servidor de email
postfix start
Para verificar o funcionamento podemos executar o comando
netstat -vantu
Este comando mostra todos as conexoes tcp e udp na maquina devemos procurar pela porta 25
Testando o servidor
telnet 127.0.0.1 25
helo a resposta deve ser a seguinte 250 OK
mail from:
aresposta deve ser a seguinte 250 OK - mail from
rcpt to:
a resposta deve ser a seguinte 250 OK - Recipient
data
a resposta deve ser a seguinte 354 Send data. Finalizar com
.
quit
OK servidor testado, verifique se recebeu a mensagem
Outra forma de verificar o funcionamento é através do logs
tail -f /var/logs/mail/info
Posted on mai 17, 2008 under C |
O Algortimo de Huffman tem a função de comprimir arquivos baseados em caracteres, a compressão é feita através de uma árvore binária onde são adicionados os caracteres encontrados no texto, o caracter que mais aparecer no texto recebe o menor código e o que aparecer menos vezes recebe o código maior. Os códigos atribuídos a cada caracter numca podem passar de 1 byte.
Em anexo um exemplo do algoritmo de Huffman utilizando uma árvore binária estática.
Desenvolvido em Linux, gcc. Dentro do arquivo mostra como compilar
huff_marlon