Hogyan építhetjük meg és élesíthetjük ISPConfig3 szerverünket, valamint hogyan biztosíthatjuk a Let's Encrypt SSL-el kezelőpanelünket, főbb szolgáltatásainkat és weboldalainkat (3. oldal)

botond küldte be 2023. 01. 20., p – 23:19 időpontban

A 3. oldal tartalma

 

Tartalom

 

Folytatás

Az előző oldalon létrehoztuk a szerver elsődleges webfiókját, email fiókját és DNS zónáját, majd igénybe vettünk egy külső névszerver szolgáltatást, végül átirányítottuk a domain névszervereit a saját szerverünkre. Ezen az oldalon pedig ellenőrizzük a szerveren működő webes szolgáltatásokat és egyéb összetevőket, ezután beállítjuk a Let's Encrypt SSL-tanúsítványokat a kezelőpanelre és a szükséges szolgáltatásokra, valamint a weboldalakra. Végül elvégzünk még néhány finomhangolási feladatot, illetve elhárítjuk az esetlegesen felmerülő problémákat is.

 

 

Hosts fájl visszaállítása

Ha meggyőződtünk róla, hogy valóban átfrissült mindenhol a domain nevünk névszervereinek IP-címe - amit akár még mobiltelefonunkkal is ellenőrizhetünk különböző hálózati alkalmazások segítségével a saját wifi illetve mobil internet hálózatainkról is, hogy nálunk is biztosan így van-e - akkor visszaállíthatjuk hosts fájlunkat. Akár törölhetjük a leírás elején beállított sorokat, vagy # karakterekkel átmenetileg kommentelhetjük is őket, majd mentsük le.

 

Webes felületek ellenőrzése

Kezdeti esetleges DNS hibák

Ha kivettük a hosts fájlból a sorokat, akkor elsőre előfordulhatnak átmeneti hibák:

Kezdeti DNS hiba

Ezt a hibát adja: 

DNS_PROBE_FINISHED_NXDOMAIN

Ha ilyen fordul elő, ettől nem kell megijedni, hanem csak meg kell várni, amíg a számítógépünk DNS gyorsítótára is újraépül a friss adatokkal. Ezt meggyorsíthatjuk a DNS gyorsítótár ürítésével. Windows rendszereken például az ipconfig /flushdns parancsot érdemes többször kiadni, így hamarabb átveszi a Windows is a frissebb adatokat.

De mire ezt leírtam, ezzel éppen eltelt annyi idő, hogy most újra rápróbálva ezekre a felületekre, már működnek is:

ISPConfig

Webes felületek ellenőrzése - ISPConfig

Az ISPConfig rendben.

phpMyAdmin

Webes felületek ellenőrzése - phpMyAdmin

A phpMyAdmin is működik. Bár dob egy hibaüzenetet:

 A $cfg ['TempDir'] (/var/lib/phpmyadmin/tmp 1) nem elérhető. A phpMyAdmin nem képes a sablonok elrejtésére és lassú lesz.

Ez természetesen nem ide kapcsolódó hiba, ezt az alábbi root-ként kiadott chown paranccsal javíthatjuk:

chown -R www-data:www-data /var/lib/phpmyadmin

Majd frissítés:

Webes felületek ellenőrzése - phpMyAdmin - Apró hiba javítva

Ez a fenti chown parancs most csak egy ideiglenes "foltozás", mert később újra visszaállítja az ISPConfig, és újra meg fog jelenni ez a hibaüzenet, ezért erre a problémára majd külön visszatérünk, és tartós megoldással orvosoljuk.

Roundcube Webmail

Webes felületek ellenőrzése - Roundcube Webmail - Belépés

A Roundcube Webmail is működik. Most már viszont van egy működő email címünk is, amivel ki is tudjuk próbálni a webmail programot:

Webes felületek ellenőrzése - Roundcube Webmail - Levelek megtekintése

Itt ami külön jó hír, hogy egyszerre több dolog is sikeresen átment a teszten a kép alapján:

  • Működik a webmail
  • Működik a Monit, ezen belül az értesítési funkciója is
  • Működik a szerveren a levélküldés (SMTP)
  • Működik a szerveren a levél fogadás is, azaz a Dovecot IMAP kiszolgálónk is köszöni, jól érzi magát.

Amint látható, ez a szerver már megy nekem vasárnap óta (4 napja), ezalatt volt ideje a Monit-nak is begyűjteni néhány adatot.

Monit

Webes felületek ellenőrzése - Monit

A monit is működik.

 

 

Weboldal

Webes felületek ellenőrzése - Weboldal

És a "weboldal" is működik.

 

PTR rekord beállítása

Ha már átfrissült minden névszerver, tehát a külvilág felől is elérhető szerverünk, és a rajta lévő szolgáltatások, akkor állítsuk be a PTR rekordot. Ez elsősorban arra szolgál, hogy a levelezés zökkenőmentesen működjön, és ne kerüljenek a spam mappákba a szerverünkről kiküldött levelek.

Ennek beállításához keressük fel szolgáltatónkat, és kérjük meg, hogy állítsák be nekünk a teljes hosztnevünket (FQDN) az IP-címünk PTR rekordjaként. Ebben a példában nálam ez a vps.linuxportal.eu. Ehhez korábban már beállítottuk a szükséges "A" rekordot a DNS részben, ezért ezzel más teendőnk nincsen, csak kérjük meg ennek a beállítását szolgáltatónktól. Vannak hoszting szolgáltatók, ahol erre külön felületet is biztosítanak, így magunk is be tudjuk végezni ezt a beállítást. Ha valami hiba merülne fel ezzel kapcsolatban, vagy elakadunk ennek beállításával, kérjük ki szolgáltatónk tanácsát.

 

SSL tanúsítványok beállítása

Az SSL tanúsítványok segítségével a biztonságos HTTPS protokoll segítségével érhetjük el weboldalainkat és egyéb webes szolgáltatásainkat. Az ingyenes SSL tanúsítványokat a Let's Encrypt CA (Certificate Authority) fogja nekünk kiállítani, aminek automatikus lekérését és beállítását pedig az acme.sh ACME kliens fogja elvégezni.

Szerverünkön most kettő tanúsítványt fogunk beállítani, lássuk ezeknek a folyamatát!

SSL beállítása az ISPConfig kezelőpanelre és a fő szolgáltatásokra

Első körben ISPConfig kezelőpanelünket védjük le SSL tanúsítvánnyal, és ezt a tanúsítványt fogjuk átláncolni egyéb szolgáltatásokra is.

Korábban már készítettem erről egy leírást, ami kimondottan erről a részről szólt:

Azonban ennek a feladatnak a kivitelezése ma már nem igényel kézi beavatkozást, hanem az ISPConfig frissítő scriptje fogja ezt elvégezni helyettünk, így ezt a korábbi leírást tekintsük inkább csak amolyan tanulmánynak, hogy a mostani frissítő script nagyjából miket csinál a háttérben.

ISPConfig kezelőpanel frissítése a --force kapcsolóval

Az ISPConfig kezelőpanel frissítéséről is készítettem már korábban leírásokat, ezeket itt találhatjuk:

A panel frissítéséről tehát már korábban értekeztünk, most lényegében ugyanezt fogjuk elvégezni, csak a --force kapcsoló használatával.

A --force kapcsoló nélkül a frissítő script kilép, ha nem talál frissebb ISPConfig változatot, ezért az SSL részekig el sem jutunk nélküle. A kapcsoló segítségével pedig kényszeríti a scriptet, hogy végighaladjon minden lépésen, ezzel lehetőséget biztosítva arra, hogy újrakonfiguráljuk az SSL részeket a - most már a külvilág felől is elérhető - szerverünk számára, amire a telepítés idején nem volt lehetőség.

Futtassuk tehát továbbra is root-ként az alábbi parancsot:

ispconfig_update.sh --force

A script futtatása közben egy másik terminál ablakban a tail paranccsal követem az acme.sh naplóját a /var/log/ispconfig/acme.log fájlt is, hogy élőben láthassam hogy mi zajlik a háttérben az SSL lekérése körül:

tail -f /var/log/ispconfig/acme.log

Ennek annyi haszna van, hogy akármilyen hiba keletkezik a tanúsítvány kiállításával és konfigurálásával kapcsolatban, itt elsőkézből kapunk információt róla. Illetve normális esetben a sikerességről is innen tájékozódhatunk először.

Akkor jöjjenek tehát a frissítő script kérdései:

Select update method (stable,nightly,git-develop) [stable]:

ISPConfig frissítése - Select update method

Itt nyomjunk ENTER-t.

A következő pár kérdést egybe rakom, a végén zölddel kiemelve a kitöltendő dolgokkal / műveletekkel, így nem nyújtjuk hosszúra ezt a részt, majd a fontosabb SSL részeknél részletezem újra:

Shall the script create a ISPConfig backup in /var/backup/ now? (yes,no) [yes]: [ENTER]
Reconfigure Permissions in master database? (yes,no) [no]: [ENTER]
Reconfigure Services? (yes,no,selected) [yes]: [ENTER]
ISPConfig Port [8080]: Itt célszerű egyedi portszámot beállítani a nagyobb biztonság érdekében, de ebben a leírásban én most ezen hagyom, tehát [ENTER]
Create new ISPConfig SSL certificate (yes,no) [no]: yes [ENTER]

ISPConfig frissítése - Create new ISPConfig SSL certificate

És itt jön a lényeg, tehát itt új SSL tanúsítványt fog kikérni az ISPConfig, amit első körben a Let's Encrypt-nél fog megtenni, és ha ott nem sikerül valami oknál fogva, akkor fallback-ként gerelál egy self-signed példányt. De most mivel eddigre mindent beállítottunk, így most ennek nem lehet akadálya. Itt tehát írjuk be a "yes"-t.

ISPConfig frissítése - Create new ISPConfig SSL certificate - SSL létrehozva

És el is indult az SSL kikérési folyamat. Itt persze kicsit hosszabban "tekerte" a naplót, itt csak az alja látszik, de ami így is kiderül belőle, hogy sikerült kiállítania a tanúsítványt a vps.linuxportal.eu FQDN névre, és be is másolta a /usr/local/ispconfig/interface/ssl/ könyvtárba, ahonnan az ISPConfig és több egyéb szolgáltatás is fogja használni.

 

 

Közben egy harmadik ablakban megtekintve szépen betette a fájlokat a helyükre, és a korábbi, self-signed tanúsítványról pedig biztonsági másolatot készített:

ISPConfig SSL fájlok a helyükön

Persze a kezelőpanelünk még a memóriában lévő self-signed tanúsítvánnyal megy, még kell neki egy Apache újraindítás, hogy a friss fájlok lépjenek érvénybe. De ezzel nem kell foglalkoznunk, a frissítő script elvégzi ezt is a végén, így haladjunk tovább.

Jöjjön a következő telepítő kérdés:

Symlink ISPConfig SSL certs to Postfix? (y,n) [y]: [ENTER]
Symlink ISPConfig SSL certs to Pure-FTPd? Creating dhparam file may take some time. (y,n) [y]: [ENTER]
Reconfigure Crontab? (yes,no) [yes]: [ENTER]

Itt az elsőnél a Postfix-re láncolja át az SSL-t, utána pedig a Pure-FTPd-re. Majd a frissítés el is készült:

ISPConfig frissítés kész

A kiállított SSL tanúsítványok listáját az acme.sh paranccsal kérdezhetjük le:

acme.sh --list

A kiállított SSL tanúsítványok listája

Itt tehát látható, hogy már van egy vps.linuxportal.eu névre kiállított tanúsítványunk. De ezen kívül még nincs sem a www-s sem az anélküli sima domain neves változatra. Így tehát most még csak a teljes hosztneves (FQDN) elérésű dolgokat érhetjük el HTTPS kapcsolaton keresztül.

Ha ezzel megvagyunk, ellenőrizhetjük is a webes dolgainkat.

 

SSL tanúsítvány ellenőrzése a webes alkalmazásokon

A Chrome makacsul "megjegyzi" az SSL állapotot, ezért a piros jelzés megmarad egy ideig. És ezen sokszor még az SSL cache törlés sem segít, sem a böngésző újraindítása. Hanem egyszer csak gondol egyet, és eltűnik. Ez valami bug lehet a Chrome-ban. Viszont ha megnyitjuk a tanúsítvány részleteit, akkor már jól mutatja, tehát már az új tanúsítvánnyal töltődnek be az oldalak, de a piros jelzés megmarad.

Hogy elkerüljük ezt az apró és átmeneti szépséghibát, én most inkognitó ablakból nyitom meg ezeket a webes felületeket, ahol teljesen tiszta lappal indul minden. De természetesen akár másik böngészőből is meg lehet nyitni, csak a Chrome-ban szépen látszik egyben a megnyitott oldal, és a tanúsítvány adatai is.

ISPConfig

ISPConfig és az SSL tanúsítvány

Amint láthatjuk, a panel bejön szépen a friss és ropogós SSL-el. Még a jelszót is eltárolta a böngésző hozzá (persze az más kérdés, hogy az inkognitó ablak bezárása után töröl mindent).

phpMyAdmin

phpMyAdmin SSL rendben

Itt még két apróságra érdemes kitérni:

Az ISPConfig kezelőpanel a 8080-as porton érhető el alapból, a webes alkalmazások - így a phpMyAdmin is - pedig a 8081-es porton, amennyiben a teljes hosztnévvel kívánjuk elérni (pl. vps.linuxportal.eu:8081/phpmyadmin). Valamint később elérhető lesz még bármelyik weboldal alól is www-vel kezdődően, ha már azokhoz is ki van kérve és be van állítva az SSL. De jelenleg még www-s aldomainhez nincs tanúsítvány, az majd később kerül beállításra. A 8081-es port használatát pedig az Apache apps nevű konfigurációja biztosítja, hogy ezen keresztül HTTPS-el lehessen elérni a webes alkalmazásokat, függetlenül attól, hogy például weboldalakhoz még nincs kiállítva semmilyen tanúsítvány, mint például ahogy most is. De erről majd egy másik leírásban értekezünk részletesebben.

A másik apróság pedig a fentebb már korrigált apró phpMyAdmin hiba, ami most újra megjelent. Ezt majd egy másik leírásban tartósan orvosoljuk, ahogy fentebb már említettem. Amint elkészült ez a leírás, ide is belinkelem.

Postfix Webmail

Postfix Webmail SSL rendben

Ez is rendben, a 8081-es porton működik szépen az új SSL-el. Itt közben a Monit küldözgeti az értesítőket. Amint láthatjuk, a Fail2Ban már gyűjti is az IP-címeket. Még ezt is beállítjuk majd egy másik leírásban.

Monit

A Monit webes felülete jelenleg nem érhető el

A Monit webes felülete jelenleg nem érhető el, "ERR_SSL_PROTOCOL_ERROR" hibát dob. Ez azért van, mert a teljes hosztneves (FQDN) elérésre (vps.linuxportal.eu) már be van állítva az SSL, tehát az azzal működne alapból, a Monit viszont egy saját, 2812-es egyedi porton működik, ahol pedig sima HTTP kapcsolat van beállítva. Így ez a két protokoll irányelv ütközik egymással. Ennek a beállítását a végén a hibaelhárítás és finomhangolás részben tekinthetjük meg.

Reméljük idővel ez az SSL beállítás/átláncolás is bekerül majd az ISPConfig frissítő scriptjébe is, és akkor egy macerával kevesebb lesz.

Weboldal

Végül pedig a weboldalnak titulált kis zöld üdvözlőpanelünk jön:

Weboldal SSL hiba

Természetesen ez sem működik még, mivel ahogy fentebb is említettem, a weboldalhoz külön kell kikérni az SSL-t, függetlenül attól, hogy ez az elsődleges weboldalunk vagy webtárhelyünk, ezt mindegyik weboldalhoz külön be kell állítani. Ezzel folytatjuk a következő részt.

 

 

SSL beállítása az első weboldalra

Ahogy az imént említettem, itt most mindegy, hogy melyik weboldalról van szó, tehát első/elsődleges, vagy sokadik, ugyanúgy kell mindegyiknél elvégezni a beállítást, de mivel még tényleg ez az első weboldalunk, ezért adtam ezt a címet ennek a résznek.

Az SSL beállításához lépjünk be az ISPConfig kezelőpanelükbe adminként, majd lépjünk a Webhelyek főmenübe, itt rögtön a Weboldalak almenü jön be a weboldalak listájával:

ISPConfig - Weboldalak listája

Lépjünk a beállítani kívánt weboldalra, majd itt jelöljük be az SSL és a Let's Encrypt checkboxokat együtt:

SSL és Let's Encrypt engedélyezése

Majd mentsük le, és várjuk meg, amíg eltűnik a piros kör fentről.

Valamint állítsuk még be a rewrite to HTTPS funkciót is, hogy már csak HTTPS-el töltse be az oldalt. Ehhez nyissuk meg ismét a weboldal beállításait, majd lépjünk az átirányítás fülre. Itt megjelenik egy új opció, ami korábban még nem volt: "Rewrite HTTP to HTTPS". Ezt jelöljük be:

Webldal átirányítása HTTPS-re

Majd ha belenézünk az acme.sh naplójába is:

SSL kiállítva a weboldalra

és az SSL-ek listáját is lekérdezzük, akkor itt most két tanúsítványunk van:

  • linuxportal.eu, www.linuxportal.eu, vps.linuxportal.eu
  • vps.linuxportal.eu

Itt annyi a lényeg, hogy a vps.linuxportal.eu mindkét tanúsítványban szerepel. Amit korábban kértünk ki, az hitelesíti az ISPConfig kezelőpanelt a 8080-as porton (vagy amit beállítottunk a frissítéskor telepítéskor), valamint a webes alkalmazásokat hitelesíti a 8081-es porton (ez ugye helyi Apache konfigurációja a szervernek, és nem a tanúsítvány tartalmazza a portokat, tehát ez nem összetévesztendő). A most kikért tanúsítvány pedig magára a weboldalra van, tehát linuxportal.eu, www.linuxportal.eu és vps.linuxportal.eu.

Weboldal tanúsítvány működik

És ahogy láthatjuk, a kiállítás ideje is más, mint az először kikért tanúsítványnak. Persze ez a terminálban lekért listában is jól látszik.

Így tehát most már teljeskörű az SSL védelem a szerveren.

 

Hibaelhárítás és finomhangolás

Ebben a fejezetben átnézünk néhány hibát, annak javítását, illetve finomhangolási beállítást, amiket külön leírásokban készítek el, mert témájuk miatt megérdemelnek egy-egy külön leírást és nem ezt nyújtják túl hosszúra.

Ezt a részt később is bővíteni fogom, amikor elkészülök egy-egy újabb kiegészítővel.

Alapértelmezett weboldal beállítása

A szerver néhány URL elérésre nem úgy reagál, ahogy azt elvárnánk. Így például ha a szervert az IP-címével próbáljuk elérni a webböngészőben, akkor nem a várt tartalom jelenik meg, hanem például az Apache2 Debian Default Page, vagy éppen HTTPS esetén a névsorban legelöl lévő weboldal. Ezek az URL címek az alábbiak:

https://vps.linuxportal.eu/
http://178.238.208.205/
https://178.238.208.205/

Természetesen itt helyettesítsük be saját hosztnevünket, domain nevünket, illetve IP-címünket.

Az alábbi leírásban oldjuk meg ezt a problémát:

Monit beállítása, finomhangolása

A Monit szolgáltatás figyelő rendszerben még be kell állítani az SSL használatát, valamint még elvégzünk benne néhány beállítást, finomhangolást.

Az alábbi leírásban végezzük el ezeket a beállításokat

phpMyAdmin hiba javítása, optimalizálása

A phpMyadmin még tartalmaz egy apró hibát, ezt a hamarosan elkészülő leírásban javítjuk.

 

 

Konklúzió

Ez volna tehát egy Debian 11 (Bullseye) tökéletes szerver telepítés elejétől a végéig, mindezt egy éles szerveren kivitelezve. Így remélem mindazoknak tudtam hasznos  és érdekes információkkal szolgálni, akik hasonló szervert szeretnének telepíteni maguknak.

 

 

Lapozó

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