A Postfix Mail Server és a Dovecot adatbázis használatával (MariaDB) biztonságos telepítése - 1. rész


Ebben a 3 cikkből álló sorozatban megvitatjuk, hogyan állítsunk be egy Postfix levelezőszervert vírusirtó és spam elleni védelemmel egy CentOS 7 mezőbe. Felhívjuk figyelmét, hogy ezek az utasítások más disztribúciókon is működnek, például RHEL/Fedora és Debian/Ubuntu.

A tervünk az e-mail fiókok és álnevek tárolása egy MariaDB adatbázisban, amely a mi kényelmünk érdekében a phpMyAdmin segítségével fog kezelni.

Ha úgy dönt, hogy nem telepíti a phpMyAdmin programot, vagy csak egy CLI szerverrel foglalkozik, akkor a megfelelő kódot is megadjuk az ebben a sorozatban használt adatbázis táblák létrehozásához.

Mivel a levelezőszerver üzemben tartása az egyik alapvető feladat, amelyet általában a rendszergazdáknak és mérnököknek rendelnek meg, néhány tippet is megadunk a kritikus szolgáltatás hatékony futtatásához termelési környezetben.

Hozzon létre A és MX rekordokat a tartományhoz a DNS-ben

Mielőtt tovább folytatná, teljesítenie kell néhány előfeltételt:

1. Szüksége lesz egy érvényes domainre, amelyet egy domain regisztrátor regisztrál. Ebben a sorozatban a www.linuxnewz.com -ot fogjuk használni, amelyet a GoDaddy-n keresztül regisztráltunk.

2. Az ilyen tartományt a VPS vagy a cloud hosting szolgáltató külső IP-jére kell mutatni. Ha önállóan tárolja a levelező szervert, használhatja a FreeDNS által kínált szolgáltatást (regisztráció szükséges).

Mindenesetre be kell állítania a A és az MX rekordokat a domainjéhez is (az MX rekordokról ebben a GYIK-ben tudhat meg többet a Google-tól).

Ha hozzá van adva, megkeresheti őket egy online eszközzel, például az MxToolbox vagy a ViewDNS, hogy megbizonyosodjon a megfelelő beállításukról.

Fontos: Kérjük, vegye figyelembe, hogy eltarthat egy ideig (1-2 nap), amíg a DNS-rekordok terjesztésre kerülnek, és a domain elérhetővé válik. Időközben elérheti a VPS-t az IP-címén keresztül az alább jelzett feladatok elvégzéséhez.

3. Konfigurálja a VPS FQDN-jét (teljesen minősített tartománynév):

# hostnamectl set-hostname yourhostname

a rendszer hosztnevének beállításához, majd az alábbiak szerint szerkessze az/etc/hosts fájlt (cserélje le az AAA.BBB.CCC.DDD, a hosthost és a domain nevet a szerver, a hosztnév és a regisztrált tartomány nyilvános IP-jére):

AAA.BBB.CCC.DDD yourhostname.yourdomain.com       yourhostname

ahol a yourhostname a rendszer hosztneve, amelyet korábban a hostnamectl paranccsal állítottak be.

A szükséges szoftvercsomagok telepítése

4. Az olyan szoftvercsomagok telepítéséhez, mint az Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV stb., Engedélyeznie kell az EPEL adattárat:

# yum install epel-release

5. Miután végrehajtotta a fenti lépéseket, telepítse a szükséges csomagokat:

# yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin
# aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin

6. Indítsa el és engedélyezze a webes és az adatbázis-kiszolgálókat:

# systemctl enable httpd mariadb
# systemctl start httpd mariadb
# systemctl enable apache2 mariadb
# systemctl start apache2 mariadb

Amikor a telepítés befejeződött, és a fenti szolgáltatás engedélyezett és futtatható, akkor kezdjük azzal, hogy beállítunk egy adatbázist és táblákat a Postfix e-mail fiókok információinak tárolására.

Postfix e-mail fiókok adatbázis létrehozása

Az egyszerűség kedvéért az e-mail adatbázis létrehozásához és kezeléséhez phpMyAdmin-t fogunk használni, amely a MySQL/MariaDB adatbázisok webes felületen keresztül történő kezelését hivatott kezelni.

Ennek az eszköznek a bejelentkezéséhez és használatához azonban ezeket a lépéseket kell végrehajtanunk:

7. Engedélyezze a MariaDB fiókot (ezt úgy teheti meg, hogy a parancssorból futtatja a mysql_secure_installation segédprogramot, hozzárendel egy jelszót a felhasználói gyökérhez, és beállítja az eszköz által javasolt alapértelmezett beállításokat. ? “:

vagy más módon hozzon létre új adatbázis-felhasználót:

MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

Biztonságos tanúsítvánnyal rögzítse az Apache-ot

8. Mivel webes alkalmazást fogunk használni az e-mail szerver adatbázis kezelésére, meg kell tennünk a szükséges óvintézkedéseket a kiszolgálóval való kapcsolatok védelme érdekében. Ellenkező esetben a phpMyAdmin hitelesítő adataink egyszerű szövegben fognak haladni a vezetéken.

A Transport Layer Security (TLS) szerverén történő beállításához kövesse az RHCE sorozat 8. részében ismertetett lépéseket: HTTPS megvalósítása TLS-en keresztül az Apache hálózati biztonsági szolgáltatásának (NSS) használatával, mielőtt tovább folytatja.

Megjegyzés: ha nincs hozzáférése a szerver konzoljához, akkor a kulcs létrehozása során meg kell találnia egy másik módot a szükséges entrópia előállítására. Ebben az esetben érdemes megfontolni az rng-tools telepítését és az rngd -r/dev/urandom futtatását.

A PhpMyAdmin beállítása és védelme

9. Az /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) vagy az /etc/phpmyadmin/apache.conf (Debian és származékai) mappában keresse meg a következő sorok összes előfordulását, és ellenőrizze, hogy azok a nyilvános IP-re mutatnak-e. a szerveredről:

Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD

Ezenkívül tiltsa le az alapértelmezett álneveket, és hozzon létre egy újat a phpMyAdmin bejelentkezési oldalának eléréséhez. Ez segít megvédeni a webhelyet a www.yourdomain.com/phpmyadmin vagy www.yourdomain.com/phpMyAdmin webhelyet megcélzó robotoktól és külső támadóktól.

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin

Adja hozzá a következő sort a belsejébe:

Require all granted

Hozzon létre Apache VirtualHost a tartományhoz

10. Győződjön meg arról, hogy a domainje hozzá van adva az engedélyezett webhelyekhez. Hozzon létre /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) vagy /etc/apache2/sites-available/linuxnewz.com (Debian) a következő tartalommal (ellenőrizze, hogy a DocumentRoot, a rendelkezésre álló helyek és a webhelyek engedélyezett könyvtárak léteznek):

<VirtualHost *:80>
    ServerName www.linuxnewz.com
    ServerAlias linuxnewz.com
    DocumentRoot /var/www/linuxnewz.com/public_html
    ErrorLog /var/www/linuxnewz.com/error.log
    CustomLog /var/www/linuxnewz.com/requests.log combined
    Options Indexes FollowSymLinks
</VirtualHost>

és a szimbolikus link:

# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
# a2ensite linuxnewz.com

és kész.

A Postfix e-mail adatbázis beállítása

11. Most megnyithatja a phpMyAdmin felületet a https://www.yourdomain.com/managedb címen (vegye figyelembe, hogy a managedb az álnév, amelyet korábban beállítottunk a phpMyAdmin adatkönyvtárhoz).

Ha ez egyelőre nem működik (amit a terjesztés késése vagy a DNS-rekordok konfigurálásának hiánya okozhat), egyelőre megpróbálhatja a szerver nyilvános IP-címét használni a www.yourdomain.com helyett:

Mindenesetre, miután bejelentkezett a phpMyAdmin programba, a következő felület jelenik meg. Kattintson a bal oldali részben az Új gombra:

Írja be az adatbázis nevét (ebben az esetben az EmailServer_db, nem szükséges válogatást választani), majd kattintson a Létrehozás gombra:

12. A következő képernyőn válassza ki az első táblázat nevét (ahol tároljuk azokat a domaineket, amelyeket ez a levelező szerver kezelni fog.

Felhívjuk figyelmét, hogy még abban az esetben is, ha ebben a sorozatban csak egy domaint kezelünk, később hozzáadhat további elemeket) és a benne lévő mezők számát, majd kattintson a Tovább gombra. A rendszer kéri, hogy nevezze meg és konfigurálja azt a két mezőt, ahol biztonságosan folytathatja a következő képeken látható módon:

Amikor a Domain ID azonosítója alatt az ELSŐDLEGES lehetőséget választja, fogadja el az alapértelmezett értékeket, majd kattintson az Ugrás gombra:

Alternatív megoldásként rákattinthat az SQL előnézete lehetőségre, és megjelenítheti a kódot a motorháztető alatt:

CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

Ha készen áll, kattintson a Mentés gombra a módosítások megerősítéséhez. Ezután az EmailServer_db alatt kattintson az Új gombra a táblázatok létrehozásának folytatásához:

13. Most kövesse ezeket a lépéseket a többi táblázat létrehozásához. Kattintson az SQL fülre, és írja be az egyes adatbázis-objektumok jelzett kódját.

Vegye figyelembe, hogy ebben az esetben a táblázatot SQL lekérdezés segítségével hoztuk létre a különböző táblák között létrehozandó kapcsolatok miatt:

CREATE TABLE `Users_tbl` ( 
    `UserId` INT NOT NULL AUTO_INCREMENT,  
    `DomainId` INT NOT NULL,  
    `password` VARCHAR(100) NOT NULL,  
    `Email` VARCHAR(100) NOT NULL,  
    PRIMARY KEY (`UserId`),  
    UNIQUE KEY `Email` (`Email`),  
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE 
) ENGINE = InnoDB; 

Meg kell kapnia egy megerősítő üzenetet (ha nem, akkor a phpMyAdmin kéri a szintaktikai hibákat):

CREATE TABLE `Alias_tbl` (
    `AliasId` INT NOT NULL AUTO_INCREMENT, 
    `DomainId` INT NOT NULL, 
    `Source` varchar(100) NOT NULL, 
    `Destination` varchar(100) NOT NULL, 
    PRIMARY KEY (`AliasId`), 
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

(A táblázat létrehozásának folytatásához kattintson a Go gombra az alján.)

Eddig a pontig a következő adatbázisszerkezettel kell rendelkeznie:

Ami azt jelenti, hogy készen áll a rekordok hozzáadására a következő szakaszban.

Postfix tartomány, felhasználók és álnevek létrehozása

14. Most beillesztjük a következő rekordokat a három táblázatba. Az [email protected] és az [email protected] jelszavai titkosítva lesznek, és az INSERT INTO Users_tbl utasítás.

Kérjük, vegye figyelembe, hogy az [email protected] címre küldött e-mailek átirányításra kerülnek a [email protected] címre:

INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]');  
INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, '[email protected]', '[email protected]');

Miután hozzáadta domainünket, két felhasználói fiókot és egy e-mail álnevet, készen állunk arra, hogy folytassuk e-mail szerverünk beállítását a sorozat következő cikkében, ahol konfiguráljuk a Dovecot és a Postfix fájlokat.

Összegzés

Ebben a cikkben felsoroltuk azokat a csomagokat, amelyek szükségesek a Postfix e-mail kiszolgáló CentOS 7 VPS rendszerbe történő telepítéséhez, és elmagyaráztuk az alapul szolgáló adatbázis kezelését a phpMyAdmin használatával.

A következő két cikkben áttekintjük a két program konfigurációját, amelyek gondoskodnak a domainünk e-mail terjesztéséről (2. rész), és megmutatjuk, hogyan adhatunk védelmet a spam és vírusok ellen (3. rész) a kiszolgálón.

Addig bátran forduljon hozzánk az alábbi űrlap segítségével, ha bármilyen kérdése vagy észrevétele van.