Debian 11 (Bullseye) LAMP szerver v1.0 telepítése

botond küldte be 2022. 09. 06., k – 17:12 időpontban

Tartalom

 

Bevezető

LAMP rendszerek segítségével dinamikus weboldalakat futtathatunk szerverünkön, vagy akár otthoni gépünkön. Ebben a leírásban a Debian 11 (Bullseye) operációs rendszerre készítünk el egy LAMP szervert, amely az alábbi összetevőkből fog állni:

A verziószámok a leírás készítésének idején ellenőrzött verziók. Bár a Debian ritkán szokta változtatni a különböző csomagok verzióit egy Debian főverzió életcikluson belül, azonban előfordulhatnak változások.

Jó hír, hogy a phpMyAdmin a Debian 11-ben ismét visszakerült a hivatalos csomagtárba, így onnan könnyen telepíthető.

Ezt a telepítést is az 1.0 verziószámmal neveztem el, így ha később kerülnek még rá kiegészítők (további verziókban), akkor pontosabban tudok hivatkozni az éppen szükséges LAMP változatra a megfelelő verziószám megjelölésével.

Erre a LAMP szerverre még később más telepítési útmutatók is fognak épülni, ezért a leírás lépéseit pontosan végezzük el, hogy a későbbi, erre hivatkozó telepítések gond nélkül működhessenek.

 

 

Alapfeltétel

Ennek a LAMP szervernek az összeállításához szükség van a Debian 11 (Bullseye) minimális szerver telepítése című útmutató elvégzésére, vagy ha Virtualboxban készítjük a leírást, akkor a Debian 11 (Bullseye) minimális szerver letöltésére hogy hibátlanul működhessen. Én is ezen készítem el a telepítést.
Természetesen feltelepíthető akár grafikus környezettel rendelkező asztali használatú számítógépre is, a lényeg, hogy a LAMP rendszer összetevői most kerüljenek fel először a gépre a megfelelő konfiguráció és működés érdekében.

 

Rendszer frissítése

Első körben lépjünk be a szerverre a konzolon, vagy ha távolról felügyeljük a gépet, akkor SSH-n keresztül, majd futtassuk a frissítést végző apt-get parancsokat root-ként:

apt-get update
apt-get upgrade
A továbbiakban maradjunk root-ként, és így folytassuk a telepítést.

 

Apache web szerver telepítése

Az Apache webkiszolgáló telepítéséhez futtassuk az alábbi parancsot:

apt-get -y install apache2 apache2-utils
Az apache2 csomag maga a HTTP szerver,  az apache2-utils csomag pedig egy hasznos programokból álló gyűjtemény, amik további funkcionalitást adnak a webkiszolgálóhoz. Segítségével többek között például tudjuk kezelni a HTTP jelszavakat, a csomagban lévő htpasswd parancs használatával, valamint még sok egyéb kiegészítőt is tartalmaz.

Az alapértelmezett webgyökér könyvtár a /var/www/html. Tehát alapból ez az egy virtualhoszt kerül beállításra telepítéskor, melynek a konfigurációs fájlja itt található: /etc/apache2/sites-enabled/000-default.conf

Ennek tartalma pedig:

cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Ha át szeretnénk állítani például a webgyökér könyvtárat, stb, akkor ebben a fájlban kell módosítani.

Az Apache2 fő konfigurációs fájlja pedig: /etc/apache2/apache2.conf.

Apache tesztelése

Az Apache szolgáltatást ellenőrizhetjük a parancssorból a systemctl parancs segítségével:

systemctl status apache2

Apache tesztelése a parancssorból

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-08-30 19:15:07 CEST; 23h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 3100 (apache2)
      Tasks: 55 (limit: 4664)
     Memory: 9.7M
        CPU: 3.424s
     CGroup: /system.slice/apache2.service
             ├─3100 /usr/sbin/apache2 -k start
             ├─3103 /usr/sbin/apache2 -k start
             └─3104 /usr/sbin/apache2 -k start

aug 30 19:15:07 debian11 systemd[1]: Starting The Apache HTTP Server...
aug 30 19:15:07 debian11 systemd[1]: Started The Apache HTTP Server.

Megfelelő működés esetén ilyesmi kimenetet kell kapnunk. Valamint böngészőből is ellenőrizhetjük az Apache működését, a szerver IP-címével, vagy a hosztnevével - amennyiben beírtuk azt a számítógép hosts fájljába:

Apache tesztelése a böngészőben

Itt pedig az apache "üdvözlő" oldalát láthatjuk.

 

 

PHP 7.4 telepítése

A Debian 11 (Bullseye) operációs rendszer hivatalos csomagtárában a 7.4-as PHP ág található, ebben a leírásban tehát most ezt fogjuk telepíteni.

A PHP régebbi vagy újabb változatainak külső csomagtárból történő telepítéséről másik leírásokban tájékozódhatunk:

PHP csomagok válogatása és telepítése

A Debian hivatalos csomagtárában sok PHP kiegészítőt találhatunk, amikre alábbi apt-cache parancs segítségével kereshetünk rá:

apt-cache search php7.4
php-amqp - AMQP extension for PHP
php-apcu - APC User Cache for PHP
php-apcu-bc - APCu Backwards Compatibility Module
php-ast - AST extension for PHP 7
php-ds - PHP extension providing efficient data structures for PHP 7
php-gearman - PHP wrapper to libgearman
php-geoip - GeoIP module for PHP
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-gnupg - PHP wrapper around the gpgme library
php-igbinary - igbinary PHP serializer
php-imagick - Provides a wrapper to the ImageMagick library
php-lua - PHP Embedded lua interpreter
php-mailparse - Email message manipulation for PHP
php-memcache - memcache extension module for PHP
php-memcached - memcached extension module for PHP, uses libmemcached
php-mongodb - MongoDB driver for PHP
php-msgpack - PHP extension for interfacing with MessagePack
php-oauth - OAuth 1.0 consumer and provider extension
php-pcov - Code coverage driver
php-http - PECL HTTP module for PHP Extended HTTP Support
php-pinba - Pinba module for PHP
php-propro - propro module for PHP
php-ps - ps module for PHP
php-psr - PSR interfaces for PHP
php-radius - radius client library for PHP
php-raphf - raphf module for PHP
php-redis - PHP extension for interfacing with Redis
php-rrd - PHP bindings to rrd tool system
php-solr - PHP extension for communicating with Apache Solr server
php-ssh2 - Bindings for the libssh2 library
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-uopz - UOPZ extension for PHP 7
php-uploadprogress - file upload progress tracking extension for PHP
php-uuid - PHP UUID extension
php-yac - YAC (Yet Another Cache) for PHP
php-yaml - YAML-1.1 parser and emitter for PHP
php-zmq - ZeroMQ messaging bindings for PHP
libapache2-mod-php7.4 - server-side, HTML-embedded scripting language (Apache 2 module)
libphp7.4-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.4 - server-side, HTML-embedded scripting language (metapackage)
php7.4-bcmath - Bcmath module for PHP
php7.4-bz2 - bzip2 module for PHP
php7.4-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.4-cli - command-line interpreter for the PHP scripting language
php7.4-common - documentation, examples and common module for PHP
php7.4-curl - CURL module for PHP
php7.4-dba - DBA module for PHP
php7.4-dev - Files for PHP7.4 module development
php7.4-enchant - Enchant module for PHP
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.4-gd - GD module for PHP
php7.4-gmp - GMP module for PHP
php7.4-imap - IMAP module for PHP
php7.4-interbase - Interbase module for PHP
php7.4-intl - Internationalisation module for PHP
php7.4-json - JSON module for PHP
php7.4-ldap - LDAP module for PHP
php7.4-mbstring - MBSTRING module for PHP
php7.4-mysql - MySQL module for PHP
php7.4-odbc - ODBC module for PHP
php7.4-opcache - Zend OpCache module for PHP
php7.4-pgsql - PostgreSQL module for PHP
php7.4-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.4-pspell - pspell module for PHP
php7.4-readline - readline module for PHP
php7.4-snmp - SNMP module for PHP
php7.4-soap - SOAP module for PHP
php7.4-sqlite3 - SQLite3 module for PHP
php7.4-sybase - Sybase module for PHP
php7.4-tidy - tidy module for PHP
php7.4-xml - DOM, SimpleXML, XML, and XSL module for PHP
php7.4-xmlrpc - XMLRPC-EPI module for PHP
php7.4-xsl - XSL module for PHP (dummy)
php7.4-zip - Zip module for PHP
php-sass - PHP bindings to libsass - fast, native Sass parsing in PHP
php-tideways - Tideways PHP Profiler Extension
php-xdebug - Xdebug Module for PHP

Ezekből összeállítottam a szokásos csomagválogatásomat, amit természetesen frissítettem és korrigáltam az itt aktuálisan elérhető csomagok alapján. Az alábbi csomagokkal egy általánosnál szélesebb körben használható PHP rendszert telepíthetünk, amivel futtathatunk összetettebb weboldalakat, vagy CMS rendszereket is.

Az itt telepítésre kerülő csomagok listája természetesen egyedi igényeinknek megfelelően módosítható, amennyiben szükségünk van itt nem szereplő csomagokra, vagy éppen feleslegesnek találunk ezek közül valamit.

Csak az áttekinthetőség kedvéért két részre osztottam a csomagok telepítését, amit a megszokott módon több sorba tördelve tálalom. Először tehát futtassuk a "közös" használatú csomagokat:

apt-get -y install \
    mcrypt \
    imagemagick \
    libapache2-mod-php7.4 \
    libphp7.4-embed \
    memcached \
    php-apcu \
    php-gnupg \
    php-http \
    php-imagick \
    php-memcache \
    php-memcached \
    php-pear \
    php-php-gettext \
    php-sass \
    php-uploadprogress \
    php-yaml

Ezeket a csomagokat más PHP verziók is használják, amennyiben később telepítjük őket.

Itt elég sok minden beállításra kerül, valamint a csomagfüggőségek következtében felkerül még néhány "php7.4-" kezdetű csomag is.

Most pedig telepítsük a Debian 11 (Bullseye) 7.4-es PHP csomagjait, amik közül néhány már az előbb telepítésre került a függőségek miatt, de emiatt nem veszem ki ezeket a listából, hátha valaki nem telepített valamit a fentiek közül, és akkor nem kerülnének fel egyáltalán ezek a csomagok.

apt-get -y install \
    php7.4 \
    php7.4-bcmath \
    php7.4-bz2 \
    php7.4-cgi \
    php7.4-cli \
    php7.4-common \
    php7.4-curl \
    php7.4-fpm \
    php7.4-gd \
    php7.4-imap \
    php7.4-intl \
    php7.4-json \
    php7.4-mbstring \
    php7.4-mysql \
    php7.4-opcache \
    php7.4-pspell \
    php7.4-soap \
    php7.4-sqlite3 \
    php7.4-tidy \
    php7.4-xml \
    php7.4-xmlrpc \
    php7.4-xsl \
    php7.4-zip

A csomagok telepítése után indítsuk újra az Apache-ot:

systemctl restart apache2

A telepítés néhány sor NOTICE-al zárul:

NOTICE: Not enabling PHP 7.4 FPM by default.
NOTICE: To enable PHP 7.4 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.4-fpm
NOTICE: You are seeing this message because you have apache2 package installed.

Ez teljesen normális, mindez azért kerül megjegyzésre, mert egyszerre telepítettük a PHP Apache csomagját – ami lehetővé teszi a PHP Apache modulként történő futtatását –, és a PHP-FPM csomagját is. Ezért jelzi nekünk a telepítő, hogy alapértelmezetten nem kerül engedélyezésre a PHP FPM szerver API módja, amíg azt be nem kapcsoljuk a leírt lépésekkel.

Először teszteljük a PHP-t a jelenlegi Apache modulként, majd átállítjuk (globálisan) PHP-FPM-re, és úgy is kipróbáljuk.

PHP tesztelése - Apache modulként (mod_php)

Hozzunk létre egy phpinfo fájlt, amivel megnézzük a PHP futási környezetének adatait:

nano /var/www/html/phpinfo.php

Majd tegyük bele a már jól ismert sorokat:

1
2
3
<?php
    phpinfo();
?>

Ezután nyissuk meg a böngészőben:

phpinfo - Alapértelmezett mod_php tesztelése

A Server API sorában láthatjuk a "Apache 2.0 Handler" értéket. Ilyenkor a PHP egy Apache modulként fut, ami már elavult technológia. Célszerű átállítani PHP-FPM-re a szervert.

Szerver átállítása PHP-FPM-re

A PHP-FPM-re történő globális átállítás azt jelenti, hogy innentől már nem lesz elérhető a mod_php, mivel kikapcsoljuk azt. Tetmészetesen később vissza lehet állítani, amennyiben szükséges, de ma már nemigen van rá szükség.

A PHP-FPM-re történő globális átkapcsoláshoz a PHP 7.4 esetében futtassuk az alábbi parancsokat:

a2dismod php7.4
a2enmod proxy_fcgi setenvif
a2enconf php7.4-fpm
systemctl restart apache2

Szerver átállítása PHP-FPM-re

Itt kikapcsoljuk az Apache aktuális php modulját, bekapcsoljuk a szükséges egyéb modulokat, majd engedélyezzük az FPM konfigurációt, és végül újraindítjuk az Apache-ot.

PHP tesztelése - PHP-FPM-el futtatva

Ezután ha ráfrissítünk a korábbi phpinfó böngészőablakunkra, akkor már így fog kinézni:

phpinfo - PHP-FPM tesztelése

Persze itt még sok dolgot be lehet állítani a PHP-FPM háza táján, mert így még nem használjuk ki a külön pool-ok által elérhető előnyöket, stb, de ebben a leírásban most ezekre már nem térünk ki, mert már több helyen volt ezekről szó.

Ha bővebb információkat szeretnénk kapni a PHP-FPM beállításairól, akkor az alábbi linkeken tájékozódhatunk:

(ezek a leírások más PHP illetve Debian/Ubuntu verziókon készültek, de a PHP-FPM beállítások szempontjából ennek nincs jelentősége)

 

 

MariaDB telepítése

A Debian a 9-es (Stretch) változata óta a MariaDB adatbázis kiszolgálót kínálja alapértelmezett adatbázis kiszolgálóként. Nincs ez másképpen a Debian 11 (Bullseye) esetében sem. Telepítését egyszerűen végezhetjük az alábbi parancs futtatásával:

apt-get -y install mariadb-server mariadb-client

Adatbázis biztonságossá tétele

Adatbázis szerverünket, és adatbázisainkat biztonságosabbá tehetjük, ha elvégzünk néhány beállítást. Ezeket a biztonsági beállításokat egyszerre elvégezhetjük a mysql_secure_installation parancs futtatásával:

mysql_secure_installation

A program feltesz nekünk néhány kérdést, amire válaszoljunk az alábbiak szerint:

Enter current password for root (enter for none): [Enter]
Switch to unix_socket authentication [Y/n]: n (új funkció, ne kapcsoljuk be, ezt lentebb részletezem)
Change the root password? [Y/n] y
New password: Adjuk meg az új root jelszót
Re-enter new password: Ismételjük meg
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

A teljes kimenet:

MariaDB - Adatbázis biztonságossá tétele

MariaDB - Adatbázis biztonságossá tétele

Itt egy kérdés kivételével ugyanazokat kérdezi meg a program, mint a korábbi MariaDB változatoknál. Ezekről a kérdésekről és válaszokról már írtam részletesebben a korábban elkészített Debian 9 (Stretch) LAMP szerver telepítésekor, így ott tájékozódhatunk bővebben.

Ahogy fentebb a kérdéseknél ígértem, egy kérdést részletezünk, amivel itt újként találkozhatunk a korábbi telepítésekhez képest:

Switch to unix_socket authentication [Y/n]:

A MariaDB a 10.4.3 verziója óta bevezette az Unix socket alapon történő azonosítási módszer alapértelmezett használatát. Mivel ebben a telepítő leírásban "esik túl" a MariaDB verziószáma (10.5.15) ezen az említett 10.4.3-as verzión, ezért itt találkozhatunk ezzel a kérdéssel először. Maga az Unix socket alapú hitelesítés természetesen létezett már korábban is, csak ettől a verziótól kérdez rá a rendszer, hogy szeretnénk-e alapértelmezetten használni, vagy maradunk-e a hagyományos jelszavas azonosítási módszer használatánál.

A plugin lényege, hogy a MariaDB adatbázis-kiszolgálóba történő belépéskor a Linux felhasználók hitelesítési adatainak segítségével lép be a MariaDB adatbázisokba a rendszerben lévő felhasználókkal. Így miután megkapta a Linux felhasználónevet, az azonos felhasználónévvel rendelkező MariaDB-fiókként hitelesíti a csatlakozó felhasználót - amennyiben a MariaDB is tartalmaz azonos nevű adatbázis-felhasználót. Például ha root-ként vagyunk bent a Linux parancssorban, akkor a mysql parancs root-ként léptet be minket a MariaDB-be is. Forrás >>.

A Unix socket alapú hitelesítés jó dolog, amennyiben a parancssorból matatjuk az adatbázisainkat. De egy átlag webszerver esetén az adatbázisok kezelését többnyire webes adatbáziskezelőkkel végezzük, például a phpMyAdmin segítségével. Amennyiben Unix socket alapú hitelesítést használnánk, ebben az esetben nem tudnánk belépni root-ként a phpMyAdmin felületére, mivel a böngészőben futtatott weboldalak és egyéb webes felületek nem ugyanazzal a Linux felhasználóval csatlakoznak a kiszolgálóhoz. Ezért a korábbi LAMP szerver telepítések során kerülő megoldásokkal kellett ezt a problámát kiküszöbölni (mivel az akkori verziókban nem volt ilyen választási lehetőség, ahol ki tudtuk volna kapcsolni a Unix socket hitelesítési funkció alapértelmezett hasznákatát): Hogy elkerüljük a fenti linkeken mutatott korábbi plusz beállításokat, itt most a mysql_secure_installation parancs "Switch to unix_socket authentication" kérdésénél kikapcsoltuk ezt a funkciót, így egyből be fogunk tudni lépni root-ként is a phpMyAdmin panelünkbe a weben keresztül.

A beállítást ellenőrizhetjük is az adatbázisba lépve a root felhasználó rekordjában a plugin mezőt:

mysql

A Unix socket alapú hitelesítési funkciója ki lett kapcsolva, így nem ez az alapértelmezett hitelesítési mód, de mint láthatjuk, ettől még beléptet root-ként az adatbázis-kiszolgálóba jelszó használata nélkül is, ahol le tudjuk kérdezni a root felhasználó rekordjának megfelelő mezőjét:

select plugin from mysql.user where user='root';

MySQL natív jelszó ellenőrzése

Itt tehát láthatjuk a "mysql_native_password" értéket, amit a korábbi telepítések során külön kellett beállítanunk a root felhasználó rekordjának a módosításával.

A Unix socket alapú azonosítás használatáról és működéséről további részleteket még itt találhatunk.

Bár ettől függetlenül én továbbra is híve vagyok a defaults fájlok használatának, amiknek segítségével kényelmesen kezelhetjük akár más felhasználók adatbázisait is (nem a bejelentkezett felhasználónak a nevével megegyező tulajdonú adatbázis) a parancssori munkák vagy automatizált feladatok során, de ennek a beállításának a részletezésétől most eltekintünk ebben a leírásban. Amennyiben szükségünk van a defaults fájlok használatára, az iménti linken, illetve a fentebbi link felsorolásokon, vagy a korábbi LAMP szerver telepítő leírásokból tájékozódhatunk róla.

Itt most tehát nem kell bonyolítanunk a phpMyAdmin panelbe történő root belépést a root felhasználó módosításával vagy egyéb kerülő megoldások alkalmazásával - mint korábban - hanem folytathatjuk a munkát a phpMyAdmin telepítésével.

 

phpMyAdmin telepítése

phpMyAdmin segítségével webes felületen kényelmesen kezelhetjük adatbázisainkat, futtathatunk lekérdezéseket, karbantartást végezhetünk rajtuk, stb. Telepítéséhez futtassuk az alábbi parancsot:

apt-get -y install phpmyadmin

Telepítés közben előjön pár dialógus. Elsőként rákérdez, hogy melyik HTTP kiszolgálót használjuk:

phpMyAdmin telepítése - Webkiszolgáló kiválasztása

Itt válasszuk az apache2-t.

Majd további telepítgetések  után a következő dialógusban kiírja, hogy a phpMyAdmin működéséhez szüksége van egy saját adatbázisra, és hogy szeretnénk-e hogy beállítsa-e automatikusan a dbconfig-common segítségével:

phpMyAdmin telepítése - Adatbázis automatikus beállítása a dbconfig-common segítségével

Itt válasszunk igen-t.

Ezután kér még egy jelszót, amivel a phpMyAdmin kontroll felhasználója fog dolgozni:

phpMyAdmin telepítése - Jelszó bekérése a kontroll felhasználó számára

Ezzel a felhasználóval a phpMyAdmin a háttér karbantartást, struktúra szinkronizációkat, stb végzi, tehát nekünk nem lesz vele dolgunk. Így nyomjunk erre egy entert, hogy generáljon magának egy saját jelszót.

A későbbiek során, ha esetleg szükség lenne rá, hogy újra kell konfigurálni a phpMyAdmin adatbáziskezelő rendszert, akkor itt már a most létrehozott jelszót fogja kérni. Tehát ha később mégis szükségünk lenne erre a jelszóra, akkor azt a /etc/phpmyadmin/config-db.php fájban találhatjuk meg, ebben tárolja a rendszer.

Ezzel készen is van a telepítés.

phpMyAdmin tesztelése

Lépjünk be a phpMyAdmin felületére a szerverünk IP-címe vagy hosztneve alatti /phpmyadmin alkönyvtár betöltésével:

Nálam például az alábbiak valamelyikén:

http://debian11.linuxportal.vm/phpmyadmin/
http://192.168.1.140/phpmyadmin/

phpMyAdmin - Belépés

Itt kezdetnek adjuk meg a root felhasználót, és a hozzá fentebb beállított jelszót, majd bejön a panel kezdőoldala:

phpMyAdmin - Kezdőoldal

És itt már akár kezdhetjük is az adatbázisokkal kapcsolatos munkát...

 

 

UFW tűzfal telepítése és beállítása (opcionális)

Az UFW (Uncomplicated Firewall) segítségével biztonságosabbá tehetjük rendszerünket. Ez a rész nem kötelező, de ha nagyobb fokú biztonságot szeretnénk LAMP szerverünkön, akkor érdemes telepíteni a tűzfalat és elvégezni ezeket a beállításokat.

Telepítés

Az UFW tűzfal az Ubuntu rendszereken a 8.04 LTS kiadás óta alapértelmezetten telepítve van, Debian rendszereken telepítsük az ufw csomagot root-ként:

apt-get install ufw

Beállítás

Az UFW alapértelmezetten inaktív állapotban van.

Állapot lekérdezése

A tűzfal állapotát ellenőrizhetjük az alábbi ufw parancs segítségével:

ufw status

UFW tűzfal állapot lekérdezése

Alkalmazásprofilok

Az alkalmazásprofilok segítségével lehetőségünk van előre beállított szolgálatatások és portok tiltására, illetve engedélyezésére. A jelenleg elérhető profilok lekérdezéséhez futtassuk az alábbi parancsot:

ufw app list

Alkalmazásprofilok kilistázása

Ezek közül amikre nekünk most szükségünk lehet ezen a LAMP szerveren azok az alábbiak:

  • OpenSSH: A 22-es TCP porton szabályozza az SSH kapcsolatokat.
  • WWW Full: A profil magában foglalja a HTTP (80) és a HTTPS (443) TCP portokat, így mindkettőt egyben kezeli.

Tűzfal beállítása és bekapcsolása

A működési elv a "fehér lista" elve lesz, tehát engedélyezzük ezt a két szolgáltatást a portjaikon, és minden egyebet letiltunk.

A szerveren még van egy MySQL adatbázis kiszolgáló is, ami a 3306-os porton kommunikál. Azonban ezzel most nincs dolgunk, ha csak a phpMyAdmin kezelőpanelt használjuk, mert az nem kívülről csatlakozik az adatbázishoz. Akkor lenne szükségünk a 3306-os port kinyitására, ha távoli adatbázis kliens programmal szeretnénk csatlakozni. Így tehát nyugodtan lezárhatunk mindent a két fentebb említett szolgáltatáson kívül.

Engedélyezzük tehát az említett szolgálatatásokat:

ufw allow in "OpenSSH"
ufw allow in "WWW Full"

Majd engedélyezzük a tűzfalat:

ufw enable

Ekkor figyelmeztet, hogy a művelet megszakíthatja az aktuális SSH kapcsolatot, folytatjuk-e? Nyomjunk y-t. Nyilván nem szakítja meg, mert engedélyeztük az előbb az OpenSSH-t is.

Az UFW alapértelmezett házirendje alapból letilt mindent, kivéve, amit külön engedélyezünk - ahogyan az imént is tettük. Ezzel tehát hogy bekapcsoljuk a tűzfalat, egyben le is védjük az összes többi hálózati portot a külső csatlakozásoktól. Ezzel tehát megvalósul a "fehér lista" elve.

Végül lekérdezhetjük az UFW tűzfal állapotát:

ufw status

UFW tűzfal beállítása

Itt a v6-os jelzések az IPv6 protokollra utalnak, tehát ha IPv6-os hálózaton (is) működik a szerverünk, akkor azon is beállította a kért profilokat.

Az UFW tűzfal részletesebb beállításairól és használatáról itt tájékozódhatunk.

 

Szolgáltatások tesztelése, ellenőrzése

A tűzfalbeállítások módosítása után még vessünk egy pillantást LAMP szerverünk korábban telepített dolgaira, frissítgessünk rá a megnyitott fülekre:

Apache elérhető

PHP is működik

A phpMyAdmin is működik

Ezennel készen is áll a LAMP szerverünk.

 

Szerver letöltése

A szerver hamarosan elérhető lesz a letöltések között.

 

 

Konklúzió

A Debian 11 (Bullseye) operációs rendszerre épülő LAMP szerverünk elkészült, amivel már futtathatunk dinamikus weboldalakat, vagy akár CMS rendszereket is. Később még telepítünk ezt-azt erre a szerverre is.