Arquivo da tag: postfix

Tutorial Debian 8 x64 com ISPConfig e NginX: Firewall

Um servidor sem Firewall é como aguardar por um desastre anunciado, você sabe que vai acontecer e, como administrador de sistemas, tem que tomar providências para minimizar os estragos.

Durante algumas semanas deixei o meu site num servidor que a gente chama “honey pot“. Esse tipo de servidor é usado para, propositalmente, receber ataques e fazer log de tudo direcionando-os para determinados arquivos do sistema. Com essa técnica consegue-se filtrar e catalogar os tipos mais comuns de ataques, e as análises extraídas servem de base para melhorar as defesas do sistema.

Neste artigo Vamos acionar o Firewall do ISPConfig (Bastille Firewall), reconfigurar o Fail2Ban melhorando a detecção, ajustar o JailKit, acertar o NginX para mitigar ataques DDoS e, opcionalmente, instalar o Logwatch e desativar o modo recursivo do BIND.

Configurando o Firewall do Sistema

* Acesse o terminal SSH como superusuário root para executar os comando de instalação e configuração.

Acionando o Firewall do ISPConfig

No artigo anterior deste tutorial mostrei como adicionar as portas para o modo passivo do FTP ao firewall do ISPConfig, se você pulou aquele passo ou não prestou atenção, proceda da seguinte maneira:

Acesse: ISPConfig → Sistema → Firewall

Clique no botão “Adicionar Registro de Firewall” e confirme a tela que abrirá (se já havia adicionado o Firewall simplesmente abra a configuração existente), em seguida clique na linha de configuração e na caixa de “Portas TCP abertas” adicione “40110:40210” (portas para o FTP passivo) desta maneira:

20,21,22,25,53,80,110,143,443,587,993,995,3306,8080,8081,10000,40110:40210

* Pode-se parar o firewall do ISPConfig pelo console a qualquer momento digitando: /etc/init.d/bastille-firewall stop (isso pode ser útil caso queira testar se algum serviço externo não está conseguindo acessar o servidor por causa de alguma restrição de porta)

Reconfigurando o Fail2Ban e melhorando a detecção de ataques

Fail2Ban é a ferramenta responsável por detectar ataques ao servidor e automaticamente aplicar regras de ban. Alguns serviços básicos já estão configurados, mas vamos adicionar outros para minimizar riscos.

* Antes de adicionar os filtros abaixo ao Postfix, verifique se você tem um nome de servidor FQDN configurado, isso é muito importante para o correto funcionamento. Para uma melhor explicação veja o passo “Antes de começar” neste link.

2a ⇒ Edite o arquivo /etc/postfix/main.cf e altere/adicione as linhas abaixo:

#Próximo à Linha 57: Substitua a instrução "smtpd_recipient_restrictions" por esta abaixo (note que é uma linha única. e note também que no script novo de instalação há suporte a greylisting de emails e que o repositório padrão configurado para checagens é o zen.spamhaus.org. O SpamHaus é conhecido por cometer "enganos" com IPs legítimos, caso decida usar o serviço deles não precisa alterar a linha 57):

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domain, permit
 
#Próximo às linhas 66 e 67: Substitua as linhas com instruções "smtpd_sender_restrictions" e "smtpd_client_restrictions" pelo bloco de código abaixo:

#EDIT Out/2016: Ajuste das instruções para a nova versão do instalador do ISPConfig, mantido o bloco antigo somente para compatibilidade

smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_sender_restrictions = 
   permit_mynetworks,
   reject_non_fqdn_sender,
   reject_unknown_sender_domain,
   check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf,
   permit
smtpd_client_restrictions = 
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unknown_client_hostname,
   check_client_access mysql:/etc/postfix/mysql-virtual_client.cf,
   permit

#Para instalações a partir de Out/2016 use este bloco de código:
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_sender_restrictions =
   check_sender_access regexp:/etc/postfix/tag_as_originating.re,
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_non_fqdn_sender,
   reject_unknown_sender_domain,
   check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf,
   check_sender_access regexp:/etc/postfix/tag_as_foreign.re,
   permit
smtpd_client_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unknown_client_hostname,
   check_client_access mysql:/etc/postfix/mysql-virtual_client.cf,
   permit

continuar lendo..

Gerenciamento de Servidores Cloud com atendimento e consultoria em português. Planos mensais com os melhores preços do mercado.
Envie um email para [email protected] e saiba mais!

*Regarding english support please contact me by email or post a comment using the Disqus system. I do offer monthly support and custom server deploy. Now accepting Paypal and Bitcoin!

PolicyD: Limitando o envio de emails pelo Postfix

PolicyD, também conhecido como Cluebringer, é uma ferramenta que permite limitar a quantidade de emails enviados pelo servidor através do Postfix. Neste tutorial mostrarei como instalar a última versão (policyD v2.1) no Linux Debian 7 e configurar o WebUI com NginX para gerenciar as regras.

Veremos também como limitar os emails enviados pelo Roundcube, e no final deste artigo poderemos, opcionalmente, modificar o Postfix para que não permita o envio de email por scripts PHP que não sejam através de contas cadastradas e verificadas (isso aumentará a segurança contra ataques hackers por code injection ou outras vulnerabilidades).

* Procurei documentaçöes durante semanas para conseguir escrever este artigo que ficará como referência, pois essa solução (completa) não existe em qualquer outro tutorial online. Em sites especializados fala-se que a grande falha do Cluebringer é não conseguir limitar o envio pelo Roundcube, vamos ao tutorial e irei provar que isso não é verdade.

Instalando e configurando a última versão do PolicyD para limitar o envio de emails

* Este tutorial foi testado em nosso servidor Debian 7 com ISPConfig 3 e Postfix, clique aqui e veja como instalar.

* Sempre faça backup/snapshot do servidor antes de instalar e configurar pacotes de aplicativos Linux, caso algo de errado aconteça você poderá restaurar o sistema.

Baixe e instale o Cluebringer (PolicyD)

Baixe a versão 2.1.x: Essa versão permite conexões IPv6 além de ter recursos extras. Acesse o console SSH como superusuário root e digite:

* Note que faremos a instalação manual do aplicativo pois essa versão não está disponível no repositório Debian. Note também que instalaremos o WebUI um web panel que facilitará o gerenciamento de regras.

> cd /root

> wget http://download.policyd.org/v2.1.x-201310261831/cluebringer_2.1.x~201310261831_all.deb

> wget http://download.policyd.org/v2.1.x-201310261831/cluebringer-webui_2.1.x~201310261831_all.deb

Desinstale a versão anterior caso tenha instalado: Se você seguiu outros tutoriais antes de encontrar este provavelmente tem a versão “postfix cluebringer” instalada, para removê-la:

> apt-get remove postfix-cluebringer postfix-cluebringer-mysql postfix-cluebringer-webui

Instale o PolicyD: Talvez seja necessário baixar algumas bibliotecas adicionais para suprir dependências dos pacotes, execute os comandos abaixo para resolvê-las e instalar:

> apt-get update
> apt-get install libconfig-inifiles-perl libcache-fastmmap-perl liblist-moreutils-perl

> dpkg -i cluebringer_2.1.x~201310261831_all.deb
> dpkg -i cluebringer-webui_2.1.x~201310261831_all.deb

Crie as tabelas no Banco de Dados: O instalador adicionou alguns arquivos ao sistema, acesse o diretório /usr/share/doc/cluebringer/database/ para configurar o MySQL:

D.1) Acesse o diretório, descompacte alguns dumps necessários e torne o conversor executável:

> cd /usr/share/doc/cluebringer/database/

> gunzip *.gz

> chmod 744 /usr/share/doc/cluebringer/database/convert-tsql

D.2) As instruções para criar as tabelas apresentam problema com InnoDB no MySQL, execute o conversor para corrigir isso (será criado um novo arquivo chamado policyd.sql):

> for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql accounting.tsql; do ./convert-tsql mysql55 $i; done > policyd.sql

D.3) Ainda dentro do diretório database/ acesse o console do MySQL para criar as tabelas:

* Como exemplo criaremos a tabela com o nome policyd e com as credenciais (Usuário: policyd e Senha: y3Wj7r6X2WbZ)

> mysql -u root -p

* Será solicitado a senha admin do MySQL

mysql> CREATE DATABASE policyd;

mysql> CREATE USER 'policyd'@'localhost' IDENTIFIED BY 'y3Wj7r6X2WbZ';

mysql> GRANT ALL PRIVILEGES ON policyd.* TO 'policyd'@'localhost';

mysql> USE policyd;

mysql> \. policyd.sql

mysql> quit

continuar lendo..

Gerenciamento de Servidores Cloud com atendimento e consultoria em português. Planos mensais com os melhores preços do mercado.
Envie um email para [email protected] e saiba mais!

*Regarding english support please contact me by email or post a comment using the Disqus system. I do offer monthly support and custom server deploy. Now accepting Paypal and Bitcoin!

Servidor de Email: Desativando o certificado SSL para autenticação das contas

Quando instalamos o servidor de email configuramos o Postfix com um certificado SSL livre que permite o envio de mensagens SMTP criptografadas pela porta 587 (TLS)  do servidor. O certificado instalado, por ser genérico, faz com que apareça uma mensagem ao configurar o cliente de email dizendo que o certificado não é confiável ou válido.

Para algumas pessoas, como é o meu caso, isso não faz muita diferença pois não uso clientes de email de desktop. Eu configuro meus envios e recebimentos do servidor pelo Gmail que considero a melhor opção para gerenciar contas. Mas para empresas que revendem sites e hospedagem o erro de certificado é inconveniente para os clientes, que quase sempre usam o Microsoft Outlook Express.

Neste tutorial mostrarei como desativar o modo obrigatório de criptografia para envios pela porta 587, e explicarei como configurar alguns dos clientes de email mais populares.

No Microsoft Outlook o erro apresentado geralmente é este: The server you are connected to is using a security certificate that cannot be verified ou este: O certificado de segurança foi emitido por uma empresa na qual você não escolheu confiar.

Configurando o Postfix e os clientes de email

* Este tutorial foi testado em nosso servidor Debian 7 com ISPConfig 3 e Postfix, clique aqui e veja como instalar.

Desative a criptografia TLS obrigatória para envios SMTP pela porta 587

Acesse o servidor com o usuário root e edite o arquivo /etc/postfix/master.cf. Em seguida modifique conforme abaixo:

# Altere a partir da linha 16 substituindo este código:

submission inet n - - - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING


# Por este outro:

submission inet n - - - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_enforce_tls=no
 -o smtpd_tls_security_level=may
 -o smtpd_tls_auth_only=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING

continuar lendo..

Gerenciamento de Servidores Cloud com atendimento e consultoria em português. Planos mensais com os melhores preços do mercado.
Envie um email para [email protected] e saiba mais!

*Regarding english support please contact me by email or post a comment using the Disqus system. I do offer monthly support and custom server deploy. Now accepting Paypal and Bitcoin!

Elastic Email: Conta gratuita permite enviar até 25 mil emails por mês

Em mais esta alternativa de SMTP Relay mostrarei como configurar o Elastic Email que permite o envio de até 25 mil emails mensais, sem limite de envios diários, na conta gratuita. Das empresas que selecionei essa é a que oferece a maior quantidade de envios na versão free.

Uma das grandes vantagens de se usar SMTP Relay externo é a garantia da entrega dos emails na caixa de entrada. Em nossos tutoriais anteriores mostramos como adicionar regras de firewall e tentar garantir que hackers não usem nosso servidor com técnicas de spoofing e backscatter, que “sujam” o IP do VPS adicionando-o em blacklists. Mas mesmo assim, digamos que você tenha uma revenda de hospedagem e um dos seus clientes seja spammer, isso também irá prejudicar o seu IP. Spammers buscam hospedagens que não tenham muito controle nas contas porque as grandes empresas limitam o envio.

Escreverei este tutorial de maneira muito parecida com o anterior e optando por SMTP Relay seletivo, podendo ser usado para somente algumas contas de um domínio ou domínios inteiros.

SMTP Relay com Elastic Email e Postfix

* Este tutorial foi testado em nosso servidor Debian 7 com ISPConfig 3 e Postfix, clique aqui e veja como instalar. Consideraremos que a sua tabela DNS de domínio já esteja configurada e devidamente propagada.

Crie uma conta gratuita no Elastic Email e configure o domínio

Crie uma conta: Clique neste link para cadastrar-se: https://elasticemail.com/account#/create-account

» Email: <– [email protected] (o email que irá gerenciar a conta)

» Confirm Email: <– [email protected] (confirme o email)

» Password: <– digite uma senha e confirme no próximo campo

» Account Type: <– Transactional (Marketing é um tipo de conta para emails de campanha, e Transactional são emails de contato, suporte, etc.. *Você poderá alterar isso a qualquer momento no painel)

» Marque a opção “I have read and agree to the Terms of Use” e clique em “Create“. *Será enviado um email de confirmação para habilitar a conta.

Adicione um domínio: Selecione a opção “Settings” no menu e clique no botão “Adicionar Domínio“. Digite o nome do seu domínio sem o “www” e clique em “Salvar“. Após salvar teremos que verificar o domínio.

Adicione os registros DNS do domínio: Isso é necessário, se não fizermos este passo a conta não enviará emails. Abra sua tabela DNS para editar os registros, na DigitalOcean o link é: https://cloud.digitalocean.com/domains/seudominio.com.br

* Se tiver dúvidas ao adicionar os registros abaixo consulte a documentação oficial do Elastic Email neste link.

* Aprenda como adicionar registros na tabela DNS seguindo este link.

» SPF: Na entrada SPF altere para incluir o servidor do elasticemail (e substitua o IP pelo do seu servidor), exemplo:

"v=spf1 ip4:104.130.85.225 include:_spf.elasticemail.com ~all"

*Um segundo exemplo: Digamos que você já tenha seguido algum tutorial nosso de outro SMTP Relay, pode-se digitar vários "includes" da seguinte maneira (não podemos criar mais do que um registro SPF na tabela, dará erro na verificação do cabeçalho do email):

"v=spf1 ip4:104.130.85.225 include:spf.mandrillapp.com include:_spf.elasticemail.com ~all"

continuar lendo..

Gerenciamento de Servidores Cloud com atendimento e consultoria em português. Planos mensais com os melhores preços do mercado.
Envie um email para [email protected] e saiba mais!

*Regarding english support please contact me by email or post a comment using the Disqus system. I do offer monthly support and custom server deploy. Now accepting Paypal and Bitcoin!

Mailgun: Solução de SMTP Relay no Postfix para servidores VPS

Mailgun é mais uma solução externa para entrega de emails, a diferença é que a conta gratuita permite enviar 10 mil emails mensais sem limitações diárias como na maioria dos concorrentes, e ainda permite adicionar até 5 domínios customizados pela mesma conta gratuita.

Há algum tempo atrás escrevi um tutorial de como usar o Mandrill para essa mesma função, porém eles mudaram a política e agora só é possivel enviar 2 mil emails na conta gratuita (o limite era 12 mil mensais anteriormente). Na minha opinião eles são a melhor empresa pois pertencem ao mesmo grupo da MailChimp, e as mensagens são todas entregues na caixa de entrada.

O Mailgun, em meus testes, também entrega na caixa de entrada sendo fácil de configurar. E com o limite de 10 mil mensais dá para enviar muito email marketing e newsletter sem se preocupar muito. Leia mais sobre os limites da conta clicando aqui.

Já mostramos como configurar o Postfix para enviar usando um SMTP Relay, autenticando a conta e os usuários, neste link e neste outro. Neste tutorial explicarei novamente porém de uma forma mais resumida, e optando por envios seletivos (para múltiplos domínios no mesmo servidor).

SMTP Relay com Mailgun e Postfix

* Este tutorial foi testado em nosso servidor Debian 7 com ISPConfig 3 e Postfix, clique aqui e veja como instalar. Consideraremos que a sua tabela DNS de domínio já esteja configurada e devidamente propagada.

Crie uma conta gratuita no Mailgun e configure o domínio

Crie uma conta: Clique neste link para criar uma conta no Mailgun: https://mailgun.com/signup

» Company/Account Name: <– FatorBinario (pode ser o nome do seu site aqui)

» Your Name: <– Luis (o seu nome)

» Your Email: <– [email protected] (o email que irá gerenciar a conta)

» Password: <– digite uma senha e confirme no próximo campo

» Add payment info now: <– <desmarcado> (apesar do aviso na tela não há necessidade de se adicionar um cartão de crédito ou outra forma de pagamento para habilitar a conta, veremos isso abaixo)

» Responda o captcha e clique em “Create Account“. *Será enviado um email de confirmação para habilitar a conta.

Adicione um domínio: Selecione a opção “Domains” no menu e clique no botão “Add New Domain“. Digite o nome do seu domínio sem o “www” e clique em “Add Domain“. Na próxima tela iremos verificar o domínio.

Adicione os registros DNS do domínio: Isso é necessário, se não fizermos este passo a conta ficará limitada a enviar somente 300 emails diários. Nesta tela veremos 5 passos mas precisamos executar somente o segundo “Add DNS Records For Sending“. Adicione o texto “include:mailgun.org” no seu registro SPF e crie um registro TXT para a chave DKIM do domínio (cole a chave entre aspas duplas no registro).

* Na tela de configuração não aparece mas temos que incluir um “ponto” no final do “hostname” quando criarmos o registro. Exemplo: “fatorbinario.com.”. Já mostramos várias vezes como fazer isso, mas se ainda tiver dúvidas siga este link.

Verifique o domínio: Após copiar os valores e adicionar os registros cloque no botão “Continue to Domain Overview” . Na próxima tela logo abaixo de “Domain Verification & DNS” clique no botão “Check DNS Records Now“. Se a tabela estiver propagada e com os registros inseridos uma mensagem em verde “Active” aparecerá no campo “State”.

Crie uma credencial para o SMTP Relay: Fazendo isso não precisaremos usar as credenciais da conta principal no Postfix. Ao lado de “Default Password” clique em “Manage SMTP credentials“.  Em seguida clique no botão “New SMTP Credential“. Em login escreva um alias qualquer, exemplo: mgsmtp (esse email servirá somente para configurarmos o acesso pelo Postfix). Digite e confirme uma senha, anote-a pois vamos precisar usá-la abaixo. O seu login da API será [email protected]

Configure o Postfix para enviar os emails por SMTP Relay

Edite o arquivo /etc/postfix/main.cf e modifique/adicione as seguintes linhas (os números das linhas são referentes ao arquivo original, se você alterou o arquivo por algum motivo encontre-as):

# Linha 23:

smtpd_use_tls = yes
# Modifique a linha 35 para um valor nulo

relayhost =
# Adicione estas linhas ao final (lembre-se de deixar uma linha vazia no final do arquivo para prevenir problemas). Isso ira ativar o SASL para autenticação externa

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps
smtp_sasl_security_options = noanonymous

continuar lendo..

Gerenciamento de Servidores Cloud com atendimento e consultoria em português. Planos mensais com os melhores preços do mercado.
Envie um email para [email protected] e saiba mais!

*Regarding english support please contact me by email or post a comment using the Disqus system. I do offer monthly support and custom server deploy. Now accepting Paypal and Bitcoin!