GNU/Linux >> Znalost Linux >  >> Debian

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

V tomto tutoriálu se s vámi podělím o své tipy a triky, jak zabezpečit e-mailové servery 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 plnohodnotný poštovní server na Ubuntu 20.04 pomocí iRedMail
  • Jak snadno nastavit poštovní server na Debian 10 Buster 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 na Ubuntu
  • Nastavte si svůj vlastní WireGuard VPN server v Debianu

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 nutné další kroky, jmenovitě nastavení zóny zásad odezvy na serveru VPN, která přepíše záznam DNS A názvu hostitele vašeho poštovního serveru.

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

Ř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 UFW firewall (Debian/Ubuntu), spusťte na poštovním serveru následující příkaz. Nahraďte 12.34.56.78 IP adresou serveru VPN.

sudo ufw insert 1 allow in from 12.34.56.78

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 ufw insert 1 allow in from IP-address-of-the-other-web-server

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ů. Hackeři 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/mail.log na Debian/Ubuntu, /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]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3
postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3
postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=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.

Chcete-li zavřít tyto porty v UFW firewallu, nejprve vypište pravidla firewallu.

sudo ufw status numbered

Ukázkový výstup

Jak vidíte, existují pravidla IPv4 i IPv6. K uzavření portu 587 musím smazat pravidlo #16 a #6 . (Nejprve byste měli odstranit pravidlo s vyšším indexovým číslem.)

sudo ufw delete 16
sudo ufw delete 6

Poté byste měli spustit sudo ufw status numbered znovu, abyste získali nový seznam pravidel brány firewall. Všimněte si, že se u některých pravidel změnilo indexové číslo.

Tentokrát chci zavřít port 465, takže musím smazat pravidlo #15 a #6 .

sudo ufw delete 15
sudo ufw delete 6

Pak použijte stejnou metodu k uzavření portů 143, 993, 110 a 995. Samozřejmě musíte ponechat port 25 otevřený, 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.your-domain.com.conf

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

allow 12.34.56.78;
deny all;

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

allow 12.34.56.78;
allow 12.34.56.79;
deny all;

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, například

sudo nano /etc/apache2/sites-enabled/mail.your-domain.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.

    <LocationMatch "^/">
       Require ip 12.34.56.78
    </LocationMatch>

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

    <LocationMatch "^/">
       Require ip 12.34.56.78 12.34.56.79
    </LocationMatch>

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

sudo apache2ctl -t

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

sudo systemctl reload apache2

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

# disable whitelisting
sed -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx postfix dovecot

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

#! /bin/bash

# disable whitelisting
sed -i 's/Require ip/#Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#Require ip/Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2 postfix dovecot

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

Potom 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 je IP adresa vašeho VPN serveru 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í přihlášení SSH bez hesla na Ubuntu
  • Nastavit SSH dvoufaktorové ověřování (2FA) na serveru Ubuntu

Debian
  1. Jak nainstalovat vsftpd FTP server a zabezpečit jej pomocí TLS na Debian 11

  2. Jak nainstalovat Spamassassin s Postfixem a Dovecotem na Ubuntu/Debian Server

  3. Jak nainstalovat SSH server na Ubuntu / Debian s OpenSSH

  1. Jak nastavit FTP server s VSFTPD na Debianu 9

  2. Jak nainstalovat Puppet 6.x na Ubuntu 18.04 / Ubuntu 16.04 a Debian 9

  3. Jak nastavit e-mailový server s Mail-in-a-Box na Ubuntu

  1. Jak nastavit server OpenVPN na Debianu 9

  2. Jak nainstalovat e-mailový server s ISPConfig na Debian 10

  3. Jak nastavit poštovní server pomocí PostfixAdmin na Debianu 11