und mit dem privilegierten Benutzerrechten am Server anmelden
sudo -s
Starten Sie mit folgenden Softwarepakete, als notwendige Grundlage den Serverbetriebs
apt update -q4 && apt install -y curl gnupg2 git lsb-release apt-transport-https tree locate software-properties-common dirmngr screen htop net-tools zip unzip bzip2 ffmpeg ghostscript libfile-fcntllock-perl libfontconfig1 libfuse2 lsb-release socat
Server update und upgrade
apt update && apt upgrade -V && apt dist-upgrade && apt autoremove -y
Tragen Sie den zukünftigen Servernamen sowohl in die hosts-Datei, als auch in die
hostname-Datei ein – vorhandenen Eintrag löschen und mit neuem ersetzen
nano /etc/hosts
Passen Sie die roten Werte an Ihre Umgebung an:
127.0.0.1 localhost
127.0.1.1 Ihre.Domain.de
# The following lines are desirable for IPv6 capable hosts
::1 Ihre.Domain.de ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
<externe IPv4> Ihre.Domain.de
<externe IPv6> Ihre.Domain.de
Geben Sie den korrekten Servername in der hostname-Datei an und ersetzen den roten
Wert durch Ihren:
nano /etc/hostname
Der Servername muss als FQDN, also vollqualifiziert angegeben werden
vorhandenen Eintrag löschen und mit neuem ersetzen
Ihre.Domain.de
Konfigurieren Sie den Zeitserverdienst und fügen Sie die zwei Zeitserver hinzu.
NTP=ntp1.dismail.de ntp2.dismail.de
Speichern Sie diese Datei und starten den Zeitserver neu:
systemctl restart systemd-timesyncd
Sorgen Sie nun dafür, dass der Server nicht in einen „Energiesparmodus“ wechseln kann:
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Starten Sie abschließend den Server neu
reboot now
und melden sich dann erneut mit privilegierten Benutzerrechten am Server an:
sudo -s
Fügen Sie dem System weitere Software-Repositories (Softwarequellen) hinzu, um die
aktuellen Releases der jeweiligen Pakete installieren zu können.
Das folgende gilt nur für Ubuntu Server (AMD64 und ARM64)
Debian ist ein bisschen anders
Stellen Sie sicher, dass das Paket „ubuntu-keyring“ installiert ist:
apt install -y ubuntu-keyring
Fügen Sie Ihrem System den nginx-Key hinzu:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Tragen Sie anschließend die Softwarequellen für nginx und PHP ein:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
Um auch die aktuellen PHP-Ressourcen verwenden zu können fügen wir das entsprechende
Repository hinzu:
add-apt-repository -y ppa:ondrej/php
Wir ergänzen die Paketquellen für MariaDB, aktualisieren dann das System
Vorbereitung MariaDB:
cd ~
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
./mariadb_repo_setup --mariadb-server-version="mariadb-10.6"
Aktualisierung des Servers:
apt update
Um sicherzustellen, dass keine Relikte früherer Installationen den Betrieb des Webserver
stören, entfernen wir diese:
apt remove nginx nginx-extras nginx-common nginx-full -y --allow-change-held-packages
Zudem stellen wir sicher, dass das Pendant (Apache2) zum nginx Webserver weder aktiv
noch installiert ist.
systemctl stop apache2.service && systemctl disable apache2.service
Nun sind die Vorbereitungen zur Installation des Webservers abgeschlossen und wir
können diesen mit dem nachfolgenden Befehl installieren
apt install -y nginx
und den Dienst zum automatischen Start nach einem Systemneustart mittels
systemctl enable nginx.service
einrichten. Mit Blick auf die späteren Anpassungen wird die Standardkonfiguration
gesichert und eine neue Konfigurationsdatei geöffnet
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak && touch /etc/nginx/nginx.conf
nano /etc/nginx/nginx.conf
Kopieren Sie den gesamten nachfolgenden Inhalt in die Datei und ersetzen die rot
markierten Werte entsprechend Ihres Systems:
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on; use epoll;
}
http {
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
# set_real_ip_from 127.0.0.1; # nur nötig wenn sie nicht auf Localhost sind
real_ip_header X-Forwarded-For;
real_ip_recursive on;
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
send_timeout 3600;
tcp_nopush on;
tcp_nodelay on;
open_file_cache max=500 inactive=10m;
open_file_cache_errors on;
keepalive_timeout 65;
reset_timedout_connection on;
server_tokens off;
resolver 127.0.0.53 valid=30s;
resolver_timeout 5s;
include /etc/nginx/conf.d/*.conf;
}
Speichern Sie die Datei und schließen Sie diese, um im Anschluss den Webserver neu zu
starten:
service nginx restart
Legen Sie drei Ordner an und setzen die korrekten Berechtigungen:
Ich habe als Dokument Ortner (/mnt/doli-data) eine weitere Festplatte verwendet
daher muss ich diesen Ortner nicht mehr anlegen – näheres dazu gern auf Anfrage
ohne extraplatte einfach weiter machen
mkdir -p /var/log/doli /mnt/doli-data /var/www/doli
chown -R www-data:www-data /mnt/doli-data /var/www/doli /var/log/doli
Starten Sie abschließend den Server neu
reboot now
und melden sich dann erneut mit privilegierten Benutzerrechten am Server an:
sudo -s
Das PHP Repository wurde bereits im vorherigen Kapitel eingerichtet und aktiviert, so dass
wir direkt mit der Installation beginnen können
apt update -q4 && apt install -y php7.4-fpm php7.4-common php7.4-curl php7.4-intl php7.4-mbstring php7.4-mcrypt php7.4-json php7.4-xmlrpc php7.4-soap php7.4-mysql php7.4-gd php7.4-xml php7.4-cli php7.4-zip
Setzen Sie das richtige Datumsformat, um auch ein korrektes Logging zu ermöglichen:
timedatectl set-timezone Europe/Berlin
jetzt können wir die php.ini anpassen
sed -i "s/file_uploads =.*/file_uploads = On/" /etc/php/7.4/fpm/php.ini
sed -i "s/allow_url_fopen =.*/allow_url_fopen = Off/" /etc/php/7.4/fpm/php.ini
sed -i "s/memory_limit =.*/memory_limit = 1024M/" /etc/php/7.4/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=.*/cgi.fix_pathinfo = 1/" /etc/php/7.4/fpm/php.ini
sed -i "s/upload_max_filesize =.*/upload_max_filesize = 100M/" /etc/php/7.4/fpm/php.ini
sed -i "s/post_max_size =.*/post_max_size = 100M/" /etc/php/7.4/fpm/php.ini
sed -i "s/max_execution_time =.*/max_execution_time = 3600/" /etc/php/7.4/fpm/php.ini
sed -i "s/;date.timezone =.*/date.timezone = Europe\/\Berlin/" /etc/php/7.4/fpm/php.ini
Starten Sie nun beide Dienste, nginx und PHP, neu:
service php7.4-fpm restart
service nginx restart
Die Installation von MariaDB erfolgt mit diesem Befehl:
apt update -q4 && apt install -y mariadb-server`
Härten wir nun den Datenbankserver mittels des mitgelieferten Tools
„mysql_secure_installation“. Bei einer Erstinstallation besteht kein Root Passwort, so dass
Sie die Abfrage mit ENTER bestätigen könne. Es wird empfohlen, ein Passwort direkt zu
setzen, der entsprechende Dialog erscheint automatisch:
mysql_secure_installation
Enter current password for root (enter for none): <ENTER>
Switch to unix_socket authentication [Y/n] Y
Set root password? [Y/n] Y
root-Passwort 2 mal eingeben – Ihr-starkes-stück-Passwort -
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
Stoppen Sie nun den Datenbankserver und sichern dann die Standardkonfiguration, um
unmittelbar danach Anpassungen vornehmen zu können
service mysql stop
mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
nano /etc/mysql/my.cnf
Kopieren Sie alle nachfolgenden Zeilen in die leere Datei:
[client]
default-character-set = utf8mb4
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log
nice = 0
socket = /var/run/mysqld/mysqld.sock
[mysqld]
basedir = /usr
bind-address = 127.0.0.1
binlog_format = ROW
bulk_insert_buffer_size = 16M
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
concurrent_insert = 2
connect_timeout = 5
datadir = /var/lib/mysql
default_storage_engine = InnoDB
expire_logs_days = 2
general_log_file = /var/log/mysql/mysql.log
general_log = 0
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 4000
innodb_flush_method = O_DIRECT
innodb_read_only_compressed=OFF
key_buffer_size = 128M
lc_messages_dir = /usr/share/mysql
lc_messages = en_US
log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
log_error = /var/log/mysql/mysql_error.log
log_slow_verbosity = query_plan
log_warnings = 2
long_query_time = 1
max_allowed_packet = 16M
max_binlog_size = 100M
max_connections = 200
max_heap_table_size = 64M
myisam_recover_options = BACKUP
myisam_sort_buffer_size = 512M
port = 3306
pid-file = /var/run/mysqld/mysqld.pid
query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1
query_cache_min_res_unit = 2k
read_buffer_size = 2M
read_rnd_buffer_size = 1M
skip-external-locking
skip-name-resolve
slow_query_log_file = /var/log/mysql/mariadb-slow.log
slow-query-log = 1
socket = /var/run/mysqld/mysqld.sock
sort_buffer_size = 4M
table_open_cache = 400
thread_cache_size = 128
tmp_table_size = 64M
tmpdir = /tmp
transaction_isolation = READ-COMMITTED
#unix_socket=OFF
user = mysql
wait_timeout = 600
[mysqldump]
max_allowed_packet = 16M
quick
quote-names
[isamchk]
key_buffer = 16M
Speichern und schließen Sie die Datei und starten dann den Datenbankserver neu, um die
Dolibarr-Datenbank, den Dolibarr-Benutzer und sein Passwort einzurichten:
root-Passwort eingeben – Ihr-starkes-stück-Passwort -
service mysql restart
mysql -uroot -p
CREATE DATABASE DatenbankName CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER DatenbankUser@localhost identified by 'DatenbankPasswort'; GRANT ALL PRIVILEGES on DatenbankName.* to DatenbankUser@localhost; FLUSH privileges; quit;
Aus Erfahrung heraus empfehle ich Ihnen, den Server einmalig neu zu starten:
reboot now
Wir richten nun verschiedene vhost, also Serverkonfigurationsdateien, ein und modifizieren
die Standard vhost-Datei persistent. Da das System zuvor neu gestartet wurde wechseln wir
erneut in den privilegierten Benutzermodus, sichern die Standard vhost-Datei namens
default.conf und legen leere vHost-Dateien zum Konfigurieren an.
sudo -s
Erstellen Sie die globale vhost-Datei
nano /etc/nginx/conf.d/doli.conf
Kopieren Sie alle nachfolgenden Zeilen in die Datei und passen die rot markierten
Werte entsprechend Ihres Systems an und speichern und schließen Sie diese Datei.
server {
listen 80;
listen [::]:80;
root /var/www/doli/htdocs;
index index.php index.html index.htm;
server_name Ihr-Server-Name;
client_max_body_size 100M;
client_body_timeout 3600s;
fastcgi_buffers 64 4K;
location ~ ^/api/(?!(index\.php))(.*)
{
try_files $uri /api/index.php/$2?$query_string;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)
{
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)
{
return 404;
}
location ~ [^/]\.php(/|$)
{
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 3600;
fastcgi_send_timeout 3600;
}
location ~ ^/api/(?!(index\.php))(.*)
{
try_files $uri /api/index.php/$2?$query_string;
}
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
}
wenn Sie Ihr Dolibarr hinter einem Proxi oder Revers-Proxi installieren
müssen Sie dafür eine weiter .conf erstellen
nano /etc/nginx/conf.d/proxi.conf
in die kommt das rein
# nur verwenden wenn Sie einen Proxi oder revers-Proxi nutzen
server {
listen 80;
location /
{
proxy_pass http://IP-Dolibarr-Server;
client_max_body_size 100M;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
Webserver erneut starten.
service nginx restart
Wir beginnen nun die ‚eigentliche‘ Installation von Dolibarr und
laden das aktuelle Dolibarr Release herunter: - zurzeit 15.0.1
cd /tmp && wget https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/15.0.1/dolibarr-15.0.1.zip
Entpacken Sie Dolibarr und verschieben es in das Webverzeichnis (var/www/doli)
unzip dolibarr-15.0.1.zip && rm /tmp/dolibarr-15.0.1.zip
mv dolibarr-15.0.1/* /var/www/doli
setzen der Berechtigung
chown -R www-data:www-data /var/www/doli
Wir können nun mit der installation von Dolibarr fortfahren.
öffnen Sie Dolibarr in Ihrem Browser
Ihre.Domain.de
den Dokumentortner eintragen - /mnt/doli-data
den DB-Namen eintragen
Datenbank erstellen nicht anklicken
DB-User und DB-Passwort eintragen
Erstellen Sie ein Benutzerkonto… anklicken
root und root-Passwort eintragen
Admin-Name und Admin-Passwort eintragen
jetzt können Sie sich bei Dolibarr einloggen
Um Dolibarr in einer sicheren (zumindest sicherer) Umgebung zu nutzen
Schließen Sie es wieder und machen mit der Serverseitigen Einrichtung weiter
Server update und upgrade und unnötiges löschen
apt update && apt upgrade -V && apt dist-upgrade -y && apt autoremove -y
Server neustart
reboot now
und mit dem priviligierten Benutzerrechten am Server anmelden
sudo -s
Jetzt wo die Installation geklappt hat können Sie die Ladezeit wieder verringern
nano /etc/nginx/conf.d/doli.conf
nachstehendes suchen und anpassen
fastcgi_read_timeout 360;
fastcgi_send_timeout 360;
Jetzt legen Sie die install.lock an um zu verhindern das eine erneute Installation erfolgt
nano /mnt/doli-data/install.lock
# nur ein Enter und wieder raus
Texteditor verlassen - bei nano CTRL+x (STRG+x) - save mit y bestätigen
php.ini anpassen
sed -i "s/session.use_strict_mode =.*/session.use_strict_mode = 1/" /etc/php/7.4/fpm/php.ini
sed -i "s/session.use_only_cookies =.*/session.use_only_cookies = 1/" /etc/php/7.4/fpm/php.ini
sed -i "s/session.cookie_httponly =.*/session.cookie_httponly = 1/" /etc/php/7.4/fpm/php.ini
sed -i "s/session.cookie_samesite =.*/session.cookie_samesite = Lax/" /etc/php/7.4/fpm/php.ini
sed -i "s/;allow_url_fopen =.*/allow_url_fopen = Off/" /etc/php/7.4/fpm/php.ini
sed -i "s/allow_url_include =.*/allow_url_include = Off/" /etc/php/7.4/fpm/php.ini
Sie sollten die PHP-Funktionen deaktivieren, falls Sie keine Systembefehle
in benutzerdefiniertem Code ausführen wollen:
sed -i "s/disable_functions =.*/disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,passthru,shell_exec,system,proc_open,popen/" /etc/php/7.4/fpm/php.ini
für den fall das Sie Ihre Meinung geändert haben und doch benutzerdefinierte
Code ausführen möchten
sed -i "s/disable_functions =.*/disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals/" /etc/php/7.4/fpm/php.ini
# Starten Sie nun beide Dienste, nginx und PHP, neu:
service php7.4-fpm restart
service nginx restart
Öffnen Sie bei Dolibarr gehen Sie auf Einstellungen → Sicherheit →
klick auf den Reiter Passwörter → ganz runter scrollen und klicken Sie bei
Datenbankpasswort in der Konfigurationsdatei conf.php verschlüsselt speichern
(empfohlene Einstellung) auf → Aktivieren
gehen Sie zurück zur Serverseite
nano /var/www/doli/htdocs/conf/conf.php
nachstehendes suchen und anpassen, speichern und schließen
$dolibarr_main_prod='1';
Jetzt vergeben Sie an die /conf.php nur Leserechte
chmod -R 400 /var/www/doli/htdocs/conf/conf.php
Als nächstes installieren wir fail2ban um den Server gegen Brute-force-Attacken und
fehlerhafte Login versuche zu schützen:
apt update -q4 && apt install -y fail2ban
Erstellen Sie eine neue Filterdatei für Passwort vergessen und befüllen diese wie
nachfolgend beschrieben
touch /etc/fail2ban/filter.d/doli-passforgotten.conf
Kopieren Sie alles von „cat …“ bis „… EOF“ in Ihre Zwischenablage und fügen es dann in die
Shell ein:
cat <<EOF >/etc/fail2ban/filter.d/doli-passforgotten.conf
[Definition]
failregex = ^ [A-Z\s]+ <HOST>\s+--- Access to .*/passwordforgotten.php - action=buildnewpassword
ignoreregex =
EOF
Erstellen Sie eine neue Filterdatei für Passwort Falscheingabe und befüllen diese wie
nachfolgend beschrieben
touch /etc/fail2ban/filter.d/doli-passwrong.conf
Kopieren Sie alles von „cat …“ bis „… EOF“ in Ihre Zwischenablage und fügen es dann in die
Shell ein:
cat <<EOF >/etc/fail2ban/filter.d/doli-passwrong.conf
[Definition]
failregex = ^ [A-Z\s]+ <HOST>\s+functions_dolibarr::check_user_password_.* Authentication KO
ignoreregex =
EOF
Bestätigen Sie mit um die Datei zu befüllen
Damit dieser Filter zum Einsatz kommt, wird dies Fail2ban noch bekannt gemacht:
nano /etc/fail2ban/jail.local
Hier fügen wir folgenden Inhalt ein:
[doli-passforgotten]
; rule against call of passwordforgottenpage
enabled = true
port = http,https
filter = doli-passforgotten
logpath = /var/log/doli-passforgotten.log
action = %(action_mw)s
bantime = 86400 ; 1 day
findtime = 3600 ; 1 hour
maxretry = 5
[doli-passwrong]
; rule against bruteforce hacking (login + api)
enabled = true
port = http,https
filter = doli-passwrong
logpath = /var/log/doli-passwrong.log
action = %(action_mw)s
bantime = 86400 ; 1 day
findtime = 3600 ; 1 hour
maxretry = 5
Erstellen Sie 2 Logfiles für ihre Dolibarr-Filter
fügen Sie ind jedes Log nur ein Enter ein und speichern
nano /var/log/doli-passforgotten.log
nano /var/log/doli-passwrong.log
Mit den zuvor dargestellten Parametern wird nach 5 fehlerhaften Anmeldeversuchen
(maxretry) innerhalb der letzten 3600 (findtime, das entspricht 1h) die IP des
potentiellen Angreifers für einen Zeitraum von 86400 Sekunden (bantime, enspricht 1Tag)
gesperrt.
Starten Sie fail2ban neu und überprüfen den fail2ban-status:
service fail2ban restart
service fail2ban status
Aktualisieren Sie ihren Server und installieren Sie postfix. Sie haben damit die Möglichkeit,
sich von fail2ban, apticron und bei SSH-Anmeldungen per Mail informieren zu lassen:
apt update -q4 && apt install -y postfix mailutils
Erstellen Sie Ihre Mailkonfiguration
Wählen Sie zuerst Satellitensystem aus,
geben dann ihre Domäne ein (Ihre.Domain.de) und zuletzt
noch den smtp.Server.
verschieben Sie die Original main.cf nach main.cf.bak
mv /etc/postfix/main.cf /etc/postfix/main.cf.bak
und fügen Sie nun die folgende Postfixkonfiguration ein:
nano /etc/postfix/main.cf
Ersetzen Sie die rot markierten Stellen und überschreichen damit den inhalt:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2
smtpd_tls_security_level=may
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_un>
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, Ihre-Domain.de, localhost.Ihre.Dolain.de, localhost
relayhost = smtp.Server:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all
#Bei Problemen mit IPv6 stellen Sie die Zeile wie nachfolgend um
#inet_protocols = ipv4
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_use_tls = yes
smtp_enforce_tls = yes
erstellen und hinterlegen Sie nun die Zugangsdaten für das Versenden von Mails:
nano /etc/postfix/sasl_passwd
Tragen Sie die Daten wie folgt ein und ersetzen die roten Werte durch Ihre:
smtp.server [email protected]:Ihr-Passwort
Da in dieser Datei das Passwort im Klartext steht setzen wir die Dateiberechtigungen auf # 600
chmod 600 /etc/postfix/sasl_passwd
# Schreiben Sie nun die Domäne in die Datei mailname:
nano /etc/mailname
Ersetzen Sie den roten Wert durch Ihre Domäne:
Mailadresse.de
Abschließend definieren wir noch den Bezug von Benutzern zu Mailadressen. Öffnen Sie die Datei
nano /etc/postfix/sender_canonical
und legen dort Benutzer und Mailadressen fest:
root [email protected]
< [email protected] > [email protected]
www-data [email protected]
default [email protected]
Jetzt werden die Konfiguration kompiliert und Postfix neu gestartet:
postmap /etc/postfix/sasl_passwd
postmap /etc/postfix/sender_canonical
service postfix restart
Testen Sie nun den Versandt einer Mail über Ihr Postfix
echo "Dies ist eine Testmail" | mailx -s "Test" [email protected]
Sollte die Mail nicht ankommen, so sehen Sie bitte im Log (mail.log) nach:
nano /var/log/mail.log
Passen Sie die PHP-Konfiguration an um auch PHP-Mails über postfix zu versenden:
Setzen Sie den sendmail_path wie folgt:
sed -i "s/;sendmail_path =.*/sendmail_path = \/usr\/\sbin\/\sendmail -t -i/" /etc/php/7.4/fpm/php.ini
und starten dann PHP neu:
service php7.4-fpm restart
Ersetzen Sie in der fail2ban-Konfiguration die nachfolgenden Parameter durch Ihre, um
Benachrichtigungen bei fehlerhaften Login versuchen und Banns zu erhalten. Sichern Sie
dazu die Originalkonfiguration von fail2ban und bearbeiten diese dann:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak
sed -i "s/destemail =.*/destemail = [email protected]/" /etc/fail2ban/jail.conf
sed -i "s/sender =.*/sender = [email protected]/" /etc/fail2ban/jail.conf
sed -i "s/mta =.*/mta = mail/" /etc/fail2ban/jail.conf
sed -i "s/action = %(action_)s.*/action = %(action_mwl)s/" /etc/fail2ban/jail.conf
Um bei einem Serverneustart fail2ban-Mails zu unterdrücken passen Sie die folgende Datei an:
nano /etc/fail2ban/action.d/mail-buffered.local
Kopieren Sie den Inhalt hinein:
[Definition]
actionstart =
actionstop =
Legen Sie dann Dummy-Dateien durch das Ausführen der folgenden Befehle an:
cp /etc/fail2ban/action.d/mail-buffered.local /etc/fail2ban/action.d/mail.local
cp /etc/fail2ban/action.d/mail-buffered.local /etc/fail2ban/action.d/mail-whois-lines.local
cp /etc/fail2ban/action.d/mail-buffered.local /etc/fail2ban/action.d/mail-whois.local
cp /etc/fail2ban/action.d/mail-buffered.local /etc/fail2ban/action.d/sendmail-buffered.local
cp /etc/fail2ban/action.d/mail-buffered.local /etc/fail2ban/action.d/sendmail-common.local
Starten Sie den fail2ban-Service neu
service fail2ban restart
und Sie werden ab sofort (nur noch) bei Banns, also neu blockierten IP-Adressen die durch
fehlerhafte Login versuche aufgefallen sind, informiert.
Apticron informiert Sie über verfügbare Systemaktualisierungen bzw. auch dann, wenn ihr
System „up2date“ ist. Installieren Sie apticron aus den Standardsoftwarequellen Ubuntus:
apt update -q4 && apt install -y apticron
Nun passen wir apticron an und ändern wenigstens die folgenden Parameter:
Die ,conf ist selbsterklärend und Sie können weitere Anpassungen nach Ihren
Vorstellungen vornehmen
cp /usr/lib/apticron/apticron.conf /etc/apticron/apticron.conf
nano /etc/apticron/apticron.conf
EMAIL="[email protected]"
SYSTEM="Ihre.Domai.de"
NOTIFY_HOLDS="1"
NOTIFY_NO_UPDATES="1"
CUSTOM_SUBJECT='$SYSTEM: $NUM_PACKAGES package update(s)'
CUSTOM_NO_UPDATES_SUBJECT='$SYSTEM: no updates available'
CUSTOM_FROM="[email protected]"
Überprüfen Sie apticron und den soeben konfigurierten Mailversand indem sie apticron
aufrufen:
apticron
Sie erhalten nun umgehend eine Mailbenachrichtigungen über Ihren aktuellen
Systemzustand. Passen Sie zuletzt noch den Cronjob an, um sich regelmäßig und
automatisch benachrichtigen zu lassen:
cp /etc/cron.d/apticron /etc/cron.d/apticron.bak
nano /etc/cron.d/apticron
den vorhandenen Eintrag durch diesen ersetzen
30 7 * * * root if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi
Apticron Informiert Sie jetzt jeden Morgen um 07.30 Uhr per Mail über Ihren
Systemaktualitätsgrad und möglich Aktualisierungs Maßnahmen.
wenn Sie über die erfolgreichen SSH-Einwahl informiert werden möchten
Passen Sie die Profildatei an und erweitern diese am Ende um die folgenden Zeilen:
nano /etc/profile
if [ -n "$SSH_CLIENT" ]; then
echo 'Login on' `hostname` `date` `who -m` | mail -s "Login on `hostname` from `echo $SSH_CLIENT |
awk '{print $1}'`" [email protected]
fi
Bei jeder erfolgreichen SSH-Einwahl werden Sie ab sofort aktiv benachrichtigt.
Solange Sie selbst es wahren ist alles okay – aber wenn nicht……
service php7.4-fpm restart
service nginx restart
apt update && apt upgrade -V && apt dist-upgrade -y && apt autoremove -y
reboot now
Jetzt können Sie Dolibarr einrichten und ich wünsche Ihnen viel Spaß und Erfolg damit.
Sollten Sie auf Probleme - Fehler oder sonstige Ärgernisse stoßen
Fragen Sie jemanden der sich auskennt
Wenn Sie Lob verteilen möchten stehe ich gerne zur Verfügung
Gruß Skalar