

Werkzeuge: shred, wipe (auch rekursiv), srm
AUFGABEN:
-
Kopieren Sie die Datei /etc/hosts in Ihr Heimatverzeichnis und löschen Sie die Datei '~/hosts' mit shred.
# cp /etc/hosts ~
# shred -u ~/hosts
-
Kopieren Sie die Datei '~/.bash_history' in den Ordner '~/Dokumente' unter Umbenennung zu 'kit_history1.txt'. Löschen Sie dananch sicher ALLE Daten Ihrer History.
# cp .bash_history Dokumente/kit_history1.txt
# shred ~/.bash_history
# > .bash_history
# history -c
Hilfestellung: man-Pages zu shred und history

Grub2 mit Passwort schützen:
-
Möglichst nicht die Datei '/boot/grub/grub.cfg' bearbeiten (Updates!)
('/etc/grub.d/40_custom' bzw. '/etc/grub.d/10_linux') - Header in der '40_custom' erweitern: Benutzername "myadmin" und Passwort-String
- Mittels der '10_linux' alle Booteinträge (menuentry) mit Loginschutz versehen: "--users myadmin"

Virenscanner unter Linux
- ClamAV (Windows-Variante: WinClam) == Open Source
--> Erkennungsrate??
- Bitdefender für Linux
- Avira Antivir für Linux
- Eset NOD Antivirus für Linux
- Avast! für Linux
- AVG für Linux
Installation von clamav:
# apt-get install clamav
(u.a. auch 'clamav-freshclam' zum Downloaden der Virensignaturen)
Benutzung:
# freshclam (Sofortiges Aktualisieren der Virensignaturen)
# clamscan -ri /mnt/windows
(Optionen: '-r' == Verzeichnisse rekursiv verarbeiten, '-i' nur infizierte Dateien anzeigen)

Haupsächlich zwei Programme:
- chkrootkit (Wird im Zusammenhang mir den "harden"-Paketen installiert)
- rkhunter
Installation
# apt-get install chkrootkit rkhunter
Tests:
# chkrootkit
# rkhunter --check
# cp /sbin/ifconfig /root
# echo >> /sbin/ifconfig
# rkhunter --check

Debian: apt-get install harden harden-servers

- Sichere Passwörter
- Hardware-Token (USB-Stick mit Zertifikat, Yubi-Key)
- Mehrfaktor-Authentifizierung

Installation/Konfiguration
auf Debian 7 (Wheezy)
# apt-get install apparmor apparmor-profiles apparmor-utils
# perl -pi -e 's,GRUB_CMDLINE_LINUX="(.*)"$,GRUB_CMDLINE_LINUX="$1 apparmor=1 security=apparmor",' /etc/default/grub
# update-grub
# reboot
Kontrolle:
# grep armor /proc/cmdline (Es muss u.a. "apparmor=1 security=apparmor" auftauchen)
# ps auxZ | grep -v ^unconfined (Linux-Daemons anzeigen, die reglementiert werden)
# aa-status (Alle Reglementierungen anzeigen, auch Apps wie Webbrowser)
==> Hierbei lässt sich beobachten, dass sich Anwendungen in zwei grundlegenden Modi befinden können:
a) enforce (Profile anwenden, blockieren)
--> Eine leicht modifizierte Unterform ist "audit", dieser Modus loggt alles mit
(abgearbeitete und nicht abgearbeitete Regeln für Debugging-Zwecke)
b) complain (Profile nicht anwenden, alles akzeptieren, = Lernmodus)
--> Entprechende Kommandos: aa-enforce, aa-audit, aa-complain
Vorgefertigte Profile mit Zugriffsregeln werden in unterschiedlichem Umfang von den Distributionen ausgeliefert, sie liegen unter:
/etc/apparmor.d/
z.B.: ls -l /etc/apparmor.d/*mbd
-rw-r--r-- 1 root root 680 Jul 16 2012 /etc/apparmor.d/usr.sbin.nmbd
-rw-r--r-- 1 root root 1396 Okt 15 11:12 /etc/apparmor.d/usr.sbin.smbd
Ziel: Profilerstellung mit 'aa-genprof' für die Webbrowser "netsurf" und "midori":
# apt-get install netsurf midori
==> Neues Profil im Monitor-Modus für "netsurf" erzeugen (Interaktive Überwachung beim Starten einer App)
# aa-genprof /usr/bin/netsurf
Jetzt als normaler Benutzer netsurf starten und einige Webseiten ansteuern:
ALT + F2: netsurf
--> (S)can -> (A)allow {Diese Taste festhalten bis "(S)ave Changes" zu lesen ist} -> (S)ave -> (F)inish
Finished generating profile for /usr/bin/netsurf. ("netsurf" läuft jetzt bereits im "enforce"-Modus)
Kontrolle cd /etc/apparmor.d ; view usr.bin.netsurf-gtk
aa-status | less
ALT + F2: netsurf
==> Neues Profil im Monitor-Modus für "midori" erzeugen
# aa-genprof /usr/bin/midori
Jetzt als normaler Benutzer Midori starten und einige Webseiten ansteuern
ALT + F2: midori
--> S -> A -> S -> F
Finished generating profile for /usr/bin/midori. (Midori läuft jetzt bereits im "enforce"-Modus)
ls -ltrc | tail -5
drwxr-xr-x 2 root root 4096 Okt 15 10:38 local
drwxr-xr-x 2 root root 4096 Okt 15 10:47 cache
-rw-r--r-- 1 root root 1396 Okt 15 11:12 usr.sbin.smbd
-rw-r--r-- 1 root root 5287 Okt 15 12:48 usr.bin.netsurf-gtk
-rw-r--r-- 1 root root 6366 Okt 15 13:04 usr.bin.midori
Nun wieder als normaler Benutzer testen, ob alles läuft:
ALT + F2: midori
Es tritt ein Fehler auf:
Neben dem syslog meldet das Terminal beim Starten von "midori" ebenso aussagekräftig die Ursache:
# Die Konfiguration konnte nicht geladen werden: Keine Berechtigung
# I/O error : Permission denied
# I/O error : Permission denied
# I/O warning : failed to load external entity "/home/axel/.config/midori/session.xbel"
--> Das read-Recht 'r' muss in folgender Zeile hinzugefügt werden:
/home/*/.config/midori/session.xbel rw,
Nach Änderungen in dieser Datei die Regeln neu einlesen z.B. durch wiederholendes Ausführen des selben Modis: 'aa-enforce usr.bin.midori'
AUFGABE: Richten Sie ein Profil für den PDF-Reader "evince" ein. Prüfen Sie, ob Ihre Distribution bereits ein solches mitbringt.



Einrichtung:
Installation
# apt-get install aide-common aide-dynamic
Konfiguration (Nicht mit in die DB aufzunehmende Pfade am Ende der Datei notieren)
# vi /etc/aide/aide.conf
!/usr
!/opt
!/home
!/dev
!/var
!/tmp
!/srv
!/selinux
!/root
!/sys
!/proc
!/run
!/net
!/media
Initialisierung (Dabei wird eine erste Datenbank '/var/lib/aide/aide.db.new' erzeugt)
# aideinit
ACHTUNG: die Datei 'aide.db.new' muss auf einen read only Medium (CD/DVD) gesichert werden, um
später ausschlißen zu können, dass die Referenzdatenbank vom Angreifer verändert wurde.
Testweise eine Datei verändern
# chmod 777 /bin/ps
Prüfung der Datenintegrität
# aide --config /var/lib/aide/aide.conf.autogenerated --check
(Hier muss gemeldet werden, dass das Programm '/bin/ps' verändert wurde.



Aufzeichnungsfilter (Capture-Filter) werden mit tcpdump-Sprache definiert,
für Display-Filter kommt eine eigene Sprache zum Einsatz.


Erzeugen Sie eine Tabelle namens "eingehend" mit einer Regel "dropping", die alle eingenden Anfragen zum Port 135 blockieren.
nft add table eingehend
nft list tables
table eingehend
nft list table eingehend
table ip eingehend {
}
nft add chain ip eingehend dropping { type filter hook input priority 0 \; }
nft list table eingehend
table ip eingehend {
chain dropping {
type filter hook input priority 0;
}
}
nft add rule ip eingehend dropping iif eth0 tcp dport 135 drop
nft list table eingehend
table ip eingehend {
chain dropping {
type filter hook input priority 0;
iif eth0 tcp dport epmap drop
}
}
Server-Listening mit "netcat":
nc -l 135 < /etc/hostname
-> Kein Zugriff von außen auf diesen Dienst möglich!

- basiert auf asymmetrischer Verschlüsselung
(Nur der öffentliche Schlüssel verlässt das System, er dient zum verschlüsseln, der private bleibt dagegen geheim und dient zum entschlüsseln)
Gegen welchen Angriff bietet es keinen Schutz? Gegen MITM! (Bei der ersten Verbindung wird der öffentliche Schlüssels des Partners heruntergeladen und nach der Verifizierung (mit "yes") in der Datei ~/.ssh/known_hosts gespeichert).
Kommandozeile, um serverseitig (auf srv01) den Fingerprint für diese Verifizierung auszugeben:
# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
# ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
Clientseitig (auf hostPLATZNUMMER) wird nun bei der ersten Sitzung der Publiy-Key des Servers heruntergeladen und nach sorgfältiger Prüfung der Server-Idendität (Fingerprint-Zeichenkette vergleichen)
# ssh 192.168.8.117 (Prüfen --> "yes" --> Passwort des entfernten Nutzers eingeben)
# exit
# cat ~/.ssh/known_hosts
Will man sich unter Verwendung eines anderen Verschlüsselungsverfahrens wie RSA einloggen, gibt es einen Fehler:
# ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss tux@192.168.8.117
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
38:4d:94:17:15:0e:d3:f7:69:ec:bb:bf:45:a6:ba:39.
Please contact your system administrator.
Add correct host key in /home/kit/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/kit/.ssh/known_hosts:1
RSA host key for 192.168.8.117 has changed and you have requested strict checking.
Host key verification failed.
kit@host200:~$
Behebung des Fehlers:
# ssh-keygen -R 192.168.8.117
/home/kit/.ssh/known_hosts updated.
Original contents retained as /home/kit/.ssh/known_hosts.old
Jetzt funktioniert die obige Zeile:
# ssh -o HostKeyAlgorithms=...
Allerdings muss an dieser Stelle wieder der Fingerabdruck des Servers geprüft und bestätigt werden.
AUFGABE: Erstellen Sie als 'kit' auf dem Host ein eigenes, neues Schlüsselpaar mit Passphrase und laden Sie es auf Ihren Server (srv01) hoch (als Datei: ~/.ssh/authorized_keys). Loggen Sie Sie dann auf dem Server ein und konfigurieren Sie den ssh-Server so, dass er keinen Login mehr über normale Benutzername-Passwortpaare akzeptiert.
# ssh-keygen -t rsa -b 4096
# ssh-copy-id 192.168.8.128
# ssh '192.168.8.128'
# /bin/su -
# sed -i 's/\#PasswordAuthentication\ yes/PasswordAuthentication\ no/' /etc/ssh/sshd_config
# /etc/init.d/ssh reload

Wie heißen Konfigurationsdateien für Clients?
a) Systemweit: /etc/ssh/ssh_config
b) Bentzerspezifisch: ~/.ssh/config
Mit 'StrictHostKeyChecking yes' kann festgelegt werden, dass keine
neuen Server mehr akzeptiert werden sollen.
("ask" ist Standardeinstellung, mit "no" wird keine Frage mehr gestellt,
ob der Server vertrauenswürdig sei, die Datei '~/.ssh/known_hosts' wird
automatisch mit dem Publickey versehen)

Wie würde ein ssh-Tunnel definiert werden müssen, wenn Sie zum Port 25 des Rechners mail.example.com ein sicherer Verbindung aufbauen wollen?
Der E-Mail-Client soll später mit der Mail-Serveradresse 'localhost:2555' konfiguriert werden.
Der entfernte ssh-Server auf 'mail.example.com' lauscht auf dem Standard-Port 22.
Lösung:
ssh -L 2555:localhost:25 mail.example.com
Ein enstprechender zweiter Tunnel für das Abholen von E-Mail via IMAP könnte so lauten:
ssh -L 1143:localhost:143 mail.example.com
