DNS – Überblick einer Domain verschaffen

Mit der Tool Website DNSDumpster.com kann man sich sehr schnell einen Überblick über eine Domain verschaffen. Mit der Eingabe einer Domain bekommt man die dort verwendeten DNS Server, dessen Standorte, Netzblock Eigentümer und einige Einträge die zuvor ermittelt und „gecached“ wurden.

Zum Schluss wird dies noch grafisch übersichtlich dargestellt. Einfach mal ausprobieren.

Mailadresse von Webseiten ermitteln

Hier möchte ich kurz aufzeigen, wie einfach es ist von Webseiten die Mailadresse auf dem Code zu extrahieren und evtl. für SPAM weiter zu verwenden.

curl -# https://www.daserste.de/specials/service/ard-links-adressen-100.html | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" | sort | uniq

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.

function get-mailadr-from-website {
	curl  -# $1 | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" | sort | uniq		 
}

Grafana – Tage bis Zertifikat ausläuft ermitteln

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.

Update Prüfung Debian/CentOS

Um in Grafana die verfügbaren Updates grafisch sichtbar zu machen, benötige ich unter Debian und CentOS ein entsprechendes Script welches mit die Anzahl der Updates ausgibt. Hier nun die beiden Varianten:

CentOS:

#!/bin/bash
VERSION="0.1"
SDATE=`date "+%Y-%m-%d %H:%M:%S"`
HNAME=`hostname -f`
DPATH=/root/grafana

function count-updates()
{
	anz=$( yum --security check-update 2>/dev/null|grep "package.*needed for security"|sed s/"No pack"/"0 pack"/g |awk -F" " '{ print $6 }')
	echo "$SDATE $anz"
}

count-updates > $DPATH/$HNAME-apt-updates.data

Debian:

#!/bin/bash
VERSION="0.1"
SDATE=`date "+%Y-%m-%d %H:%M:%S"`
HNAME=`hostname -f`
DPATH=/root/grafana

function count-updates()
{
	apt-get update  >/dev/null 2>&1
	anz=$( apt-get --just-print upgrade |grep Inst |wc -l )
	echo "$SDATE $anz"
}

count-updates > $DPATH/$HNAME-apt-updates.data

Merker: Postfix Kniffe

Hier möchte ich mir ein paar Postfix Schnipsel merken. Es wird klein Anfangen und hoffentlich immer mehr werden.

Anzahl der Mails in der Queue ermitteln:

mailq | tail -n 1 | cut -d " " -f 5

Mails der letzten Stunde anzeigen lassen:
3600 = 1 Stunde, 43200 = 12 Stunden, 86400 = 24 Stunden. Das maillog kann unter Debian z.B. auch mail.log lauten.

perl -MDate::Parse -ne 'print if/^(.{15})\s/&&str2time($1)>time-3600' /var/log/maillog |grep "Requested mail action okay" 

Inhalt einer Mail aus der Mailqueu ausgeben lassen:

postcat -q 4DF1C5607EF

Alle Mails vom MAILER-DAEMON aus der Mail-Queue entfernen:
(evtl. auch vom Autoresponder vmail)

for i in $(mailq |grep -i MAILER-DAEMON |awk -F" " '{print $1}'); do postsuper -d $i; done; 
for i in $(mailq |grep -i vmail\@ |awk -F" " '{print $1}'); do postsuper -d $i; done;  

Merker: Unifi CloudKey Login zurücksetzen

Mir ist es nun schon zweimal passiert, dass das Login zur Verwaltung des Unify CloudKey nicht mehr klappte. Ich konnte mich mit dem mir bekannten Passwort auf dem Controller anmelden, aber leider nicht mehr auf den CloudKey und eventuelle Update einspielen zu können.

Unifi CloudKey Webinterface

Mit der Konbination aus Benutzer und Passwort kann man sich immer noch mittels SSH anmelden. Somit bleibt einem noch folgender Kniff übrig. Dazu melden wir uns auf der Console an und geben folgenden Befehl um den ClouKey Benutzer heraus zu bekommen ein:

mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"

Im zweiten Schritt kann man mit nachstehendem Einzeiler das Passwort auf „passwort“ zurücksetzen:

mongo --port 27117 ace --eval 'db.admin.update( { "name" : "admin" }, { $set : { "x_shadow" : "$6$9Ter1EZ9$lSt6/tkoPguHqsDK0mXmUsZ1WE2qCM4m9AQ.x9/eVNJxws.hAxt2Pe8oA9TFB7LPBgzaHBcAfKFoLpRQlpBiX1" } } )'

Alternativ bleib nur eine Datensicherung der Site (über den Manager Link) zu erstellen, den CloudKey zurückzusetzen und die Datensicherung der Site wieder einspielen.
Anschliessend sollte man auf jeden Fall nach Updates der Firmware suchen und gleich einspielen.