você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

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

Colaboração: Ederson Carlos

Data de Publicação: 02 de dezembro de 2011

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 trafego do email.

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 python-pydns) eu tive que instalar "na mão."

Baixe o pacote da última versão do apolicy aqui:

wget http://download.gna.org/apolicy/apolicy-0.73.tar.gz

Baixado o pacote do apolicy, siga os passos exatamente como 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 no seu diretório descompactado

tar zxf apolicy-0.73.tar.gz

Para instalar, execute o comando:

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 a seguir:

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

Execute o comando:

chkconfig --add apolicy

Feito isso é só adicionar na inicialização do sistema como o comando

chkconfig --level 234 apolicy on

O próximo passo é configurar o Postfix.

Edite, com cuidado, o arquivo /etc/main.cf, do Postfix:

Na diretiva 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.

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, devemos observar os arquivos de configuração do apolicy, primeiro vamos editar o arquivo de configuração do próprio apolicy.

Entre no diretório /etc/apolicy e dentro dele você encontrará 2 arquivos: main.conf e policy.conf.

Primeiro vamos editar o main.conf. Você pode alterar a porta em que o apolicy escuta. O padrão é a porta 10001. Eu mudei minha configuração para 50001. Você também pode definir o usuário que vai rodar com o apolicy, definições de log e outras.

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 da minha configuração:

  • apolicy configurado para checar greylist, com exceção dos ips que estiverem definidos no arquivo 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
    
  • Checando rbl - o arquivo rbl.txt contem as listas que serão checadas e o arquivo local.txt contem os ips que serão 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
    
  • Neste exemplo eu configurei que o email <fulano (a) dominio com br> pode somente enviar para
    beltrano@dominio.com.br
    acl pdest sender fulano@dominio.com.br
    acl penviar recipient beltrano@dominio.com.br
    action pemail OK
    access pdest penviar pemail
    
  • Você precisa que um determinado email não envie mas que somente receba emails.
    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.

Blog do Autor: http://linuxplue.blogspot.com

Doações para o CDI Campinas podem ser descontadas do Imposto de Renda

O CDI Campinas é uma organização não-governamental sem fins lucrativos que, desde 2000, desenvolve o trabalho pioneiro de promover a inclusão digital visando à inclusão social.



Veja a relação completa dos artigos de Ederson Carlos