A tökéletes szerver – Debian 10 (Buster) + Apache, BIND, Dovecot, PureFTPD és ISPConfig 3.1

Ebből a cikkből megtudhatod, hogy Debian 10 szerver alapokra építve hogyan tudsz Apache, BIND, Dovecot szolgáltatásokat telepíteni ISPConfig 3.1 támogatással, továbbá Postfix email szerver, MySQL, MyDNS névszerver, PureFTPd, SmapAssassin, ClamAV és egyéb szolgáltatásokat beállítani és használni.

Alapkörnyezet ismertetése

Kiindulásnak egy Debian 10 alapkörnyezet került telepítésre VirtualBox-on. Az IP cím 172.16.5.134, melyet egy DHCP szerver oszt ki dinamikusan. Az átjáró címe 172.16.5.1

Szövegszerkesztő telepítése (Opcionális)

Én általában a nano szövegszerkesztőt használom, de ez ízlés kérdése, éppúgy megfelel a vim is

apt-get install nano vim-nox

Hosztnév beállítása

A szervered host nevének egy subdomain-t kell megadnod, mint például „mxserver.example.com”. Soha ne használj konkrét domain nevet, mint ez esetben az „example.com”, mert ez később komoly problémákhoz vezethet, például levelező szerver esetén. Első körben ellenőrízd a /etc/hosts fájlt, állítsd az IP címedhez a hostneved FQDN -jét. Továbbá az /etc/hostname fájlban állítsd be a gép nevét.

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
172.16.5.134    mxserver.example.com     mxserver

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

És a hosztnév:

nano /etc/hostname
mxserver

A Debian frissítése

Először is az /etc/apt/sources.list állományba engedélyezzük a contrib, non-free csomagok használatát.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Tároló információk frissítése

apt update

A rendszer frissítése

apt upgrade -y

Alapértelmezett Shell módosítása

A /bin/sh egy symlink a /bin/dash -ra, de nekünk a /bin/bash kell, nem a /bin/dash

dpkg-reconfigure dash

Meg fogja a rendszer kérdezni, hogy használja-e alapértelmezésként a /bin/sh <–NO

Amennyiben ezt nem tesszük meg, az ISPConfig3.1 elhasal telepítéskor.

Rendszeróra Szinkronizációja

Jó ötlet a rendszeridő szinkronizálása NTP (Network Time Protocol) használatával:

apt-get -y install ntp

Így már a rendszeridő mindig naprakész lesz.

Postfix, Dovecot, MariaDB, rkhunter és Binutils

Telepítsük a következő szolgáltatásokat Postfix, Dovecot, MariaDB as MySQL alternatíva, rkhunter és Binutils:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

A következő két kérdésre kell válaszolnunk:
General type of mail configuration: <– Internet Site
System mail name: <– mxserver.example.com

A MariaDB finomhangolása:

mysql_secure_installation

Change the root password? [Y/n] <– y
New password: <– root jelszó
Re-enter new password: <– root jelszó ismét
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

Engedélyezzük a TLS/SSL és Submission használatát a postfix levelező szerveren:

nano /etc/postfix/master.cf

Vegyük ki a kommentet a submission és smtps elől  és szúrjuk be a hiányzó sorokat, ahová szükséges. Fontos! Legyünk figyelmesek, minden szükséges módosítást végezzünk el, az submission és smtps sorokat is nézzük:

[...]
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
[...]

Postfix újraindítása a beállítások érvénybeléptetéséhez:

systemctl restart postfix

Amennyiben minden interfészen szeretnék elérni az adatbázis kezelő szervert, kommenteljük ki a bind-adress sort:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# 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
[...]

A következő beállítás arra szolgál, hogy a phpmyadmin root jogosultsággal férjen hozzá a MariaDB adatbázis kezelőhöz

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Nyissuk meg a következő állományt /etc/mysql/debian.cnf és adjuk meg a root jelszót minkét helyen:

nano /etc/mysql/debian.cnf

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = ide a jelszó
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = ide a jelszó
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

A túl sok nyitott fájl hiba elkerülése érdekébe módosítsuk az egy időben nyitott állapotban lévő állományok korlátját

nano /etc/security/limits.conf

Adjuk a következő sorokat az állományhoz:

mysql soft nofile 65535
mysql hard nofile 65535

Hozzuk létre az alábbi könyvtárat:

mkdir -p /etc/systemd/system/mysql.service.d/

Nyissuk meg az új állományt és adjuk hozzá a következő tartalmat:

nano /etc/systemd/system/mysql.service.d/limits.conf
[Service]
LimitNOFILE=infinity

Mentés után indítsuk újra a szolgáltatást

systemctl daemon-reload
systemctl restart mariadb

Ellenőrízük a szolgáltatás futását:

netstat -tap | grep mysql
root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

Amavisd-new, SpamAssassin és ClamAV telepítése

Telepítsük fel a csomagokat:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

Az ISPConfig 3.1 telepítése az amavisd -t használja, amely belsőleg betölti a SpamAssassin szűrő könyvtárat, így leállíthatjuk a SpamAssassin programot némi RAM felszabadításához:

systemctl stop spamassassin
systemctl disable spamassassin

Apache Web Server és PHP

Apache2, PHP, FCGI, suExec, Pear és mcrypt telepítése:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu

Engedélyezzük az Apache számára a szükséges modulokat suexec, rewrite, ssl, actions, and include (plusz dav, dav_fs, and auth_digest, ha használni akarod a WebDAV -ot):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Annak biztosítása érdekében, hogy a kiszolgálót ne támadják meg a HTTPOXY biztonsági rés miatt, az apache-ban globálisan letiltjuk a HTTP_PROXY fejlécet.

Megjegyzés: A sebezhetőség neve httpoxy („r” nélkül), és ezért a fájl, amelyhez hozzá adjuk a konfigurációt annak megakadályozására, httpoxy.conf, és nem httproxy.conf, tehát a fájlnévben hiányzik „r” jel.

nano /etc/apache2/conf-available/httpoxy.conf
<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Engedélyezzük a konfigurációs állományt

a2enconf httpoxy
systemctl restart apache2

Let’s Encrypt

Az ISPConfig 3.1 támogatja az ingyenes SSL tanúsító hatóságot. A Funkció lehetővé teszi ingyenes SSL-tanúsítványok létrehozását a webhelyek részére, az ISPConfigon belül.

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Nincs szükség további lépésekre. A webhely SSL-tanúsítványait az ISPConfig hozza létre, amikor hozzáadja a webhely konfigurációban.

Frissítés 2020. 12. 17. Az ISPConfig az acme.sh használja Let’s Encrypt kliensként. Az ISPConfig automatikusan letölti és telepíti az acme.sh -t, így most már külön nem kell telepíteni a Let’s Encrypt-et.

MailMan telepítése

Az ISPConfig lehetővé teszi a Mailman levelezőlisták kezelését (létrehozását / módosítását / törlését). Ha ki szeretné használni ezt a funkciót, telepítse a Mailman-t az alábbiak szerint:

apt-get install mailman

Válasz egy nyelvi támogatást:

Languages to support: <-- hu (Hungary)
 Missing site list <-- Ok

A Mailman elindítása előtt el kell készíteni az első levelezőlistát:

newlist mailman
Add meg a listát működtető e-mail címét: mailmanadmin@example.com
mailman induló jelszava: Ide a jelszót

## mailman levelezőlista
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

A levelezőlista létrehozásának utolsó lépéséhez az /etc/aliases állományba a következő sorokat kell elhelyezni és utána futtatni a 'newaliases' programot:

mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Futtasd:

newaliases

Postfix újraindítása a szolgáltatás érvényesítéséhez:

systemctl restart postfix
systemctl start mailman

Kiegészítés:
Amennyiben új listákat szeretnénk a webes felületen létrehozni, parancssorban meg kell adni a lista létrehozáshoz szükséges jelszót:

mmsitepass 

Amennyiben nem adunk meg jelszót, csak a mmsitepass parancsot futtatjuk, akkor a program be fog kérni egyet.

A mailman listák létrehozásának alapértelmezett beállításait a /etc/mailman/mm_cfg.py fájlban találjuk. Alapértelemzés szerint a lista a gép fqdn nevén jön létre, mely a http(s)://%s/cgi-bin/mailman url-en érhető el. A „%s” az alapértelmezett url-t jelenti. Amennyiben más virtuális url címet is szeretnénk megadni, azt az add_virtulhost(‘example.com’,’domain.name’) hozzáadásával tudjuk megtenni:

nano /etc/mailman/mm_cfg.py
[...]
add_virtulhost('exaple.com','domain.name')
[...]

Ez esetben a létrehozott lista a http(s)://example.com/cgi-bin/mailman címen lesz elérhető, a közös lista pedig a lists@domain.name email címen fog működni, ahol a lists az általunk megadott lista nevet jelenti. Mentsük az mm_cfg.py taralmát, majd indítsuk újra a szolgáltatást:

systemctl restart mailman

Hozzuk létre az új listát:

newlist newlist --urlhost=example.com lists

A futó program a lista tulajdonosának email címét fogja kérni és a lista jelszavát. És kész is vagyunk.
Lista törlése:

rmlist -a lists

Végül engedélyeznünk kell a Mailman Apache konfigurációját:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Ez állítja be, hogy a /cgi-bin/mailman/ linken elérhető legyen a mailman admin és info felület. Ez esetben a teljes url a: http://mxserver.example.com/cgi-bin/mailman/admin/ és a A levelezőlistáké a: http://mxserver.example.com/cgi-bin/mailman/listinfo/ webhelyen érhetőek el. A http://mxserver.example.com/pipermail alatt megtalálhatja a levelezőlisták archívumát.

systemctl restart apache2
systemctl restart mailman

PureFTPd and Quota

A PureFTPd és a kvóta a következő paranccsal telepíthető:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Hozza létre a dhparam fájlt a pure-ftpd fájlhoz:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Nyissuk meg a /etc/default/pure-ftpd-common állományt

nano /etc/default/pure-ftpd-common

Győződjünk meg róla hogy standalone módban indul a szolgáltatás és a virtualchroot értéke true

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Ha TLS tanúsítvánnyal kívánjuk használni a PureFTP szervert:

echo 1 > /etc/pure-ftpd/conf/TLS

Most készítenünk kell egy tanúsítványt a /etc/ssl/private/ könyvtárba, amit először hozzunk létre:

mkdir -p /etc/ssl/private/

Most generáljuk le a tanúsítványt:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Adjuk meg a kért információkat:

Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "HU").
State or Province Name (full name) [Some-State]:<-- Megye
Locality Name (eg, city) []: <-- Város
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Céged neve
Organizational Unit Name (eg, section) []: <-- Szervezeti egység neve
Common Name (eg, YOUR name) []: <-- domain fqdn neve
Email Address []: <-- Email címed

Változtassuk meg a fájl jogosultságait

chmod 600 /etc/ssl/private/pure-ftpd.pem

Majd indítsjuk újra a PureFTP szolgáltatást:

systemctl restart pure-ftpd-mysql

Nyissuk meg az /etc/fstab állományt és adjuk a gyökérpartícióhoz a következő utasításokat: ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#              
# / was on /dev/sda1 during installation
UUID=88f74c9d-b7ac-4a0c-a487-db31bc4b3771 /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0       0       1
# /home was on /dev/sda6 during installation
UUID=577d3321-008b-4754-aac7-99a9d1199702 /home           ext4    defaults        0       2
# swap was on /dev/sda5 during installation
UUID=a6656e93-e5b3-4715-9f43-c0c69a9de6c1 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

A quota aktiválásához futtasd a következő parancsot:

mount -o remount /
quotacheck -avugm
quotaon -avug

BIND DNS Server

Telepítéshez adjuk ki a következő parancsot:

apt-get install bind9 dnsutils

Ha a szerver virtuális gép, akkor erősen ajánlott telepíteni a DNSSEC -et. A nem-virtuális szerverekre is telepítheted a hasged-et, ez nem árt.

apt-get install haveged

Webalizer és AWStats

Webalizer és AWStats telepítése az alábbi paranccsal:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Nyissuk meg az /etc/cron.d/awstats állományt

nano /etc/cron.d/awstats
#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Jailkit

A Jailkit segítségével tudunk létrehozni egy komplett chroot környezetet az elzárt felhasználók számára, így a felhasználók nem tudnak hozzáférni egymás könyvtár struktúrájához. A Jailkit-et nem kötelező feltelepíteni, csak akkor szükséges, ha később szeretnénk chroot-olt SSH felhasználókat létrehozni. Később viszont már nem fog működni, ha az ISPConfig után telepítjük! Ezért most kell eldönteni, hogy fogjuk-e használni a későbbiekben!
Én javaslom a telepítését, mert sose lehet tudni, bármikor jól jöhet. Például ha tárhelyet adunk a szerverünkön egy idegen ügyfélnek, akkor nem fog fájni a biztonsági kérdések miatt a fejünk.

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binary

Mostmár telepíthető a .deb csomag

cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

fail2ban és UFW Firewall

Ez ugyan opcionális, de erősen ajánlott fejezet.

apt-get install fail2ban

Hozzuk létre a megfelelő konfigurációt, mely biztosítja, hogy a fail2ban monitorozza a Dovecot és PureFTP szolgáltatások log állományait

nano /etc/fail2ban/jail.local
[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3

Érvényesítsük az új beállításokat

systemctl restart fail2ban

Az UFW tűzfal telepítése

apt-get install ufw

PHPMyAdmin Adatbázis adminisztrációs szolgáltatás telepítése

A Debian 10 óta a PHPMyAdmin már nem elérhető .deb csomagként. Ezért a forrásból telepítjük.
Mappák létrehozása a PHPMyadmin számára:

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Lépjünk a /tmp könyvtárba és töltsük le az archiv állományt

cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.tar.gz

Tömörítsük ki az állományt, majd másoljuk a megfelelő helyre a könyvtár tartalmát:

tar xfv phpMyAdmin-4.9.2-all-languages.tar.gz
mv phpMyAdmin-4.9.2-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.2-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.2-all-languages/

Készítsünk egy új konfigurációs állományt

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Nyissuk meg

nano /usr/share/phpmyadmin/config.inc.php

Állítsunk be egy 32 karakter hosszú (blowfish) jelszót. Ezt a következő paranccsal le is tudjuk generálni, biztonsági szempontból semmikép sem ajánlott a példámban használtat beállítani. Az apg csomag telepítése után adjuk ki az alábbi parancsot:

/usr/bin/apg -m 32 -x 32

Válasszuk egy tetszőlegeset a legenerált titkos kulcsokból és illesszük be a megfelelő helyre a konfigurációnkban:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Add hozzá az alábbi sort

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Nincs más hátra, mint az Apache konfigurációt elkészíteni:

nano /etc/apache2/conf-available/phpmyadmin.conf
# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
 Options FollowSymLinks
 DirectoryIndex index.php

 <IfModule mod_php7.c>
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
 <IfModule mod_authn_file.c>
 AuthType Basic
 AuthName "phpMyAdmin Setup"
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 </IfModule>
 Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
 Order Deny,Allow
 Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
 Order Deny,Allow
 Deny from All
</Directory>

Beállítások aktiválása

a2enconf phpmyadmin
systemctl restart apache2

A következő lépésben konfiguráljuk a phpMyadmin konfigurációs adatbázist.
Jelentkezz be a MariaDB-be root felhasználóként:

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Hozzunk létre egy új felhasználót a táblához

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'id a jelszü';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Vágezetül hozzuk létre a phpmyadmin tábláit

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Állítsuk be a phpmyadmin config állományába az adatbázis eléréséhez szükséges adatokat és kommentezzük ki a megadott sorokat:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'ide a jelszót';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

RoundCube Webmail (opcionális)

Ebben a fejezetben telepítjük a RoundCube webmail klienst. Először manuálisan kell létrehoznunk az adatbázist a Roundcube-hoz, mivel a RoundCube Debian telepítőjében jelenleg van egy probléma, amely miatt az adatbázis automatikus létrehozása sikertelen. Futtassa ezt a parancsot az adatbázis létrehozásához:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Csomagok telepítése

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

A kérdésekre adott válaszok

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter

A roundcubemail konfigurációja

nano /etc/roundcube/config.inc.php

Alapértelmezett host és smtp szerver beállítása

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';

Apache konfiguráció beállítása

nano /etc/apache2/conf-enabled/roundcube.conf

Adjunk hozzá két aliast

Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

Szolgáltatás újraindítása

systemctl reload apache2

ISPConfig 3 telepítése

A legutóbbi stabil verzió letöltése:

cd /tmp
wget https://ispconfig.org/downloads/ISPConfig-3.1.15p2.tar.gz
tar xfz ISPConfig-3.1.15p2.tar.gz
cd ispconfig3_install/install/

Indítsuk el a telepítést

php -q install.php
--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: Debian 10.0 (Buster) or compatible

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with .
    Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: enter
Installation mode (standard,expert) [standard]: enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [mxserver.example.com]: enter

MySQL server hostname [localhost]: enter
MySQL server port [3306]: enter
MySQL root username [root]: enter
MySQL root password []: ide a jelszó
MySQL database to create [dbispconfig]: enter
MySQL charset [utf8]: enter

Roundcube + ISPConfig3 Pluginok

A Roundcubemail Webes Email Kliens szolgáltatáshoz telepíthetőek olyan pluginok, myelyekkel különböző ISPConfig3 által biztosított szolgáltatásokat lehet menedzselni.

ISPConfig3 távoli felhasználó engedélyezése:

A távoli felhasználó engedélyezéséhez navigáljunk a Rendszer >> Távoli felhasználók menüre. Adjunk megy egy nevet, jelszót az ürlapon, pipáljuk be a távoli hozzáférés engedélyezése választót, illetve rendeljük hozzá a felhasználóhoz a következő szolgáltatásokat:

  • Mail user funkciók
  • Mail alias funkciók
  • Mail átirányitás funkciók
  • Mail spamszűrő felhasználói funkciók
  • Mail spamfilter policy functions
  • Mail fetchmail funkciók
  • Mail spamfilter whitelist functions
  • Mail spamfilter blacklist functions
  • Mail felhasználói szűrő funkciók
  • Ügyfél funkciók
  • Server functions

Pluginek beszerzése

Lépjünk a „/tmp” könyvtárba, és hozzuk létre a plugins könyvtárat

cd /tmp && mkdir plugins && cd plugins

1. Git tárolóból történő letöltés:

git clone https://github.com/w2c/ispconfig3_roundcube.git .
git pull origin master

2. SVN verziókezelő:

svn co https://github.com/w2c/ispconfig3_roundcube/trunk/ .
svn up .

3. Letölthetjük az aktuális verziót:

wget https://github.com/w2c/ispconfig3_roundcube/archive/master.zip
unzip master.zip

Beállítás:

Lépjünk a ./ispconfig3_account/config/ könyvtárba és a config.inc.php.dist fájlt másoljuk át config.inc.php néven:

cp config.inc.php.dist config.inc.php

Nyissuk meg az állományt:

nano config.inc.php

Módosítjuk az egyes attribútumokat:

$config['identity_limit'] = false;
$config['remote_soap_user'] = '{REMOTE USERNAME}';
$config['remote_soap_pass'] = '{REMOTE PASSWORD}';
$config['soap_url'] = 'https://{YOUR SERVER}:8080/remote/';
$config['soap_validate_cert'] = true;

Ezután a pluginokat másoljuk a /var/lib/roundcube/plugins/ könyvtárba és állítsuk be a használatukat a /var/lib/roundcube/config/config.inc.php fájlban.

cp /tmp/plugins/* /var/lib/roundcube/plugins/
nano /var/lib/roundcube/config/config.inc.php

Ezt a részt keressük:

$config['plugins'] = array();

Ilyen módon deklaráljuk:

, "jqueryui", "ispconfig3_account", "ispconfig3_autoreply", "ispconfig3_autoselect", "ispconfig3_pass", "ispconfig3_spam", "ispconfig3_fetchmail", "ispconfig3_filter", "ispconfig3_forward", "ispconfig3_wblist"

Carddav

Tapasztalataim szerint a carddav plugin egyes verzió hibás működéshez vezethetnek. Az RCM 1.4.3-as verziójával legalábbis biztosan. Ez a verzió nálam a carddav 3.0.3-as verziójával működött csak. Ezt a verzót a következő linkről lehet letölteni:

wget https://github.com/blind-coder/rcmcarddav/releases/download/v3.0.3/carddav-3.0.3.tar.bz2

Composer

A kompózer használatáról már írtam cikket. Ez esetben ha nem szeretnénk telepíteni csak használni a scropt-et az RCM frissítésére, vagy a plugin-ok bővítésére, törlésére, a következő módon tehetjük meg. Lépjünk az RCM gyökér könyvtárába:

cd /usr/share/roundcube

Majd töltsük le a scriptet:

curl -s https://getcomposer.org/installer | php

A gyökérben lévő composer.json-dist fájlt nevezzük át composer.json -re:

mv composer.json-dist composer.json

Az egyes kiválasztott plugin-okat a composer.json fájl függőség „require” szekciójához adjuk hozzá, vagy a következő parancsot használva:

compser require "roundcube/carddav 3.0.3"

Majd adjuk ki a következő utasítást:

composer update

Ekkor a plugin még csak a gyökér könyvtár plugins alkönyvtárában található meg, ahhoz hogy használni tudjuk be kell linkelni a változó adatokat tartalmazó helyre:

ln -s /usr/share/roundcube/plugins/carddav /var/lib/roundcube/plugins/carddav

Ezután már a konfigurációba is beilleszthető!

Calendar

Ez a plugin sajnos caldav szolgáltatáshoz nem tud csatlakozni, de helyileg integrálható az RCM-be, illetve iCal szolgáltatást tud nyújtani. Telepítéshez az alábbi két csomag kell:

apt install git php-sabre-*

Majd töltsük le a plugint:

cd /tmp && git clone https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git

Lépjünk az RCM plugin könyvtárába:

cd /usr/share/roundcubemail/plugins

Majd a a szükséges könyvtárakat másoljuk ide:

cp -r /tmp/roundcubemail-plugins-kolab/plugins/calendar .
cp -r /tmp/roundcubemail-plugins-kolab/plugins/libcalendaring .
cp -r /tmp/roundcubemail-plugins-kolab/plugins/libkolab .

Léjünk a „calendar” könyvtárba és hozzuk létre a konfig php állományt:

cp config.inc.php.dist config.inc.php

Táblák létrehozása az adatbázisban:

mysql -u root -p  roundcubedb < drivers/database/SQL/mysq.initial.sql

Lépjünk az „libkalendaring” könyvtárba és nyissuk meg szerkesztésre a megfelelő állományt:

cd ../libcalendaring && nano libvcalendar.php

Az állomány utolsó sora után illesszük be az alábbi tartalmat:

spl_autoload_register(function ($class) {
    if (strpos($class, 'Sabre\\')===0) {
        $file = '/usr/share/php/'.str_replace('\\', '/', $class).'.php';
        @include $file;
    }
});

Hozzuk létre a megfelelő linkeket:

 ln -s /usr/share/roundcube/plugins/libkolab /var/lib/roundcube/plugins/libkolab
 ln -s /usr/share/roundcube/plugins/libcalendaring /var/lib/roundcube/plugins/libcalendaring
 ln -s /usr/share/roundcube/plugins/calendar /var/lib/roundcube/plugins/calendar

Már csak a konfig fájl plugin szekciójához kell illeszteni a „calendar” plugint és készen is vagyunk!

Ajánlott Csomagok telepítése

Az ISPConfig3 alatt lehetőség van az egyes létrehozott weboldalakról ütemezett mentéseket készítésére. A szolgáltatás használatához azonban telepítenünk kell a megfelelő csomagokat, melyek alapértelmezés szerint nem képezik a rendszer részét.

apt install pigz rar xz-utils bzip2 tar p7zip-full

Befejezés

Ezzel végeztünk is, ha szeretnénk, hogy a jelenleg generált-, önaláírt tanúsítványok helyett, a Let’s Encrypt tanúsítvány hatóság ingyenes tanúsítványai legyenek az adminisztrációs felület, postfix, dovecot stb.. alkalmazásszerverekhez használva, lépjünk erre az oldalra. A leíráshoz felhasznált forrás, ezen a linken érhető el.