Um den Fingerabdruck zur Authentifizierung im Terminal zu verwenden ist die Bearbeitung der Datei /etc/pam.d/sudo notwendig.
Am einfachsten ist es mit folgenden zwei Zeilen:
sudo su
Es wird nach nach dem Passwort des Administratornutzers gefragt. Nach Eingabe des Passwortes befindet sich das Terminal im „root“-Modus.
Mit dem zweiten Befehl wird in die Datei /etc/pam.d/sudo die Zeile auth sufficient pam_tid.so eingefügt. Evtl. muss der Zugriff in einem Sicherheitsfenter zusätzlich erlaubt werden.
Mit dem Modul Python-Paramiko kann man via Python SSH Befehle auf einem anderen Host ausführen lassen. Bei manchen Scripten, wie zum Beispiel Duply, werden neuere Versionen verlangt. Es kommt dann zu folgenden Fehlermeldungen:
/usr/lib/python2.7/dist-packages/paramiko/ecdsakey.py:164: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
self.ecdsa_curve.curve_class(), pointinfo
/usr/lib/python2.7/dist-packages/paramiko/kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
Abhilfe schafft das Python Modul aus den Buster Backports zu verwenden. Dazu muss entsprechend die sources.list bearbeitet werden.
pico /etc/apt/sources.list
Und eine weitere Zeile (sofern nicht schon vorhanden) hinzugefügt werden:
deb http://ftp.debian.org/debian buster-backports main
Wie immer müssen dann die Sourcen neu geladen werden und anschließend kann man von den Backports das aktuellere Modul installieren.
Unter IOS verwende ich sehr gerne die App „iSH“. Es ist zwar kein vollwertiger Ersatz meiner Shell unter OSX oder damals auf meinem Android Handy, aber immerhin besser als gar nichts.
Ich bin es gewohnt mit BASH als Standard Shell zu arbeiten. Unter „iSH“ ist ASH voreingestellt. Um dies zu wechseln kann wie folgt vorgegangen werden.
Zuerst installieren wir gleich mal bash und die Hilfen dazu.
apk add bash bash-completion bash-doc
Anschließend ändern wir mit passwd zunächst das Passwort von root.
passwd
Nachdem nun zweimal das Passwort korrekt eingegeben wurde ändern wir mit chsh die SHELL des Nutzers root.
chsh -s /bin/bash
Die Shell ist nun gewechselt und man kann das über die Variable SHELL prüfen.
echo $SHELL
Fertig!
Wer eine andere Shell bevorzugt, der kann auch nachschauen welche Shell zu verfügung stehen. Die funktioniert mit folgendem Befehl
Zuerst verwenden wir den Befehl curl um den html-Code auszugeben. Diesen „schicken“ wir dann weiter zu grep, der mit dem Pattern für gültige Mailadressen dieses aus dem Code extrahiert. Zur besseren Übersicht wird das Ergebnis von grep noch sortiert (sort) und eventuell doppelte Einträge entfernt (uniq).
Wer das öfters zu Demonstrationszwecken tun möchte, der kann auch gerne eine kleine Funktion in .profile abspeichern.
In letzter Zeit befasse ich mich öfters mit Grafana. Man kann damit recht einfach und übersichtlich Daten darstellen lassen. Mit folgendem Script ermittle ich das Ablaufdatum einen Webserverzertifikates.
Ich habe in einer MySQL Datenbank eine DB „Hosts“ und darin ist eine Tabelle Server enthalten. Ich verwende diese öfters und kann anhand der Spalte „certchk“ ermitteln ob ich das Zertifikat zu diesem Server ermitteln soll.
In der Variable „DOM“ stehen die Server, die in der Tabelle entsprechend eine 1 stehen haben. Zusätzlich steht in der Spalte „Port“ welcher Port (Standard 443) abgefragt werden soll. Später schreibe ich die Daten in die Tabelle „cerdata“ um diese in Grafana zu verwerten. Einmal in der Nacht mittels Crontab das Script aufrufen sollte reichen.
#!/usr/bin/env bash
SERVER=`mysql -h localhost --database=hosts -s -e "select Hostname from server where certchk = 1;"`
SDATE=`date "+%Y-%m-%d %H:%M:%S"`
for DOM in $SERVER
do
PORT=$(mysql -h localhost --database=hosts -s -e "select port from server where Hostname = '$DOM';")
ENDD=$( echo | openssl s_client -showcerts -servername google.com -connect $DOM:$PORT 2>/dev/null | openssl x509 -inform pem -noout -text | grep "Not After" |awk -F" " '{print $4" "$5" "$6" "$7 }')
ENDD=$( date -d "$ENDD" +%s )
NOWD=$( date +%s )
ANZ=$(( ( $ENDD - $NOWD )/(60*60*24) ))
mysql -h localhost --database=hosts -sN -e "INSERT INTO certdata ( Datum, Server, Counter) VALUES ('$SDATE', '$DOM', '$ANZ');"
done;
Wer mag kann in Grafana noch einen Alert, z.B. < 10 Tage, einrichten. Dann hat man ja noch 10 Tage Zeit sich um ein neues Zertifikat zu besorgen sofern man keines von Letsencrypt verwendet.
Manchmal möchte ich auf die schnelle wissen auf welchem Server eine bestimmte Kundendomain Liegt. Am einfachsten geht dies für mich, indem ich den Reversnamen der Domain-IP mir ausgeben lasse.
Manchmal muss man ein Bash Script Debuggen. Anstatt das Script mit vielen echo-Befehlen zu versehen, kann man auch einfach folgenden Schalter beim Start des Scripts verwenden:
Um diese Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwende ich Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in meiner Datenschutzerklärung.