Screenshots sind oft recht nützlich um Sachverhalte zu illustrieren und zu verdeutlichen. Ein Screenshot ist unter GNU/Linux mittels der Druck-Taste leicht erledigt. Leider ist da das komplette Desktop abgebildet was einerseits vom Wesentlichen ablenkt aber andererseits unerwünschte Details offen legt. Idealerweise bildet ein Screenshot nur den relevanten Bereich ab und nichts anderes.
Debian Stretch
Der unbekannte Befehl – „patch“ das Flickwerk
patch ist ein Befehl der sicher von den wenigsten Benutzern benutzt wird denn normalerweise übernimmt das Einspielen der Paketbetreuer der Distribution und man installiert das bereits kompilierte Paket. Mit Hilfe von Patches werden Programmversionen oder Sicherheitspatches eingespielt. Jedoch sind auch alle möglichen anderen Szenarien denkbar. Der Vorteil einer Patchdatei ist, sie ist für Menschen lesbar da es eine reine ASCII-Datei ist, sie ist sehr viel kleiner als ein neues Programmpaket und der Patch lässt sich rückgängig machen. Patchdateien besitzen oft die Dateiendung .diff oder .patch. patch ist gewissermaßen das Gegenstück zum Befehl diff.
GnuPG-Schlüsseldaten veröffentlichen
In dem vorhergegangen Tutorial wurde gezeigt wie man einfach und mit Hilfe einer GUI mit Thunderbird/Enigmail einen Yubikey für GnuPG vorbereitet. Die Schlüssel helfen nichts wenn man nicht seine öffentliche Schlüssel veröffentlicht. Dies kann man zunächst einmal auf den Schlüsselservern und man erhält dann einen Link der folgendermaßen aussehen kann: https://keys.openpgp.org/vks/v1/by-fingerprint/46761780D7F5D4ED744CD286684A0B0B03A1960E
Dies ist ein auf einem Keyserver abgelegter Schlüssel. Dieser Link sollte sich bereits auf dem Yubikey unter URL befinden.
Für das Veröffentlichen des öffentlichen Schlüssels werden oft folgende Formate angeboten:
- Key-ID (obsolet)
- Fingerprint
- Öffentlicher Schlüssel
Einen Yubikey mit Enigmail/Thunderbird für GnuPG einrichten
Achtung, diese Anleitung gilt nur bis Thunderbird kleiner als Version 78.0.0 denn für aktuellere Versionen ist Enigmail nicht mehr verfügbar. Ich werde ein Update nachreichen wenn das jetzt eingebaute OpenPGP einen fortgeschrittenen Eindruck macht was derzeit nicht der Fall ist.
GNU Privacy Guard (GnuPG) ist ein Kryptographiesystem was zum Verschlüsseln, Entschlüsseln und der Erzeugung und Verifizierung von Signaturen von Daten dient. Das Open-Source-Emailprogramm Thunderbird bietet mit der Erweiterung Enigmail eine gute Grundlage um sowohl den Yubikey leicht einzurichten als auch für den späteren Gebrauch der Smartcard als Kryptografiesystem für Email.
Zunächst einmal muss Enigmail installiert werden. In Thunderbird kann man unter Extras → Addons nach Addons suchen und installieren. Nachdem Thunderbird mit aktiven Enigmail gestartet ist wird der Yubikey in einen freien USB-Port gesteckt. In der Konsole kann man dann überprüfen ob der Yubikey richtig erkannt wurde:
$ gpg --card-status Reader ...........: 1050:0116:X:0 Application ID ...: D2760001240102000006073265510000 Version ..........: 2.0 Manufacturer .....: Yubico Serial number ....: 06353846 Name of cardholder: [not set] Language prefs ...: [not set] Sex ..............: unspecified URL of public key : [not set] Login data .......: [not set] Signature PIN ....: forced Key attributes ...: rsa2048 rsa2048 rsa2048 Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none]
Der unbekannte Befehl – „diff“ der Differenzierer
diff ist ein Linux-Kommando zum inhaltlichen Vergleich von Dateien oder Ordnern. Dabei können die Unterschiede so dargestellt werden, dass durch die Ausgabe von diff eine Datei in die andere überführt werden kann. Dies hat eine Bedeutung beim schreiben von Patch-Dateien, durch die Änderungen an Programmcodes vorgenommen werden und diese Änderung daher nur in einer ASCII-Datei vorliegen braucht.
Wenn man zwei identische Dateien miteinander vergleicht so gibt diff keine Meldung aus. Mit der Option -s sieht das Ergebnis dann so aus:
$ diff -s orginal.txt modify.txt
Dateien orginal.txt und modify.txt sind identisch.
und es wird nur angezeigt ob die beiden inhaltlich völlig Dateien identisch sind. Interessant wird diese Funktion jedoch bei inhaltlich unterschiedlichen Dateien die in einem Zusammenhang stehen wie z.B. eine Originalquelle und der geänderte, gepatchte Quelltext.
Suchbefehl „find“ in der Linux-Konsole (II)
Im ersten Teil dieser Serie habe ich bereits eine ganze Reihe an eher unbekannteren Suchbefehlen behandelt aber den wichtigsten Befehl find ignoriert. Dies war kein böser Wille sondern find ist derartig mächtig und umfangreich, dass man ihn separat behandeln muss. Auch erhebt dies hier nicht einmal im Ansatz den Anspruch auf Vollständigkeit sondern soll einen groben Überblick liefern.
Im Prinzip sucht find ab einem bestimmten Verzeichnis, kann auch das Wurzelverzeichnis / sein, ein bestimmtes Muster und macht eine bestimmte Aktion mit dem Ergebnis – oft einfach nur das Ergebnis auf stdout ausgeben. Nun gilt in der Unix/Linux-Welt das Prinzip „Alles ist eine Datei“ und das wird recht konsequent umgesetzt und dadurch kann man durchaus auch nach Gerätedateien oder Sockets suchen denn sie sind auf dem Dateisystem eine Datei.
Suchbefehle in der Linux-Konsole (I)
Ich wage mich jetzt einmal an das Thema suchen in der Linux-Shell. Das Thema ist letztlich ein Fass ohne Boden da alleine der Befehl find sehr mächtig ist und man durch die möglichen Optionen schier erschlagen wird. find ist sicher der Befehl der am bekanntesten ist aber es gibt eine ganze Reihe nützliche und spezialisierterer aber deutlich unbekanntere Befehle die einem das Leben erleichtern wenn man etwas im Dateisystem sucht. Der Befehl find wird hier nicht behandelt sondern wird separat im zweiten Teil dieser Serie behandelt. Die hier behandelten Befehle sind:
- grep
- which
- whereis
- apropos
- whatis
- locate
Der unbekannte Befehl – „reset“ der Rettungsanker
Wem ist das noch nicht passiert und hat versucht eine binäre Datei mit cat oder less versucht anzuzeigen? Das Ergebnis ist dann man erhält eine unlesbare Kolonne an mehr oder minder seltsamen ASCII-Zeichen:
▒AE �-@s��@A�] J ,.`s��Wc�D▒�D �h▒ADD.�s��]B�E▒�E �E(�H0�H8�G@j8A0A(B B▒B�.�s���.�s��b�a�lr�l�r�h`r�h s�� �0�`�`�v��p�p���0����q0�p���m�um@u`� ����� �����@�p��� �0�@���о�� �����@���p���tL�Ӌ��������������������t�f����▒� �%�,�7�>�G���a8�bU�d_�De��o����h��i��k��n��G��qҌrf�sI�wڌA��B��F����� �H���#��(�I���/�L;�NC�Q���N�R{��X��m��k�Tt��s��������~����Z�����~�����}��� �����ό���� �>�������▒�� ���#�&�)�,�/���2������8�=�����;��%�2�?�L�S�8��[�v �l▒��� � @ � ▒ � �*P ▒������o����o���o����o��6@F@V@f@v@�@�@�@�@�@�@�@�@AA&A6AFAVAfAvA�A�A�A�A�A�A�A�ABB&B6BFBVBfBvB�B�B�B�B�B�B�B�BCC&C6CFCVCfCvC�C�C�C�C�C�C�C�CDD&D6DFDVDfDvD�D�D�D�D�D�D�D�DEE&E6EFEVEfEvE�E�E�E�E�E�E�E�EFF&F6FFFVFfFvF�F�F�F�F�F�#����?������Չe�����ˍȍȍԍڍ����������`�%�7a5f86cd6394e8f583c14d786d13b3bcbe051b87.debug�cU".shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.plt.data.bss.gnu_debuglink ���� !��$4��>o ��` ▒F �N���o[���o��jhh▒tB�*�*� ▒~@@y @ @���F���F�F�%��l�l �pp)Q �,�,��(�(�����8 �����#�h &�� ��4
Spamassassin – warning: description exists for non-existent rule USER_IN_WELCOMELIST_TO
Seit ein paar Tagen hatte ich auf dem Server unter Debian Buster immer wieder folgende Fehlermeldungen beim täglichen Update von Spamassassin der Nachts per Cron-Job startet:
/etc/cron.daily/spamassassin: Failed to set filetime 1594704651 on outfile: Die Operation ist nicht erlaubt Failed to set filetime 1594704651 on outfile: Die Operation ist nicht erlaubt Failed to set filetime 1594704651 on outfile: Die Operation ist nicht erlaubt Failed to set filetime 1594704652 on outfile: Die Operation ist nicht erlaubt config: warning: description exists for non-existent rule USER_IN_ALLOWLIST_TO channel: lint check of update failed, channel failed sa-update failed for unknown reasons
Der unbekannte Befehl – „pidof“, „pkill“, „pgrep“ die Prozessbeherrscher
In diesem Teil fasse ich gleich drei Befehle zusammen da sie von der Funktion her sehr verwandt sind. Alle diese Befehle sind für das Verwalten und Kontrolle von Prozessen mit Hilfe des Prozessnamens zuständig. Intern werden Prozesse über die PID (process identifier) verwaltet – eine mehr oder minder vom Betriebssystem zufällige aber zum aktuellen Zeitpunkt einmalig vergebene Prozessnummer. Wenn man sich mit ps die Prozesse anzeigen lässt erhält man neben anderen Informationen auch die Prozessnummer:
$ ps aux | grep sshd root 974 0.0 0.0 15948 1248 ? Ss Jul09 0:00 /usr/sbin/sshd -D max 15984 0.0 0.0 6088 892 pts/6 S+ 18:07 0:00 grep sshd
Der Übersichtlichkeit wurde hier im Beispiel nach dem Prozess für den ssh-Daemon (sshd) mit den Optionen für alle Prozesse gesucht. Die PID 974 steht hier für den Daemon und 15984 für den Suchprozess selber. Auch top, htop usw. eignen sich für die Anzeige der PID.