GNU/Linux >> Znalost Linux >  >> Cent OS

Jak zabezpečit e-mailový server před hackováním pomocí VPN (CentOS/RHEL)

V tomto tutoriálu se s vámi podělím o své tipy a triky, jak zabezpečit e-mailové servery CentOS/RHEL proti hackerům s vlastním hostovaným serverem VPN. Mnoho spammerů se pokouší proniknout do e-mailových serverů jiných lidí. Pokud by byli úspěšní, použili by napadený e-mailový server k rozesílání velkých objemů spamu nebo ke krádeži cenných dat. Proč používáme server VPN s vlastním hostitelem? Protože vám umožňuje povolit whitelisting, takže k vašemu poštovnímu serveru mají přístup pouze důvěryhodní uživatelé připojení k serveru VPN.

Předpoklady

Předpokládá se, že máte e-mailový server zapnutý a běžící. Pokud ne, postupujte podle jednoho z níže uvedených výukových programů a nastavte si svůj vlastní poštovní server.

  • Jak snadno nastavit plně vybavený poštovní server na CentOS 8 pomocí iRedMail

Předpokládá se také, že jste nastavili VPN server . Pokud ne, postupujte podle jednoho z níže uvedených návodů. Poštovní server a server VPN mohou běžet na samostatných hostitelích nebo na stejném hostiteli.

  • Nastavte si svůj vlastní server WireGuard VPN v systému CentOS

Nápověda :Doporučujeme provozovat server VPN a poštovní server na samostatných hostitelích, aby se snížila provozní složitost . Pokud poštovní server a server VPN běží na stejném hostiteli, jsou vyžadovány další kroky, jmenovitě nastavení zóny zásad odezvy na serveru VPN, která přepíše veřejný záznam DNS A názvu hostitele vašeho poštovního serveru.

  • Nastavte zónu zásad odezvy (RPZ) v BIND Resolver na CentOS/RHEL

Řekněme záznam DNS A pro mail.yourdomain.com převede na 12.34.56.78 , pak musíte vytvořit záznam v zóně zásad odezvy, abyste jej převedli na soukromou IP adresu VPN serveru 10.10.10.1 .

V následujících textech používám 12.34.56.78 jako veřejnou IP adresu VPN serveru. Pokud server VPN a poštovní server běží na stejném hostiteli, musíte nahradit 12.34.56.78 se soukromou IP adresou VPN serveru 10.10.10.1 .

Krok 1:Přidejte IP adresu VPN serveru do seznamu povolených firewallů

Jakmile budete mít poštovní server a VPN server v provozu, měli byste přidat IP adresu VPN serveru na bílou listinu brány firewall poštovního serveru. Pokud používáte Firewalld (CentOS/RHEL), spusťte na poštovním serveru následující příkaz. Nahraďte 12.34.56.78 IP adresou serveru VPN.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="12.34.56.78" accept'

Můžete také přidat IP adresy ostatních serverů na seznam povolených. Někteří lidé mohou mít například jiný webový server, který potřebuje posílat e-maily přes e-mailový server. Poté jej také přidejte na bílou listinu.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP-address-of-the-other-web-server" accept'

Znovu načtěte firewall, aby se změny projevily.

sudo systemctl reload firewalld

Krok 2:Zavřete Port pro odeslání, Port IMAP a Port POP3

  • Port pro odeslání :587 a 465
  • Port IMAP :143 a 993
  • Port POP3 :110 a 995

Porty 587 a 465 používají poštovní klienti jako Mozilla Thunderbird a Microsoft Outlook k odesílání odchozích e-mailů. Zlomyslní herci mohou zaútočit hrubou silou na porty 587 a 465.

Níže je uveden příklad nalezený v mém protokolu pošty (/var/log/maillog na CentOS/RHEL). Špatný aktér se pokoušel přihlásit, ale pokaždé selhalo ověření SASL.

postfix/smtps/smtpd[18071]:Anonymní připojení TLS vytvořeno z neznámého [92.118.38.56]:TLSv1.2 se šifrou ECDHE-RSA-AES256-GCM-SHA384 (256/256 bitů/postfix/smptps 18071]:varování:neznámé[92.118.38.56]:Ověření SASL LOGIN se nezdařilo:UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:ztracené připojení po AUTH z neznámého[92.118.38.56]postfix/smtppdps/s:postfix/smtppdps/s:postfix/smtppdps/s 92.118.38.56] ehlo=1 auth=0/1 rset=1 příkazy=2/3postfix/smtps/smtpd[18071]:připojení z neznámého[92.118.38.56]postfix/smtps/smtpd[18071]:navázáno připojení Anonymous TLS neznámý[92.118.38.56]:TLSv1.2 se šifrou ECDHE-RSA-AES256-GCM-SHA384 (256/256 bitů)postfix/smtps/smtpd[18071]:varování:neznámé[92.118.38.56]:ověřování SASL LOGIN se nezdařilo UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:ztracené připojení po AUTH od neznámého[92.118.38.56]postfix/smtps/smtpd[18071]:odpojit od neznámého[92.118.38.56] příkaz thssetr=001 au 2/3postfix/smtps/smtpd[18071]:připojit z neznáma n[92.118.38.56]postfix/smtps/smtpd[18071]:Anonymní připojení TLS vytvořeno z neznámého [92.118.38.56]:TLSv1.2 se šifrou ECDHE-RSA-AES256-GCM-SHA384/26bitsspost /smtpd[18071]:varování:neznámé[92.118.38.56]:Ověření SASL LOGIN selhalo:UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:ztracené připojení po AUTH od neznámého[92.118.38.56]post:mtpd:msfixs od neznámého[92.118.38.56] ehlo=1 auth=0/1 rset=1 příkazy=2/3

Nechci vidět tento druh aktivity v protokolu pošty, takže jednoduše zavřu port 587, 465, 143, 993, 110 a 995 ve bráně firewall. A protože IP adresa mého serveru VPN je na seznamu povolených, k těmto portům mají přístup pouze uživatelé, kteří jsou připojeni k mému serveru VPN.

Na CentOS/RHEL spusťte následující dva příkazy pro deaktivaci imap , imaps , smtp-submission , smtps , pop3s a pop3s služby.

sudo firewall-cmd --permanent --remove-service={smtp-submission,smtps,imap,imaps,pop3,pop3s}sudo firewall-cmd --permanent --remove-port={587/tcp,465 /tcp,143/tcp,993/tcp,110/tcp,995/tcp}

Pokud se zobrazí varování jako Warning: NOT_ENABLED: smtps , můžete varování ignorovat. Znovu načtěte firewall, aby se změny projevily.

sudo systemctl reload firewalld

Samozřejmě musíte mít otevřený port 25, abyste mohli přijímat e-maily z jiných serverů SMTP.

Krok 3:Ochrana panelu administrátora a webové pošty

Můžeme zavřít porty 80 a 443, abychom ochránili administrátorský panel a webovou poštu před hackery. To však zakáže veřejný přístup ke všem virtuálním hostitelům. Někteří lidé mohou mít virtuální hostitele v Apache/Nginx, kteří se potřebují otevřít k internetu. Místo uzavření portů 80 a 443 ve firewallu můžeme použít vestavěnou funkci řízení přístupu v Apache/Nginx.

Nginx

Upravte soubor virtuálního hostitele pro webmail, například

sudo nano /etc/nginx/conf.d/mail.vase-domena.com.conf

Přidejte následující řádky do server {...} kontext. To povolí pouze IP adresu 12.34.56.78 pro přístup k webové poště a zakázat všechny ostatní IP adresy.

povolit 12.34.56.78;zakázat vše;

Pokud máte více serverů VPN, můžete přidat více IP adres, například:

povolit 12.34.56.78;povolit 12.34.56.79;zakázat vše;

Uložte a zavřete soubor. Poté otestujte konfigurace Nginx.

sudo nginx -t

Pokud je test úspěšný, znovu načtěte Nginx, aby se změny projevily.

sudo systemctl reload nginx

Uživatelům, kteří nejsou na seznamu povolených, se zobrazí zakázaná chyba 403.

Apache

Upravte soubor virtuálního hostitele pro webmail v /etc/httpd/conf.d/ adresář, například

sudo nano /etc/httpd/conf.d/mail.vase-domena.com-le-ssl.conf

Přidejte následující řádky mezi <VirtualHost>...</VirtualHost> značky. To povolí pouze IP adresu 12.34.56.78 pro přístup k webové poště a zakázat všechny ostatní IP adresy.

  Vyžadovat IP 12.34.56.78 

Pokud máte více serverů VPN, můžete přidat více IP adres, například:

  Vyžadovat IP 12.34.56.78 12.34.56.79 

Uložte a zavřete soubor. Poté otestujte konfigurace Apache.

sudo apachectl -t

Pokud je syntaxe v pořádku, znovu načtěte Apache, aby se změny projevily.

sudo systemctl reload httpd

Uživatelům, kteří nejsou na seznamu povolených, se zobrazí zakázaná chyba 403.

Obnovení certifikátu Certbot TLS

Pokud povolíte whitelisting ve virtuálním hostiteli Apache/Nginx, zablokujete také serverům Let’s Encrypt přístup k vašemu webovému serveru, což je nutné pro obnovení certifikátu Let’s Encrypt TLS s výzvou HTTP-01. Abychom tento problém vyřešili, můžeme před obnovením certifikátu zakázat whitelisting a po obnovení jej znovu povolit.

Vytvořte shellový skript v /root/ adresář.

sudo nano /root/certbot-renewal.sh

Pokud používáte Nginx, přidejte do tohoto souboru následující řádky.

#! /bin/bash# zakázat whitelisting ve virtuálním hostiteli Nginx -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.confsystemctl znovu načíst nginx# obnovit TLS certificatecertbot renew --quiet# enable whitelistinged -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.confsystemctl reload nginx

Pokud používáte Apache, přidejte do tohoto souboru následující řádky.

#! /bin/bash# zakáže whitelisting ve virtuálním hostiteli Apache -i 's/Require ip/#Require ip/g' /etc/httpd/conf.d/mail.your-domain.com-le-ssl.confsystemctl reload apache2 # renew TLS certificatecertbot renew --quiet# enable whitelistinged -i 's/#Require ip/Require ip/g' /etc/httpd/conf.d/mail.your-domain.com-le-ssl.confsystemctl reload apache2 

Uložte a zavřete soubor. Poté k tomuto souboru přidejte oprávnění ke spuštění.

sudo chmod +x /root/certbot-renewal.sh

Upravte soubor crontab uživatele root.

sudo crontab -e

Přidejte následující řádek na konec souboru, aby se skript shellu spouštěl jednou denně.

@daily bash /root/certbot-renewal.sh

Uložte a zavřete soubor.

Zavřít port SSH?

Protože IP adresa vašeho VPN serveru je na seznamu povolených, můžete také zavřít port SSH ve bráně firewall. To však s sebou nese riziko. Pokud váš server VPN přestane fungovat, uzamknete se. Pro ochranu služby SSH před hackováním doporučuji nastavit ověřování veřejným klíčem nebo dvoufaktorové ověřování.

  • 2 jednoduché kroky k nastavení ověřování pomocí veřejného klíče SSH na CentOS/RHEL
  • Nastavte SSH dvoufaktorové ověřování (2FA) na serveru CentOS/RHEL

Cent OS
  1. Jak nastavit SysLog Server na CentOS 7 / RHEL 7

  2. Jak nastavit server NFS na CentOS 7 / RHEL 7

  3. Jak nainstalovat Puppet 6.x na CentOS 7 / RHEL 7

  1. Jak nainstalovat vnc server na RHEL 8 / CentOS 8

  2. Jak nainstalovat Puppet na CentOS 8 / RHEL 8

  3. Jak odeslat e-mail s mým serverem CentOS?

  1. Jak nainstalovat Nextcloud na server RHEL 8 / CentOS 8

  2. Jak nainstalovat OwnCloud na server RHEL 8 / CentOS 8

  3. Jak nainstalovat PostgreSQL server na RHEL 8 / CentOS 8