Tökéletes szerver: Debian 10 (Buster) V1.0

botond küldte be 2020. 01. 02., cs – 17:15 időpontban

Tartalom

  1. oldal: Rendszer frissítése és az alapvető kiegészítők telepítése, beállítása
  2. oldal: Let's Encrypt, FTP, DNS kiszolgáló, webstatisztikák, Jailkit és Fail2Ban telepítése
  3. oldal: RoundCube webmail kliens és ISPConfig3 kezelőpanel telepítése

 

Az 1. oldal tartalma

 

Bevezető

Ebben a leírásban elkészítjük a tökéletes szerver Debian 10 (Buster) változatát. Ezzel az összeállítással kapunk egy Debian 10 (Buster) alapokon működő komplett webszervert, ami például egy LAMP rendszeren felül sok egyéb szolgáltatást is tartalmaz, így kiválóan alkalmas éles weboldalak üzemeltetésére.

Ezt a szervert 1.0-ás verziószámmal jelölöm meg, így még lehet belőle később több változat is. Hasonló szerver telepítések korábban már készültek az alábbi változatokban:

 

Frissítés 2022-12-13:
Elkészült a tökéletes szerver sorozat telepítési útmutatójának újabb változata, amely az alábbi linken tekinthető meg:

 

Előfeltételek

Ez az útmutató a korábban elkészült Debian 10 (Buster) LAMP szerver v1.0 telepítésre fog épülni, ezért ennek elkészítése vagy virtuális gép formájában történő letöltése szükséges!

 

A csomagtár adatbázis és a csomagok frissítése

Mielőtt nekiállnánk a telepítésnek, első feladatunk, hogy frissítjük a csomagtár adatbázist és a csomagjainkat, hogy a legfrissebb csomagokkal dolgozhassunk. Ehhez adjuk ki az alábbi parancsot:

apt-get update && apt-get upgrade

 

Szerver telepítésének módja

Mint ahogyan már említettem, ez a telepítés – eltérően a korábbi tökéletes szerver telepítésektől – most nem egy minimális rendszerre fog épülni, hanem az egyel utána következő LAMP szerver állapotra. Így ez a Debian 10 szerver vonal modulárisabb lesz, és a korábbi LAMP gépünk is "újrahasználható" marad. Ennek előnyeként nem kell előröl kezdeni a teljes szerver telepítést, hanem amiért már megszenvedtünk a LAMP rendszer összeállítása során, most azokra fogunk építkezni, így ez a leírás is ennyivel rövidebb lesz, mint az elődei. Tekinthetjük ezt a LAMP szerver "upgrade" -jeként is. Ez a kivitelezés most különösen jól jön, hiszen a Debian 10-en a phpMyAdmin webes adatbáziskezelő felület telepítése és beállítgatása eléggé macerás dolog, mivel nem része a gyári csomagtárnak, ezért kézzel kell mindent elvégezni. Így most ezt a hosszas lépést is letudhatjuk a korábbi LAMP szerver részeként.

Ha készen állunk, lépjünk be root-ként a LAMP szerverünkbe, és lássunk munkához!

A leírásban megjelenített Shell parancsokat szokás szerint konyhakészen tálalom, tehát kijelölés és vágólapra másolás után egyből beilleszthetjük a terminálba, amit a legtöbb terminál programban a SHIFT+INSERT billentyűkombinációval végezhetünk el.

 

Alapértelmezett Shell beállítása

A Debian 10-ben a Dash Shell van beállítva alapértelmezettként, viszont az ISPConfig telepítésénél a Bash Shell-re lesz szükségünk. Ennek átállításához futtassuk a következő parancsot:

dpkg-reconfigure dash

Alapértelmezett Shell beállítása

Itt válasszuk a Nem opciót. Ekkor a program elvégzi a szükséges szimbolikus linkek átszervezését.

 

Rendszeróra szinkronizálása

Nem árt, ha a szerverünknek pontosan jár az órája. Ezt megoldhatjuk automatikusan az NTP protokoll segítségével, ami a háttérben időnként szinkronizálja az órát. Ennek telepítéséhez futtassuk az alábbi parancsot:

apt-get -y install ntp

 

Tömörítőprogramok telepítése

A későbbiekben szükségünk lesz különböző tömörítőprogramokra, amiknek már a telepítés közben is hasznát vesszük, de főképpen a szerver üzemelése közben lesznek fontosak az ISPConfig rendszerében, vagy például a különböző háttér feladatok elvégzése során. Célszerű egyben telepíteni őket a következő paranccsal:

apt-get install -y \
    zip unzip bzip2 arj nomarch lzop cabextract \
    p7zip p7zip-full unrar lrzip

 

További alapvető programok telepítése

Telepítenünk kell még néhány alapvető csomagot, amik a teljes szerver működtetéséhez szükségesek, de nem képezik a nagyobb programcsoportok részeit, ezért telepítésükre itt kerül sor. A következő paranccsal telepíthetjük ezeket:

apt-get -y install \
    openssl \
    rkhunter \
    binutils \
    daemon \
    patch \
    apt-listchanges \
    apt-transport-https

 

 

Levelezőrendszer telepítése

A szerver kimenő (SMTP) levelezését a Postfix programmal, a bejövő levelek (POP3/IMAP) kezelését pedig a Dovecot programmal oldjuk meg. Ezeknek a telepítése az alábbi paranccsal történik:

apt-get -y install \
    postfix \
    postfix-mysql \
    postfix-doc \
    getmail4 \
    dovecot-imapd \
    dovecot-pop3d \
    dovecot-mysql \
    dovecot-sieve \
    dovecot-lmtpd

A telepítés közben elindul a Postfix konfigurációja:

Postfix konfiguráció - Levelezés típusának kiválasztása

Itt válasszuk az Internet Site opciót.

A következő panelen a szerver nevét kell beállítanunk:

Postfix konfiguráció - Szerver nevének a beállítása

Itt alapból kitölti a rendszer a szerver nevét, de azért ellenőrizzük, hogy a szerver teljes, FQDN nevé adjuk meg, amit a hostname -f paranccsal is kapunk.

Ezután a telepítő felrakja a többi csomagot, és elvégzi a beállításaikat is.

További Postfix beállítások

A levelezőprogram csomagjainak települése után még be kell állítanunk a Postfix-ben, hogy nyissa meg az SSL/TLS portokat is, hogy rajtuk keresztül működhessen a biztonságos levelezés. Ehhez nyissuk meg a /etc/postfix/master.cf fájlt:

nano /etc/postfix/master.cf

És hajtsuk végre az alábbi pontokat:

  • Vegyük ki a kommenteket a submission és az smtps részek elől. Ezek rögtön a fájl első részében vannak.
  • Vegyük ki a kommenteket a megfelelő opciós sorok (-o kezdetű sorok) elől, a lentebb látható módon.
  • Pótoljuk ki az opciókat szintén az alábbi példában zölddel kiemelt részeknek megfelelően.

Tehát a lényeg, hogy a fájlnak ez a része pontosan így nézzen ki, mint ahogy alább látható:

[...]
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 smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps      inet  n       -       -       -       -       smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

Tehát mindkét részben kivesszük a kommenteket az első 3 opció elől, majd betesszük még hozzá a zölddel kiemelt sorokat. És persze maguk a submission és smtps kezdetű sorok elől se felejtsük el kivenni a kommenteket.

Ha megvan, mentsük le a fájlt, majd indítsuk újra a Postfix-et:

systemctl restart postfix

 

 

MariaDB beállítások

A MariaDB adatbázis szervert már a LAMP szerver elkészítése során feltelepítettük, most már csak fel kell készítenünk, hogy egy komolyabb szerver konfiguráció részeként nagyobb forgalom, terhelés mellett is állja a sarat.

Finomhangolás

Nyissuk meg a /etc/mysql/mariadb.conf.d/50-server.cnf fájlt: 

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Itt végezzük el az alábbi beállításokat:

  • Tegyünk kommentet az alábbi sor elé:
    bind-address           = 127.0.0.1
    (Ennek majd az ISPConfigban lesz jelentősége, ahol a létrehozott adatbázisoknál tudjuk majd kapcsolgatni, hogy legyen-e távoli hozzáférés...)
  • Rögtön az iménti sor alá tegyük be a következő sort:
    sql_mode                = NO_ENGINE_SUBSTITUTION
    (Ennek szerepéről már korábban írtam a A Debian 10 (Buster) operációs rendszer újdonságai, változásai című cikkemben.)
  • És a max_allowed_packet értékét állítsuk 64M -re, valamint vegyük ki előle a kommentet is.
    (Ez pedig arra jó, hogy nagyobb csomagméretet kezeljen a MariaDB. Néhány adatbázisalapú szoftvernek szükséges, például a Matomo-nak is)

Tehát ha mindent elvégeztünk, akkor a MariaDB konfigurációs fájljának ez a része így fog kinézni:

[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
sql-mode                = "NO_ENGINE_SUBSTITUTION"

[...]

max_allowed_packet      = 64M

[...]

Fájl limitek beállítása

Mentsük le a fájlt, majd nyissuk meg a következőt: /etc/security/limits.conf

nano /etc/security/limits.conf

Ennek a végéhez adjuk hozzá az alábbi két sort:

mysql soft nofile 65535
mysql hard nofile 65535

Mentsük le.

Nyissuk meg szerkesztésre a /etc/systemd/system/mysqld.service fájlt:

nano /etc/systemd/system/mysqld.service

Ebben keressük meg ezt a kikommentezett beállítást:

#LimitNOFILE=16364

Vegyük ki a kommentet a sor elejéről és állítsuk "infinity"-re:

LimitNOFILE=infinity

majd mentsük le.

Szolgáltatások újraindítása és a MariaDB tesztelése

Indítsuk újra a szolgáltatásokat:

systemctl daemon-reload
systemctl restart mariadb

Teszteljük a MariaDB működését:

netstat -tap | grep mysql

A parancs kimenetének valami hasonlónak kell lennie:

tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      2199/mysqld

 

Spam szűrők és vírus irtó programok telepítése

A most telepítésre kerülő programcsomag a levelezés biztonságát hivatott növelni, ami a bejövő és kimenő levelekben szűri a spam, illetve vírus tartalmakat. A programok csomagjainak telepítéséhez futtassuk az alábbi több sorba tördelt parancsot:

apt-get install -y \
    amavisd-new \
    spamassassin \
    clamav clamav-daemon clamav-docs \
    postgrey \
    libnet-ldap-perl libauthen-sasl-perl \
    libio-string-perl libio-socket-ssl-perl \
    libnet-ident-perl libnet-dns-perl libdbd-mysql-perl

Ezután kapcsoljuk ki a Spamassassin programot, mert az ISPConfig fogja ezt is irányítani, így most csak feleslegesen ül a memóriában:

systemctl stop spamassassin
systemctl disable spamassassin

A telepített csomagokkal nincs további dolgunk, az ISPConfig levelező részében a spam szűrő és a különböző levélszabályokat kezelő rendszerek fogják a háttérben használni őket.

 

 

Apache beállítások

Az Apache webkiszolgáló is már felkerült a LAMP szerver telepítésekor, így most csak néhány további beállítást végzünk el rajta.

Alapvető modulok bekapcsolása

Elsőként engedélyezzük az alapvető Apache modulokat:

a2enmod \
    suexec rewrite ssl actions \
    include cgi headers \
    proxy_fcgi alias

WebDAV engedélyezése (opcionális)

Ha szeretnénk WebDAV szolgáltatást üzemeltetni a szerveren, akkor engedélyezzük az ehhez szükséges Apache modulokat:

a2enmod dav_fs dav auth_digest

httpoxy biztonsági rés megszűntetése

Egy ismert biztonsági rést (httpoxy) szűntetünk meg a következő beállítással. Hozzunk létre egy új Apache konfigurációs fájlt (/etc/apache2/conf-available/httpoxy.conf):

nano /etc/apache2/conf-available/httpoxy.conf

És tegyük bele ezt a három sort:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Engedélyezzük a konfigurációt:

a2enconf httpoxy

Végezetül indítsuk újra az Apache-ot:

systemctl restart apache2

 

A következő oldalon folytatjuk a Let's Encrypt ingyenes SSL telepítésével.

 

 

Lapozó

Ez a leírás több oldalból áll: