Archiv der Kategorie: Allgemein

Intrusion Detection Systeme

Intrusion Detection Systeme (IDS) sind in ihrem Anwendungsbereich etwas eingeschränkt, sie adressieren die folgenden Punkte nicht:
– Schwachstelle in der Policy-Definition
– Schwachstelle auf Anwendungsebene
– Backdoor innerhalb der Anwendung
– Schwachstellen in Identifikations- und Authentifizierungsschemata

Ein IDS arbeitet in Verbindung mit Routern und Firewalls, indem es Anomalien in der Netzwerknutzung überwacht.

Zu den Hauptkategorien von IDS gehören:
– Netzwerkbasierte IDS
– Host-basierte IDS

Netzwerkbasierte IDS
Sie erkennen Angriffe innerhalb des überwachten Netzwerks und geben eine Warnung an den Betreiber aus.
Wenn ein netzwerkbasiertes IDS zwischen dem Internet und der Firewall platziert ist, erkennt es alle Angriffsversuche, unabhängig davon, ob sie die Firewall erreichen oder nicht
Netzwerkbasierte IDS sind blind, wenn es um verschlüsselten Datenverkehr geht.

Host-basierte IDS
Sie werden für eine bestimmte Umgebung konfiguriert und überwachen verschiedene interne Ressourcen des Betriebssystems, um vor einem möglichen Angriff zu warnen.
Sie können die Veränderung von ausführbaren Programmen erkennen, Dateien erkennen und eine Warnung ausgeben, wenn versucht wird, ein privilegiertes Konto zu verwenden.
Sie können den Datenverkehr überwachen, nachdem er entschlüsselt wurde und sie ergänzen das netzwerkbasierte IDS.

Typen von IDS umfassen:
Statistisch basierte IDS – Diese Systeme benötigen eine umfassende Definition des bekannten und erwarteten Verhaltens des Systems

Neuronales Netzwerk – Ein IDS mit dieser Funktion überwacht die allgemeinen Muster der Aktivität und des Datenverkehrs im Netzwerk und erstellt eine Datenbank. Dies ist ähnlich wie ein statistisches Modell, jedoch mit zusätzlichen selbstlernenden Funktionen.

Signaturbasiertes IDS – Diese IDS-Systeme schützen vor erkannten Eindringungsmustern. Die Eindringmuster, die sie erkennen können, werden in Form einer Signatur gespeichert.

Autor: Richard Hunkeler

Ansatz zur Passwort Sicherheit

Password Security

123456 als Monatsgehalt okay, als Passwort nicht!

Es ist nicht zu glauben, wie oft ich in meiner Laufbahn mit solch trivialen Passwörter konfrontiert wurde und selbst in unser „aufgeklärten“ Zeit, sehe ich immer noch Benutzer welche solche Passwörter benutzen.
Deshalb möchte ich hier ein paar Tipps zum Login Verfahren teilen:

  • Nutze für jeden Login ein eigenes, starkes Passwort.
    Viele System nutzen ein schwaches Authentisierungs-System und wenn dieses kompromitiert werden, kennt der Angreifer alle Login Credentials von Euch.
  • Nutze einen Passwortmanager wie 1Password oder KeePass um diese Passwörter zu managen
  • Nutze wenn immer möglich eine 2 Faktor Authentisierung
    (zB: Google oder Microsoft Authenticator)
  • Nutze Systeme (zB: https://haveibeenpwned.com) um herauszufinden, dass ein von euch genutztem System eure Daten verloren hat.

Was ist ein starkes Passwort:
Ich selbst nutze 30-stellige Passwörter mit Klein- und Grosschreibung, Zahlen und Sonderzeichen.
Bei Verwendung von einem Passwortmanager spielt es keine Rolle mehr ob ich 10, 20 oder 30 stellige Passwörter verwalte, bei der Sicherheit allerdings schon.

Autor: Richard Hunkeler

Failed to open initctl FIFO: No such device or address

Vor kurzem passierte mir, dass ich bei einem geplanten Reboot (shutdown -r now) folgende Fehlermeldung erhalten habe.

Failed to start reboot.target: Connection timed out
See system logs and 'systemctl status reboot.target' for details.
Failed to open /dev/initctl: No such device or address
Failed to talk to init daemon.

Nach längerer Recherche hab ich die Gründe für das Problem noch nicht im Detail verstanden, aber folgender Befehl sollte Abhilfe schaffen:

Versuche zuerst:
systemctl --force reboot


wenn erfolglos:
systemctl --force --force reboot

Alle Cronjobs aller User unter Linux anzeigen

Wir betreiben einen Linux-Server und haben dort mehrere Websites/Nutzer/Kunden und können dort über Plesk/Webmin Cronjobs einrichten/verwalten.
Nun geht mit dem Server irgendwas schief und wir sehen in den zentralen Logfiles, dass es offenbar Probleme mit den Befehlen gibt, die per Cronjob ausgeführt werden Home Page.
Nur wie findet man nun den Cronjob des Nutzers bzw. verschafft sich einen Überblick über alle bestehenden Cronjobs aller Nutzer? Ganz einfach:
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

Windows Administrator Passwort zurücksetzen

Neben vielen weiteren Varianten, hier einmal eine andere Möglichkeit:

System ab CDROM oder USB Stick booten.
– In Verzeichnis Partition:/Windows/System32 wechseln
– die Datei Utilman.exe sichern
– die Datei cmd.exe nach Utilman.exe kopieren
– Nun System neu booten

Beim Login Windows-Taste + U drücken und Du hast einen Command Prompt

Nun mit „net user“ den Admin Account ermitteln und mit
net user USERNAME NEUES_PASSWORT
das Passwort neu setzen

Stabiler Debian Webserver einrichten

  1. Apache2 installieren:
    apt-get install apache2-mpm-prefork
  2. PHP5 mit MySQL-Unterstützung und Caching installieren:
    apt-get install libapache2-mod-php5 php5-mysql php-apc php5-curl php5-gd
    Hinweis:
    Die entscheidenden Konfigurationsdateien finden sich dann unter
    /etc/php5/apache2 und /etc/php5/apache2/conf.d
    Die Konfigurationsdateien der PHP-Module liegen unter /etc/php5/mods-available
  3. MySQL Server mit PhpMyAdmin-Verwaltung installieren
    Installation des MySQL-Server und der Datenbankverwaltung PhpMyAdmin mit folgendem Befehl:
    apt-get install mysql-server-5.5 phpmyadmin

    • mysql-server
      Man wird aufgefordert ein Passwort für den administrativen MySQL-Benutzer „root“ anzugeben.
    • phpmyadmin
      PhpMyAdmin fragt, ob es automatisch für einen Webserver eingerichtet werden soll: apache2 auswählen (mit Space-Taste)
      Im Anschluss wird man gefragt, ob dbconfig-common die benötigte MySQL-Datenbank für PhpMyAdmin einrichten soll: Ja auswählen
      Das administrative MySQL-Passwort wird danach gefordert werden, also eingeben.
      Es folgt „Bitte geben Sie ein Passwort ein, mit dem sich PhpMyAdmin beim Datenbankserver anmelden kann. Falls Sie das Feld frei lassen, wird automatisch ein zufälliges Passwort erzeugt.“ Kann man also frei lassen.
  4. PhpMyAdmin Zugang sicherer machen
    Die zu bearbeitende Konfigurationsdatei liegt in /etc/phpmyadmin/apache.conf
    Ändere die Zeile:
    Alias /phpmyadmin /usr/share/phpmyadmin
    zu zB:
    Alias /what_ever /usr/share/phpmyadmin
    apache.conf speichern und im Anschluss den Apache-Server neu starten mit
    /etc/init.d/apache2 restart
  5. Apache absichern (Anti-DDoS)
    Timeout Wert ändern
    Im Anbetracht von DDoS-Angriffen sollte man den Timeout-Wert in der
    /etc/apache2/apache2.conf
    ändern, dieser kommt mit 300 etwas gross daher.
    Timeout 45
  6. Guter Apache-DDOS Schutz: mod_evasive
    Das Apache-Modul mod_evasive Debianpackage.png libapache2-mod-evasive bietet einen guten Schutz gegen DDoS Angriffe, indem es die Zugriffe auf den Webserver innerhalb einer bestimmten Zeit registriert und einen attackierenden Client für eine gewisse Zeit sperrt.
    Installation mit
    apt-get install libapache2-mod-evasive
    Im Anschluss erstellt man einen extra Logfile Ordner
    mkdir /var/lock/mod-evasive
    Gibt die Rechte für den Ordner an den Benutzer www-data ab:
    chown www-data /var/lock/mod-evasive
    Es kann die bereits Vorhandene Konfigurationsdatei „/etc/apache2/mods-available/mod-evasive.load“ angepasst werden, mit dem Befehl
    nano /etc/apache2/mods-available/mod-evasive.load
    Standardmässig sieht die Datei so aus:
    LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
    ändere den Inhalt zu:

    LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so

    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10
    DOSEmailNotify deine@email.ch
    DOSLogDir "/var/lock/mod-evasive"

    Die Anführungszeichen beim DOSLogDir sind sehr wichtig. Trage deine E-Mail Adresse bei DOSEmailNotify ein, dann wirst du über jeden Angriff via E-Mail benachrichtigt.
    Hinweis: Solltest du schon etwas mehr Traffic auf deiner Homepage haben, viele Bilder und Besucher, dann solltest du den DOSPageCount und DOSSiteCount Wert anpassen. Du könntest mit zu niedrigen Werten auch Web-Crawler aussperren. Aber das merkst du schon an den Benachrichtigungen
    Der Mod sollte standardmässig aktiviert sein, wir prüfen das mit
    a2enmod mod-evasive
    Deaktivieren kannst du mod-evasive mit
    a2dismod mod-evasive

  7. SSH-Server installieren und absichern (Fernwartung)
    OpenSSH-Server Installation
    Wir installieren den SSH-Server mit
    apt-get install openssh-server

    Verbindung zum SSH-Server herstellen
    Bei Wheezy ist der SSH-Client standardmässig installiert, mit dem Befehl
    ssh -l deinbenutzername deineserveradresse
    kannst du eine Verbindung zu deinem SSH-Server herstellen. Via Standard läuft SSH-Verkehr über den Port 22.

  8. SSH root-Login verbieten
    Um den SSH-Server ein Stück sicherer zu machen können wir den direkten Login für den SuperUser „root“ deaktivieren. Sei Dir jedoch bewusst darüber, dass du vorher mindestens einen weiteren Benutzer auf deinem System haben solltest. (Damit man sich als Benutzer einloggen kann und mit dem su – Befehl kann man dann auch wieder root-Rechte erlangen.)
    Wir editieren die Datei „nano /etc/ssh/sshd_config“ und ändern
    PermitRootLogin yes
    zu
    PermitRootLogin no
    Jetzt kann sich der Benutzer Root nicht mehr direkt über den SSH-Server am System anmelden. Man meldet sich ganz normal mit einem Benutzer an und wechselt dann mittels su in den Root-Account.
  9. SSH zusätzlich mit Fail2ban absichern
    Fail2ban installieren
    Debianpackage.png fail2ban ist bereits in den Paketquellen enthalten und lässt sich spielend leicht mit
    apt-get install fail2ban whois
    installieren. Wir installieren whois mit, um später weitere Informationen zum blockierten Client zu erhalten.

    Fail2ban konfigurieren (jail.conf)
    Wir wollen jetzt mal einen Blick auf die Hauptkonfigurationsdatei von Fail2ban werfen. Es handelt sich dabei um die Datei „nano /etc/fail2ban/jail.conf„.

    Generelle Einstellungen finden sich unter [DEFAULT]

    [DEFAULT]

    # "ignoreip" can be an IP address, a CIDR mask or a DNS host
    ignoreip = 127.0.0.1/8
    bantime = 600
    maxretry = 3

    backend = auto

    #
    # Destination email address used solely for the interpolations in
    # jail.{conf,local} configuration files.
    destemail = root@localhost

    Die wichtigsten Standard-Parameter:
    bantime: Kontrolliert die Blockzeit eines Clients, via Standard 600 Sekunden = 10 Minuten,
    maxretry: Steht für die maximalen Regelverstösse, bis ein Client blockiert wird
    destemail: Hier sollten wir unsere eigene E-Mail Adresse angeben (dazu später mehr)

    Hinweis: Die Filter-Einstellungen am Ende der Datei haben immer Vorrang.

    Der nächste Absatz beschäfigt sich mit der Aktion, die bei einem Ban ausgeführt werden soll:

    #
    # ACTIONS
    #

    banaction = iptables-multiport

    mta = sendmail

    Die wichtigsten Parameter:
    banaction: Die Standard-Aktion die ausgeführt werden soll; iptables-multiport kann man so stehen lassen.
    mta: Der MTA, der zum Versenden von Mails verswendet wird (Standard: sendmail)

    Ich möchte jetzt auf den destemail-Parameter zurückkommen: Sobald ein Client blockiert wird, könnt ihr euch eine E-Mail mit IP-Adresse samt WHOIS- und Logdatei Auszug zuschicken lassen.
    Das macht Fail2ban aber nicht von Haus aus, wir müssen folgende Zeile
    action = %(action_)s
    abändern zu
    action = %(action_mwl)s

    Der E-Mail Versand bei einem Client-Ban wäre damit aktiviert. Wir widmen uns jetzt den zu überwachenden Diensten, bei Fail2ban Filter genannt:

    [ssh]

    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 6

    Wie wir erkennen können, ist der Standard-Filter ssh schon aktiviert. Hier müssen wir nichts ändern. Es gibt jedoch auch noch einen Filter gegen DDoS-Angriffe auf SSH, folgender Abschnitt:

    [ssh-ddos]

    enabled = false
    port = ssh
    filter = sshd-ddos
    logpath = /var/log/auth.log
    maxretry = 6

    „enabled = false“ ändern wir hier einfach ab zu „enabled = true“.

    Wir speichern die Konfigurationsdatei jail.conf. Jetzt müssen wir Fail2ban noch neustarten mittels
    /etc/init.d/fail2ban restart

    Hinweis: Die Konfigurationsdateien der Filter finden sich in „/etc/fail2ban/filter.d“ und die der Aktionen in „/etc/fail2ban/action.d“
    Hinweis: Fail2ban führt eine Logdatei unter /var/log/fail2ban.lorg

  10. logwatch installieren
    Damit man seinen Server unter Kontrolle hat ist es wichtig regelmässig die Logdateien der laufenden Serverdienste zu checken. Unter /var/log/apache2 liegen beispielsweise die Logdateien des Apache-Servers. Nun wäre es sehr mühsam, sich jeden Tag über SSH einzuloggen und jede einzelne Logdatei via Hand zu kontrollieren.
    Eine Menge Arbeit kann man sich mit Debianpackage.png logwatch sparen, welches täglich eine Zusammenfassung aller Logdateien erstellen und die Zusammenfassung dann an eine hinterlegte E-Mail Adresse schicken kann.
    Installation und Konfiguration von Logwatch

    logwatch installieren wir mit
    apt-get install logwatch

    Im Anschluss bearbeiten wir die Konfigurationsdatei „logwatch.conf“:
    nano /usr/share/logwatch/default.conf/logwatch.conf

    Dort setzen wir diese Einstellungen

    MailTo = root
    Output = mail
    Format = text

    Detail = High

    Die folgenden Zeilen sollte man ausklammern:

    #Service = "-zz-network" # Prevents execution of zz-network service, which
    # prints useful network configuration info.
    #Service = "-zz-sys" # Prevents execution of zz-sys service, which
    # prints useful system configuration info.
    #Service = "-eximstats" # Prevents execution of eximstats service, which
    # is a wrapper for the eximstats program.

    Wir speichern die Konfigurationsdatei ab.

    Cronjob für Logwatch anlegen (Mail-Versand)
    Folgende Zeile in einfügen:
    nano /etc/crontab
    0 */3 * * * root /usr/sbin/logwatch --mailto deine@email.ch>/dev/null 2>&1

    Die E-Mail Adresse muss angepasst werden, damit sie auch im richtigen Postfach ankommt. Der Cron-Daemon wird uns jetzt alle 3-Stunden eine Logwatch-Report via E-Mail schicken.

  11. cron-apt installieren:
    apt-get install cron-apt

    Notify Datei kopieren
    cp /usr/share/doc/cron-apt/examples/9-notify /etc/cron-apt/action.d/

    config File anpassen:
    nano /etc/cron-apt/config
    Folgende 2 Zeilen einfügen:
    MAILTO=”deine@email.ch”
    MAILON=”upgrade”

    Evtl. Cron anpassen. Voreingestellt ist jede Nacht um 4 Uhr
    nano /etc/cron.d/cron-apt

Verzeichnis- und Dateigrösse unter Linux anzeigen

Der Aufruf von du ohne Option, gefolgt von einer Datei oder einem Verzeichnis, zeigt die Blocksize der Datei oder einem Verzeichnis an.
Die Option -sh formatiert die Grösse in (K)ilobyte, (M)egabyte oder (G)igabyte und zeigt die Totalgrösse an:
du -sh /mein/verzeichnis
Ausgabe: 2.4G /mein/verzeichnis

Um alle Verzeichnisse anzuzeigen:
du --max-depth=1 -h /mein/verzeichnis