Linux - Sicherheit

Imagemap
Linux -
Sicherheit Einführung Schutzziele Vertraulichkeit Verfügbarkeit Integrität Authentizität Verbindlichkeit Schwachstellen Bedrohungen Risiken Angriffe Ziele Angreifer Szenarien Lokal Sicheres Löschen Bootloader Festplattenverschlüsselung Virenscanner Root-Kit-Scanner Hardening Authentifizierung Software/Dienste deinstallieren Firewall/ Zeitserver installieren Kontrolle der Files mit SUID / SGID AppArmor Sandboxing Vulnerability Discovery nessus / OpenVAS wapiti Intrusion Detection Network based snort suricata Host based aide tripewire Intrusion Prevention fail2ban artillery Netzwerk Analyse Wireshark tcpdump nmap Firewall nftables iptables GUIs Secure Shell Clients Tunneling
hide

Linux -

Sicherheit

hide
Lokal
hide
Hardening

Debian: apt-get install harden harden-servers

leaf
AppArmor

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.

hidebroken-line
Netzwerk
hideedit password
Secure Shell

- 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