Objetivo
Aqui falaremos rapidamente sobre os procedimentos que utilizamos para instalar o Proxmox. Antes de iniciar esse procedimento, recomendamos uma lida em nosso artigo (neste link, ou nas referências abaixo) comparando algumas soluções antispam, para lhe ajudar a decidir se esta solução é a melhor para seu caso.
Passos/Condutas
Lembre-se de alterar as partes em cinza para o padrão de sua empresa.
- Preparar o Ambiente (Servidores):
Antes de iniciar, obtenha a ISO mais atual do Proxmox Mail Gateway no site da proxmox. É importante que o nome DNS esteja funcionando corretamente (neste exemplo os endereços serão quarentena.suaempresa.com.br, mail.suaempresa.com.br e mail2.suaempresa.com.br)
Para a montagem do ambiente é importante demonstrar os pré-requisitos necessários para a instalação do, utilizamos a configuração padrão de servidores:
Ambiente/Função | Nó1 | Nó2 | Nó3 |
Nome no HOST | DMZ-041-MS | DMZ-042-MS | DMZ-043-MS |
Nome de REDE | quarentena.suaempresa.com.br | mail2.suaempresa.com.br | mail.suaempresa.com.br |
Endereço | SEU_IP_1 | SEU_IP_2 | SEU_IP_3 |
Função | Quarentena de e-mail para usuários | Filtro de mensagens | Filtro de mensagens |
Size | 4GB de RAM 100GB de Disco |
8GB de RAM 30GB de Disco |
8GB de RAM 30GB de Disco |
- Instalação do SO
Na primeira tela, escolha a opção Install Proxmox Mail Gateway. Na tela de contrato, clique em I agree, na tela seguinte apenas clique em Next. Na tela seguinte, preencha o Pais Brazil, coloque o time zone Americas/Sao_Paulo e o layout de teclado deixe como Brazil-Portuguese. Na tela seguinte, obtenha com a equipe de infraestrutura a senha de root e o e-mail do suporte, informe e clique em Next. Na tela de Management Network Configuration, configure o nome completo do servidor (nome.domínio), o endereço IP (SEU_IP_1, SEU_IP_2 ou SEU_IP_3), a máscara de rede, o Gateway, o DNS Server (coloque apenas um servidor DNS neste momento) e clique em Next. Na tela final, clique em Reboot para reiniciar o servidor virtual.
- Customizações do SO
Após instalação do sistema operacional, acesse por SSH e execute os comandos:
echo “#deb https://enterprise.proxmox.com/debian/pmg stretch pmg-enterprise” > /etc/apt/sources.list.d/pmg-enterprise.list
echo “deb https://download.proxmox.com/debian/pmg stretch pmg-no-subscription” >> /etc/apt/sources.list.d/pmg-enterprise.list
apt-get clean
apt-get update
apt-get install gcc make ntp ntpdate open-vm-tools snmpd -y
apt-get upgrade -y
Para todas as perguntas que fizer, escolha a opção keep the local version currently installed. Em seguida digite:
apt-get dist-upgrade -y
Caso apareça uma tela sobre a atualização de um produto, escolha sempre keep the local verson currently installed.
sed -i “s/timeout=5/timeout=1/g” /boot/grub/grub.cfg
sed -i “s/0.debian.pool.ntp.org/SEU_NTP_1/g” /etc/ntp.conf
sed -i “s/1.debian.pool.ntp.org/SEU_IP_2/g” /etc/ntp.conf
echo “30 * * * * /usr/sbin/ntpdate SEU_NTP_1 >/dev/null 2>&1″ >> /var/spool/cron/root
systemctl enable ntp
echo “export MIBS=/usr/share/snmp/mibs” >> /etc/default/snmpd
sed -i “s/public/ZAQ@xw2CDE%/g” /etc/snmp/snmpd.conf
/etc/init.d/snmpd restart
- Serviço BIND
apt-get install bind9 bind9utils bind9-doc -y
cp /etc/bind/named.conf.options /tmp
echo “acl goodclients {” > /etc/bind/named.conf.options
echo ” localhost;” >> /etc/bind/named.conf.options
echo ” localnets;” >> /etc/bind/named.conf.options
echo “};” >> /etc/bind/named.conf.options
echo “” >> /etc/bind/named.conf.options
echo “options {” >> /etc/bind/named.conf.options
echo ” directory \”/var/cache/bind\”;” >> /etc/bind/named.conf.options
echo ” recursion yes; ” >> /etc/bind/named.conf.options
echo ” allow-query { goodclients; };” >> /etc/bind/named.conf.options
echo ” dnssec-validation auto;” >> /etc/bind/named.conf.options
echo ” auth-nxdomain no; # conform to RFC1035″ >> /etc/bind/named.conf.options
echo ” listen-on-v6 { none; };” >> /etc/bind/named.conf.options
echo “};” >> /etc/bind/named.conf.options
sed -i “s/\”-u bind\”/\”-u bind -4\”/g” /etc/default/bind9
named-checkconf
systemctl enable bind9
systemctl restart bind9
- Customizações
Digite os seguintes comandos:
echo “00 01 * * * root /usr/bin/sa-update” >> /var/spool/cron/root
echo “00 01 * * * root /usr/bin/freshclam” >> /var/spool/cron/root
cp /usr/share/javascript/pmg-gui/js/pmgmanagerlib.js /tmp
vi /usr/share/javascript/pmg-gui/js/pmgmanagerlib.js
Digite /Proxmox Mail Gateway Login para localizar essa linha, pressione INSERT do teclado para entrar em modo de edição e altere para Mail Gateway Login. Em seguida pressione ESC para sair do modo de edição.
Logo abaixo da linha modificada, localize manualmente a linha fieldLabel: gettext(‘User name’), , altere de ‘User name’ para ‘E-mail’. Logo abaixo, localize a seção proxmoxLanguageSelector e comente (utilizando /* no ínicio e */ no fim) toda a parte, deixando da seguinte forma:
/* { xtype: ‘proxmoxLanguageSelector’, fieldLabel: gettext(‘Language’), value: Ext.util.Cookies.get(‘PMGLangCookie’) || ‘en’, name: ‘lang’, submitValue: false }, */ |
Para salvar e sair do documento, pressiona a tela ESC do teclado e digite :wq!
- Desabilitando o Pop-up de assinatura
cp /usr/share/javascript/pmg-gui/js/pmgmanagerlib.js /tmp
vi /usr/share/javascript/pmg-gui/js/pmgmanagerlib.js
Digite /pmgSubscription e pressiona a tecla n (isso vai fazer ele percorrer o arquivo em cada local onde foi encontrado o texto pesquisado) até localizar a linha localize a linha mainview.getController().redirectTo(‘pmgSubscription’); pressione INSERT do teclado para entrar em modo de edição e comente essa linha (para comentar adicione /* no inicio da linha e */ no final da linha) para desabilitar o pop-up. Em seguida pressione ESC para sair do modo de edição e digite :wq! para salvar e sair.
vi /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
Digite /No valid subscription para localizar essa linha, pressione INSERT do teclado para entrar em modo de edição e comente toda a parte, deixando da seguinte forma:
/* Ext.Msg.show({ title: gettext(‘No valid subscription’), icon: Ext.Msg.WARNING, msg: Proxmox.Utils.getNoSubKeyHtml(data.url), buttons: Ext.Msg.OK, callback: function(btn) { if (btn !== ‘ok’) { return; } orig_cmd(); } }); */ |
- Configurando o Certificado SSL
Obtenha com a equipe de rede os certificados SSL, caso não possua o arquivo .PEM o mesmo pode ser gerado a partir dos arquivos .CRT e .KEY. Com o arquivo .PEM coloque em todos os servidores Proxmox como /etc/pmg/pmg-api.pem (substitua o arquivo original). Em seguida, reinicie os servidores Proxmox.
- Alterando as imagens para o da sua empresa
Altere as imagens de /usr/share/javascript/pmg-gui/images/ pelo padrão de sua empresa. Substitua pelas imagens da empresa.
- Configurando o Proxmox
Reinicie o servidor (após todas as customizações) e em seguida acesse o proxmox, pelo endereço https://IP_SERVIDOR:8006 (usuário root e senha definida na instalação). Na tela informando não possuir uma assinatura do produto apenas clique em OK.
Antes de começar qualquer configuração, clique em Configuration, dentro edite a configuração DNS e deixe apenas os IPs dos servidores Proxmox, ao final clique em OK. Em seguida, clique na aba Backup/Restore e faça um Backup do servidor ou restore se uma configuração anterior, se necessário (para restaurar, copie o backup para a pasta /var/lib/pmg/backup antes).
Clique em Mail Proxy (dentro de Configuration), na aba Relaying altere Default Relay para relay.suaempresa.com.br, na aba Relay Domains crie o domínio suaempresa.com.br.
Na aba Options, faça seguinte:
– Altere Message Size (bytes) para 20971520
– Habilite Reject Unknown Senders
– Habilite SMTP HELO checks
– Em DNSBL Sites adicione pelos os servidores de BLACK LISTS spamcop.net,zen.spamhaus.org,bl-ns.rbl.scrolloutf1.com,bl-ip.rbl.scrolloutf1.com,b.barracudacentral.org,dnsbl.spfbl.net,dnsbl-2.uceprotect.net,dnsbl-3.uceprotect.net,ips.backscatterer.org,bl.nosolicitado.org,dnsbl.zapbl.net,rhsbl.zapbl.net
– Caso deseje, consulte https://www.anti-abuse.org/multi-rbl-check/ para mais servidores de black lists;
– Altere também o SMTPD Banner para Message Gateway
Ainda no mesmo menu Mail Proxy, na aba Transports, crie um relay para o domínio suaempresa.com.br apontando para o host relay.suaempresa.com.br na porta 25 e sem usar o MX. Na aba Networks crie a rede confiável SUA_REDE/SUA_MASCARA com o comentário PRODUCAO.
Agora vamos configurar o cluster, assim toda configuração feita irá replicar entre os hosts. Para isso, do servidor que será o MASTER (neste caso será o servidor de quarenta, o 41) clique no menu Cluster (dentro de Configuration) e clique em Create. Clique no cluster criado, clique em Add e copie o Fingerprint (será necessário para adicionar os demais nós).
Acesse os demais nós, clique no menu Cluster (dentro de Configuration) e clique em Create. Na tela seguinte informe o IP do servidor, a senha do root e o Fingerprint copiado do nó master, Em seguida clique em OK. Repita o procedimento nos demais nós existentes. Aguarde alguns instantes e atualize a página, caso dê erro (o correto é ficar em status syncing por cinco minutos, em seguida ficar como ativo), clique em Administration, vá na aba Services, clique uma vez em pmgmirror e clique em Syslog.
Agora clique em Spam Detector (dentro de Configuration), vá na aba Quarantine, clique em Authentication modee clique em Edit, altere para LDAP or Ticket.
- Configurando o LDAP
Vá em User Management (dentro de Configuration), clique na aba LDAP e clique em Create, em seguida configure o Profile Name (coloque suaempresa.com.br), o Protocol (LDAP), o Servers (IPs dos DCs), o User Name (precisa ser o e-mail) e o Password. Por fim, clique no botão Users of ‘suaempresa‘ (embaixo) e verifique se listou todos os usuários.
- Configurando a quarentena
Clique em Configuration, Spam Detector, vá na aba Quarantine, em seguida:
– Edite Authentication mode para LDAP.
– Edite Quarantine Host e informe o endereço quarentena.suaempresa.com.br.
– Edite EMail ‘From:’ coloque [email protected]
Para redirecionar o site para o endereço de quarentena, acesse o servidor de quarentena via SSH e digite os seguintes comandos:
apt-get install apache2 -y
a2enmod rewrite
echo “<VirtualHost *:80>” >> /etc/apache2/sites-available/000-default.conf
echo ” ServerName quarentena.suaempresa.com.br” >> /etc/apache2/sites-available/000-default.conf
echo ” Redirect permanent / https://quarentena.suaempresa.com.br:8006/quarantine” >> /etc/apache2/sites-available/000-default.conf
echo “</VirtualHost>” >> /etc/apache2/sites-available/000-default.conf
systemctl restart apache2
- Sugestão de regras iniciais para usar em seu Proxmox:
Em Actions Objects (dentro de Mail Filter) o objeto Notify Quarentine deve conter pelo menos o seguinte conteúdo:
Tipo | Valor |
Receiver: | __RECEIVERS__ |
Subject: | Mensagem em Quarenta: __SUBJECT__ |
Body: | A seguinte mensagem se encontra em quarentena:
De: __SENDER__ Para: __RECEIVERS__ Assunto: __SUBJECT__
Para liberar esta mensagem:
– Acesse o endereço https://quarentena.suaempresa.com.br – Selecione a(s) mensagem(ns) que deseja receber – Clique no botão DELIVER
Caso tenha alguma dúvida, entre em contato com a equipe da COINF.
————————————————————————————————————————– INFORMACOES ADICIONAIS:
Matching Rule: __RULE__ __RULE_INFO__ __VIRUS_INFO__ __SPAM_INFO__ ————————————————————————————————————————– |
Em Who Objects (dentro de Mail Filter) o objeto Blacklist deve conter pelo menos o seguinte conteúdo:
Tipo | Valor |
Domain | sapo.ao |
Domain | cursosiob.com.br |
Em Who Objects (dentro de Mail Filter) o objeto Whitelist deve conter pelo menos o seguinte conteúdo:
Tipo | Valor |
[email protected] |
Em What Objects (dentro de Mail Filter) crie o objeto SS_Blocked_Files, nele deve conter pelo menos o seguinte conteúdo:
Tipo | Valor |
Content Type Filter | application/hta |
Content Type Filter | application/javascript |
Content Type Filter | application/octet-stream |
Content Type Filter | application/sql |
Content Type Filter | application/vnd\.adobe\.flash\.movie |
Content Type Filter | application/vnd\.android\.package-archive |
Content Type Filter | application/vnd\.ms-cab-compressed |
Content Type Filter | application/x-bittorrent |
Content Type Filter | application/x-cd-image |
Content Type Filter | application/x-iso9660-appimage |
Content Type Filter | application/x-ms-dos-executable |
Content Type Filter | application/x-msdownload |
Content Type Filter | application/x-msi |
Content Type Filter | audio/mp4 |
Content Type Filter | audio/mpeg |
Content Type Filter | video/mp4 |
Content Type Filter | video/x-matroska |
Content Type Filter | video/x-msvideo |
Para definir as regras, clique em Mail Filter. As seguintes regras foram utilizadas no Proxmox:
Nome | Prior. | Direc. | Action Objects | From Objects | What Objects |
Whitelist | 99 | In | Accept | Whitelist (ainda sem cadastrar nada nele) | |
Blacklist | 98 | In | Block | Blacklist (ainda sem cadastrar nada nele) | |
Block Viruses | 96 | In & Out | BlockNotify Sender | Virus | |
Block Files Type | 95 | In & Out | BlockNotify Sender | SS_Blocked_FilesDangerous Content | |
Block (Spam Level 5) | 94 | In | BlockNotify Sender | Spam (Level 5) | |
Quarantine (Spam Level 4) | 93 | In | Notify QuarentineQuarantine | Spam (Level 4) |
- Para implementar em Produção
Para o funcionamento do Proxmox é necessário liberar no firewall:
– Acesso NTP (123) dos servidores Proxmox (SEU_IP_1 ao 3) aos DCs.
– Acesso LDAP dos servidores Proxmox (SEU_IP_1 ao 3) aos DCs.
– Acesso DNS dos servidores Proxmox (SEU_IP_1 ao 3) aos DCs.
– Acesso RAZOR (2703) dos servidores Proxmox (SEU_IP_1 ao 3) à Internet.
– Acesso na porta 26 dos servidores Exchanges para os servidores Proxmox (SEU_IP_1 ao 3) e dos Proxmox para os Exchanges.
– Acesso da rede interna a porta 8006 dos servidores Proxmox (SEU_IP_1 ao 3).
– NAT na porta 8006 para o servidor SEU_IP_1 (quarentena).
– Acesso dos servidores Proxmox (SEU_IP_1 ao 3) para baixar via https da internet.
Se houver um Servidor Exchange, configure-o da seguinte forma:
– Crie um Conector de envio, com:
– O Nome Outbound-SMARTHOST(TCP26), tipo Personalizado.
– Configure utilizar smarthosts, adcione os IPs dos servidores Proxmox;
– Nenhuma autenticação;
– Tipo SMTP, Nome FQDN * e custo 1;
– Adicionar todos os servidores Exchange;
– Edite e configure as demais configurações padrão (verifique o default);
– Abra o powershell do exchange como administrador e digite o comando: Set-SendConnector -Identity “Outbound-SMARTHOST(TCP26)” -Port 26
– Desabilite o conector default e renomeie ele para Outbound-SMARTHOST(TCP25)
– Edite o conector de recebimento default
– No conector Default, retire os IPs do Antispam’s antigos.
– Crie um Conector de recebimento, com:
– O Nome Inbound-SMARTHOST(TCP25), Transporte de Front-end, Personalizado;
– Na tela seguinte, deixe padrão
– Na terceira tela, para configurar a parte de configurações de rede remota, informe os endereços os servidores Proxmox;
– Edite e configure as demais configurações padrão (verifique o default);
Fontes/Referências
https://www.anti-abuse.org/multi-rbl-check/
https://nvlan.com.br/comunidade/comparativo-solucoes-antispam-opensource-gratuitas/
https://nvlan.com.br/comunidade/instalacao-padrao-do-centos-7/
https://partnerweb.vmware.com/GOSIG/Debian_9.html
https://softwarelivre.org/andre-ferraro/blog/linux-instalando-configurando-e-sincronizando-o-relogio-de-servidores-e-clientes-com-ntp-no-debian-ubuntu-e-windows
https://www.barracudacentral.org/account/register
https://forum.proxmox.com/threads/cluster-rsync-error.41135/
https://forum.proxmox.com/threads/how-to-local-dns-resolver-for-proxmox-mail-gateway.41189/
https://www.proxmox.com/en/training/video-tutorials
https://www.proxmox.com/en/training/video-tutorials/item/introduction-to-proxmox-mail-gateway-5-0
https://www.proxmox.com/en/training/video-tutorials/item/installation-and-configuration-of-proxmox-mail-gateway-5-0
https://www.proxmox.com/en/training/video-tutorials/item/create-a-cluster
https://www.youtube.com/watch?v=Dr3-BeY0V1k
https://www.youtube.com/watch?v=-QpIfm-qx1o&t=58s