quarta-feira, 16 de novembro de 2011

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

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:
ligação - http://download.gna.org/apolicy/apolicy-0.73.tar.gz

Baixando o pacote do apolicy, siga os passos exatamente como esta 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

Execute o comando abaixo para instalar

python setup.py install

Você vai 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, faça 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 isso é só adicionar na inicialização do sistema como 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, 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, isso fica sei 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 da minha configuração:

- 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

- 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

- Neste exemplo eu configurei que o email fulano@dominio.com.br pode 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

- 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, boa sorte pessoal.


Esse conteúdo está disponibilizado sobre a licença de uso - Tiu enhavo estas disponebla sur uza permesilo LiPE

Nenhum comentário:

Postar um comentário

Postagens populares