Reforçando a segurança do MTA Postfix com o Apolicy

Esse mini-tutorial explica de maneira simples e direta como configurar seu Postfix para usar o Apolicy, aumentando assim a segurança do seu MTA.

[ Hits: 8.051 ]

Por: flipe em 25/11/2011 | Blog: http://linuxplue.blogspot.com


Reforçando a segurança do MTA Postfix com apolicy



Introdução ACL Policy Daemon é uma ferramenta livre que se comunica com o MTA Postfix usando Protocolo de Delegação de política, implementando sistema de ACL (Access Control List) para criar e melhorar o controle do tráfego do e-mail.

O que pode ser feito com ACL Policy Daemon:
  • Greylisting;
  • SPF validação;
  • Controle de Mensagens por dia/hora;
  • Limites de tamanho de mensagem variável por domínio ou e-mail;
  • Verificar múltiplas RBL;
  • Rejeitar mensagem somente se IP do cliente está listado em mais de uma RBL, ao mesmo tempo;
  • Pequena curva de aprendizagem;
  • Sintaxe inspirado no sistema de ACL do proxy HTTP Squid;
  • Várias ACLs para usar e combinar.

Instalando e configurando o apolicy

Primeiro vamos começar com as dependências, lembrando que eu estou usando a distro CentOS 5.5:

# yum install python-twisted-core python-devel

Estes 2 pacotes (python-pyspf e python-pydns) eu tive que instalar 'na mão'.

Baixe o pacote da última versão do apolicy aqui: http://download.gna.org/apolicy/apolicy-0.73.tar.gz

Baixando o pacote do apolicy, siga os passos exatamente como indicado abaixo:

# wget http://www.apolicy.org/gpg/miguelfilho.gpg -O- -q | gpg --import
# wget http://download.gna.org/apolicy/apolicy-0.73.tar.gz
# wget http://download.gna.org/apolicy/apolicy-0.73.tar.gz.sig
# gpg --verify apolicy-0.73.tar.gz.sig


Descompacte o pacote e entre em seu diretório descompactado:

# tar zxf apolicy-0.73.tar.gz

Execute o comando abaixo para instalar:

# python setup.py install

Você verá as seguintes linhas no momento da instalação:
running install

running build

running build_py

creating build

creating build/lib

creating build/lib/apolicy

copying src/apolicy/parser.py -> build/lib/apolicy

copying src/apolicy/__init__.py -> build/lib/apolicy

copying src/apolicy/base.py -> build/lib/apolicy

copying src/apolicy/config.py -> build/lib/apolicy

copying src/apolicy/server.py -> build/lib/apolicy

running install_lib

creating /usr/lib/python2.4/site-packages/apolicy

copying build/lib/apolicy/parser.py -> /usr/lib/python2.4/site-packages/apolicy

copying build/lib/apolicy/__init__.py -> /usr/lib/python2.4/site-packages/apolicy

copying build/lib/apolicy/base.py -> /usr/lib/python2.4/site-packages/apolicy

copying build/lib/apolicy/config.py -> /usr/lib/python2.4/site-packages/apolicy

copying build/lib/apolicy/server.py -> /usr/lib/python2.4/site-packages/apolicy

byte-compiling /usr/lib/python2.4/site-packages/apolicy/parser.py to parser.pyc

byte-compiling /usr/lib/python2.4/site-packages/apolicy/__init__.py to __init__.pyc

byte-compiling /usr/lib/python2.4/site-packages/apolicy/base.py to base.pyc

byte-compiling /usr/lib/python2.4/site-packages/apolicy/config.py to config.pyc

byte-compiling /usr/lib/python2.4/site-packages/apolicy/server.py to server.pyc

running install_data

creating /etc/apolicy

copying main.conf -> /etc/apolicy

copying policy.conf -> /etc/apolicy

Se estiver da forma como acima é porque a instalação executou com sucesso, caso deseje criar o 'init script', siga o procedimento abaixo:

Copie o arquivo 'apolicy.init' para o diretório '/etc/init.d' com o seguinte nome: apolicy.

Execute o comando abaixo:

# chkconfig --add apolicy

Feito isto é só adicionar na inicialização do sistema com o comando:

# chkconfig --level 234 apolicy on

Agora o próximo passo é a configuração no Postfix.

Tenha uma maior atenção nessa parte porque você não pode errar.

No arquivo 'main.cf' do Postfix em 'smtpd_recipient_restrictions', coloque a linha referente ao apolicy (check_policy_service inet:127.0.0.1:10001) logo abaixo do 'reject_unauth_destination'.

Detalhe: Pode ser em qualquer posição abaixo de 'reject_unauth_destination' reforçando que tem que ser abaixo.

Exemplo de como deve ficar:

smtpd_recipient_restrictions ...,

...,

reject_unauth_destination,

check_policy_service inet:127.0.0.1:10001,

...

Também pode colocar em 'smtpd_client_restrictions', nesse caso você pode colocar em qualquer posição.

Configurando o Postfix

Agora devemos observar os arquivos de configuração do apolicy, mas primeiro vamos editar o arquivo de configuração do próprio apolicy.

Entre no diretório '/etc/apolicy' e dentro dele vai encontrar 2 arquivos: 'main.conf' e 'policy.conf'.

Primeiro vamos editar o 'main.conf', nesse arquivo é muito simples. Você pode alterar a porta em que o apolicy escuta, que no caso a padrão é a '10001'; eu mudei minha configuração para '50001', isto fica seu critério. Você também pode definir o usuário que vai rodar com o apolicy e definições de log e outros.

Agora vamos ao que interessa, no arquivo 'policy.conf' (esse é o 'cara' que vai dar um "up" na segurança do MTA), adicionando ACL's. Edite este arquivo.

Vou deixar aqui alguns exemplos das minhas configurações:

1- Neste exemplo abaixo eu configurei o apolicy para checar greylist, com exceção dos ips que estiver no local.txt:

acl email client_address /etc/apolicy/local.txt

acl grey_all greylisting time=1,lifetime=14400,backend=disk,root=/var/cache/apolicy/

action to_greyslist DEFER_IF_PERMIT Greylisting, Espere 1 minuto...

access grey_all !email to_greyslist

2- Checando rbl - no arquivo rbl.txt tem as listas que serão checadas e no local.txt os IPs ignorados na checagem:

acl rblmail client_address /etc/apolicy/local.txt

acl rbl1 rbl /etc/apolicy/rbl.txt

action brbl REJECT nao aceitamos spammers!!!!

access rbl1 !rblmail brbl

3- Neste exemplo, eu configurei para que o e-mail 'fulano@dominio.com.br' possa somente enviar para:

deltrano@dominio.com.br

acl pdest sender fulano@dominio.com.br

acl penviar recipient deltrano@dominio.com.br

action pemail OK

access pdest penviar pemail

4- Você precisa que um determinado e-mail não envie, mas que somente receba e-mails:

acl benvio sender fulano@dominio.com.br

action bemail REJECT nao pode enviar!!!

access benvio bemail

Bem, tentei demostrar um uso básico. Essa ferramenta é poderosa e com ela você pode criar muitas regras para reforçar a segurança do seu MTA.

Boa sorte pessoal.

Previamente publicado em:
Contato Linux Plue: linuxplue.blogspot.com

Para entrar em contato com os editores da Linux Plue, envie um email para: linuxplue@gmail.com (Ederson Carlos/Felipe Augusto)

"A base do conhecimento é a indagação, o interesse e o esforço".
   

Páginas do artigo
   1. Reforçando a segurança do MTA Postfix com apolicy
Outros artigos deste autor

Criando delay pools (Proxy/Squid)

Conhecendo o LXDE

Fazendo hierarquia proxy/Squid

ICINGA - Monitorando máquinas remotas com NRPE

Servidor NIS/NFS

Leitura recomendada

Servidor de e-mail no Linux com MTA Sceo

Conversão da base de dados do Cyrus IMAP no Debian

Solução corporativa Expresso Livre, substituto de peso do Notes

Clamav com Mailscanner para Postfix

Servidor de email completo com Postfix

  
Comentários
[1] Comentário enviado por silent-man em 29/11/2011 - 10:13h

flipe,

qual distro vc ta usando na instalação?

[2] Comentário enviado por ecbr em 12/12/2011 - 09:18h

silent-man estamos usando o centos 6.0.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts