====== Firewall Dinâmico para Zimbra ====== === Motivação: === A conta de administrador do Zimbra recebe mensagens com notificações de origem de spams com os respectivos IPs dos supostos spammers. Foi sugerida a criação de uma solução que bloqueasse pelo período de 15 dias o acesso desses endereços ao servidor de e-mail. ==== Serviços utilizados: ==== *** Getmail 4** *** Iptables** ==== Configuração do Ambiente: ==== É recomendado a criação de uma conta de e-mail para que receba através do encaminhamento cópias das mensagens que a conta admin@ifce.edu.br com as notificações. Neste caso foi criada a conta spamhunter@ifce.edu.br para receber os e-mails com as notificações. Todos procedimentos descritos abaixo devem ser realizados no servidor responsável por receber os e-mails. ==== Configuração do Getmail 4: === Instalação do GetMail 4: sudo apt-get update sudo apt-get install getmail4 É necessária a criação do diretório onde será armazenado o arquivo de configuração do getmail no home do usuário que irá baixar os e-mails: mkdir /home/operador/.getmail Criação do arquivo de configuração para que seja possível baixar os emails: vim /home/operador/.getmail/getmailrc Conteúdo do arquivo com comentários: [retriever] # Tipo de servidor pode ser POP ou IMAP, neste caso foi definido POP type = SimplePOP3SSLRetriever # Endereço do Servidor POP server = pop.ifce.edu.br # Nome de usuário do e-mail username = spamhunter@ifce.edu.br # Senha da conta de e-mail password = linuxifce mailboxes = ("out.ifce",) [destination] type = Mboxrd # Endereço do arquivo com conteúdo dos e-mails baixados path = ~/mail/emails.mbox [options] # print messages about each action (verbose = 2) # Other options: # 0 displays warnings and errors # 1 displays messages about retrieving and deleting messages read_all = false # Apaga os emails do servidor depois de baixar delete = true verbose = 2 # Endereço do arquivo de log do serviço de e-mail do usuário message_log = ~/.getmail/ifcemail.log Criação do script que irá baixar os e-mails, extrair os endereços IPs dos possíveis spammers e irá gerar as regras no firewall local da máquina do zimbra: vim /home/operador/antispam ==== Conteúdo do Script comentado: === #!/bin/bash # Cria arquivo que irá armazenar o conteúdo dos e-mails touch /home/operador/mail/emails.mbox # Executa o getmail com isso os e-mails serão baixados getmail # Extrai o IP dos e-mails de notificação dos spams e cria uma lista dos Ips a serem bloqueados no arquivo /home/operador/lista cat /home/operador/mail/emails.mbox | grep 'localhost localhost' | cut -d "," -f1 | cut -d "[" -f 2 | cut -d "]" -f 1 > /home/operador/lista # Enviado Regras para o Firewall com bloqueio de 15 dias para cada IP recebido da lista # Define variáveis SPAMLIST="spamlist" SPAMDROPMSG="SPAM LIST DROP" BADIPS=$(egrep -v -E "^#|^$" /home/operador/lista) dateatual=`date +%Y/%m/%d | sed 's/\//-/' | sed 's/\//-/'` datefinal=`date +%Y/%m/%d -d "+15 days" | sed 's/\//-/' | sed 's/\//-/'` datefinal2=`date +%Y/%m/%d -d "+1 days" | sed 's/\//-/' | sed 's/\//-/'` # Cria nova lista no iptables sudo /sbin/iptables -N $SPAMLIST for ipblock in $BADIPS do sudo /sbin/iptables -A $SPAMLIST -s $ipblock -m time --kerneltz --datestart $dateatual --datestop $datefinal -j DROP done sudo /sbin/iptables -A INPUT -s 200.17.33.0/24 -m time --kerneltz --datestart $dateatual --datestop $datefinal2 -j ACCEPT sudo /sbin/iptables -A INPUT -s 127.0.0.1 -m time --kerneltz --datestart $dateatual --datestop $datefinal2 -j ACCEPT # Gera lista com todos os IPs que já foram bloqueados pelo menos uma vez no Firewall cat /home/operador/lista >> /home/operador/blacklist # Limpa os e-mails baixados rm -rf /home/operador/mail/emails.mbox # Limpa a lista de IPs gerada na execução do script rm -rf /home/operador/lista Preparando o do Script para execução : chmod 777 /home/operador/antispam chmod +x /home/operador/antispam Incluindo o Script na Crontab do usuário para execução a cada uma hora: crontab -e Deverá ser adicionada na última linha o seguinte conteúdo: 0 * * * * /home/operador/antispam Referencias: * [[http://pyropus.ca/software/getmail/documentation.html]] * [[http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html]] --- //[[valber.jones@ifce.edu.br|Valber Jones de Castro]] 2014/12/29 13:05//