Kurztipp: Debian 11 Update – procmail und maildir

Da ich nach langer Zeit auf eine größere VM bei netcup migriert bin, habe ich auch gleich einen Wechsel von Debian 10 zu Debian 11 und von mailbox zu maildir gemacht.

Der Umstieg lief eigentlich bisher ohne große Probleme. Nur bei Procmail zum sortieren der Mails muss man ein bisschen aufpassen.

Lauteten die Regeln für procmail mit mailbox vorher noch

:0      
* ^Subject.*SPAM.*
spam

lauten sie nun mit maildir

:0      
* ^Subject.*SPAM.*
.spam/

Irgendwie auch klar, muss man aber trotzdem auf dem Schirm haben.

Kurztipp: Pacemaker und Ubuntu

Da ich diverse Nodes in letzter Zeit geupdatet habe, teile ich meine Erkenntnis für die eine Person.

14.04 mit 16.04 ist nicht kompatibel. Die Nodes sehen sich nicht.

16.04 mit 18.04 ist kompatibel. Ressourcen können hin und her migriert werden.

Bei 18.04 muss man noch die crm shell „crmsh“ nachinstallieren. Ansonsten ist das Pacemaker Update aber problemlos.

nginx mit TLS 1.3 und der alert number 70

Da habe ich nun ein bisschen für gebraucht, bis TLS 1.3 endlich auf einer bestimmten Maschine lief. Ich nutze nginx als Reverse Proxy und terminiere dabei ssl dort. Es werden die Repositories von nginx genutzt. Aktuell ist dort zur Zeit Version 1.19.10 von nginx. Das System ist ein Ubuntu 18.04. Wollte ich nun für eine bestimmte Seite TLS 1.3 aktivieren, kam beim Test immer nur folgendes:

$ openssl s_client -connect dieseitemittls1_3.de:443 -tls1_3
CONNECTED(00000005)
140426905970496:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:../ssl/record/rec_layer_s3.c:1528:SSL alert number 70

OpenSSL 1.1.1 wird genutzt und die Nginx Version kann auch TLS 1.3.

Funktioniert hat es letztendlich nachdem ich für die default site auch TLS 1.3 aktiviert habe. Wobei diese eigentlich nichts mit der anderen Seite zu tun haben sollte. Durch das aktivieren in der default site ist nun TLS 1.3 für alle Seiten aktiviert, auch wenn dort nur TLS 1.2 eingetragen ist.

Ein bisschen würde mich schon interessieren, ob das Verhalten auch auftritt, wenn man die Ubuntu Repositories für nginx nutzt.

Drauf gekommen bin ich via eines Beitrags bei askubuntu.

Kurztipp: Nextcloud mit ocDownloader

Will man bei der Nextcloud App ocDownloader (1.7.8) youtube-dl nutzen und bekommt ständig ein
Die echte YouTube-Video-URL konnte nicht empfangen werden
obwohl /usr/local/bin/youtube-dl vorhanden ist, hilft ein einfacher symlink:

ln -s /usr/local/bin/youtube-dl /usr/bin/

Erstaunlich, dass bestimmte Features wie „download from url“, nicht bei nextcloud integriert sind.

Kurztipp: cron für bestimmten Benutzer deaktivieren

Um für bestimmte Benutzer die Möglichkeit zu deaktivieren cronjobs einzurichten, reicht es die userid in die Datei /etc/cron.deny einzutragen.

$ cat /etc/cron.deny
thomas

Wenn der jeweilige Benutzer nun einen cronjob anlegen will, sieht er ungefähr folgendes:

$ crontab -e
You (thomas) are not allowed to use this program (crontab)

Sinn macht das besonders für z.B. www-data unter Debian/Ubuntu, falls der Eintrag dort noch nicht vorhanden ist.

Kurztipp: Von MBR zu GPT wechseln

Hat man noch ein device welches mit MBR partitioniert ist, bemerkt aber nun, dass es auf dem Device noch 6 TB freien Speicher gibt, man diesen aber nicht einfach partitionieren kann, da MBR an seine Grenzen kommt, sollte man zu GPT wechseln.

z. B. so:

gdisk /dev/sdb

und w drücken. Dabei ist sdb ein reines Data Device von dem nicht gebootet wird. Bei Bootdevicen sind noch ein paar andere Schritte nötig (google).
Die Daten auf dem Device sollten natürlich gesichert sein….vielleicht ist man ja die Ausnahme.

Kurztipp: Underscores im Domainnamen

Nutzt man Domains mit underscores im Domainnamen z. B. donnerstag_gelb.de kann man mit neueren Apache Versionen (z. B. 2.4.29) Probleme bekommen. Dieser akzeptiert aus Gründen der Sicherheit solche nicht mehr. Hat man aber keine Möglichkeit den DNS und Servernamen zu ändern kann man die Option

HttpProtocolOptions unsafe

in die apache.conf oder im virtualhost setzen. Danach werden underscores wieder akzeptiert. Ob sinnvoll oder nicht entscheide jeder für sich selbst.

Kurztipp: Pacemaker nach Update auf Ubuntu 16.04

Da sich bei Ubuntu 16.04 auch die Namen der NICs ändern (z.B. von eth0 zu ens192) muss man auch die Konfiguration der Ressourcen anpassen. Das kann man sicherlich innerhalb der Konfiguration via crm anpassen, aber löschen der Ressource und neu anlegen geht natürlich auch. Was dann in etwa so ausieht:

crm resource stop FAILOVER-ADDR
crm configure delete FAILOVER-ADDR
crm configure primitive FAILOVER-ADDR ocf:heartbeat:IPaddr2 params ip="1.2.3.4" nic="ens192" op monitor interval="10s" meta is-managed="true" 

 

Kurztipp: calibre-web zur ebook Verwaltung

Calibre-web ist eine Software um seine Ebooks via Webinterface zu verwalten. Als Grundlage dient dabei die bereits vorhandene Calibre Datenbank. Vor einiger Zeit hatte ich kurz etwas zu bicbucstriim und cops geschrieben. Wobei beide Projekte gut sind aber noch viel Luft nach oben lassen. Ein fehlendes Feature ist z. B. das Erstellen von eigenen Buchsammlungen, was beide Projekte nicht können. Bei calibre-web können Benutzer solche Buchsammlungen anlegen und verwalten. Zu dem hat man auch die Möglichkeit Metadaten im Webinterface zu verändern. Es empfiehlt sich calibre-web hinter einem reverse proxy wie nginx oder Apache laufen zu lassen, Beispiele dazu finden sich auf der Projektseite. Die Suche und generelle Performance ist bei cops deutlich besser, aber die Sache mit den eigenen Buchsammlungen ist ein fast unschlagbarer Pluspunkt für calibre-web. Man kann natürlich auch problemlos cops, calibre-web und bicbucstriim parallel laufen lassen.

Mirko Lindner hat zu calibre-web einen guten Artikel auf pro-linux geschrieben.

 

Kurztipp: MySQL 5.7 Ubuntu 16.04 und max connections werden nicht übernommen

Steht im error.log von MySQL 5.7 etwas in der Art wie:

2018-02-02T13:30:24.539046Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2018-02-02T13:30:24.539087Z 0 [Warning] Changed limits: max_connections: 214 (requested 800)
2018-02-02T13:30:24.539091Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 1024)

auch diverse Einträge mit „Too many open files“ sind ein Hinweis,

hilft (vielleicht) folgendes

systemctl edit mysql

eintragen:

[Service]
LimitNOFILE=8000

Dadurch wurde nun die Datei /etc/systemd/system/mysql.service.d/override.conf angelegt

systemctl daemon-reload
systemctl restart mysql

Nun sollten die Werte aus der mysqld.conf übernommen werden.

Eventuell nochmal mit

mysql> show variables like '%connections%';

usw. prüfen.

Warum weshalb wieso findet man unter:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

https://stackoverflow.com/questions/39976756/the-max-connections-in-mysql-5-7

https://stackoverflow.com/questions/32760202/buffered-warning-changed-limits-max-connections-214-requested-800/33464069

Hinweis: Kernel Panic – Debian 8.10 und Kernelupdate

Wer wie ich Hardware (VMs  sind je nach Konfiguration auch betroffen, siehe Link) mit mehreren Sockets benutzt wird eventuell in diesen Bug gelaufen sein:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883938

Im Bugreport stehen ein paar Workarounds (Kernelparam: maxcpus=1, nosmp oder numa=off), damit die Maschine wenigstens wieder bootet. Falls noch nicht geupdatet wurde am besten den momentanen Kernel pinnen oder einfach auf ein Update warten.

Apache mit unterschiedlichen Benutzerrechten

Bei Debian Derivaten läuft der Apache in der Regel mit www-data Benutzerrechten. Will man aber, dass der Apache unter verschiedenen Benutzern läuft wird es schon schwieriger. Da gibt es Lösungen wie zum Beispiel  mod_fcgid, PHP-FPM oder mpm-itk. Besonders das itk Modul fand ich im Vergleich zu PHP-FPM, sehr einfach zu konfigurieren. Getestet mit Debian 8 und Ubuntu 14.04.
Ein kleiness Beispiel:

apt-get install libapache2-mpm-itk

und in der jeweiligen Vhost Konfiguration trägt man folgendes ein:

<IfModule mpm_itk_module>
AssignUserId henry www-data
</IfModule>

Wobei henry der Benutzer und www-data die Gruppe ist.

Will man testen ob alles funktioniert, kann man einfach folgendes Skript ausprobieren:

<?php
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
?>

Da sollte dann bei meinem Beispiel „henry“ angezeigt werden. Ansonsten einfach mal eine Datei via Webinterface hochladen und schauen wem Sie gehört.

Wichtig dabei ist, dass die jeweiligen Benutzer und Gruppen existieren müssen. Existiert z .B. kein henry oder keine Gruppe www-data, startet auch der Apache nicht. Bedeutet auch, falls man mit einer LDAP Benutzerverwaltung arbeitet und der LDAP läuft nicht stabil, sollte man die Benutzer aus dem LDAP auf den jeweiligen Webserver syncen. Auf der MPM ITK Seite findet man noch diverse andere Parameter wie z.B. MaxClientsVHost, AssignUserIDExpr, LimitUIDRange usw.

Die Anpassungen am System sind minimal, daher kann man das ITK Modul ohne großen Aufwand testen. Hat man sehr viele Vhost und arbeitet nicht mit Puppet&Co kann man auch  mit Apache Macros arbeiten, dann würde der Eintrag in etwa so aussehen:

in der vhost.conf:

Use itkmodul henry www-data

in der jeweiligen macro.conf

<Macro itkmodul $username $group>
<IfModule mpm_itk_module>
AssignUserID $username $group
</IfModule>
</Macro> 

Inwieweit das ITK Modul zusätzliche Sicherheitsprobleme mit sich bringen kann, hängt vom jeweiligen System ab und wie es konfiguriert ist. Da kann man sicherlich schnell etwas konstruieren.

Update: Anscheinend funktioniert das Modul nur für userids < 65535. (link). Eventuell besteht das Problem bei Ubuntu 16.04 nicht mehr (Test folgt).