De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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