Das Scrollrad unter Linux beschleunigen

Wie ich bereits im letzten Artikel beschrieben habe, wechsele ich derzeit zu Linux als mein Hauptbetriebssystem. Leider gibt es dabei immer wieder kleinere Stolpersteine, die die Arbeit mit dem System nervig machen. Eines davon war die absolut träge Scrollgeschwindigkeit innerhalb des Systems. Nicht nur, dass man sich dadurch durch längere Webseiten und Terminalsessions krampfen muss - das System fühlt sich dadurch oft einfach lahm und überfordert an.

Auf der Suche danach, diesen Missstand zu beseitigen, wanderte ich natürlich erst einmal in die Systemeinstellungen, die bzgl. der Einstellungsmöglichkeiten der Maus, nennen wir es "spartanisch", ist. Von Themen wir Beschleunigung ist man hier offenbar meilenweit entfernt.

Gnome Mauseinstellungen

Also begann ich damit, mich durch Google zu graben. Als erstes stolperte ich über Beschreibungen zur Nutzung von "xinput". Also fix installiert und per "xinput list" erst nach der ID des Devices gesucht und anschließend per "xinput list-props " die möglichen Optionen durchforstet. Leider fand ich in der Auflistung nichts, was nach der Scrollgeschwindigkeit aussah oder wenigstens wie etwas, was dem nahe kam, was laut den Foreneinträgen der korrekte Konfigurationswert hätte sein sollen.

Noch gab ich aber nicht aus und suchte weiter. Dabei stieß ich auf das Tool "imwheel", das genau das tun wollte, was ich erreichen wollte. Es funktioniert allerdings nicht out-of-the-Box und die meisten Artikel, die ich zuerst fand, bezogen sich darauf, wie man mit imwheel zusätzliche Maustasten unter Linux zum Laufen kriegt. Erst ein halbwegs neuer Artikel half mir dann tatsächlich weiter.

Zuerst einmal muss man imwheel installieren:

1
sudo apt-get install imwheel

Anschließend muss man eine Konfigurationsdatei unter "~/.imwheelrc" erstellen:

1
2
3
4
5
6
7
".*"
None,      Up,   Button4, 3
None,      Down, Button5, 3
Control_L, Up,   Control_L|Button4
Control_L, Down, Control_L|Button5
Shift_L,   Up,   Shift_L|Button4
Shift_L,   Down, Shift_L|Button5

Der Wert ".*" sorgt dafür, dass imwheel in allen Anwendungsfenstern aktiv ist. Man kann hier auch alternativ Fensternamen eintragen, um die Funktion von imwheel auf einzelne Anwendungen zu beschränken. Die einzelnen Zeilen sind nun Ersetzungen, die von imwheel durchgeführt werden. "Button4" ist das nach-oben-scrollen der Maus, "Button5" das nach-unten-scrollen. Diese werden hier durch 3-faches Drücken der Up- bzw. Down-Taste ersetzt. Das gleiche geschieht für Situationen, in denen die Ctrl- bzw. Shift-Taste gedrückt wird.

Nun muss man diese Ersetzung nur noch aktivieren:

1
imwheel --kill --buttons "4 5"

Mit --kill werden alle bereits laufenden Instanzen von imwheel beendet, damit sich unterschiedlich konfigurierte Instanzen nicht in die Quere kommen können. Die Angabe --buttons "4 5" sorgt dafür, dass imwheel sich nur um die Behandlung des Scrollrads kümmert. Man kann über imwheel auch die Scrollrichtung umkehren - entweder, indem man die oben stehende Konfigurationsdatei umschreibt oder aber, indem man einfach den zusätzlichen Parameter --flip-buttons verwendet:

1
imwheel --kill --buttons "4 5" --flip-buttons

Das ganze funktioniert und Debian mit Gnome schon ganz gut - funktioniert aber nur bis zum nächsten Neustart. Um die Änderung dauerhaft einzurichten, muss man noch dafür sorgen, dass imwheel beim Hochfahren aktiviert wird. Hierfür bietet sich an, die Autostart-Funktion von Gnome zu verwenden. Um das zu erreichen, legt man die Datei "~/.config/autostart/imwheel.desktop" an und befüllt diese wie folgt:

1
2
3
4
5
6
7
8
[Desktop Entry]
Name=imwheel
Comment=Use imwheel to increase scroll speed
Exec=/usr/bin/imwheel --kill --buttons "4 5"
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=10

Auch hier kann man optional den Parameter --flip-buttons verwenden, um die Scrollrichtung umzukehren:

1
2
3
4
5
6
7
8
[Desktop Entry]
Name=imwheel
Comment=Use imwheel to increase scroll speed
Exec=/usr/bin/imwheel --kill --buttons "4 5" --flip-buttons
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=10

Ich muss gestehen, dass ich ziemlich genervt bin, dass man halbe Handstände vollführen muss, nur um das Scrollrad zu beschleunigen. 🙄

Scrollende Grüße, Kenny

Emojis unter Linux nutzen

Da Apple sich aus meiner Sicht mit den MacBooks in die falsche Richtung entwickelt, arbeite ich derzeit an einem Soft-Exit aus der macOS-Welt. Da ich sowieso noch einen Tower-PC umher stehen hatte, habe ich mir deshalb gedacht "Warum nicht den ersten Schritt gehen und einen alltagstauglichen Rechner mit Linux bestücken und anfangen, diesen häufiger zu nutzen?".

Genau dabei bin ich gerade. Ich habe mir ein hübsches neues Debian 9 eingerichtet, zwei ordentliche Monitore besorgt und nutze den Desktoprechner nun als Linux-only Haupt-PC. Das klappt soweit auch ganz gut.

Eine Sache hat mir als jahrelanger MacBook- und iPhone-Nutzer jedoch gefehlt: Emojis! 😭

Also machte ich mich auf die Suche nach einer Möglichkeit, Emojis zu verwenden. Die meisten Lösungen, die ich gefunden habe, waren jedoch eher suboptimal - vor allem unterstützte keine davon farbige Emojis in der Auswahlansicht. Und Schwarz-/Weiß-Emojis unterscheiden zu wollen, ist nahezu ein Ding der Unmöglichkeit.

Glücklicherweise bin ich über diesen Artikel gestolpert, der von einem Emoji-Picker handelt, der zu Ubuntu-14.04-Zeiten für Unity 7 entwickelt worden ist. Glücklicherweise ist der EmojiOne Picker for Ubuntu auch unter Debian 9 mit Gnome lauffähig.

Um das zu bewerkstelligen, muss zuerst einmal das aktuelle Release in der Version 0.1 heruntergeladen und entpackt werden. Dieses enthält die Datei "install.sh". Dieser Installer kann als Root aufgerufen werden, um den Emoji-Picker für alle Nutzer zu installieren. Oder aber man startet ihn als normaler Nutzer, damit der Emoji-Picker nur für diesen spezifischen Nutzer installiert wird.

Leider war es bei mir an der Stelle noch nicht getan. Um die Integration in die Oberfläche zu erhalten, nutzt das Tool die Library "AppIndicator 3.0". Um diese zu installieren, muss man erst einmal den korrekten Paketnamen ausfindig machen. Die Installation kann folgendermaßen angestoßen werden:

1
sudo apt-get install gir1.2-appindicator3-0.1

Nach einem Reboot erhält man nun in der unteren linken Bildschirmecke einen Eintrag für den Emoji-Picker, der sich wunderbar aufklappen lässt, um das passende Emoji rauszusuchen - in Farbe und bunt.

EmojiOne Picker Ubuntu

Leider ist das Tool nicht ganz so komfortabel wie die Emoji-Eingabe bei macOS. Anstatt das Menü über eine Tastenkombination aufzurufen, muss man händisch mit der Maus in den Bildschirmbereich fahren. Und im Gegensatz zu macOS wird das gewählte Emoji lediglich in die Zwischenablage kopiert, anstatt direkt ins aktive Textfeld geschrieben zu werden. Aber zumindest scheint es erst einmal besser zu sein, als alles, was ich bisher sonst so unter Linux gesehen habe. Leider.

Emoji-Grüße, Kenny ✌😁

Das Leben geht weiter…

Die letzten Wochen und Monate waren reichlich mit Arbeit gefüllt, sodass der Blog leider ziemlich kurz gekommen ist. Deshalb wollte ich an dieser Stelle einmal ein Lebenszeichen von mir geben... 😀

Nachdem ich im April 2016 einen neuen Job als Security Engineer angenommen hatte, bin ich in dem Unternehmen inzwischen zum Leiter der Informationssicherheit (neudeutsch: Chief Information Security Officer) aufgestiegen. Meine Arbeit hat sich vom Technischen mehr ins Theoretische verlagert. Allerdings sehe ich dadurch auch einige neue Aspekte im Bereich der Unternehmensleitung und -gestaltung, was ja auch mal ganz spannend ist.

Im Zuge dessen habe ich für mich eine neue Form der Selbstorganisation entdeckt, die mir dabei hilft, den Haufen an Aufgaben zu organisieren und zu planen. Das Vorgehen würde ich euch bei Gelegenheit einmal vorstellen wollen, da es für den einen oder anderen sicherlich spannend sein könnte. 🙂

Darüber wurde ich nun in die Lage versetzt, einmal selbst Personalentscheidungen zu treffen. So suche ich für mein Securityteam derzeit Verstärkung in Form eines Security Engineers (m/w). Bei dieser Suche sind mir einige Dinge aufgefallen, die mir bei Bewerbungsunterlagen und -gesprächen zusagen bzw. nicht zusagen. Ein paar davon werde ich demnächst mal zusammenfassend verbloggen.

Zudem habe ich dieses Jahr einen Traum wahr werden lassen, habe Berlin den Rücken gekehrt und wohne nun seit ein paar kurzen Monaten im beschaulichen Potsdam. Die tägliche Anfahrt zum Job in Berlin ist zwar recht lang, aber es lohnt sich einfach, seine Freizeit in einer wesentlich schöneren Gegend verbringen zu können. Der Umzug ging mit einer vollständigen Neumöblierung einher, die - dank IKEA - jedoch recht schlicht und funktional ausgefallen ist.

Hier und da bastele ich an kleineren, privaten IT-Projekten. Wirklich vorzeigbar ist davon jedoch noch nichts. Wenn es in dem Bereich mehr Fortschritt gibt, werde ich es natürlich wieder verbloggen. 😉

Lebendige Grüße, Kenny

Shared-Secrets: Geheimnisse über verschlüsselte Links austauschen

Im Internet gibt es inzwischen eine größere Anzahl an Diensten, über die es möglich ist, Texte auszutauschen - der bekannteste davon dürfte wohl Pastebin.com sein. Einige davon haben zudem begonnen, damit zu werben, dass man über sie Geheimnisse austauschen kann, die wahlweise verschlüsselt auf dem Server abgelegt werden oder nur einen einzigen Abruf des Geheimnisses ermöglichen - beispielsweise OneTimeSecret.com.

Auf Arbeit haben wir vor kurzem nach einer Möglichkeit gesucht, Informationen möglichst sicher an einen Empfänger zu übertragen, ohne, dass auf dessen Seite Software installiert oder eine spezifische Konfiguration vorgenommen werden muss. Dabei bot sich solch ein einfacher Webdienst regelrecht an.

Allerdings sahen wir die vorhandenen Lösungen als eher kritisch an - denn obwohl ein Passwortschutz besteht, werden die Informationen (meistens unverschlüsselt) auf dem Server abgelegt. Dadurch hat der entsprechende Betreiber die Möglichkeit, auf sie zuzugreifen - natürlich auch jeder Hacker, dem es gelingt, in den jeweiligen Dienst einzudringen. Eine zusätzliche Verschlüsselung wiederum würde die Hürde auf der Seite des Empfängers wieder erhöhen - eine Alternative musste her.

Also begann ich damit, eine neue Lösung zu implementieren - das Ergebnis der Entwicklung wurde als Shared-Secrets auf Github veröffentlicht. Zudem ist in unserem Firmenblog ein begleitender Artikel veröffentlicht worden.

Im Gegensatz zu den üblichen Lösungen im Netz haben wir dabei auf mehrere Faktoren Wert gelegt:

  • Die Geheimnisse sollen nicht auf dem Server gespeichert werden.
  • Die Geheimnisse sollen nur ein Mal abrufbar sein, um einen Vertraulichkeitsverlust erkennen zu können.
  • Es muss möglich sein, ein Geheimnis zu teilen, ohne, dass der Server es lesen kann.
  • Es muss möglich sein, ein Geheimnis zu teilen, ohne, dass der Server bei der Verteilung involviert ist.

Dabei herausgekommen ist folgende Lösung: Das zu teilende Geheimnis wird via GPG verschlüsselt und Base64-encodiert. Der Base64-encodierte String wird in eine URL überführt. Bei Aufruf der URL wird der Base64-encodierte String an einen Server übertragen, der ihn decodieren und entschlüsseln kann. Das entschlüsselte Ergebnis wird anschließend angezeigt. Die Prüfsumme des Base64-encodierten Strings wird in einer Datenbank abgelegt. Zudem besteht die Möglichkeit, das Geheimnis vor dem Versand an den Server symmetrisch zu verschlüsseln und nach dem Abruf vom Server wieder zu entschlüsseln.

Auf diese recht einfache Weise konnten alle Designziele erfüllt werden:

  • Dadurch, dass das verschlüsselte Geheimnis direkt in der URL enthalten ist, muss es nicht auf dem Server gespeichert werden. Auch nach einem Abruf wird lediglich die Checksumme der URL und nicht das eigentliche Geheimnis gespeichert.
  • Durch das Speichern der Checksummen von bereits abgerufenen URLs ist es möglich, zu erkennen, wenn ein Geheimnis mehrfach abgerufen werden soll. Dieser Abruf kann dann unterbunden werden.
  • Mit der Möglichkeit, ein Geheimnis zusätzlich lokal zu ver- und entschlüsseln, besteht die Möglichkeit, ein Geheimnis auszutauschen, ohne, dass der Server dieses im Klartext lesen kann. Das verwendete Passwort kann bspw. über einen zweiten Kanal übertragen werden.
  • Dadurch, dass für die Erstellung der URL Standardverfahren eingesetzt werden, können diese lokal mit Hilfe einer einzelnen Shell-Befehlszeile erzeugt werden. Das erspart zudem die Bereitstellung einer API.

Ein weiterer Vorteil der gewählten Lösung ist, dass der Speicherbedarf recht gering ausfällt. Es muss großteilig nur die Checksumme eines tatsächlich abgerufenen Geheimnisses gespeichert werden. Geheimnisse, für die URLs erzeugt wurden, die aber nicht abgerufen werden, verbrauchen daher im Umkehrschluss auch keinen Speicherplatz.

Getestet werden kann die Anwendung unter secrets.syseleven.de - der Referenzinstallation der Anwendung. Über sie wird auch sichergestellt, dass es möglich ist, mit einem korrekten Setup ein A+ Rating im Mozilla Observatory zu erhalten.

Wenn ihr Feedback oder Verbesserungsvorschläge habt, hinterlasst einfach einen Kommentar. 🙂

Ausgetauschte Grüße, Kenny

CentOS 7 mit Two-Factor-Authentication absichern

Vor einiger Zeit hatte ich mal beschrieben, wie man SSH unter Debian mit Two-Factor-Authentication absichern kann. Das wollte ich nach meiner Migration zu CentOS 7 natürlich auch wieder haben. Allerdings musste ich feststellen, dass es für CentOS 7 keine aktuellen Pakete des PAMs gibt. So musste ich wohl oder übel das ganze selbst kompilieren. Die Fallstricke, die mir dabei begegnet sind, wollte ich einfach mal an dieser Stelle dokumentieren.

Bevor man loslegen kann, benötigt man zuerst einmal ein paar zusätzliche Pakete:

1
sudo yum install autoconf automake libtool make pam-devel unzip wget zip

Nun können wir mit der eigentlichen Installation beginnen:

1
2
3
4
5
wget https://github.com/google/google-authenticator/archive/master.zip
unzip ./master.zip
cd ./google-authenticator-master/libpam
./bootstrap.sh
./configure

Bis hierhin sollte alles funktioniert haben. Leider enthält die erstellte Konfiguration einen kleinen Fehler. Deshalb müssen wir händisch an den Anfang der Datei "./Makefile" folgende Zeile einfügen:

1
LDFLAGS="-lpam"

Nun kann es mit dem Kompilieren weitergehen:

1
2
3
4
5
6
7
make
sudo make install
sudo cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security
make clean
cd ../..
rm ./master.zip
rm -R ./google-authenticator-master

Ab hier geht es weiter, wie bisher auch schon. Zuerst legen wir nun einen Gruppe "google-auth" an:

1
sudo groupadd google-auth

Zudem ändern wir in der Datei "/etc/ssh/sshd_conf" eine Einstellung:

1
ChallengeResponseAuthentication yes

Danach schreiben wir folgendes in die Datei "/etc/pam.d/sshd" (z.B. unter die restlichen "auth"-Einträge):

1
2
auth [success=1 default=ignore] pam_succeed_if.so user notingroup google-auth
auth required pam_google_authenticator.so

Mit einem Restart des SSH-Servers sind die Änderungen aktiv:

1
sudo systemctl restart sshd.service

Nun müssen die Nutzer, für die die Two-Factor-Authentication aktiviert werden soll, das Script zur Einrichtung der Two-Factor-Authentication in ihrem Account aufrufen:

1
google-authenticator

Und abschließend müssen diese Nutzer in die Gruppe "google-auth" aufgenommen werden:

1
sudo usermod -a -G google-auth <username>

Das war's! Mit diesen Schritten lässt sich unter CentOS 7 eine Two-Factor-Authentication einrichten. 🙂

Zwei-Faktor-Grüße, Kenny

Seite 1 von 87123...Letzte »