Tökéletes szerver: Debian 11 (Bullseye) v1.0

botond küldte be 2022. 12. 13., k – 07:08 időpontban

Tartalom

 

Bevezető

Ebben a leírásban elkészítjük a tökéletes szerver újabb, Debian 11 (Bullseye) változatát. A korábbi tökéletes szerver telepítésektől eltérően ezt most nem hosszadalmas csomagtelepítésekkel és konfigurálással fogjuk ezt megtenni, hanem egy automatizáló script segítségével hajtjuk végre, amit az ISPConfig fejlesztői állítottak össze, hogy megkönnyítsék a szerver elkészítését. A script már elérhető egy ideje, aminek segítségével nem csak Debian 11 (Bullseye) operációs rendszeren használható, hanem  az alábbi disztribúciók és azok verzióira is telepíthetjük automatizáltam a tökéletes szerver összetevőit:

  • Debian 10 (Buster)
  • Debian 11 (Bullseye)
  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 22.04 (Jammy Jellyfish)

Ezek közül ebben a leírásban tehát most a Debian 11 (Bullseye) operációs rendszerre készítjük el automatizáltan az ISPConfig-os szerverkörnyezet telepítését.

 

 

Előfeltételek

Ezt az útmutatót a korábban elkészült Debian 11 (Bullseye) minimális szerverre fogjuk telepíteni, ezért az itt bemutatott folyamat pontos végeredményének eléréséhez ez az alaprendszer szükséges. Amennyiben VirtualBox virtuális gépen telepítünk, a munka lerövidítésének érdekében a minimális szerver innen tölthető le. Ennek a leírásnak a lépéseit tehát ezen az alaprendszeren fogom végrehajtani.

 

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

Legelőször frissítsük csomagtárainkat és a csomagjainkat root-ként:

apt-get update
apt-get upgrade

 

Az automatikus telepítő első futtatása

Figyelem!
Az itt következő részben egy "idegen" forrástól letöltött shell scriptet készülünk root-ként lefuttatni rendszerünkön, ezért ilyenkor mindig kövessünk egy általános érvényű szabályt: Amennyiben nem értjük 100%-ban a futtató parancs működését - hogy mit is csinál a letöltött parancsfájllal a gépünkön -, vagy nem bízunk meg a forrásban, abban az esetben ne futtassuk!
Jelen példában természetesen a forrás megbízható, valamint a futtató parancsot is értelmezni fogjuk, tehát amint megértettük a működését, futtathatjuk.
Mindezt tehát csak emlékeztetésképpen írtam le, hogy általában ilyenkor legyünk mindig óvatosak.

Az automatikus telepítő parancsunk tehát az alábbi, aminek első körben csak a súgó részét tekintjük meg, hogy láthassuk milyen telepítési opciók állnak rendelkezésünkre. A súgót az alábbi wget parancs segítségével tehetjük meg root-ként vagy sudo használatával, természetesen miután értelmeztük a működését:

wget -O - https://get.ispconfig.org | sh -s -- --help

A wget parancs az alábbiakat teszi:

  • -O: output. A letöltött tartalom kimenetének megadása.
  • - (szimpla kötőjel egymagában): Egy linux egyezmény alapján (amit nem minden program követ) a fájlnév helyén lévő egyedülálló kötőjel a szabványos bemenetre (stdin) vagy a szabványos kimenetre (stdout) utal, a kontextusnak megfelelően. Mivel jelen esetben ez a -O (kimenet) argumentuma, az stdout-ra vonatkozik. Ezzel tehát arra utasítjuk a wget parancsot, hogy a letöltött tartalmat irányítsa át a szabványos kimenetre, azaz jelenjen meg a terminálban.
  • https://get.ispconfig.org: Erről az URL címről tölti le a tartalmat.

Ezután a kapott kimenetet (ami egyébként egy shell script) nem jelenítjük meg a képernyőn, hanem egy csővezeték segítségével tovább irányítjuk a rendszer alapértelmezett parancsértelmezőjének (sh) - Ami a Debian 11 esetén a Dash, amennyiben nem állítottuk át - ami pedig a következő paramétereket kapja:

  • -s: Ha a -s opció jelen van, vagy ha az opció feldolgozása után nem marad argumentum, akkor a parancsok a szabványos bemenetről kerülnek kiolvasásra. Ez az opció lehetővé teszi a helyzeti paraméterek beállítását interaktív héj meghívásakor vagy a bemenet csövön keresztül történő olvasásakor (részlet a Bash manual oldaláról, ami majdnem mindenben megegyezik a Dash-al).
  • --: A dupla kötőjel pedig arról gondoskodik, hogy az utána lévő részeket a rendszerhéj ne további shell opciókként dolgozza fel, hanem a megadott parancsfájl (jelen esetben a csővezetékből kapott script tartalom) saját argumentumaként kezelje.
  • --help: Az előző tétel alapján ezt a részt tehát nem a Dash/Bash kapja paraméterként, hanem a letöltött és végrehajtott script fájl paramétere lesz, ami azt eredményezi, hogy megjelenik a program súgója.

Így tehát hogy most már tisztán átlátjuk ezt a parancssort, lássuk mi történik:

Az automatikus telepítő script letöltése és futtatása

Elindul a wget letöltés, majd a kapott kimenetet feldolgozza a shell.

A parancsfájl elején ellenőrzi, hogy van-e telepítve PHP a rendszeren. Mivel a minimális szerverrel dolgozunk, ezért itt még nincs semmi a gépen, így az automatikus telepítő feltelepíti a parancssori PHP-t és még néhány szükséges PHP csomagot.

Annak ellenére, hogy csak egy súgót futtatunk, itt már különböző PHP csomagtelepítésekkel maradandóan megváltoztattuk a rendszerünket, tehát a következő futtatásnál ezt a részt már kihagyja a telepítő. A PHP csomagokra azért van szükség, mert az ISPConfig automatikus telepítő további részei PHP nyelven lettek megírva, így ez a shell program csak egy amolyan ellenőrző és előkészítő rész az utána lévő telepítéshez.

Ezután beállítgatja a PHP 7.4-et, ami a Debian 11 (Bullseye) alapértelmezett PHP változata:

Az automatikus telepítő script letöltése és futtatása

 

 

Itt még konfigurálgat egy kicsit, majd megjelenik a súgó:

**************************************************************************************************************************************
ISPConfig 3 Autoinstaller
**************************************************************************************************************************************

Usage: ispc3-ai.sh [<argument>] [...]

This script automatically installs all needed packages for an ISPConfig 3 setup using the guidelines from the "Perfect Server Setup" howtos on www.howtoforge.com.


Possible arguments are:
    --help          Show this help page
    --debug         Enable verbose logging (logs each command with the exit code)
    --channel       Choose the channel to use for ISPConfig. --channel=<stable|dev>
                    "stable" is the latest ISPConfig release available on www.ispconfig.org
                    "dev" is the latest dev-branch from the ISPConfig git repository:
                    https://git.ispconfig.org/ispconfig/ispconfig3/tree/develop
                    -> The dev channel might contain bugs and less-tested features and should only be used in production by very
                    experienced users.
    --lang          Use language for ISPConfig installation. Specify with --lang=en|de (only en (English) and de (German) supported
                    currently).
    --interactive   Don't install ISPConfig in non-interactive mode. This is needed if you want to use expert mode, e. g. to install a
                    slave server that shall be integrated into an existing multiserver setup.
    --use-nginx     Use nginx webserver instead of apache2
    --use-amavis    Use amavis instead of rspamd for mail filtering
    --use-unbound   Use unbound instead of bind9 for local resolving. Only allowed if --no-dns is set.
    --use-php       Use specific PHP versions, comma separated, instead of installing multiple PHP, e.g. --use-php=7.4,8.0 (5.6, 7.0,
                    7.1, 7.2, 7.3, 7.4, 8.0 and 8.1 available).
                    --use-php=system disables the sury repository and just installs the system's default PHP version.
                    ommiting the argument (use all versions)
    --use-ftp-ports This option sets the passive port range for pure-ftpd. You have to specify the port range separated by hyphen, e.
                    g. --use-ftp-ports=40110-40210.
                    If not provided the passive port range will not be configured.
    --use-certbot   Use Certbot instead of acme.sh for issuing Let's Encrypt certificates. Not adviced unless you are migrating from a
                    old server that uses Certbot.
    --no-web        Do not use ISPConfig on this server to manage webserver setting and don't install nginx/apache or pureftpd. This
                    will also prevent installing an ISPConfig UI and implies --no-roundcube as well as --no-pma
    --no-mail       Do not use ISPConfig on this server to manage mailserver settings. This will install postfix for sending system
                    mails, but not dovecot and not configure any settings for ISPConfig mail. It implies --no-mailman.
    --no-dns        Do not use ISPConfig on this server to manage DNS entries. Bind will be installed for local DNS caching /
                    resolving only.
    --no-local-dns  Do not install local DNS caching / resolving via bind.
    --no-firewall   Do not install ufw and tell ISPConfig to not manage firewall settings on this server.
    --no-roundcube  Do not install roundcube webmail.
    --roundcube     Install Roundcube even when --no-mail is used. Manual configuration of Roundcube config is needed.
    --no-pma        Do not install PHPMyAdmin on this server.
    --no-mailman    Do not install Mailman mailing list manager.
    --no-quota      Disable file system quota
    --no-ntp        Disable NTP setup
    --monit         Install Monit and set it up to monitor installed services. Supported services: Apache2, NGINX, MariaDB,
                    pure-ftpd-mysql, php-fpm, ssh, named, Postfix, Dovecot, rspamd.
    --monit-alert-email
                    Set up alerts for Monit to be send to given e-mail address. e.g. --monit-alert-email=me@example.com
    --ssh-port      -> Configure the SSH server to listen on a non-default port. Port number must be between 1 and 65535 and can not
    be in use by other services. e.g. --ssh-port=64
    --ssh-permit-root
                    -> Configure the SSH server wether or not to allow root login. Available options: yes | without-password | no -
                    e.g. --ssh-permit-root=without-password
    --ssh-password-authentication
                    ->  Configure the SSH server wether or not to allow password authentication. Available options:  yes | no - e.g.
                    -ssh-password-authentication=no
    --ssh-harden    -> Configure the SSH server to have a stronger security config.
    --unattended-upgrades
                    Install UnattendedUpgrades. You can add extra arguments for automatic cleanup and automatic reboots when necessary
                    with --unattended-upgrades=autoclean,reboot (or only one of them).
    --i-know-what-i-am-doing
                    Prevent the autoinstaller to ask for confirmation before continuing to reconfigure the server.

Itt kapunk számos opciót. Most nem részletezném ezeket egyesével, de lényegében itt tudjuk be/ki kapcsolgatni az összetevőket, illetve néhány összetevőnél többféle előre beállított séma alapján kérhetjük a telepítést. Például hogy az Apache helyett Nginx webkiszolgálóval kérjük-e a telepítést vagy hogy az SSH esetén hogy engedjük-e a jelszavas belépést, stb.

 

Tökéletes szerver automatikus telepítése

Az itt következő telepítést az alapértelmezett beállításokkal mutatom be. Ehhez az alábbi parancsot kell futtatnunk:

wget -O - https://get.ispconfig.org | sh -s

Itt tehát lekerül a parancsról a súgó rész, így elindul a telepítés.

A folyamat minden lépésről részletesen tájékoztat, íme a képek:

Tökéletes szerver automatikus telepítése

Először figyelmeztet, hogy ez a script teljesen újrakonfigurálja az egész szervert, valamint hogy egy teljesen friss telepítésen érdemes futtatni, és hogy minden jelenlegi konfiguráció el fog veszni. Majd kéri, hogy írjuk be a "yes" szót, amennyiben biztosak vagyunk a telepítés megkezdésében.

Ezután elindul a telepítő.

Tökéletes szerver automatikus telepítése

Aki már korábban telepítette a tökéletes szervereket kézzel, annak bizonyára ismerősek az itt felkerülő szoftvercsomagok.

Tökéletes szerver automatikus telepítése

Itt éppen feltelepíti az összes elérhető PHP verziót. Korábban a különböző PHP verziók telepítésével is milyen sok munka volt, és a telepített PHP változatokat még anno az ISPConfig panelben is be kellett állítgatni. Régi szép idők...

Tökéletes szerver automatikus telepítése

Itt még masszívan pakolja a PHP csomagokat, majd további - korábbról is ismerős - csomagokat telepít. Régebben az ISPConfig a Let's Encrypt ACME kliensként a CertBot-ot használta, de egy ideje már áttértek az acme.sh használatára, ami modernebb integrációt tesz lehetővé.

Tökéletes szerver automatikus telepítése

És az utolsó képen pedig még feltelepít sok egyéb csomagot, majd újraindítja a szolgáltatásokat.

Végül pedig kiírja a véletlenszerűen generált ISPConfig admin és a MySQL root jelszót, amit egyből tároljunk is el.

A legvégén pedig figyelmeztet, hogy távolítsuk el a /tmp könyvtárból a telepítő naplófájlokat, mivel azokban is benne vannak ezek a jelszavak.

Töröljük is a fájlt:

rm /tmp/ispconfig-ai/var/log/setup-*

 

 

A telepítő kimenete egyben:

WARNING! This script will reconfigure your complete server!
It should be run on a freshly installed server and all current configuration that you have done will most likely be lost!
Type 'yes' if you really want to continue: yes
[INFO] Starting perfect server setup for Debian GNU/Linux 11 (bullseye)
[INFO] Checking hostname.
[INFO] Enabling contrib and non-free repositories.
[INFO] Updating packages
[INFO] Updated packages
[INFO] Installing packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp
[INFO] Installed packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp
[INFO] Activating rspamd repository.
[INFO] Activating sury php repository.
[INFO] Activating GoAccess repository.
[INFO] Updating packages (after enabling 3rd party repos).
[INFO] Updated packages
[INFO] Default shell is currently dash.
[INFO] Setting bash as default shell.
[INFO] Default shell is now bash.
[INFO] Installing packages dbconfig-common, postfix, postfix-mysql, postfix-doc, mariadb-client, mariadb-server, openssl, rkhunter, binutils, sudo, getmail
[INFO] Installed packages dbconfig-common, postfix, postfix-mysql, postfix-doc, mariadb-client, mariadb-server, openssl, rkhunter, binutils, sudo, getmail
[INFO] Installing packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved, dovecot-lmtpd
[INFO] Installed packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved, dovecot-lmtpd
[INFO] Generating MySQL password.
[INFO] Writing MySQL config files.
[INFO] Configuring postfix.
[INFO] Restarting postfix
[INFO] Installing packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, clamav-docs, zip, unzip, bzip2, xz-utils, lzip, rar, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip
[INFO] Installed packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, clamav-docs, zip, unzip, bzip2, xz-utils, lzip, rar, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip
[INFO] Stopping Rspamd.
[INFO] (Re)starting Bind.
[INFO] Disabling spamassassin daemon.
[INFO] Checking local dns resolver.
[WARN] Unexpected resolver response: Server:            192.168.1.1 (/lib/os/class.ISPConfigDebianOS.inc.php:1584)
[INFO] Installing packages apache2, apache2-doc, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger
[INFO] Installed packages apache2, apache2-doc, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger
[INFO] Installing packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php5.6, php5.6-common, php5.6-gd, php5.6-mysql, php5.6-imap, php5.6-cli, php5.6-mcrypt, php5.6-curl, php5.6-intl, php5.6-pspell, php5.6-recode, php5.6-sqlite3, php5.6-tidy, php5.6-xmlrpc, php5.6-xsl, php5.6-zip, php5.6-mbstring, php5.6-soap, php5.6-opcache, php5.6-cgi, php5.6-fpm, php7.0, php7.0-common, php7.0-gd, php7.0-mysql, php7.0-imap, php7.0-cli, php7.0-mcrypt, php7.0-curl, php7.0-intl, php7.0-pspell, php7.0-recode, php7.0-sqlite3, php7.0-tidy, php7.0-xmlrpc, php7.0-xsl, php7.0-zip, php7.0-mbstring, php7.0-soap, php7.0-opcache, php7.0-cgi, php7.0-fpm, php7.1, php7.1-common, php7.1-gd, php7.1-mysql, php7.1-imap, php7.1-cli, php7.1-mcrypt, php7.1-curl, php7.1-intl, php7.1-pspell, php7.1-recode, php7.1-sqlite3, php7.1-tidy, php7.1-xmlrpc, php7.1-xsl, php7.1-zip, php7.1-mbstring, php7.1-soap, php7.1-opcache, php7.1-cgi, php7.1-fpm, php7.2, php7.2-common, php7.2-gd, php7.2-mysql, php7.2-imap, php7.2-cli, php7.2-curl, php7.2-intl, php7.2-pspell, php7.2-recode, php7.2-sqlite3, php7.2-tidy, php7.2-xmlrpc, php7.2-xsl, php7.2-zip, php7.2-mbstring, php7.2-soap, php7.2-opcache, php7.2-cgi, php7.2-fpm, php7.3, php7.3-common, php7.3-gd, php7.3-mysql, php7.3-imap, php7.3-cli, php7.3-curl, php7.3-intl, php7.3-pspell, php7.3-recode, php7.3-sqlite3, php7.3-tidy, php7.3-xmlrpc, php7.3-xsl, php7.3-zip, php7.3-mbstring, php7.3-soap, php7.3-opcache, php7.3-cgi, php7.3-fpm, php7.4, php7.4-common, php7.4-gd, php7.4-mysql, php7.4-imap, php7.4-cli, php7.4-curl, php7.4-intl, php7.4-pspell, php7.4-sqlite3, php7.4-tidy, php7.4-xmlrpc, php7.4-xsl, php7.4-zip, php7.4-mbstring, php7.4-soap, php7.4-opcache, php7.4-cgi, php7.4-fpm, php8.0, php8.0-common, php8.0-gd, php8.0-mysql, php8.0-imap, php8.0-cli, php8.0-curl, php8.0-intl, php8.0-pspell, php8.0-sqlite3, php8.0-tidy, php8.0-xsl, php8.0-zip, php8.0-mbstring, php8.0-soap, php8.0-opcache, php8.0-cgi, php8.0-fpm, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm
[INFO] Installed packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php5.6, php5.6-common, php5.6-gd, php5.6-mysql, php5.6-imap, php5.6-cli, php5.6-mcrypt, php5.6-curl, php5.6-intl, php5.6-pspell, php5.6-recode, php5.6-sqlite3, php5.6-tidy, php5.6-xmlrpc, php5.6-xsl, php5.6-zip, php5.6-mbstring, php5.6-soap, php5.6-opcache, php5.6-cgi, php5.6-fpm, php7.0, php7.0-common, php7.0-gd, php7.0-mysql, php7.0-imap, php7.0-cli, php7.0-mcrypt, php7.0-curl, php7.0-intl, php7.0-pspell, php7.0-recode, php7.0-sqlite3, php7.0-tidy, php7.0-xmlrpc, php7.0-xsl, php7.0-zip, php7.0-mbstring, php7.0-soap, php7.0-opcache, php7.0-cgi, php7.0-fpm, php7.1, php7.1-common, php7.1-gd, php7.1-mysql, php7.1-imap, php7.1-cli, php7.1-mcrypt, php7.1-curl, php7.1-intl, php7.1-pspell, php7.1-recode, php7.1-sqlite3, php7.1-tidy, php7.1-xmlrpc, php7.1-xsl, php7.1-zip, php7.1-mbstring, php7.1-soap, php7.1-opcache, php7.1-cgi, php7.1-fpm, php7.2, php7.2-common, php7.2-gd, php7.2-mysql, php7.2-imap, php7.2-cli, php7.2-curl, php7.2-intl, php7.2-pspell, php7.2-recode, php7.2-sqlite3, php7.2-tidy, php7.2-xmlrpc, php7.2-xsl, php7.2-zip, php7.2-mbstring, php7.2-soap, php7.2-opcache, php7.2-cgi, php7.2-fpm, php7.3, php7.3-common, php7.3-gd, php7.3-mysql, php7.3-imap, php7.3-cli, php7.3-curl, php7.3-intl, php7.3-pspell, php7.3-recode, php7.3-sqlite3, php7.3-tidy, php7.3-xmlrpc, php7.3-xsl, php7.3-zip, php7.3-mbstring, php7.3-soap, php7.3-opcache, php7.3-cgi, php7.3-fpm, php7.4, php7.4-common, php7.4-gd, php7.4-mysql, php7.4-imap, php7.4-cli, php7.4-curl, php7.4-intl, php7.4-pspell, php7.4-sqlite3, php7.4-tidy, php7.4-xmlrpc, php7.4-xsl, php7.4-zip, php7.4-mbstring, php7.4-soap, php7.4-opcache, php7.4-cgi, php7.4-fpm, php8.0, php8.0-common, php8.0-gd, php8.0-mysql, php8.0-imap, php8.0-cli, php8.0-curl, php8.0-intl, php8.0-pspell, php8.0-sqlite3, php8.0-tidy, php8.0-xsl, php8.0-zip, php8.0-mbstring, php8.0-soap, php8.0-opcache, php8.0-cgi, php8.0-fpm, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm
[INFO] Disabling conflicting apache modules.
[INFO] Enabling apache modules.
[INFO] Enabling default PHP-FPM config.
[INFO] Setting default system PHP version.
[INFO] Installing phpMyAdmin
[INFO] HTTPoxy config.
[INFO] Installing acme.sh (Let's Encrypt).
[INFO] acme.sh (Let's Encrypt) installed.
[INFO] ISPConfig does not yet support mailman3 and mailman2 is no longer available in Debian 11.
[INFO] Installing packages quota, quotatool, haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential, autoconf, automake, libtool, flex, bison, debhelper, binutils
[INFO] Installed packages quota, quotatool, haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential, autoconf, automake, libtool, flex, bison, debhelper, binutils
[INFO] Adding quota to fstab.
[INFO] Installing packages pure-ftpd-common, pure-ftpd-mysql, awstats, goaccess, awffull
[INFO] Installed packages pure-ftpd-common, pure-ftpd-mysql, awstats, goaccess, awffull
[INFO] Enabling TLS for pureftpd
[INFO] Disabling awstats cron.
[INFO] Installing packages fail2ban, ufw
[INFO] Installed packages fail2ban, ufw
[INFO] Configuring SSHd
[INFO] Installing roundcube.
[INFO] Installing packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins
[INFO] Installed packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins
[INFO] Installing ISPConfig3.
[INFO] Adding PHP version(s) to ISPConfig.
[INFO] Checking all services are running.
[INFO] mysql: OK
[INFO] clamav-daemon: OK
[INFO] postfix: OK
[INFO] bind9: OK
[INFO] pureftpd: OK
[INFO] apache2: OK
[INFO] rspamd: OK
[INFO] redis-server: OK
[INFO] dovecot: OK
[INFO] Installation ready.
[INFO] Your ISPConfig admin password is: kgurRd51KMRTepk
[INFO] Your MySQL root password is: pbBZhgLVEdxvupxF3KkF
[INFO] Warning: Please delete the log files in /tmp/ispconfig-ai/var/log/setup-* once you don't need them anymore because they contain your passwords!

Egy darab warning volt, ez pedig a névszerver miatt, mivel virtuális gépen futtattam, így a resolver címe a routerem átjárójának a címe, amivel nem tudott mit kezdeni. De éles környezetben természetesen ezzel sincs gond.

 

Szerver áttekintése, ellenőrzése

Első körben nézzük át a webes részeket. Kezdjük magával az ISPConfig kezelőpanel áttekintésével.

ISPConfig áttekintése, beállítása

Nyissunk egy böngészőt, majd töltsük be a szerverünk IP-címét, és az ISPConfig portszámát, ami alapértelmezetten a 8080:

https://192.168.1.140:8080

ISPConfig belépés

Itt adjuk meg az admin felhasználót és hozzá a telepítés végén kapott jelszót.

ISPConfig - Kezdőoldal

Állítsunk be néhány alapvető dolgot.

Nyelv beállítása

Ha az admin felhasználó nyelvét át szeretnénk állítani, akkor Ehhez lépjünk be a "System" főmenü "CP Users" menüjébe, majd itt az űrlap alsó részén állítsuk át a nyelvünket:

ISPConfig - Nyelv beállítása

Ezután lépjünk ki, majd ismét vissza, és már megjelennek a magyar fordítások. Persze nincs teljesen lefordítva az egész, de egy része igen.

 

 

Tűzfal beállítása

A következő lépésben állítsuk be a tűzfalat. Ehhez lépjünk be az immár "Rendszer" főmenübe, majd ott a "Tűzfal" menübe. Majd itt kattintsunk az "Új tűzfal bejegyzés" gombra:

ISPConfig - Tűzfal beállítása

A rendszer automatikusan kitölti a telepített szolgáltatások alapján a nyitott TCP és UDP portok beállításait. Ezek természetesen függenek a telepítéskor kiválasztott portok beállításaitól. Itt ellenőrizzük, hogy a 8080-as TCP port is szerepeljen a listán, különben nem tudunk újra belépni a panelba.

Ha telepítjük a Monit szolgáltatáskezelő szoftvert a --monit telepítő opcióval, akkor itt szúrjuk be a 2812-es portszámot is, mert azon lehet elérni majd a Monit felületét.

Ha megfelelő a beállítás, akkor mentsük le a tűzfal szabályt. Ekkor az ISPConfig panelben megszokott módon fent megjelenik a piros kör, ami jelzi nekünk hogy folyamatban van egy beállítás:

ISPConfig - Tűzfal beállítás mentése

Ez a szerver konfiguráció az UFW tűzfalat használja, amivel kényelmesen és rugalmasan lehet állítgatni a rendszer hálózati portjait. Érdekességképpen, ha ránézünk parancssorból az UFW tűzfal beállításaira, akkor láthatjuk, hogy először még inaktív állapotban volt, majd miután beállítottuk az első tűzfal szabályunkat, onnantól az állapota aktívvá vált, és felsorolja a beállításunknak megfelelő nyitott portokat:

UFW tűzfal parancssori ellenőrzése

Természetesen egy éles szerveren ajánlott egyedi port beállításokat használni, hogy a külvilágból érkező esetleges támadások során jobban védve legyen szerverünk például egy port szkennelés esetén. Így tehát célszerű minden olyan szolgáltatás portszámát átállítani egyedi értékre, ami nem publikus feladatokat lát el, hanem adminisztrációs vagy karbantartási célokat szolgál.

Felhasználónevek prefixelésének kikapcsolása

Érdemes még megemlíteni az ISPConfig panel prefixelési funkcióját. Amennyiben két ISPConfig-os szerver között tervezünk weboldalakat szinkronizálni, például az éles szerverünk és az otthoni fejlesztői/biztonsági másolatokat tároló szerver között, akkor sok későbbi fejfájást kerülhetünk el, ha kikapcsoljuk a prefixeléseket. Természetesen ennek csak akkor van értelme, ha magunk használjuk a szervert, és szeretnénk szinkronban tartani a rajta lévő webtárhelyeket és adatbázisaikat.

Ebben az esetben fussuk át az alábbi leírást, amiben pont erről tájékozódhatunk részletesen:

 

phpMyAdmin ellenőrzése

Ebben a részben a phpMyAdmin webes adatbázis kezelő rendszert ellenőrizzük. Ehhez adjuk meg a szerverünk IP-címe után a /phpmyadmin részt:

http://192.168.1.140/phpmyadmin/

Itt figyeljük meg, hogy nem HTTPS alatt jön be a phpMyAdmin, mivel itt nincs egyedi port beállítás, amihez HTTPS kapcsolat lenne beállítva, mint például az ISPConfig esetén. Viszont amikor majd létrehozunk weboldalakat, és azokhoz már lesz működő (Let's Encrypt) SSL, akkor a weboldalak tartománynevei alatt már HTTPS segítségével lehet elérni az adatbázis kezelőt a /phpmyadmin alkönyvtárak alatt.

Belépéshez adjuk meg a root felhasználót, és a telepítés végén kapott MySQL jelszót:

phpMyAdmin - Belépés

Belépés után a jól ismert kezdőoldal fogad bennünket:

phpMyAdmin - Kezdőoldal

Roundcube webmail ellenőrzése

Ellenőrizzük a Roundcube webmailt:

http://192.168.1.140/webmail/

Roundcube - Belépés

Itt alapból nincs hozzáférés, ehhez létre kell hozni egy email címet, amihez pedig kell egy email domain is. A bemutató kedvéért csináltam egy levelező fiókot, így most betekinthetünk a Roundcube belső felületébe is:

Roundcube - Beérkezett üzenetek

 

Ennyi lenne tehát a gyors áttekintés, természetesen még rengeteg dolog beállításra került, amik a háttérben működnek.

 

Hogyan tovább?

Miután szerverünk elkészült, és mindent megfelelőnek találtunk, akkor nincs más hátra, mint hogy elkezdjük létrehozni a webtárhelyeinket. Erről az alábbi linken tájékozódhatunk részletesen:

 

 

Konklúzió

Az ISPConfig-os szerverkörnyezet automatizált telepítőjének segítségével rengeteg időt spórolhatunk meg - amiért hálás köszönet a script készítőinek -, valamint nullára csökkentjük a hosszú telepítések és konfigurálások során figyelmetlenségből eredő hibalehetőségek számát. Természetesen a szerver csiszolása, tökéletesítése itt még nem ért véget; a korábbi tökéletes szerverek frissített változatait elkészítő leírások ennél a szerver konfigurációnál is kiválóan alkalmazhatjuk.

Remélem ismét sikerült kedvet csinálnom egy kis szerver telepítéshez, használjátok egészséggel!