quarta-feira, 26 de setembro de 2007

Resolvendo o problema do "Comando da morte"

Sem delongas, o problema é o comando abaixo:

:(){ :|:& };:
...quando executado em um terminal (como qualquer usuário do sistema) é capaz de provocar terror! Essa desgraça ae fica em loop e a solução, até então, é RESET nele!

Como de costume, testado num Debian Etch, blah blah blah...

Felizmente, quase todo problema tem solução. E esse ae se resolve assim:

Adicione, ou descomente, a seguinte linha do /etc/pam.d/login

session required pam_limits.so
E também, adicione a seguinte linha no final do arquivo /etc/security/limits.conf:

hard nproc 100
Prontinho! Agora execute o maldito comando novamente, só para ter certeza.

That's all foooooolks!

quarta-feira, 19 de setembro de 2007

Postfix + Postgrey

A técnica de Greylisting é muito interessante no ponto de vista de bloqueio de SPAM. Diferentemente do Spamassassin, que faz análise do conteúdo do email, o Postgrey evita os SPAMs controlando, através de uma tabela, quais máquinas estão enviando emails - e segurando-as em fila por um determinado período de tempo. A desvantagem que eu, particularmente, vejo no uso de Greylisting é o pequeno delay gerado na entrega das mensagens....o que é perfeitamente aceitável. A grande vantagem é que o email pode ser rejeitado antes mesmo de chegar ao Spamassasin, ecomizando processamento.

O ambiente utilizado é o costumeiro Debian Etch, blah blah blah...
É suposto que você já tenha um ambiente Postfix perfeitamente funcional.

A instalação do Postgrey e sua integração com o Postfix é extremamente simples.

Instalando:

aptitude install postgrey

Para integrar ao Postfix, basta adicionar à classe de restrição smtpd_recipient_restrictions a linha seguinte linha:

check_policy_service inet:127.0.0.1:60000

Deve ficar mais ou menos assim:

smtpd_recipient_restrictions = permit_sasl_authenticated,check_policy_service inet:127.0.0.1:60000, (suas restrições, ... )reject

Algumas dicas:
- Para diminuir o tempo de delay é só alterar o arquivo /etc/default/postgrey:
De: POSTGREY_OPTS="--inet=127.0.0.1:60000"
Para: POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=90"

- Para Listar TODAS as msgs na fila de espera:
cat /var/log/mail.info | postgreyreport

- Para CONTAR o numero de msgs na fila de espera:
cat /var/log/mail.info | postgreyreport | wc -l

- Para Verificar as msgs para determinado email:
cat /var/log/mail.info | postgreyreport | grep email@domain.com.br

É isso. E Funciona!!

segunda-feira, 10 de setembro de 2007

A verdadeira proteção contra SYN-FLOOD

Vejo muitos documentos por aí ensinando a se proteger de SYN-FLOOD assim:

iptables -A FORWARD -p tcp --syn -m limit --limit 10/s -j ACCEPT
iptables -A FORWARD -p tcp --syn -j DROP

Mentiraaaaa!!! O 11º pacote do segundo (10/s) pode ser legítimo!
Tá, e daí? E daí que você fez o trabalho do atacante e está aplicando um D-DOS-Y (Do-a-Denial-Of-Service-Yourself, eheheh...essa definição é minha).

Então qual é maneira betopena-like de fazer a coisa certa??
Eu acho que é assim:

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Tá, blza! Mas e se ao invés de SYN-FLOOD nós tivermos um ACK-FLOOD??
Hmm. Boa pergunta. Ainda não havia pensado nisso.

That's all folks!!

domingo, 9 de setembro de 2007

Crie sua própria RBL

Se você não sabe o que é, e nem como funciona um servidor de email, nem leia essa dica. Antes disso, pesquise sobre Postfix e técnicas de bloqueio de SPAM, especialmente RBL (Real-time DNS Black List). Ah, e claro, BIND.

Utilizando Debian + Postfix (etc...) + BIND9.

Edite o arquivo de configuração do Bind e adicione uma zona, de acordo com suas necessidades, assim:

zone "rbl.dominio.com.br" {
type master;
file "/etc/bind/db.rbl";
}

...agora crie o arquivo db da zona criada. (use o db.local como modelo, e faça os ajustes necessários). Seu db.rbl deve se parecer com isso:

32.4.0.10 IN A 127.0.0.1
221.5.0.10 IN A 127.0.0.1
101.1.16.172 IN A 127.0.0.1
1.3.168.192 IN A 127.0.0.1

Os ips bloqueados, no exemplo acima, são 10.0.4.32, 10.0.5.221, 172.16.1.101 e 192.168.3.1.

Agora é só inserir a sua blacklist numa diretiva de restrição do Postfix (smtpd_client_restrictions, por exemplo), mais ou menos assim:

smtpd_client_restrictions = reject_rbl_client rbl.dominio.com.br

A alimentação da blacklist é por sua conta, e pode ser automatizada por um script que lê os logs do Postfix.

That's all folks!

sábado, 8 de setembro de 2007

Aumentando o limite de tamanho dos anexos enviados pelo SquirrelMail

Versão dos softwares envolvidos (dpkg --list pacote):
- Debian Etch Kernel 2.6.18
- Postfix 2.3.8-2+b1
- Apache 2.2.3-4
- PHP 4
- Squirrelmail 1.4.9a-2

O tamanho dos anexos enviados pelo Squirrelmail é, por padrão, 2M. Precisei alterar esse limite para 10M. Fiz isso alterando os seguintes arquivos:

  • /etc/squirrelmail/config.php:
De:
$abook_file_line_length = 2048;

Para:
$abook_file_line_length = 10240;

  • /etc/php4/apache2/php.ini:

memory_limit = 10M ;Quantidade máxima de memória que o PHP pode consumir (8MB).
post_max_size = 10M ;Tamanho máximo de dados que o POST do PHP aceitará.
upload_max_filesize = 10M ;Tamanho máximo permitido para tranferência de arquivos.


E deu certo!!