Limetten-HeaderText-Header

Linux Sicherheit

Speichermedien zuverlässig löschen

  • dd if=/dev/null of=/dev/sda Überschreibt die Platte mit Nullen.
  • dd if=/dev/null of=file.dat bs=1Mx1024 Schreibt eine Datei mit Nullen (Größe 1M x 1000 = 1GB) in den aktuellen Ordner, bzw.
  • dd if=/dev/urandom | pv | dd of=file.dat bs=1M Schreibt Zufallsdaten und gibt dabei den Durchsatz an (pv).
  • badblocks -c 10240 -wsvt random /dev/sda Überschreibt die Platte mit Werten, die keine guten Zufallsdaten sind. Schneller als /dev/urandom!

Unnötige Dienste deaktivieren

Bluetooth

  • hciconfig hci0 down Schaltet das Interface aus.
  • echo disable > /proc/acpi/ibm/bluetooth Setzt den korrekten Status (für ThinkPads)

Offene Ports

  • netstat -npl Listet alle Ports auf, auf denen Dienste lauschen.

System-Hardening

Users and logins

Datei Parameter empfohlene Einstellung Standardeinstellung
/etc/adduser.conf DIR_MODE 0700 0755
/etc/login.defs SULOG_FILE /var/log/sulog auskommentiert
  PASS_MAX_DAYS 365 9999
/etc/ssh/sshd_config PermitRootLogin no  
  MaxAuthTries 5 5
  AllowUsers andreas georg nicht gesetzt (Liste mit Leerzeichen separiert!)

Webserver

Datei Parameter empfohlene Einstellung Standardeinstellung
/etc/apache2/sites-available/site.conf ServerSignature off on
  ServerTokens Prod Full
/etc/php5/apache2/php.ini open_basedir /var/virtual_servers auskommentiert
  include_path ?? ??

Mountoptionen in /etc/fstab

Vorschlag:
  • nosuid Für /boot, /home, /opt, /var
  • noexec Für /boot (nicht für /var!)

Weitere Informationen:

Krypto

Passwörter erzeugen und verwalten

Praktische Funktionen zur Erzeugung von "zufälligen" Passwörtern:

  • dd if=/dev/urandom of=<keyfile> bs=512 count=4 Speichert einen Pseudo-Zufallsstring in keyfile.
  • tail -f /dev/urandom > <datei> Speichert einen Pseudo-Zufallsstring in datei.
  • md5sum <datei> Berechnet die md5 -Checksumme einer Datei.

Ein netter Service zum Vergleich von Passwortsicherheit: HammerOfGod Pfeil Passwörter merkt man sich nicht: http://www.keepassx.org/ Pfeil

Festplatte verschlüsseln

Siehe eigene Seite: Festplattenverschlüsselung

Dateien verschlüsseln

Hier ist das Programm aespipe zu empfehlen.

SSH

Ein gutes Tutorial zur Einrichtung von Public-Key-Authentication für ssh: http://sial.org/howto/openssh/publickey-auth/ Pfeil

Die wichtigsten Befehle:

  • ssh-keygen -t rsa -b 1024 Erzeugt ein Schlüsselpaar vom Typ rsa (alternativ auch dsa möglich) mit 1024 Bit Schlüssellänge.
  • echo rsa_key > ~/.ssh/authorized_keys Trägt den öffentlichen (!) Teil des Schlüssels serverseitig ein. Evtl. muss noch in der ~/.ssh/ssh_config die Public-Key-Authentifizierung aktiviert werden:
Host *
RSAAuthentication yes
PasswordAuthentication no
UsePAM no
# IdentityFile ~/.ssh/rsa_key_new
  • Global wird der ssh-Login in der Datei /etc/ssh/sshd_config configuriert. Hier sollte für reine Public-Key-Authentifizierung stehen:
PermitRootLogin no
RSAAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM no
  • ssh-keygen -f /home/andreas/.ssh/known_hosts -R <server> Entfernt einen Fingerprint aus der lokalen Konfiguration.

OpenSSL

Die Erzeugung von Zertifikaten unter Linux funktioniert z.B. so (vgl. http://www.html-world.de/program/apache_9.php Pfeil):

  • openssl genrsa -out apache.key -des3 2048 Erstellt einen RSA-Schlüssel.
  • openssl req -new -x509 -days 1560 -key apache.key -out apache.crt Erstellt ein selbstsigniertes Zertifikat auf Basis des Schlüssels. Achtung: Der Common Name muss der Domainname des Servers sein!
  • openssl rsa -in apache.key -out apache.pem Wandelt das Zertifikat in eine unverschlüsselte Version für den Einsatz am Server um.
    Dann sollte aber das Zertifikat durch das Dateisystem geschützt werden!
#ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
#Leichte Beschleunigung bei der SSL Session Cache
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache

<VirtualHost _default_:443>
  DocumentRoot "/usr/local/apache2/htdocs"
  ServerName 192.168.0.11:443
  ServerAdmin ServerAdmin@domain1.org
  ErrorLog /usr/local/apache2/logs/error_ssl_log
  TransferLog /usr/local/apache2/logs/access_ssl_log
  # SSL Einschalten
  SSLEngine on
  # Das Zertifikat für den Server
  SSLCertificateFile /usr/local/apache2/conf/server.crt
  # Die Schlüsseldatei für den Server
  SSLCertificateKeyFile /usr/local/apache2/conf/server.key
  
  # Bereitstellung der Standardvariablen für PHP, SSI und CGI
  SSLOptions +StdEnvVars
  
  
    # Bereitstellung der Standardvariablen für das CGI Verzeichnis
    SSLOptions +StdEnvVars
  

  # Eine eigene SSL Logdatei
  CustomLog ssl_log "$t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x %b"
</VirtualHost>

PGP for Email

Ein gutes Tutorial zur Erzeugung und Verwendung von PGP-Schlüsseln findet sich unter http://www.gnupg.org/howtos/de/GPGMiniHowto.html Pfeil.

Firewalls

Rechtemanagement

Cracking

WPA

Hier ist eine Seite, die kommerziell WPA-Keys mit Wörterbuchangriff sucht: http://www.wpacracker.com Pfeil. Ein vielleicht hilfreicher Blog ist http://stacksmashing.net/ Pfeil.

Und hier schließlich ein HowTo Pfeil

Password-Hashes

Ein guter Artikel zum Thema: The Gawker desaster Pfeil

Zip-Archive

Siehe z.B. fcrackzip. Weitere Infos: Projekt-Homepage Pfeil oder Ubuntu-Geeks Pfeil

Interessante Seiten