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).

Kurztipp: Tab Completion funktioniert nicht bei vnc+xfce

Ich nutze aus diversen Gründen ab und an XFCE in einer VNC Session unter Debian 8. Dabei fehlte mir aber die Tab Completion, was extrem nervig sein kann. Die Lösung für mein Problem war:

in der

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

folgendes editieren

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

wird zu

<property name="&lt;Super&gt;Tab" type="empty"/>

danach die VNC Session killen und neu starten.

Kein häufiges Problem nehme ich mal an ;-).

Kurztipp: Nextcloud for Filelink

Ein tolles Plugin für Thunderbird um größere Dateien nicht via email verschicken zu müssen, sondern direkt über Nextcloud bereitzustellen zu können. Funktioniert auf den ersten Blick relativ problemlos. Man kann leider nicht pro mail ein neues Passwort definieren, ansonsten aber eine feine Sache.

https://addons.mozilla.org/de/thunderbird/addon/nextcloud-filelink/

Gibt es auch für Outlook. Kann ich aber  mangels Outlook nicht testen.

 

Kurztipp: syncen mit lsyncd

Lsyncd hatte ich mir schon mal vor Jahren angeschaut. Damals wurde aber ssh als Transport noch nicht unterstützt.  Nun habe ich mir das nochmal kurz (wirklich kurz) unter Debian 8 angeschaut (Version 2.1.5). Lsyncd überwacht Verzeichnisse via inotify und überträgt alle geänderten Dateien automatisch auf die angegebenen Zielhosts.  Lsyncd bietet eine große Anzahl an Optionen, daher schadet ein Blick auf die Homepage nicht. Zum schnellen testen kann man einfach folgendes ausprobieren:

apt install lsyncd

Auf der Konsole:

lsyncd -rsyncssh /home/thomas/hallo zielhost /home/thomas/test

Dabei wird der Inhalt des Ordners hallo in den Zielordner test Übertragen. Default werden Änderungen alle 15 Sekunden übertragen. Der Zielordner wird dabei automatisch angelegt.

Konfigurationsdateien lassen sich auch „problemlos“ nutzen, z.B.:

$ cat /etc/lsyncd/lsyncd.conf.lua                                                                       
settings  {
        logfile = "/var/log/lsyncd/lsyncd.log",
                statusFile = "/var/log/lsyncd/lsyncd.status"
                }

sync {
        default.rsyncssh,
        source = "/home/thomas/hallo",
        host = "thomas@zielhost",
        targetdir = "/home/thomas/test",
      }

und mit

service lsyncd start

den daemon starten. Danach eventuell noch ein

update-rc.d lsyncd defaults

für den Autostart des daemons.

Dabei muss auf dem Zielhost ssh login ohne Passwort erlaubt sein. Man kann aber auch rsyncd zur Übertragung nutzen. Zu beachten ist das lsyncd default „delete“ als Option hat. Das merkst Du daran, dass plötzlich vielleicht Dein gesamtes home directory gelöscht wurde…nicht das es mir passiert wäre. Die Syntax im Bezug auf „/“ bei Verzeichnissen ist anders als bei rsync.

Lsyncd ist eventuell  interessant wenn man einfach nur ein paar Konfigurationen, ohne Puppet & Co zu nutzen, syncen will oder  man eine überschaubare Menge an Dateien auf verschiedenen hosts verteilen will. Ab einer gewissen Anzahl von Dateien stößt man an auf diverse Probleme (inotify&co). Am besten man testet lsyncd auf Testmaschinen bevor man es produktiv einsetzt.

Kurztipp: Proxy Einstellungen für den Chrome Browser unter Fluxbox ändern

Klingt eigentlich ganz leicht, ist aber aber tatsächlich umständlich einzurichten. Ich nutze Fluxbox bei einigen Maschinen als Windowmanager. Dort die Proxy Einstellungen für den Chrome Browser zu ändern ist etwas nervig, da man dies nicht einfach über die Einstellungen des Browsers machen kann. Der geringste Aufwand ist einfach ein Proxy Addon zu installieren. Also einfach Proxy SwitchyOmega installieren, die Proxydaten eintragen und den Proxy auswählen.
Sollte man mit ssh Forward arbeiten, nicht vergessen socks5 statt http als Protokoll zu wählen.

Kurztipp: tmux Session beim login starten bzw. attachen

Um beim Login via ssh sofort in einer tmux Session zu landen habe ich folgendes in meine .bashrc auf dem Zielhost eingefügt:

case $- in
    *i*)
    if command -v tmux>/dev/null; then
        if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then
          if tmux ls 2> /dev/null | grep -q -v attached; then
            exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1)
          else
            exec tmux
          fi
        fi
    fi
    ;;
esac

Sehr praktisch falls die Verbindung nicht stabil oder die bash_history deaktiviert ist.

Man kann auch

ssh 123.123.123.123 -t tmux a

nutzen, falls eine tmux Session vorhanden ist bzw. „tmux“ falls keine.
Die .bashrc Lösung ist aber natürlich etwas eleganter.

Link:  https://stackoverflow.com/a/42351698

 

Notiz: Calibre 3.0 ist veröffentlicht

Jeder der sich irgendwie für ebooks interessiert kommt eigentlich nicht an Calibre vorbei. Die Software ist mittlerweile in der der 3.0er Version erschienen. Der „Content server“ ist deutlich performanter und bietet nun endlich auch eine Funktion zum online lesen an.
Bisher, dank Cops und Bicbucstriim, zwar von mir kaum genutzt, aber dennoch eine sehr praktische Funktion. Dabei hat Cops, dank des integrierten Readers, aber die Nase vorn.

Kurztipp: PHP Shells mit maldet finden

Maldet ist ein Malware Scanner. Ideal für jegliche Art von Webhosting.

Maldet legt automatisch einen cronjob an und verschickt je nach Wunsch täglich mails.

Mails sehen dann in etwa so aus:

HOST:      web01
SCAN ID:   170610-0654.14910
STARTED:   Jun 10 2017 06:54:15 +0200
COMPLETED: Jun 10 2017 07:07:34 +0200
ELAPSED:   799s [find: 450s]

PATH:          
RANGE:         1 days
TOTAL FILES:   24202
TOTAL HITS:    2
TOTAL CLEANED: 0

WARNING: Automatic quarantine is currently disabled, detected threats are still accessible to users!
To enable, set quarantine_hits=1 and/or to quarantine hits from this scan run:
/usr/local/sbin/maldet -q 170610-0654.14910

FILE HIT LIST:
{HEX}php.cmdshell.unclassed.365 : /pfad/zum/docroot/phpshells/844-4873-1-SM.phtml
{HEX}gzbase64.inject.unclassed.15 : /pfad/zum/docroot2/c.php

Maldet bietet etliche Einstellungsmöglichkeiten.  Man kann es auch in Echtzeit im monitoring mode laufen lassen. Je nach Umfang der docroots stößt man dabei aber an diverse Limits (ulimit &co).

Auf Github findet man Maldet unter https://github.com/rfxn/linux-malware-detect. Debian Pakete gibt es unter https://github.com/waja/maldetect.

von 12.04 zu 14.04 und von MySQL 5.5 zu 5.6

Nur ein paar Notizen für mich für ein Update von Ubuntu 12.04 zu 14.04 und von MySQL 5.5 zu 5.6.

MySQL
table_cache gibt es bei MySQL 5.6 nicht mehr, das heißt nun table_open_cache.  Am besten vorher in der my.cnf ändern

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable
invoke-rc.d apparmor restart
schadet auch nicht.

Pacemaker
apt-get install haveged
braucht man
Pacemaker komplett löschen. Purgen reicht nicht
rm -rf /var/lib/pacemaker
rm -rf /var/lib/heartbeat
rm -rf /var/lib/pengine

Nachdem Update Pacemaker einfach neu installieren. Das sollte inklusive Konfiguration maximal 5 Minuten dauern. Eventuell kurz  root via key zwischen den Nodes erlauben.

update-rc.d pacemaker defaults
kann auch nicht schaden

ssh
Match Blocks werden nicht mehr mit „Match“ geschlossen und müssen immer am Ende der sshd_config  stehen. Eventuell hilft „Match all“

 

 

Fotogalerie selbst hosten

Da gibt es einige Angebote an Open Source Softwarelösungen. Früher hatte ich  gallery im Einsatz, dass wurde dann irgendwann mal gehackt und wird auch seit einigen Jahren nicht mehr weiter entwickelt. Generell scheinen Webgalerien ein beliebtes Ziel für Einbrüche zu sein. Als Ablösung kam dann ganz einfach google Fotos bei mir/uns.  Das funktioniert, ist extrem praktisch wenn man eh 99,9% der Fotos mit dem Handy macht. Da aber Fotos von Handys immer noch schrottig gegenüber Fotos einer richtigen Kamera aussehen, haben wir uns eine Systemkamera zugelegt. Erst etwas skeptisch ob das Geld auch gut angelegt ist,  war ich bereits nach dem ersten Spaziergang mit Kamera & Co vom Nutzen der Kamera überzeugt.  Mit einer Kamera hat man halt Fotos und mit einem Handy Schnappschüsse. Nun stellte sich die Frage wohin mit den Fotos? Irgendwo auf Platte, Dropbox, Nextcloud, Google Photos?

Google Photos ist ungünstig, weil bei Bildern über 16 MP die Qualität auf 16 MP reduziert wird, jedenfalls wenn man unbegrenzt Bilder ablegen will und die Daten nicht auf den Quota angerechnet werden sollen. Da ich eh schon immer ein Freund von Wasduselbsthostenkannsthosteselbst bin, habe ich mir piwigo angeschaut. Vorher noch kurz nextcloud als Galerie ausprobiert, das ist aber leider komplett unbrauchbar dafür. Erst hatte ich die Daten noch via nextcloud client gesynct und einfach einen symlink in den galleries Ordner von piwigo gelegt. Fand ich aber nervig und ist überflüssig. Einfach die Fotodaten via rsync in den galleries Ordner und via Webinterface syncen lassen und fertig. Natürlich liegen die Fotos nochmal auf dem NAS.

Die Lösung gefällt mir ausgesprochen gut und funktioniert wunderbar. Sollte jemand eine gute andere  Webgalerie Software kennen, immer her damit.  Optimal wäre es natürlich wenn die Kamera (die natürlich heute alle WLAN haben) direkt syncen könnte, ohne den Weg über den PC  zu gehen.

Kurztipp: eine Datei leeren

Wir haben eine Datei, die wir einfach nur leeren wollen. Die Dateirechte sollen so bleiben und wir wollen nicht mit rm&touch&chown&chmod arbeiten.

$ l machmichleer.txt
-rw-rw-r-- 1 thomas thomas 27K Apr 21 10:06 machmichleer.txt

$ > machmichleer.txt

$ l machmichleer.txt
-rw-rw-r-- 1 thomas thomas 0 Apr 21 10:07 machmichleer.txt

Kurztipp: Debian 8 anmelden langsam und clamav geht nicht

Nach einem Update von Debian 7 auf 8 ging das Anmelden am System extrem langsam, zudem lief clamav nicht mehr.  UsePAM yes auf no hat zwar geholfen aber man will ldpap nutzen. Da gab es noch mehr, aber das spare ich  mir alles.

Die Lösung hat etwas gedauert. Geholfen hat:

  1. Debug von pamd aktivieren
    $ touch /etc/pam_debug
    *.debug /var/log/debug.log in die rsyslog.conf und rsyslog restart
  2. darüber auf https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798522 aufmerksam geworden
  3. $ ldd /usr/sbin/console-kit-daemon
    libgobject-2.0.so.0 => /opt/tivoli/tsm/client/ba/bin/libgobject-2.0.so.0 (0x00007f20f34ef000)
    libglib-2.0.so.0 => /opt/tivoli/tsm/client/ba/bin/libglib-2.0.so.0 (0x00007f20f32fe000)
  4. Die Einträge für tsm aus der
    /etc/ld.so.conf.d/tsm.conf

    löschen bzw. wo auch immer man das damals für TSM Client eingetragen hat.

  5. $ ldconfig

    fertig. Mittlerweile gibt es einen von IBM unterstützen 7er Client für Debian/Ubuntu (eigentlich nur Ubuntu aber egal).