terça-feira, 18 de fevereiro de 2014

Sessão Fix: MISCONFIGURATION

MISCONFIGURATIONkernel rp_filter settings, reverse path filtering
Sistema utilizadoRed Hat Enterprise Linux Server release 5.10 (Tikanga)

SINTOMA: 

Configuramos o servidor para ser um banco de dados Oracle, esse server ficava durante um tempo, tipo 1 dia, funcionando normalmente mas de repente o mesmo parava de responder a qualquer tipo de conexão vindo de determinadas máquinas, simplesmente os pacotes chegavam no servidor, em sua interface de rede, e o mesmo não respondia não importando o tipo de conexão vindas de determinadas máquinas. O firewall deste servidor assim como SELinux estavam desativados e não existia também nenhum filtro no caminho entre os servidores envolvidos nessa comunicação.

PROBLEMA:

O esquema de segurança contra ataque tipo Spoofing é assegurado por um parâmetro de Kernel rp_filter settings no Red Hat e esse parâmetro  foi ajustado incorretamente. A versão 5 do Red Hat admite somente dois valores para esse parâmetro(0 ou 1), já  a versão 6 do Red hat admite 3 valores(0,1 e 2).

No Red Hat 5:

rp_filter - BOOLEAN
        1 - Faz a validação da origem usando o caminho reverso, como especificado no RFC1812. Opção recomendada para servidores e roteadores de rede. Poderá causar problemas para redes complexas rodando um protocolo não confiável e lento(tipo RIP) ou que usa rotas estáticas.

         0 - Sem validação de origem.

        conf/all/rp_filter deve ser também configurado para TRUE para fazer a validação de origem na interface.

 Valor padrão é 0. Observe que algumas distribuições habilitam essa opção nos scripts de inicialização.

No Red Hat 6:

rp_filter - INTEGER
        0 - Sem validação de origem.

        1 - Modo rígido como definido na RFC3704. Cada pacote que chega é testado contra a FIB(Forwarding Information Base, encontra a interface apropriada para a qual a interface de entrada deverá encaminhar um pacote) e se a interface não é o melhor caminho reverso o check do pacote falhará. Por padrão pacotes que falharam são descartados.
   
        2 - Modo folgado como definido na RFC3704 cada endereço de origem do pacote que chega é também testado contra a FIB e se o endereço de origem não é alcançável via qualquer interface o check do pacote falhará.

SOLUÇÃO:

Se este problema de comunicação estiver acontecendo em seu servidor devemos primeiramente habilitar o log de martians packet:

echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians

sysctl -w net.ipv4.conf.default.log_martians=1

sysctl -p

Check os logs no dmesg:

dmesg | grep -i martian

Algo do tipo "martian source 169.254.179.40 from 169.254.179.43, on dev eth0" irá aparecer no seu log.

O nosso problema foi que configuramos o parâmetro rp_filter no arquivo /etc/sysctl.conf na versão 5 do Red Hat com o valor 2(Sendo que essa versão só aceita dois valores 0 ou 1):

net.ipv4.conf.default.rp_filter = 2


Modificamos o parâmetro para o valor certo em dois parâmetros e o sistema parou de logar martian packet e derrubar as conexões legitimas vindas outros servidores da nossa rede:

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1


quinta-feira, 27 de junho de 2013

Localizar arquivos ou diretórios grandes ocupando a partição /

Uma forma simples para pesquisar arquivos que possivelmente esteja ocupando espaço na sua partição, usamos os seguintes e simples comandos: 1 - Acessar a partição que deseja pesquisar quem são os maiores arquivos:
# cd /
2 - Listar e filtrar por arquivos ou diretórios que o tamanho esteja em gigabyte(G):
# du -h | awk '{print $1}'|grep G
5.1G
6.0G
6.0G
1.8G
2.0G
8.4G
1.4G
2.8G
2.9G
3.2G
6.4G
3 - Com uma das linhas do resultado acima, que informa os diretórios ou arquivos que possuem tamanho em giga, execute o seguinte comando para saber qual o diretório ou arquivo, por exemplo:
# du -h | grep 8.4G
8.4G    ./var
4 - Podemos realizar esse mesmo procedimento entrando na partição /var e depois executar os passos 2 e 3 afim de refinar mais ainda a nossa pesquisa para encontrar o diretório ou arquivo que esteja ocupando muito espaço em nossa partição.

sexta-feira, 21 de dezembro de 2012

Script deletar e-mails da fila do Qmail

Quando uma conta de e-mail de seu domínio esta sendo utilizada para enviar spam para internet(provavelmente por que esteja com uma senha frágil) será necessário deletar os e-mails que estão na fila para serem enviados. Você identificará isso quando ver que sua fila de e-mails está muito grande e que existe uma conta sendo a responsável pelo envio dessa massa de e-mails. 1 - Para visualizar a sua fila de e-mails no Qmail utilize o comando:
# qmailctl queue
2 - As vezes o mailfrom pode ser um e-mail que não pertença ao seu domínio, os spammers nesse caso somente utilizam a conta de algum usuário do seu servidor de e-mail para realizar o login e ter permissão para enviar os spam e ai trocam o mailfrom que aparece quando você manda listar a fila. Para identificar a conta do usuário que está sendo utilizada procure nos logs do smtpd faço um filtro usando o mailfrom que aparece lá na fila. 3 - O script abaixo deletar e-mails da fila com base no mailfrom que aparece lá na fila. Então para utiliza-lo você deverá parar o serviço Qmail e então executar o script informando o mailfrom que está enviando a massa de e-mails. OBS.: Não esqueça, logicamente, de redefinir a senha da conta que estava sendo utilizada para enviar spam.
###############################################################
# Deletar spam de acordo com remetente local
# Por Leonardo Couto Conrado
# Em 16.11.2012
###############################################################
#!/bin/sh

path=/var/qmail/queue
cmdFind=/usr/bin/find
cmdQmailCtl=/usr/local/bin/qmailctl
cmdGrep=/bin/grep
cmdEcho=/bin/echo
cmdLs=/bin/ls
cmdRm=/bin/rm
cmdAwk=/bin/awk

$cmdEcho -n "Informe o e-mail que esta sendo usado para enviar spam: "; read emailUsedAsSpammer


$cmdEcho "O servico do Qmail ja esta parado e o e-mail usado como spam e $emailUsedAsSpammer? yes, no ou quit?"
read opt
case $opt in
"quit")
        $cmdEcho "Saindo..."
        exit
        ;;
"yes")
        $cmdEcho "Entrando em processo de exclusao de e-mails..."
        for i in $( $cmdQmailCtl queue | $cmdGrep $emailUsedAsSpammer |$cmdAwk -F '#' '{ print $2 }' | $cmdAwk '{ print $1 }' ); do
        $cmdFind $path -name $i -exec $cmdRm -rf {} \;
        $cmdEcho "Vai ser deletado= " $i
        done
        ;;

"no")
        $cmdEcho "Você deve parar o servico do qmail antes de deletar mensagens na fila e ter certeza do e-mail que esta sendo usado como spam."
        exit
        ;;

*)
        $cmdEcho "O servico do Qmail ja esta parado e o e-mail usado como spam e $emailUsedAsSpammer? yes, no ou quit?"
        ;;
esac

segunda-feira, 30 de janeiro de 2012

Parque tecnológico da Bahia

A Bahia está muito perto de ter seu primeiro Parque Tecnológico. 
Este empreendimento surge para abrigar empresas de base tecnológica, centros de pesquisas, universidades e incubadoras de empresas.

Com alto padrão urbanístico, o empreendimento tem um cuidadoso tratamento paisagístico, preservando parte da cobertura da Mata Atlântica e do seu relevo. Localizado na Avenida Paralela, principal eixo de expansão urbana de Salvador, o Parque Tecnológico da Bahia está próximo ao aeroporto de Salvador, centros de tecnologia, instituições de ensino e conta com conexão de fibra ótica.

O Estado da Bahia dispõe de recursos para apoiar empresas inovadoras que se instalem no parque. São 581.000 m² de área, destinados à geração de conhecimento e de negócios de alto valor agregado.


Entenda como vai funcionar:
http://saudeweb.com.br/video/entenda-como-vai-funcionar-o-parque-tecnologico-da-bahia/

Fonte:
http://www.secti.ba.gov.br/parquetecnologico/

sexta-feira, 20 de janeiro de 2012

Plugin do Nagios para verificar a fila de e-mails do servidor Qmail

OBS.: O plugin é executado através do NRPE na máquina remota, logo, o script deve ser colocado junto aos outros plugins do nagios na máquina cliente, ou seja, no servidor Qmail e não no servidor Nagios.

Este script ajudará a identificar um possível ataque ao seu servidor de e-mails. Onde uma conta de e-mail do seu dominio provavelmente com uma senha frágil esteja sendo utilizada para enviar uma grande massa de e-mails (SPAM) com destino a endereços e-mails da internet, logo, isso acarretará em uma grande quantidade em excesso de mensagens na fila de envio do seu servidor Qmail atrasando o envio de e-mails verdadeiros. O script checará sempre essa quantidade de mensagens na fila e retornará a saída para o Nagios.

 Copie o script abaixo, que irá checar a fila de e-mails, para o diretório de plugins do Nagios no seu servidor Qmail:

# vi /usr/local/nagios/libexec/check_qmail_queue
############################################################### 
# Script checar fila de e-mails do Qmail 
# Por Leonardo Couto Conrado 
# Em 20.01.2012
############################################################### 
#!/bin/sh

OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3

criticalMsgsInQueue=90
warningMsgsInQueue=80

mailQueue=$(/usr/local/bin/qmailctl queue | grep "messages in queue:" | awk -F ":" '{print $2}')

if [ $mailQueue -gt $criticalMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE CRITICAL, $mailQueue MSGS NA FILA!"
        exit $CRITICAL
fi


if [ $mailQueue -gt $warningMsgsInQueue ]; then
        echo "NÚMERO DE MENSAGENS NA FILA ULTRAPASSOU O LIMITE DE WARNING, $mailQueue MSGS NA FILA!!"
        exit $WARNING

        else
                echo "NÚMERO DE MENSAGENS NA FILA ESTÁ OK, IGUAL A $mailQueue MSGS NA FILA."
                exit $OK
fi

exit $UNKNOWN

# chmod +x /usr/local/nagios/libexec/check_qmail_queue


Para ativar o check, devemos inserir o comando e o serviço no servidor do Nagios. Segue procedimento para ser executado no Nagios:

1 - Crie o comando no arquivo commands.cfg (No ambiente usado para esse "how to" o arquivo encontra-se em /usr/local/nagios/etc/objects/commands/commands.cfg no servidor Nagios:

vi /usr/local/nagios/etc/objects/commands/commands.cfg
#'check_nrpe_qmail_queue' command definition
define command{
        command_name    check_nrpe_qmail_queue
        command_line    $USER2$/check_nrpe -H $HOSTADDRESS$ -c check_msgs_qmail_queue
        }

2 - Crie o serviço para o servidor Qmail:

vi /usr/local/nagios/etc/objects/services/linux-services.cfg
define service{
        use                             non-critical-services         ; Name of service template to use
        host_name                       SRVLMSSAMAIL01
        service_description             EMAILS IN QUEUE
        check_command                   check_nrpe_qmail_queue
      }

3 - Configure o check no NRPE no servidor Qmail:


vi /usr/local/nagios/etc/nrpe.cfg

command[check_msgs_qmail_queue]=/usr/local/nagios/libexec/check_qmail_queue


4 - Reinicie o serviço do Nagios no servidor Nagios e o serviço do NRPE no servidor de e-mail Qmail.

Seguidores