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: 9.272 ]

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)

Configurando Postfix + MySQL + Courier + SPF + Clamav + SpamAssassin + Greylist + TLS

ICINGA - Monitorando máquinas remotas com NRPE

Fazendo hierarquia proxy/Squid

Destrinchando a compilação do Squid

Leitura recomendada

Email + EGroupWare + Active Directory

Instalando um servidor de news com INN

Integrando o Exim4 com o SendGrid

iRedMail como servidor de e-mails em servidor GNU/Linux ou BSD

SlackwareBOX MTA

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts