Kategorie: Betriebssysteme

Alles rund um Betriebssysteme

GnuPG Smartcard mit Ubuntu

Nachdem ich doch relativ viel Zeit damit verbracht habe meine GPG Smartcard mit Ubuntu zu verheiraten hier eine kurze und einfache Anleitung:

1. Ganz normal diese Anleitung hier von der fsfe befolgen. Wobei sie sich eigentlich so zusammenfassen lässt:

wget -O udev.sh "http://wiki.fsfe.org/Card_howtos/Card_reader_setup_%28udev%29?action=AttachFile&do=get&target=udev.sh"
sudo bash udev.sh

Dabei werden udev regeln erstellt um die gängigsten Cardreader für die neu angelegte Gruppe „scard“ nutzbar zu machen.

2. Als nächstest fällt auf das leider trotz dieser Anleitung kein erfolg zu sehen ist 🙁 Das liegt daran das Ubuntu leider einen nicht funktionierenden Ersatz für den gpg-agent mitliefert. Kurzfristig lässt sich dieser zum testen so aushebeln:

GPG_AGENT_INFO=""
gpg2 --card-status

dies ist nur leider keine langfristig brauchbare Lösung. Da hilft wie im Bug beschrieben ein:

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-gpg.desktop ~/.config/autostart/
echo "X-GNOME-Autostart-enabled=false" >> ~/.config/autostart/gnome-keyring-gpg.desktop

Nach einer erneuten Anmeldung sollte jetzt alles funktionieren.

Festplatten Löschen

Ich musste letztens eine größere Menge Festplatten ins Nirvana befördern hier meine zugegeben nicht perfekte aber deutlich arbeitserleichternde Methode… Wer sich über den Wust wundert, das sind gewachsene Strukturen 🙂

Ich kann mit diesem Skript im Grunde beliebig viele Festplatten parallel mit shred löschen und zum Abschluss noch die SMART Daten als .txt nach /var/www legen. Dabei fordert einen das Script dazu auf fertige Platten zu tauschen.

Wem es nützt der möge sich bedienen. Aber bitte mit verstand:

#!/bin/bash
#Platte nuken und smart auslesen mit hotswap
#bitte mit vorsicht verwenden dieses skript ist dafür gemacht daten zu vernichten!

#Seriennummer der Systemplatte (wird nicht angefasst) Alle anderen Schon!
SYSTEMDRIVE="PVF904ZFR3RTWN"
#Anzahl der zu startenden Jobs
JOBS=3
#SMAR Daten Zielverzeichnis
SMARTFOLDER=/var/www
#Tempverzeichnis anlegen
TEMPDIR=/tmp/hddclean
#TEMPDIR=$(mktemp -d)

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

mkdir -p $TEMPDIR
echo "Warning this script was designed to destroy data! (Hopefully the right)..."
read -p "Press any key to continue... "

nuke_instance()
{
 jobnr=$1
 while true; do
  sleep $jobnr
  for HOSTA in /sys/class/scsi_host/host?/scan; do
   echo "- - -" > $HOSTA
  done

  for PLADDE in /dev/sd?; do
   if [[ $(mkdir $TEMPDIR/$(basename $PLADDE) 2>&1) ]]; then
    echo Job $jobnr: $PLADDE is locked...
    sleep 1
   else
    echo Job $jobnr: Working on $PLADDE...
    SERIAL=$(smartctl -a $PLADDE | grep "Serial Number" | tr -d " " | cut -d":" -f2)
    sleep $jobnr
    if [ $SERIAL ]; then
     if [[ $(mkdir $TEMPDIR/$SERIAL 2>&1) ]]; then
      echo Job $jobnr: $SERIAL is locked...
     else
      if [ $SERIAL == $SYSTEMDRIVE ]; then
       echo Job $jobnr: $PLADDE is my system disk no way...
       rm -rf $TEMPDIR/$SERIAL
      else
       if [ -e $SMARTFOLDER/$SERIAL.txt ];then
        echo Job $jobnr: $PLADDE is already done... please replace disk $SERIAL!
        echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL
       else
        echo Job $jobnr: $PLADDE with serial number $SERIAL will be nuked now...
        shred $PLADDE -f -z -n1
        smartctl -a $PLADDE > $SMARTFOLDER/$SERIAL.txt
        echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL
       fi
      fi
     fi
    else
     echo Job $jobnr: no disk to work on!
    fi
    rm -rf $TEMPDIR/$(basename $PLADDE)
   fi
  done
  sleep 300
 done
}

for inst in $(seq 1 $JOBS); do
 nuke_instance $inst &
done

p.s. Ich bin nicht schuld wenn sich irgend jemand die falschen Daten weg schießt…

Sieve

Sieve ist eine Scriptsprache zur serverseitigen Filterung von E-Mails. Das heißt die Mails werden bereits beim eintreffen auf dem Mailserver in unterschiedliche IMAP-Ordner einsortiert. Ursprünglich wurde diese Technik für den Cyrus IMAPD entwickelt, wurde jedoch auch für andere Server implementiert.

Ich verwende z.b. Dovecot in Kombination mit Postfix. Um Sieve verwenden zu können muss der LDA vom Dovecot verwendet werden dazu muss in der Postfix Konfiguration die Zeile mailbox_command welche beispielsweise so aussehen kann:

mailbox_command = procmail -a “$EXTENSION” DEFAULT=$HOME/mails/

in:

mailbox_command = /usr/lib/dovecot/deliver

geändert  werden.
Nun muss noch in der Dovecot Konfiguration, welche üblicherweise unter /etc/dovecot/dovecot.conf zu finden ist Der LDA und Sieve aktiviert werden:

protocol lda {
# Address to use when sending rejection mails.
postmaster_address = postmaster@b9d.de
…
# Enabling Sieve plugin for server-side mail filtering
mail_plugins = cmusieve
}

Jetzt kann in der Datei ~/.dovecot.sieve ein Sievescript abgelegt werden nach dessen regeln Mails zukünftig gefiltert werden.

Eine einfürung in die grundlagen von Sieve bietet die Wikipedia. Ich verwende Sieve Hauptsächlich um mich vor einer Überschwemmung meines Posteingangs durch Mailinglisten zu schützen, indem ich diese jeweils in einen eigenen Ordner sortieren lasse.

IPv6

Seit neustem bin ich dank SixXS mit IPv6 bewaffnet. Das „IPv6-Internet“ ist aber noch ziemlich  tot.