Prüfung des Zugriffs auf Linux-Dateien. Linux härten. Wir wählen Tools für ein umfassendes Sicherheitsaudit aus. Durchführung einzelner Tests in Lynis

Die meisten Unternehmens- und Mehrkomponentensysteme wie z SAFT , Oracle-Datenbank verwenden in ihrer Plattform ein Betriebssystem, das darauf basiert Linux . Aus diesem Grund wird ihnen von IT-Prüfern besondere Aufmerksamkeit geschenkt. Heute stellen wir Ihnen in diesem Artikel mehrere kostenlose Tools vor, die in Form von Skripten präsentiert werden und Standardmechanismen des Betriebssystems verwenden, um eine schnelle Prüfung der Sicherheitskonfiguration zu ermöglichen.

Die unten beschriebenen Systembefehle und Skripts, die für die Expressprüfung der Sicherheitsoptionen von Linux-Betriebssystemsystemen verwendet werden, basieren auf Sicherheitsüberprüfungsempfehlungen, die von der ISACA-Community im Handbuch zum UNIX/LINUX Operating System Security Audit/Assurance Program veröffentlicht wurden.

1.Kontobestätigung

1.1 Alle Benutzer auflisten
Die Liste der Benutzer wird in der Datei /etc/passwdfile gespeichert. Um eine Liste der Benutzer zu erhalten, können Sie das folgende Skript verwenden:

  1. bin/bash
  2. #userlistinthesystem.sh
  3. # count und listet vorhandene „echte“ Benutzer im System auf.
  4. echo „[*] Bestehende Benutzer (alphabetisch sortiert):“
  5. grep '/bin/bash' /etc/passwd | grep -v 'root' | Schnitt -f1
  6. -d':' | Sortieren
  7. echo -n „[*] Anzahl der gefundenen echten Benutzer: „
  8. grep '/bin/bash' /etc/passwd | grep -v 'root' | wc -l
1.2 Gesperrte Konten auflisten
Während der Prüfung ist es notwendig, die Liste der gesperrten und nicht gesperrten Benutzer zu überprüfen ( Kontoname ). Der folgende Befehl funktioniert hierfür:
  1. #!/bin/bash
  2. # passwd –s Kontoname

1.3 Statistiken für alle Benutzer anzeigen

  • Der Prüfer muss sicherstellen, dass das Team ac im System enthalten, um Benutzeraktivitäten zu überprüfen:
    1. #!/bin/bash
    Um die Verbindungssitzungsaktivität des Benutzers mit Gesamtwerten für jeden Tag anzuzeigen, verwenden Sie den folgenden Befehl:
    1. #!/bin/bash
    2. # ac -d
    Um Informationen über die Sitzungsaktivität (in Stunden) der Benutzerverbindung anzuzeigen "Benutzer" :
    1. #!/bin/bash
    2. # AC-Benutzer
    1.4 Anzeigen der Benutzeraktivität
    Die psacct- oder acct-Systemanwendungen laufen im Hintergrund und überwachen die Aktivität jedes Benutzers im System sowie die von ihm verbrauchten Ressourcen. Um die Benutzeraktivität im System zu überprüfen, führen Sie das folgende Skript aus:
    1. #!/usr/bin/envksh
    2. last -Fa|awk‘
    3. /wtmp beginnt/ (nächster;)
    4. /noch eingeloggt/ (nächster;)
    5. $0 == neu starten (nächster;)
    6. NF > 0 (
    7. if(NR > 1)
    8. printf("
      ”);
    9. printf("Benutzer:t%s
      ”, $1); #Benutzer
    10. printf („Start:t%s %s %s %s
      ”, $3, $4, $5, $6);
    11. if($9 == „down“)
    12. printf("Ende:tshutdown
      ”);
    13. printf („Ende:t%s %s %s %s
      ”, $9, $10, $11, $12);
    14. if(substr ($NF, 1, 1) == „(“)
    15. t = $NF;
    16. h = „localhost“;
    17. t = $(NF-1);
    18. h = $NF;
    19. gsub(„[()]“, „“, t);
    20. printf("Uhrzeit:t%s
      ", T);
    21. printf("Remote-Host:t%s
      ", H);
  • 2. Überprüfung der Passwortrichtlinie

    2.1 Konten mit leerem Passwort
    Bei der Prüfung muss sichergestellt werden, dass im System keine oder gesperrte Konten vorhanden sind, die eine Anmeldung am System ohne Eingabe eines Passwortes ermöglichen. Diese Regel kann mit dem Befehl überprüft werden:

    # cat /etc/shadow | awk -F: ($2==““)(print $1)’

    2.2 Überprüfung der Passwortkomplexität
    Während der Prüfung ist es notwendig, die Einstellungen für die Passwortkomplexität zu überprüfen, um das Risiko von Brute-Force-Angriffen (Brute Force) oder Wörterbuchangriffen auf das Passwort zu verringern. Um diese Regel auf Ihrem System festzulegen, müssen Sie Plug-in-Authentifizierungsmodule (PAMs) verwenden.
    Der Auditor kann die entsprechende Einstellung in der Konfigurationsdatei überprüfen:

    # vi /etc/pam.d/system-auth

    2.3 Überprüfen des Ablaufdatums des Passworts

    Während der Prüfung müssen Sie die Einstellung für den Passwortablauf überprüfen. Um das Ablaufdatum des Passworts zu überprüfen, müssen Sie den Befehl verwenden ändern. Dieser Befehl wird ausgegeben genaue Information die Gültigkeitsdauer des Passworts sowie das Datum der letzten Änderung.
    Der folgende Befehl wird verwendet, um Informationen über das „Alter“ von Passwörtern anzuzeigen:

    #chage -l Benutzername

    Um den Ablaufzeitraum des Passworts für einen bestimmten Benutzer zu ändern, können Sie die folgenden Befehle verwenden:

    #chage -M 60 Benutzername
    #chage -M 60 -m 7 -W 7 Benutzername

    Optionen (um das Ablaufdatum des Passworts festzulegen):
    -M – maximale Gültigkeitsdauer in Tagen.
    -m – Mindestgültigkeitsdauer in Tagen.
    -W – Warneinstellung in Tagen.

    2.4 Verwendung doppelter Passwörter
    Die Smüssen der Passwortrichtlinie entsprechen. Die Datei mit dem Passwortverlauf befindet sich in /etc/security/opaswd. Zur Überprüfung müssen Sie die folgenden Schritte ausführen:

    für RHEL: Öffnen Sie die Datei „/etc/pam.d/system-auth“:

    # vi /etc/pam.d/system-auth

    für Ubuntu/Debian/Linux Mint: Öffnen Sie die Datei „/etc/pam.d/common-password“:

    # vi /etc/pam.d/common-password

    Fügen Sie die folgende Zeile zum Abschnitt „auth“ hinzu:

    Auth ausreichend pam_unix.so wie authnullok

    Um zu verhindern, dass die letzten sechs Passwörter verwendet werden, fügen Sie die folgende Zeile hinzu:

    Passwort ausreichend pam_unix.so nullokuse_authtok md5 Shadow Remember=6

    Nach der Ausführung des Befehls speichert das System einen Verlauf der vorherigen sechs Passwörter. Wenn ein Benutzer versucht, das Passwort mit einem der letzten sechs Passwörter zu aktualisieren, erhält er eine Fehlermeldung.

    3. Sichere Verbindungseinstellungen
    Die Protokolle Telnet und Rlogin für die Fernverbindung zum System sind sehr alt und anfällig, da das Passwort unverschlüsselt über das Netzwerk übertragen wird. Für eine Remote- und sichere Verbindung muss ein sicheres Protokoll verwendet werden Sichere Shell (SSH). Der Prüfer muss auch sicherstellen, dass die Option Root-Login deaktiviert, Standard-SSH-Port geändert, Fernzugriff nur für bestimmte autorisierte Benutzer erlaubt. Die überprüften Einstellungen befinden sich in der SSH-Konfigurationsdatei:

    1. # vi /etc/ssh/sshd_config

    3.1 Anmeldung als Superuser (Root-Login)

    Während der Prüfung sollte der Prüfer das Verbot der Remote-Anmeldung mit Root-Superuser-Rechten prüfen.

    # PermitRootLogin = ja
    3.2 Überprüfen des SSH-Anmeldedienstkontos

    Während der Prüfung muss der Prüfer das Dienstkonto mit einem passwortlosen SSH-Anmeldewert überprüfen. Typischerweise verwenden Systemadministratoren diese Funktion für programmierte Zwecke Sicherungskopien, Dateien übertragen und Skripte im Fernsteuerungsmodus ausführen.

    Überprüfen Sie ein letztes Mal, ob Ihre sshd_config-Einstellungen (/etc/ssh/sshd_config) korrekt sind.

    # PermitRootLogin ohne Passwort

    # RSAAuthentication = ja

    # PubkeyAuthentication = ja

    3.3 Zugriffslisten in DenyHosts und Fail2ban prüfen
    Während der Prüfung müssen Sie die Einstellungen der Zugriffsliste überprüfen DenyHosts Und Fail2ban . Hierbei handelt es sich um Skripte zur Überwachung und Analyse von SSH-Zugriffsprotokollen und zum Schutz vor Passwort-Brute-Force-Angriffen.

    Funktionen von DenyHosts:

    • Speichert und verfolgt Protokolle aus einer Datei /var/log/secure , notiert alle erfolgreichen und fehlgeschlagenen Anmeldeversuche und filtert sie.
    • überwacht fehlgeschlagene Anmeldeversuche
    • sendet E-Mail-Benachrichtigungen über blockierte Hosts und verdächtige Anmeldeversuche
    Funktionen von Fail2ban:
    • Speichert und verfolgt Protokolle aus Dateien /var/log/secure Und /var/log/auth.log , /var/log/pwdfail
    • hochgradig anpassbar und multithreaded
    • überwacht regelmäßig die Protokolldateien

    4. Systemprotokolle prüfen
    Während der Prüfung müssen Sie sicherstellen, dass der SysLog-Daemon ausgeführt wird und alle wichtigen Ereignisse im System in den Ereignisprotokollen aufgezeichnet werden. Bei der Prüfung muss außerdem sichergestellt werden, dass die Richtlinie zur Speicherung von Ereignisprotokollen die Anforderungen der aktuellen Gesetzgebung und Sicherheitsrichtlinien berücksichtigt

    4.1 Ereignisprotokolle unter Linux:

    /var/log/auth.log – Protokoll des Autorisierungssystems (Anmeldungen und Authentifizierungsmechanismus).
    /var/log/dpkg.log – Protokoll der Installation/Entfernung von Paketen mit dpkg.
    /var/log/yum.log – Protokoll der Installation/Entfernung von Paketen mit yum.
    /var/log/faillog – Protokoll der fehlgeschlagenen Anmeldeversuche und deren maximale Anzahl für jedes Konto.
    /var/log/kern.log – Kernel-Protokoll (detailliertes Protokoll der Meldungen vom Linux-Kernel).
    /var/log/maillog oder /var/log/mail.log – Mailserverprotokoll.
    /var/log/wtmp – Anmeldeprotokoll (Registrierungszeit und Arbeitsdauer aller Systembenutzer).
    /var/run/utmp – Informationen über Benutzer, die derzeit im System registriert sind.
    /var/log/lastlog – Aufzeichnungen früherer Anmeldungen.
    /var/log/boot – Informationen, die während des Systemstarts protokolliert werden

    5. Systemdateien schützen

    5.1 Schutz des GRUB-Bootloaders

    Um den GRUB-Bootloader zu schützen, muss der Administrator eine Passwortverschlüsselung verwenden MD5-Format :

    # grub-md5-crypt

    Nach der Ausführung des Befehls muss der Administrator die Datei öffnen /boot/grub/menu.lst oder /boot/grub/grub.conf und MD5-Passwort hinzufügen:

    # vi /boot/grub/menu.lst

    # vi /boot/grub/grub.conf

    Das neu erstellte MD5-Passwort kann zur GRUB-Konfigurationsdatei hinzugefügt werden.

    5.2 Schutz des Bootverzeichnisses /BOOT

    Während des Audits ist es notwendig, den Status des Verzeichnisses zu überprüfen /Stiefel da sich der Systemkernel und zugehörige Dateien im Verzeichnis befinden /Stiefel. Sie müssen sicherstellen, dass dieses Verzeichnis nur Lesezugriff hat, um unbefugte Änderungen an wichtigen Dateien im System zu verhindern. Öffnen Sie zur Überprüfung die Datei /etc/fstab und überprüfen Sie die Konfiguration:

    Die Datei muss die Zeile enthalten:

    LABEL=/boot /boot ext2 defaults,ro 1 2

    5.3 Überprüfung offener Ports und aktiver Verbindungen

    Mit dem folgenden Skript können die auf dem System laufenden Dienste überprüft werden:

    #!/bin/bash
    if (($(ps -ef | grep -v grep | grep $service | wc -l) > 0))
    Dann
    echo „$service läuft!!!“
    anders
    /etc/init.d/$service starten
    Fi

    Sicht Netzwerkverbindungen

    # netstat -anop
    oder
    # lsof -i(lsof -ni)
    oder
    #iptraf

    Abhörports
    Mit dem Netstat-Befehl können Sie alle anzeigen offene Ports und verwandte Befehle. Beispielskript:

    #netstat–tulpn
    Ein Skript zum Port-Scannen ist:
    scan() (
    if [[ -z $1 || -z $2 ]]; Dann
    echo „Nutzung: $0
    zurückkehren
    fi
    lokaler Host=$1
    lokale Ports=()
    Fall $2 in
    *-*)
    IFS=- Anfang und Ende lesen<<< “$2”
    für ((port=start; port<= end; port++)); do
    ports+=($port)
    Erledigt
    ;;
    *,*)
    IFS=, -ra-Ports lesen<<< “$2”
    ;; *)
    Häfen+=($2) ;;
    esac
    für Port in „$(ports[@])“; Tun
    Alarm 1 „echo >/dev/tcp/$host/$port“ &&
    echo „Port $port ist offen“ ||
    echo „Port $port ist geschlossen“
    Erledigt
    }

    Firewall iptables

    Während des Audits müssen Sie die Konfiguration der Linux-Firewall überprüfen, um unbefugten Zugriff zu verhindern. Um den Datenverkehr zu steuern, müssen in iptables Regeln erstellt werden, die eingehende, ausgehende und weitergeleitete Pakete basierend auf der IP-Adresse und der TCP/UDP-Portnummer filtern.

    # iptables -n -L -v --line-numbers

    ICMP/Broadcast-Anfragen

    Während der Prüfung muss überprüft werden, ob die Systeme so konfiguriert sind, dass sie Ping- und Broadcast-Anfragen ignorieren. Stellen Sie dazu sicher, dass in der Datei „/etc/sysctl.conf“ Folgende Zeilen wurden hinzugefügt:

    # ICMP-Anfragen ignorieren:
    net.ipv4.icmp_echo_ignore_all = 1
    # Broadcast-Anfragen ignorieren:
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    5.4 Überprüfen installierter Updates

    Die neuesten Updates müssen auf dem System installiert sein:

    # leckere Updates
    # Yum Check-Update

    6. Überprüfung automatisch ausgeführter CRON-Jobs

    Der Auditor muss prüfen, wer Cron-Jobs ausführen darf und wer nicht. Der Zugriff auf Cron wird über Dateien gesteuert /etc/cron.allow Und /etc/cron.deny.

    # echo ALL >>/etc/cron.deny

    7. Testen des erzwungenen Sicherheitsmodus von SELINUX

    Während des Audits ist es wichtig, den Status zu überprüfen SELinux . Dieser Mechanismus muss im System aktiviert sein.
    Es gibt drei Modi SELinux :

    • Durchsetzung: Die SELinux-Richtlinie wird erzwungen. SELinux verweigert den Zugriff basierend auf SELinux-Richtlinienregeln.
    • Zulässig: Die SELinux-Richtlinie wird nicht erzwungen. SELinux verweigert den Zugriff nicht, aber Verweigerungen werden als Aktionen protokolliert, die verweigert würden, wenn die Richtlinie in den Durchsetzungsmodus geschaltet würde.
    • Deaktiviert: SELinux ist deaktiviert. Es werden nur diskrete DAC-Regeln verwendet.

    Während einer Prüfung können Sie das folgende Skript verwenden, um den Status von SELinux zu überprüfen, oder die Befehle system-configselinux, getenforce oder sestatus verwenden:

    ENABLED=`cat /selinux/enforce`
    if [ „$ENABLED“ == 1 ]; Dann
    echo „SELinux ist aktiviert, deaktivieren? (ja Nein):"
    Lesesperre
    if [ $disable == „yes“ ]; Dann
    echo „Selinux deaktivieren“
    setforce 0
    fi
    fi

    LBSA-Skript zur Überprüfung grundlegender Sicherheitsoptionen

    LBSA (Linux Basic Security Audit-Skript) ist ein grundlegendes Skript zur Überwachung der Sicherheitskonfiguration von Linux-Systemen. Das Skript muss über die Befehlszeile mit Berechtigungen ausgeführt werden Wurzel oder idealerweise nach einem regelmäßigen Zeitplan mit einem Cron-Scheduler ausführen, um systematisch nach Konfigurationsänderungen zu suchen.

    Der Zweck dieses Skripts besteht darin, Sicherheitseinstellungen schnell zu prüfen und einen Bericht hochzuladen, der mögliche Parameter beschreibt, die geändert werden können, um ein höheres Maß an Sicherheit zu bieten. Wenn für eine Option keine Empfehlungen vorliegen, zeigt das Skript lediglich eine Zeile mit der Verarbeitung der Prüfung an und die endgültige Entscheidung liegt immer beim Administrator. Bevor Sie den Scan ausführen, empfehlen die Entwickler dringend, dass Sie das Handbuch lesen und die empfohlenen Abschnitte lesen, um weitere Informationen zu erhalten.

    In der aktuellen Edition (Version 1.0.49) scannt das Skript die folgenden Optionen:

    • Schwachstellen in den Kontoeinstellungen
    • Schwachstellen in den SSH-Einstellungen
    • Schwachstellen in temporären Verzeichnissen und Verzeichnissen des in den RAM geladenen Dateisystems (z. B. in /tmp, /var/tmp /dev/)
    • Dateiberechtigungen, Status der Systemverzeichnisse
    • Neukonfiguration von DRBD- und Hearbeat-Diensten

    Das Skript ist recht umfangreich, daher haben wir es nicht auf die Seite gestellt.

    Führen Sie einmal im Monat eine Serversicherheitsüberprüfung durch, um mögliche Probleme im Zusammenhang mit dem Eindringen von Eindringlingen in den Server rechtzeitig zu erkennen.

    Wenn Sie auf dem VPS oder auf der Website keine Anzeichen von Aktivitäten Dritter feststellen, führen Sie die folgenden Überprüfungen und Anpassungen durch, um den Server vor Hackerangriffen zu schützen.

    Einstellungen auf Anwendungsebene

    Wenn CMS auf dem Server installiert ist, überprüfen Sie, ob alle neuesten Updates installiert sind.

    Joomla

    Suchen Sie im Stammverzeichnis der Site die Datei „changelog.txt“, in der Sie Informationen zur CMS-Version finden. Wenn es veraltet ist, aktualisieren Sie Joomla.

    Wordpress

    Suchen Sie nach der Datei wp-includes/version.php, in der Sie Informationen zur CMS-Version finden. Wenn es veraltet ist, aktualisieren Sie Wordpress.

    DLE

    Durchsuchen Sie die Datei engine/data/config.php, suchen Sie nach der Zeile „version_id“ und stellen Sie sicher, dass die Version nicht veraltet ist.

    Überprüfen Sie auch die Dateien engine/ajax/updates.php und upgrade/index.php (Parameter $dle_version).

    1C-Bitrix

    Suchen Sie nach der Datei /bitrix/modules/main/classes/general/version.php, in der Sie Informationen zur CMS-Version finden. Überprüfen Sie auch die Datei /bitrix/admin/update_system.php. Wenn die Version veraltet ist, aktualisieren Sie 1C-Bitrix.

    Drupal

    Suchen Sie im Stammverzeichnis der Site die Datei „changelog.txt“, in der Sie Informationen zur CMS-Version finden. Wenn es veraltet ist, aktualisieren Sie Drupal.

    Überprüfen Sie die Kernel-Version in der Datei /modules/system/system.info.

    Sie können die CMS-Version auch über die Systemsteuerung ermitteln.

    Überprüfen Webserver.

    Apache

    Öffnen Sie die Apache-Konfigurationsdatei (je nach Version können dies die Dateien httpd.conf, httpd2.conf, apache.conf, apache2.conf sein) und prüfen Sie, ob sie eine Anweisung enthält, die die Anzeige von Informationen über die Webserver-Version deaktiviert :

    ServerTokens Prod

    Wenn diese Anweisung nicht vorhanden ist, fügen Sie die Datei hinzu und speichern Sie sie.

    Suchen Sie nach der Datei secure.conf, öffnen Sie sie zum Anzeigen und vergleichen Sie ihren Inhalt mit dem folgenden Beispiel:

    Optionen +Includes -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride FileInfo AuthConfig Limit-Indizes Optionen Reihenfolge erlauben, verweigern Von allen zulassen php_admin_value open_basedir „.“ Optionen – Indizes Aktion php-cgi /php-bin/php

    Ihre secure.conf sollte sich nicht wesentlich vom angegebenen Beispiel unterscheiden.

    Überprüfen Sie das installierte MRM mit dem Befehl

    Apachectl -V

    Für mehr Sicherheit verwenden Sie mpm_itk, es sei denn, es besteht ein dringender Bedarf an mpm_prefork.

    Wenn Sie MRM ändern möchten, führen Sie eine Neuinstallation durch, nachdem Sie Sicherungskopien der Konfigurationsdateien erstellt haben. Überprüfen Sie nach der Neuinstallation, ob der Benutzer der Eigentümer der Site und aller ihrer Verzeichnisse ist.

    Nginx

    Öffnen Sie die Webserver-Konfigurationsdatei (nginx.conf), gehen Sie zum Abschnitt http und prüfen Sie, ob er Anweisungen enthält, die die Anzahl der Verbindungen von einer IP-Adresse begrenzen:

    Limit_zone verschlankt $binary_remote_addr 5m; limit_conn verschlankt 10; oder (für die neuesten Versionen) limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10;

    Wenn diese Anweisungen nicht vorhanden sind, fügen Sie die Datei hinzu und speichern Sie sie.

    Blockieren Sie einige Benutzeragenten, um unerwünschten Datenverkehr zu blockieren. Fügen Sie die Direktive zum http-Abschnitt der Nginx-Konfigurationsdatei hinzu

    If ($http_user_agent ~* LWP::Simple|BBBike|wget|msnbot) (return 403;)

    Blockieren Sie Empfehlungs-Spam, indem Sie eine Anweisung zum http-Abschnitt der Nginx-Konfigurationsdatei hinzufügen

    If($http_referer ~*(babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen))(return 403;)

    ISP-Manager

    Führen Sie im ISPmanager-Kontrollfeld die folgenden Prüfungen durch.

    Überprüfen Sie, ob der Zugriff auf das Bedienfeld durch die IP-Adresse eingeschränkt ist.

    Richten Sie die Datensicherung ein, falls diese nicht aktiviert ist. Wir empfehlen die Verwendung eines externen Laufwerks für die Sicherung, um einen Datenverlust zusammen mit dem Archiv zu verhindern.

    PHP

    Öffnen Sie die Konfigurationsdatei php.ini und fügen Sie die folgenden Anweisungen hinzu.

    Expose_php=Off – deaktiviert die Übertragung von Informationen über die PHP-Version im HTTP-Header; sql.safe_mode=Ein – SQL-Sicherheitsmodus aktivieren; post_max_size=8M – begrenzen Sie die Größe der von der POST-Methode übertragenen Daten; disable_functions exec, system, passhru, proc_open, shell_exec – Deaktivieren Sie einige Funktionen aus Sicherheitsgründen.

    NTP

    Fügen Sie in der NTP-Konfigurationsdatei (standardmäßig /etc/ntp.conf) Zeilen hinzu, die rekursive Anforderungen verhindern:

    Beschränken Sie den Standardkod, der auf Nomodify, Notrap, Nopeer, Noquery beschränkt ist -6. Standardkod, begrenzt, Nomodify, Notrap, Nopeer, Noquery, beschränken Sie 127.0.0.1, beschränken Sie -6::1

    Binden

    Platzieren Sie in der Datei „named.conf“ die folgenden Zeilen, um rekursive Abfragen zu deaktivieren:

    Rekursion zulassen ( 127.0.0.1; 82.146.32.0/19; 78.24.216.0/21; 92.63.96.0/20; 62.109.0.0/19; 188.120.224.0/19; 149.154.64.0/21; 37.230.1 12.0/21 ; 94.250.248.0/21; );

    Überprüfung des Eigentümers des Site-Verzeichnisses

    Überprüfen Sie, wem das Hauptverzeichnis der Website und alle seine Unterverzeichnisse gehören.

    Gehen Sie in der ISPmanager-Symbolleiste zum Abschnitt „System“ -> „Dateimanager“ und öffnen Sie das Site-Verzeichnis. Stellen Sie sicher, dass die Spalten „Eigentümer“ und „Gruppe“ den Benutzer enthalten, dem die Site gehört. Um diese Attribute zu ändern, klicken Sie in der Symbolleiste auf die Schaltfläche „Attribute“.

    Gültige Websitebesitzernamen sind Apache, www, www-data, wenn Sie mpm_prefork verwenden. Wir empfehlen die Verwendung von mpm_itk, um die Sicherheit zu erhöhen.

    Wenn die Site freigegebene Ordner enthält (z. B. upload, tmp), ist der gültige Besitzername dafür 777. Stellen Sie sicher, dass dieser Benutzer nur in den erforderlichen Verzeichnissen installiert ist, indem Sie den Befehl ausführen

    Finden Sie ./ -perm 0777

    Es werden alle Ordner und Dateien gefunden, die 777 gehören.

    Einstellungen auf Betriebssystemebene

    Rkhunter

    Verwenden Sie das Dienstprogramm rkhunter, um potenzielle Serverschwachstellen zu identifizieren.

    Um das Dienstprogramm zu installieren, verwenden Sie den folgenden Befehl:

    Yum install rkhunter – CentOS OS apt-get install rkhunter – Debian/Ubuntu OS make all install clean -C /usr/ports/security/rkhunter or pkg install rkhunter – FreeBSD OS

    Um die Datenbank dieses Dienstprogramms zu aktualisieren, führen Sie die Befehle aus

    Rkhunter – Update

    Rkhunter --propupd

    Führen Sie mit dem Befehl eine Systemprüfung durch

    Rkhunter -c --cs2

    Während des Verifizierungsprozesses müssen Sie mehrmals die Eingabetaste drücken, um fortzufahren. Nach Abschluss wird eine Zusammenfassung des Scanergebnisses angezeigt.

    Die Scanergebnisse werden in der Protokolldatei /var/log/rkhunter/rkhunter.log abgelegt. Überprüfen Sie diese auf Warnungen und Fehler.

    sysctl

    Verwenden Sie das Dienstprogramm sysctl, um Systemkernelparameter zu verwalten. Öffnen Sie die Konfigurationsdatei des Dienstprogramms /etc/sysctl.conf und geben Sie die folgenden Zeilen ein.

    Deaktivieren Sie die Möglichkeit, eingehenden Datenverkehr weiterzuleiten, da ein Angreifer diese Möglichkeit nutzen könnte, um IP-Adressen zu fälschen:

    Net.ipv4.conf.all.accept_source_route = 0

    Deaktivieren Sie Antworten auf ICMP-Anfragen auf dem Broadcast-Kanal – dies hilft, Smurf-Angriffe zu verhindern:

    Net.ipv4.icmp_echo_ignore_broadcasts = 1

    Deaktivieren Sie die Protokollierung falscher Fehlermeldungen:

    Net.ipv4.icmp_ignore_bogus_error_responses = 1

    Speicherüberlaufschutz aktivieren:

    Kernel.exec-shield = 1 (CentOS)

    Aktivieren Sie die ASLR-Speichernutzung:

    Kernel.randomize_va_space = 2

    Deaktivieren Sie die Möglichkeit, ICMP-Nachrichten weiterzuleiten:

    Net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0

    Wenn Sie kein VPN oder andere spezielle Anwendungen auf dem Server verwenden, deaktivieren Sie die Weiterleitung:

    Net.ipv4.conf.all.forwarding = 0

    Schutz vor SYN-Flood aktivieren – Verwendung von SYN-Cookies:

    Net.ipv4.tcp_syncookies = 1

    Legen Sie die Anzahl der Versuche fest, SYN-ACK-Pakete zu übertragen:

    Net.ipv4.tcp_synack_retries = 3

    Legen Sie die Zeit fest, nach der der Server die Verbindung überprüft, wenn sie längere Zeit nicht verwendet wurde (standardmäßig sind es 2 Stunden):

    Net.ipv4.tcp_keepalive_time=1800

    Legen Sie fest, wie oft die Verbindung überprüft wird, bevor sie geschlossen wird:

    Net.ipv4.tcp_keepalive_probes=3

    Legen Sie fest, wie lange der Socket im FIN-WAIT-2-Zustand bleibt:

    net.ipv4.tcp_fin_timeout=30

    fstab

    Überprüfen Sie die fstab-Konfigurationsdatei (/etc/fstab), die Informationen zu Festplatten, Partitionen und Speichergeräten enthält und angibt, wie diese auf dem System gemountet sind.

    Vi /etc/fstab

    Beachten Sie, dass Nicht-Root-Partitionen über die Option nodev verfügen müssen. Wenn /tmp auf einer separaten Partition gemountet ist, fügen Sie nodev, noexec, nosuid für diese Partition hinzu.

    rsyslog

    Überprüfen Sie die Systemprotokolldatei /etc/rsyslog.conf.

    Vi /etc/rsyslog.conf

    Bitte beachten Sie die folgenden Zeilen, die wie folgt aussehen sollten:

    Stellen Sie außerdem sicher, dass die Protokolldatei nicht leer ist, d. h. Die Protokollierung erfolgt korrekt.

    Sudo

    Überprüfen Sie, ob das Dienstprogramm sudo (oder su) richtig konfiguriert ist, sodass der Benutzer einige Befehle und Programme als Root ausführen kann. Die Einstellungen für dieses Dienstprogramm befinden sich in der Konfigurationsdatei /etc/sudoers oder /usr/local/etc/sudoers. Öffnen Sie es zum Bearbeiten

    Vi /etc/sudoers

    Suchen Sie die Zeile, die standardmäßig geschrieben wird und es dem Root-Superuser ermöglicht, beliebige Befehle auszuführen.

    Um allen Benutzern die Berechtigung zu geben, Befehle als Root auszuführen, fügen Sie die folgende Zeile hinzu:

    ALL ALL=/bin/su oder ALL ALL=/usr/bin/su

    Um einem bestimmten Benutzer die Berechtigung zu erteilen, nur bestimmte Befehle als Root auszuführen, fügen Sie die Zeile hinzu:

    %users ALL=/sbin/mount – die Benutzergruppe kann sudo nur mit dem Mount-Befehl verwenden. user ALL=/sbin/mount – der Benutzer user kann sudo nur mit dem Mount-Befehl verwenden

    Einstellungen auf Netzwerkebene

    Überprüfen Sie, welche Ports auf dem Server geöffnet sind und welche Dienste sie verwenden, indem Sie den Befehl ausführen

    Netstat -tuplnw | awk "(print $4,$NF)" | sortieren | einzigartig

    Der Eintrag 127.0.0.1:53 748/named bedeutet beispielsweise, dass der benannte Dienst Port 53 verwendet. Stellen Sie sicher, dass nur die erforderlichen Dienste ausgeführt werden, und deaktivieren Sie alle anderen.

    FTP

    Legen Sie den Portbereich fest, der für den passiven FTP-Modus verwendet werden soll. Öffnen Sie dazu die Konfigurationsdatei Ihres FTP-Servers zur Bearbeitung und fügen Sie die Zeilen hinzu:

    für vsftpd.conf:

    Pasv_min_port=1028 pasv_max_port=1048

    für proftpd.conf:

    PassivePorts 1028 1048

    Verwenden Sie das FTP-Protokoll nur, wenn dies unbedingt erforderlich ist. Verwenden Sie stattdessen SFTP. Wenn FTP weiterhin benötigt wird, fügen Sie der Konfigurationsdatei die folgenden Zeilen hinzu:

    für vsftpd.conf:

    Xferlog_enable=JA (Protokolldatei über FTP führen) anonym_enable=NEIN (Anonyme Benutzerverbindungen verbieten) anon_upload_enable=NEIN anon_mkdir_write_enable=NEIN

    für proftpd.conf:

    im Abschnitt ... Entfernen Sie alle Abschnitte und füge die Zeilen hinzu

    Alles verweigern Alles verweigern

    iptables

    Überprüfen Sie, ob die Firewall richtig konfiguriert ist. Führen Sie für iptables den Befehl aus

    Iptables -nL

    Dieser Befehl zeigt alle iptables-Firewallregeln in der Befehlszeile an. Diese Regeln können auch in der Firewall-Konfigurationsdatei /etc/sysconfig/iptables – für CentOS OS, /etc/network/if-up.d/ispmgrfw – für Debian/Ubuntu OS angezeigt und bearbeitet werden.

    Schließen Sie in den Firewall-Regeln alle Ports außer denen, die von auf dem Server ausgeführten Diensten verwendet werden. Ändern Sie dazu die Zeilen

    :INPUT ACCEPT :FORWARD ACCEPT :OUTPUT ACCEPT on:INPUT DROP :FORWARD DROP :OUTPUT DROP

    Um die erforderlichen Ports zu öffnen, fügen Sie Zeilen wie hinzu

    A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m multiport --sports 53,80,25,443,953 -j AKZEPTIEREN

    Dabei ist 53 die Portnummer, die geöffnet werden muss.

    Bevor Sie Änderungen an der Firewall-Konfigurationsdatei vornehmen, erstellen Sie eine Kopie der Arbeitsdatei.

    Firewallregeln können über das ISPmanager-Kontrollfeld konfiguriert werden.

    SSH

    Öffnen Sie die SSH-Konfigurationsdatei:

    Vi /etc/ssh/sshd_config

    Stellen Sie sicher, dass die folgenden Zeilen nicht auskommentiert sind:

    Protokoll 2 (um die zweite Version des Protokolls zu verwenden) IgnoreRhosts ja (die .rhost-Datei nicht verwenden) HostbasedAuthentication nein (den Host nicht authentifizieren) PermitRootLogin nein (Root-Zugriff verbieten) PermitEmptyPasswords nein (keine leeren Passwörter verwenden) PermitUserEnvironment Nr (dem Benutzer das Festlegen von Umgebungsvariablen verbieten) PasswordAuthentication ja (Passwortauthentifizierung zulassen)

    Aktivieren Sie SFTP, indem Sie die Zeile zu sshd_config hinzufügen:

    Subsystem sftp /usr/lib/openssh/sftp-server

    Überprüfen Sie Ihre E-Mail-Warteschlange auf Vollständigkeit und stellen Sie sicher, dass keine Spam-Nachrichten vorhanden sind.

    Führen Sie den Befehl mailq aus und sehen Sie sich die Liste der Nachrichten an. Wenn die Liste sehr umfangreich ist, überprüfen Sie gezielt Nachrichten, bei denen es sich möglicherweise um Spam handelt. Bestimmen Sie anhand der Kennung (z. B. BD65F10DEE4) den Absender des Briefes. Team

    Exim -Mvh-Nachrichten-ID

    Zeigt den E-Mail-Header und den Befehl an

    Exim-Mvb-Nachrichten-ID

    ermöglicht es Ihnen, den Text der Nachricht anzuzeigen.

    Unter den Nachrichtenkopfzeilen enthält das Feld From: den Absender und X-PHP-Originating-Script das Skript, das die Nachricht gesendet hat.

    Software

    Überprüfen Sie Ihre Serversoftware auf Schwachstellen.

    Betriebssystem CentOS

    Führen Sie einen Befehl aus, der die kürzlich geänderten installierten Softwaredateien auflistet:

    Rpm -qVa – um alle Dateien auszugeben, rpm -qVa | awk „$2!="c" (print $0)“ – um Dateien außer Protokollen auszugeben.

    Analysieren Sie mithilfe der folgenden Parameterwerte, welche Dateien wie geändert wurden:

    S – geänderte Dateigröße M – geänderte Standardrechte 5 – geänderte MD5-Prüfsumme D – geänderte Haupt-/Nebennummern für das Gerät L – geänderter symbolischer Link U – geänderter Dateieigentümer G – geänderte Gruppe T – geändertes Dateiänderungsdatum (mtime) c – Konfigurationsdatei d – Dokumentationsdatei g – Datei, die nicht im Paket enthalten ist l – Lizenzdatei r – README-Datei

    Zum Beispiel Zeile S.5....T. c /etc/httpd/conf/httpd.conf bedeutet, dass httpd.conf eine Konfigurationsdatei ist, deren Größe, Prüfsumme und Datum der letzten Änderung geändert wurden. Da es sich um eine Konfigurationsdatei handelt, sind diese Änderungen nicht verdächtig.

    Achten Sie auf Dateien, deren Prüfsummenwerte ohne ersichtlichen Grund geändert wurden. Führen Sie für solche Dateien den folgenden Befehl aus:

    Stat /usr/sbin/sshd && file /usr/sbin/sshd wobei usr/sbin/sshd der Pfad zur Datei ist.

    Als Ergebnis des Befehls werden detaillierte Informationen zu Änderungen an dieser Datei auf dem Bildschirm angezeigt.

    Führt den Befehl aus:

    Lecker – Sicherheitsupdate

    um das Sicherheitsupdate zu installieren.

    Debian-Betriebssystem

    Führen Sie Befehle aus, die MD5-Prüfsummen für installierte Programme überprüfen:

    # apt-get install debsums # debsums -c

    Führen Sie die folgenden Befehle aus, um das Sicherheitsupdate zu überprüfen:

    # echo 'deb http://security.debian.org wheezy/updates main contrib non-free' >> /etc/apt/sources.list # grep security /etc/apt/sources.list > /etc/apt/secsrc .list # apt-get -s -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" Upgrade

    Um das Sicherheitsupdate zu installieren, führen Sie den folgenden Befehl aus:

    # apt-get -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" Upgrade

    Überprüfen Sie die GPG-Abstimmung in allen Repositorys, indem Sie die folgenden Befehle ausführen:

    # grep -ri gpgcheck /etc/yum.conf # grep -ri gpgcheck /etc/yum.repos.d/ Stellen Sie sicher, dass die Zeilen wie folgt aussehen: gpgcheck=1 # grep -ri AllowUnauthenticated /etc/apt/

    Linien des Formulars

    APT::Get::AllowUnauthenticated „true“;

    Das sollte es nicht geben.

    Ungenutzte Dienste

    Betriebssystem CentOS

    Chkconfig --list

    Chkconfig --del Dienstname, wobei Dienstname der Name des Dienstes ist.

    Debian-Betriebssystem

    Führen Sie einen Befehl aus, der nicht verwendete Dienste auflistet:

    Sysv-rc-conf

    Um den Start zu deaktivieren ungenutzter Dienst Führen Sie den Befehl aus:

    Sysv-rc-conf off service_name wobei service_name der Name des Dienstes ist.

    Die Sicherheit des Linux-Servers ist sehr wichtig, um Ihre Daten zu schützen. geistiges Eigentum, sowie Zeit durch Einbrecher. Zur Sicherheit Betriebssystem Linux antwortet Systemadministrator. In diesem Artikel werfen wir einen Blick auf zwanzig Dinge, die Sie mit Ihrem Linux-Betriebssystem tun müssen, um es jederzeit sicher und geschützt zu halten. Wenn dies Heimcomputer Dann macht es möglicherweise keinen Sinn, sich so viele Gedanken über die Sicherheit zu machen; sichere Passwörter und die Sperrung des Zugriffs auf Ports aus dem Internet reichen aus. Bei einem öffentlichen Server sollten Sie jedoch auf dessen Schutz achten.

    Diese Anleitung ist für jede Distribution geeignet, egal ob Sie CentOS, Red Hat oder Ubuntu, Debian verwenden.

    1. Kommunikationsverschlüsselung

    Alle über das Netzwerk übertragenen Daten können überwacht werden. Daher ist es erforderlich, übertragene Daten nach Möglichkeit mit Passwörtern, Schlüsseln oder Zertifikaten zu verschlüsseln.

    Verwenden Sie scp, ssh, rsync oder sftp, um Dateien zu übertragen. Es ist auch möglich, das Remote-Dateisystem mit Tools wie shhfs in Ihr Home-Verzeichnis einzuhängen.

    Mit GnuPG können Sie Ihre Daten mit einem speziellen privaten Schlüssel verschlüsseln und signieren. Darüber hinaus gibt es Funktionen zur Schlüsselverwaltung und zum Zugriff auf öffentliche Schlüssel.

    Fugu ist ein grafisches Tool zum Übertragen von Dateien mithilfe des SFTP-Protokolls. SFTP ist FTP sehr ähnlich, allerdings ist die gesamte Sitzung verschlüsselt. Das bedeutet, dass keine Passwörter oder Befehle im Klartext übertragen werden. Daher sind solche Übertragungen für Dritte weniger anfällig. Sie können auch FileZilla verwenden, es ist plattformübergreifend FTP-Client Unterstützung des FTS-Betriebs über SSH/TLS und SSH File Transfer Protocol (SFTP).

    OpenVPN ist ein effizienter und leichter VPN-Client mit Unterstützung für SSH-Verschlüsselung.

    2. Versuchen Sie, FTP, Telnet, Rlogin und RSH nicht zu verwenden

    In den meisten Netzwerken können Benutzernamen, Passwörter von FTP-, Telnet- und RSH-Befehlen von jedem im selben Netzwerk mithilfe eines Paket-Sniffers abgefangen werden. Eine gängige Lösung für dieses Problem ist die Verwendung von OpenSSH, SFTP oder SFTP, das dem regulären FTP SSL oder TLS hinzufügt. Führen Sie diesen Befehl aus, um NIS, RSH und andere Legacy-Dienste zu entfernen:

    yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

    3. Reduzieren Sie die Menge an Software

    Müssen wirklich alle Webdienste installiert sein? Installieren Sie keine unnötigen Dinge Software um Schwachstellen in diesen Programmen zu vermeiden. Verwenden Sie Ihren Paketmanager, um es anzuzeigen installierte Programme und alle unnötigen entfernen:

    Yum-Liste installiert
    $yum-Listenpaket
    $yum Paket entfernen

    dpkg --list
    $ dpkg --info Paket
    $ apt-get Paket entfernen

    4. Ein Auto – ein Service

    Führen Sie verschiedene Dienste auf separaten Servern aus oder virtuelle Maschinen. Dies begrenzt die Anzahl der Dienste, die kompromittiert werden können. Wenn ein Angreifer beispielsweise Apache hacken kann, erhält er Zugriff auf den gesamten Server. Einschließlich Dienste wie MySQL, Server Email usw. Für die Virtualisierung können Sie Software wie XEN oder OpenVZ verwenden.

    5. Halten Sie Ihren Linux-Kernel und Ihre Software auf dem neuesten Stand

    Das Anwenden von Sicherheitspatches ist ein sehr wichtiger Teil der Sicherheit Ihres Linux-Servers. Das Betriebssystem stellt alle Tools bereit, um das System auf dem neuesten Stand zu halten und auf neue Versionen zu aktualisieren. Alle Sicherheitsupdates sollten so schnell wie möglich angewendet werden. Auch hier müssen Sie Ihren Paketmanager verwenden. Zum Beispiel:

    Oder für Debian-basierte Systeme:

    sudo apt update && sudo apt upgrade

    Sie können Red Hat oder Fedora so konfigurieren, dass Sie per E-Mail benachrichtigt werden, wenn neue Sicherheitsupdates verfügbar sind. Sie können es auch konfigurieren Automatisches Updateüber cron, oder Sie können Debians aptcron verwenden, um sich zu benachrichtigen, wenn das System aktualisiert werden muss.

    6. Verwenden Sie Sicherheitserweiterungen unter Linux

    Das Linux-Betriebssystem verfügt über verschiedene Sicherheitspatches, mit denen Sie sich schützen können falsche Konfiguration oder Schadsoftware. Sie können aber auch zusätzliche Awie SELinux oder AppArrmor verwenden.

    SELinux stellt verschiedene Sicherheitsrichtlinien für den Linux-Kernel bereit. Hier können Sie den Zugriff auf beliebige Systemressourcen mithilfe von Rollen steuern. Nur ein Programm, dessen Rolle dies zulässt, kann auf eine bestimmte Ressource zugreifen, und selbst Superuser-Rechte spielen keine Rolle. SELinux erhöht die Sicherheit eines Linux-Systems erheblich, da sogar Root als normaler Benutzer gilt. Weitere Details werden in einem separaten Artikel beschrieben.

    7. Benutzerkonten und sichere Passwörter

    Verwenden Sie die Befehle useradd und usermod, um Benutzerkonten zu erstellen und zu verwalten. Stellen Sie sicher, dass Sie ein gutes und sicheres Passwort haben. Es sollte mindestens acht Zeichen enthalten, vorzugsweise in unterschiedlicher Groß- und Kleinschreibung, einschließlich Sonderzeichen oder Zahlen. Zum Beispiel 8 Zeichen, davon sieben Buchstaben und eines ein Symbol oder eine Zahl. Verwenden Sie Tools wie John the Ripper, um schwache Benutzerkennwörter auf dem Server zu finden, und konfigurieren Sie pam_cracklib.so, um Kennwortrichtlinien durchzusetzen.

    8. Ändern Sie von Zeit zu Zeit Passwörter

    Mit dem Änderungsbefehl können Sie die Anzahl der Tage vor dem Datum einer erzwungenen Passwortänderung angeben. Anhand dieser Informationen ermittelt das System, wann der Benutzer sie ändern sollte. Diese Einstellungen befinden sich in /etc/login.defs. Um die Passwortalterung zu deaktivieren, geben Sie den folgenden Befehl ein:

    -l Benutzernamen ändern

    Um Informationen über die Ablaufzeichenfolge des Passworts zu erhalten, geben Sie den folgenden Befehl ein:

    Sie können alles auch manuell in der Datei /etc/shadow konfigurieren:

    (Benutzer-Passwort): (Letzte Bearbeitung):(maximum_days): (minimum_days): (Warnung):(deaktivieren):(expiration_line):

    • Mindesttage- das Mindestintervall zwischen Passwortänderungen, d. h. wie oft der Benutzer das Passwort ändern kann.
    • Maximale Tage- Wie viele Tage ist das Passwort gültig? Nach diesem Zeitraum wird der Benutzer gezwungen, das Passwort zu ändern.
    • Warnung- die Anzahl der Tage, nach denen der Benutzer gewarnt wird, dass er sein Passwort ändern muss.
    • Ablauflinie- die Anzahl der Tage ab dem 1. Januar 1970, an denen das Konto vollständig deaktiviert wird.

    chage -M 60 -m 7 -W 7 Benutzername

    Es ist auch ratsam, Benutzer daran zu hindern, alte Passwörter zu verwenden, da sonst alle Versuche, sie zur Änderung ihrer Passwörter zu zwingen, zunichte gemacht werden.

    9. Sperren Sie Konten nach erfolglosen Anmeldeversuchen

    Auf dem Linux-Betriebssystem können Sie den Befehl faillog verwenden, um fehlgeschlagene Anmeldeversuche von Benutzern anzuzeigen. Sie können damit auch ein Limit für fehlgeschlagene Anmeldeversuche festlegen. Alle Informationen über fehlgeschlagene Anmeldeversuche werden in der Datei /var/log/faillog gespeichert. Um es anzuzeigen, geben Sie Folgendes ein:

    Und um die Anmeldeversuche für ein bestimmtes Konto zu begrenzen, verwenden Sie:

    faillog -r -u Benutzer

    Sie können Konten auch manuell mit dem Befehl passwd sperren oder entsperren. Zum Blockieren verwenden Sie:

    passwd -l Benutzer

    Und zum Freischalten:

    passwd -u Benutzer

    Es empfiehlt sich auch zu prüfen, ob es im System Konten mit leeren Passwörtern gibt. Führen Sie dazu Folgendes aus:

    awk -F: "($2 == "") (print)" /etc/shadow

    Überprüfen Sie außerdem, ob es Benutzer mit der Gruppe oder ID 0 gibt. Es sollte nur einen solchen Benutzer geben, und das ist root. Sie können dies mit diesem Befehl überprüfen:

    awk -F: "($3 == "0") (drucken)" /etc/passwd

    Es sollte nur eine Zeile vorhanden sein:

    root:x:0:0:root:/root:/bin/bash

    Wenn es andere gibt, löschen Sie sie. Benutzer und insbesondere ihre schwachen Passwörter gehören zu den anfälligsten Dingen, die die Sicherheit von Linux gefährden können.

    10. Deaktivieren Sie die Root-Anmeldung

    Um die Sicherheit Ihres Linux-Systems zu gewährleisten, melden Sie sich niemals als Root-Benutzer an. Sie können sudo verwenden, um die erforderlichen Berechtigungen zu erhalten und den gewünschten Befehl als Superuser auszuführen. Dieser Befehl ermöglicht es Ihnen, das Superuser-Passwort nicht an andere Administratoren weiterzugeben, und enthält außerdem Tools zum Überwachen, Einschränken und Verfolgen von Aktivitäten.

    11. Physische Sicherheit des Servers

    Die Sicherheit von Linux-Servern muss physische Sicherheit umfassen. Sie müssen den physischen Zugriff auf die Serverkonsole einschränken. Konfigurieren Sie das BIOS so, dass das Booten von externen Medien wie DVD, CD, USB nicht unterstützt wird. Legen Sie außerdem ein Passwort für das BIOS und den GRUB-Bootloader fest, um deren Einstellungen zu schützen.

    12. Deaktivieren Sie unnötige Dienste

    Deaktivieren Sie alle nicht verwendeten Dienste und Daemons. Vergessen Sie auch nicht, diese Dienste beim Start zu entfernen. Mit dem folgenden Befehl können Sie eine Liste aller aktiven Dienste auf Red Hat-Systemen anzeigen:

    chkconfig --list | grep "3:on"

    Um den Dienst zu deaktivieren, verwenden Sie:

    Service-Service-Stopp
    $ chkconfig-Dienst deaktiviert

    Finden Sie alles offene Programme Häfen:

    Das Gleiche kann mit dem nmap-Scanner erfolgen:

    nmap -sT -O localhost

    Verwenden Sie iptables, um alle Ports zu schließen, die vom Netzwerk aus nicht erreichbar sein sollen. Oder hör auf unnötige Dienstleistungen wie oben beschrieben.

    13. X-Server entfernen

    Ein X-Server auf einem Servercomputer ist völlig optional. Sie müssen die grafische Umgebung nicht auf einem dedizierten Apache- oder E-Mail-Server ausführen. Entfernen Sie diese Software, um Sicherheit und Leistung zu verbessern.

    14. Konfigurieren Sie Iptables

    iptables ist ein User-Space-Programm zur Konfiguration der im Kernel integrierten Netfilter-Firewall. Es ermöglicht Ihnen, den gesamten Datenverkehr zu filtern und nur bestimmte Arten von Datenverkehr zuzulassen. Verwenden Sie auch TCPWrappers – ein ACL-System zum Filtern des Internetzugriffs. Mit iptables können Sie viele Arten von DOS-Angriffen verhindern. Netzwerksicherheit unter Linux ist ein sehr wichtiger Aspekt der allgemeinen Systemsicherheit.

    15. Konfigurieren Sie den Kernel

    In der Datei /etc/sysctl.conf werden Kernel-Einstellungen gespeichert, die beim Systemstart geladen und angewendet werden.

    Aktivieren Sie den Pufferüberlaufschutz execshield:

    kernel.exec-shield=1
    kernel.randomize_va_space=1

    IP-Spoofing-Schutz aktivieren:

    net.ipv4.conf.all.rp_filter=1

    IP-Adressumleitung deaktivieren:

    net.ipv4.conf.all.accept_source_route=0

    Broadcast-Anfragen ignorieren:

    net.ipv4.icmp_echo_ignore_broadcasts=1
    net.ipv4.icmp_ignore_bogus_error_messages=1

    Alle gefälschten Pakete protokollieren:

    net.ipv4.conf.all.log_martians = 1

    16. Partitionieren Sie Ihre Festplatte

    Trennung Festplatte Die Aufteilung in Partitionen je nach Zweck der Dateien verbessert die Sicherheit von Linux-Betriebssystemen. Es wird empfohlen, separate Abschnitte für die folgenden Verzeichnisse zu erstellen:

    • /heim
    • /var und /var/tmp

    Erstellen Sie separate Abschnitte für Apache-Stammverzeichnisse und FTP-Server. Öffnen Sie die Datei /etc/fstab und legen Sie spezielle Optionen für die erforderlichen Partitionen fest:

    • noexec- Führen Sie auf dieser Partition keine Programme oder ausführbaren Dateien aus, nur Skripte sind erlaubt
    • Knotenv- Erlauben Sie keine symbolischen oder speziellen Geräte auf dieser Partition.
    • nosuid- Erlauben Sie keinen SUID/SGID-Zugriff für Programme aus diesem Abschnitt.

    17. Nutzen Sie Speicherplatzbeschränkungen

    Begrenzen Sie den verfügbaren Speicherplatz für Benutzer. Erstellen Sie dazu ein Festplattenkontingent in /etc/fstab, mounten Sie die Dateisysteme erneut und erstellen Sie eine Festplattenkontingentdatenbank. Dadurch wird die Sicherheit unter Linux verbessert.

    18. Deaktivieren Sie IPv6

    Das Internetprotokoll der nächsten Generation IPv6 wird künftig das bereits genutzte IPv4 ersetzen. Derzeit gibt es jedoch keine Tools, um die Sicherheit eines IPv6-basierten Netzwerks zu überprüfen. Viele Linux-Distributionen erlauben standardmäßig IPv6. Hacker können unerwünschten Datenverkehr senden, ohne dass Administratoren ihn verfolgen können. Wenn Sie diesen Dienst also nicht benötigen, deaktivieren Sie ihn.

    19. Deaktivieren Sie nicht verwendete SUID- und SGID-Binärdateien

    Alle ausführbaren Dateien, für die das SUID- oder SGID-Flag aktiviert ist, sind potenziell gefährlich. Dieses Flag bedeutet, dass das Programm mit Superuser-Rechten ausgeführt wird. Das bedeutet, dass, wenn das Programm eine Schwachstelle oder einen Fehler aufweist, lokal oder Remote-Benutzer kann diese Datei verwenden. Suchen Sie alle diese Dateien mit dem folgenden Befehl:

    find / -perm +4000

    Suchen Sie nach Dateien mit gesetztem SGID-Flag:

    find / -perm +2000

    Oder kombinieren wir das alles in einem Befehl:

    find / \(-perm -4000 -o -perm -2000 \) -print
    $ find / -path -prune -o -type f -perm +6000 -ls

    Sie müssen jede gefundene Datei im Detail studieren, um zu verstehen, wie notwendig eine bestimmte Datei ist.

    20. Öffentliche Dateien

    Es empfiehlt sich außerdem, Dateien zu finden, die von allen Benutzern im System geändert werden können. Verwenden Sie dazu den folgenden Befehl:

    find /dir -xdev -type d \(-perm -0002 -a ! -perm -1000 \) -print

    Nun gilt es zu prüfen, ob die Rechte für die Gruppe und den Eigentümer jeder Datei richtig gesetzt sind und ob dadurch ein Sicherheitsrisiko besteht.

    Es empfiehlt sich auch, alle Dateien zu finden, die niemandem gehören:

    find /dir -xdev \(-nouser -o -nogroup \) -print

    21. Verwenden Sie ein zentralisiertes Authentifizierungssystem

    Ohne ein zentrales Authentifizierungssystem werden Benutzerdaten inkonsistent, was dazu führen kann, dass Anmeldeinformationen veraltet sind und Konten vergessen werden, die schon längst hätten gelöscht werden sollen. Ein zentraler Dienst ermöglicht es Ihnen, die Kontrolle über Benutzerkonten und Authentifizierungsdaten zu behalten verschiedene Systeme Linux und Unix. Sie können Authentifizierungsdaten zwischen Servern synchronisieren. Aber nutzen Sie nicht den NIS-Dienst, sondern orientieren Sie sich besser an Open DAP.

    Eine der interessanten Implementierungen eines solchen Systems ist Kerberos. Es ermöglicht Benutzern die Authentifizierung mithilfe eines privaten Schlüssels in Netzwerken, in denen Pakete abgefangen und geändert werden können. Kerberos verwendet einen symmetrischen Schlüssel zum Verschlüsseln von Daten und erfordert für den Betrieb ein Schlüsselverwaltungszentrum. Sie können Remote-Login, Remote-Kopie, sicheres Kopieren von Dateien zwischen Systemen und andere Aufgaben mit einem hohen Maß an Sicherheit konfigurieren.

    22. Protokollierung und Prüfung

    Richten Sie Protokollierung und Prüfung ein, um alle fehlgeschlagenen Anmeldungen und Hacking-Versuche zu erfassen und zu speichern. Standardmäßig befinden sich alle Protokolle oder zumindest die meisten davon im Ordner /var/log/. Wir haben in einem separaten Artikel ausführlicher darüber gesprochen, wofür bestimmte Personen verantwortlich sind.

    Sie können die Protokolle mit Dienstprogrammen wie logwatch oder logcheck ansehen. Sie machen das Lesen von Protokollen sehr einfach. Sie können nicht die gesamte Datei, sondern nur die Ereignisse anzeigen, die Sie interessieren, und sich auch eine Benachrichtigung per E-Mail senden.

    Überwachen Sie das System mit dem auditd-Dienst. Das Programm schreibt alle für Sie interessanten Prüfereignisse auf die Festplatte. Alle Audit-Einstellungen werden in der Datei /etc/audit.rules gespeichert. Beim Systemstart liest der Dienst alle Regeln aus dieser Datei. Sie können es öffnen und alles nach Bedarf konfigurieren oder ein separates Dienstprogramm verwenden – auditctl. Sie können Folgendes konfigurieren:

    • Systemstart- und -abschaltereignisse
    • Datum und Uhrzeit der Veranstaltung
    • Benutzerereignisse (zum Beispiel Zugriff auf eine bestimmte Datei)
    • Ereignistyp (Bearbeiten, Zugreifen, Löschen, Schreiben, Aktualisieren usw.)
    • Erfolg oder Misserfolg bei der Ausführung eines Ereignisses
    • Aufzeichnen von Netzwerkeinstellungen-Änderungsereignissen
    • Zeichnen Sie Änderungen an Benutzern und Gruppen auf
    • Überwachen von Dateiänderungen

    23. Sichern Sie Ihren OpenSSH-Server

    Nur die Verwendung von Protokoll 2 zulassen:

    Anmeldung als Superuser deaktivieren:

    24. Installieren Sie IDS

    Ein IDS- oder Intrusion-Detection-System versucht, verdächtige, böswillige Aktivitäten zu erkennen, z DoS Angriff, Port-Scanning oder sogar der Versuch, einen Computer durch Überwachung des Netzwerkverkehrs zu hacken.

    Es empfiehlt sich, solche Software bereitzustellen, bevor das System dem Internet ausgesetzt wird. Sie können AIDE installieren, es ist ein HIDS (Host-basiertes IDS), das alle Aspekte steuern kann Interne Struktur dein System.

    Snort ist eine Software zur Erkennung von Netzwerkeinbruchsversuchen. Es kann eine Paketanalyse und -protokollierung durchführen und den Netzwerkverkehr in Echtzeit analysieren.

    25. Schützen Sie Ihre Dateien und Verzeichnisse

    Linux bietet einen hervorragenden Schutz vor unbefugtem Zugriff auf Dateien. Allerdings sind die von Linux und Dateisystem bedeuten nichts, wenn ein Angreifer physischen Zugriff auf den Computer hat und sich einfach verbinden kann Festplatte Computer auf ein anderes System kopieren, um Ihre Daten zu kopieren. Sie können Ihre Dateien jedoch ganz einfach durch Verschlüsselung schützen:

    • Um eine Datei mit einem Passwort zu verschlüsseln und zu entschlüsseln, verwenden Sie GPG
    • Sie können Dateien auch mit OpenSSL schützen
    • Die Verzeichnisverschlüsselung erfolgt mit ecryptfs
    • TrueCrypt ist ein kostenloses Tool zur Festplattenverschlüsselung für Windows und Linux

    Schlussfolgerungen

    Jetzt wird die Sicherheit des Linux-Betriebssystems auf Ihrem Computer erheblich erhöht. Vergessen Sie nicht, von Zeit zu Zeit komplexe Passwörter festzulegen. Schreiben Sie Ihr bevorzugtes Systemsicherheitstool in die Kommentare.

    In diesem Material lernen wir die wichtigsten Dienstprogramme für die Linux-Härtung kennen. Auf Russisch nennt man das so etwas wie „Überprüfung des Sicherheitsniveaus von Linux-Systemen und Beurteilung der Korrektheit von Konfigurationen aus Sicht der Informationssicherheit“. Natürlich werden wir die Programme nicht nur besprechen, sondern auch Beispiele für deren Verwendung geben.

    Ihr eigener Prüfer oder Ihre eigene Sicherheit

    Administratoren und insbesondere Informationssicherheitsprüfer stehen häufig vor der Aufgabe, die Sicherheit zu überprüfen große Menge Gastgeber in kürzester Zeit. Und natürlich gibt es zur Lösung dieser Probleme im Enterprise-Segment beispielsweise spezielle Tools wie Netzwerksicherheitsscanner. Ich bin sicher, dass sie alle – von der Open-Source-Engine OpenVAS bis hin zu kommerziellen Produkten wie Nessus oder Nexpose – unseren Lesern bekannt sind. Allerdings dient diese Software in der Regel dazu, nach veralteter und damit anfälliger Software zu suchen und anschließend ein Patch-Management durchzuführen. Darüber hinaus berücksichtigen nicht alle Scanner einige Besonderheiten der integrierten Schutzmechanismen von Linux und anderen Open-Source-Produkten. Und nicht zuletzt ist der Preis der Emission wichtig, denn kommerzielle Produkte können sich nur Unternehmen leisten, die Budgets für dieses Geschäft bereitstellen.

    Aus diesem Grund werden wir heute über einen speziellen Satz frei verteilter Dienstprogramme sprechen, die das aktuelle Niveau der Systemsicherheit diagnostizieren, potenzielle Risiken bewerten können, zum Beispiel „zusätzliche Dienste“, die im Internet sichtbar sind, oder eine unsichere Standardkonfiguration und sogar bieten Möglichkeiten zur Behebung der festgestellten Mängel an. Ein weiterer Vorteil der Verwendung dieser Tools ist die Möglichkeit, Standard-Farmtestszenarien von beliebig vielen Linux-Systemen zu replizieren und eine dokumentierte Testbasis in Form von Protokollen und individuellen Berichten zu erstellen.

    Praktische Aspekte des Sicherheitsaudits

    Wenn man mit den Augen eines Prüfers schaut, lässt sich der Testansatz in zwei Arten unterteilen.

    Erste- Dies ist die Einhaltung der sogenannten Compliance-Anforderungen. Dabei wird das Vorhandensein obligatorischer Sicherheitselemente überprüft, die in einem internationalen Standard oder „Best Practice“ vorgeschrieben sind. Ein klassisches Beispiel sind PCI DSS-Anforderungen für Zahlungs-IT-Systeme, SOX404, NIST-800-Serie.

    Zweite- Hierbei handelt es sich um einen rein rationalen Ansatz, der auf der Frage „Was kann sonst noch getan werden, um die Sicherheit zu stärken?“ basiert. Es gibt keine zwingenden Voraussetzungen – nur Ihr Wissen, einen klaren Kopf und geschickte Hände. Dies umfasst beispielsweise die Aktualisierung der Kernel-Version und/oder der Anwendungspakete sowie das Aktivieren, Erzwingen und Einrichten einer Firewall.

    Alles, was sich auf den zweiten Ansatz bezieht, wird üblicherweise als Sonderbegriff bezeichnet Härten, was auch definiert werden kann als „Maßnahmen, die darauf abzielen, das Niveau der anfänglichen Sicherheit des Betriebssystems (oder Programms) hauptsächlich durch Standardmittel zu erhöhen.“

    Die Einhaltung der Compliance-Anforderungen wird in der Regel als Vorbereitung auf ein obligatorisches Audit wie PCI DSS oder ein anderes Zertifizierungsaudit überprüft. Wir werden der Komponente Härten mehr Aufmerksamkeit schenken. Alle großen Entwickler bieten für ihre Produkte an Härtungsrichtlinien- Leitfäden mit Tipps und Empfehlungen zur Verbesserung der Sicherheit unter Berücksichtigung standardmäßiger Sicherheitsmechanismen und der Besonderheiten der Software. Red Hat, Debian, Oracle und Cisco haben ähnliche Anleitungen.

    DIE INFO

    „Hardening“ ist ein Begriff aus der Welt der Informationssicherheit, der sich auf den Prozess bezieht, die Sicherheit eines Systems (Programms) zu gewährleisten, indem dessen Anfälligkeit verringert wird und in der Regel nur Standard-Dienstprogramme oder Schutzmechanismen verwendet werden.

    Sudo apt-get update sudo apt-get install lynis

    Und für RPM-orientierte Distributionen (nach dem Hinzufügen der entsprechenden Repositorys):

    Lecker, installiere linus -y

    Installation unter macOS:

    $ brew suche lynis $ brew installiere lynis

    Um Lynis zu starten, müssen Sie lediglich mindestens einen Schlüssel angeben. Um beispielsweise alle verfügbaren Tests auszuführen, sollten Sie den Schalter -c (Alle prüfen) angeben:

    # Typischer Testsatz sudo lynis audit system # Vollständiger Testsatz sudo lynis audit system -c # Scannen eines Remote-Hosts audit system remote







    Vor einem Audit ist es immer sinnvoll zu prüfen, ob eine neue Version Lynis:

    Lynis-Update-Info && Lynis-Update-Prüfung

    Das Lynis-Dienstprogramm verfügt zusätzlich zum Standardmodus über einen weiteren Modus: unprivilegierter Start:

    Lynis audit --pentest

    Wenn Sie den Namen des Prüfers angeben möchten, der mit dem Testen begonnen hat, fügen Sie einfach den Parameter -auditor hinzu :

    Sudo lynis audit system -c -auditor Papa

    In jeder Phase des Audits kann der Verifizierungsprozess fortgesetzt (Eingabe) oder zwangsweise beendet werden (Strg+C). Die Ergebnisse der durchgeführten Tests werden in das Lynis-Protokoll unter /var/log/lynis.log geschrieben. Bitte beachten Sie, dass das Protokoll bei jedem Start des Dienstprogramms überschrieben wird.

    Um systematisch im automatischen Modus zu testen, können Sie dem Cron-Scheduler mit dem Schalter -cronjob den entsprechenden Job zuweisen. In diesem Fall startet das Dienstprogramm gemäß der angegebenen Vorlage (Konfiguration) und zeigt keine interaktiven Nachrichten, Fragen oder Warnungen an. Alle Ergebnisse werden im Protokoll gespeichert. Hier ist beispielsweise ein Skript zum Starten des Dienstprogramms mit der Standardkonfiguration einmal im Monat:

    #!/bin/sh AUDITOR="automatisiert" DATE=$(Datum +%Y%m%d) HOST=$(Hostname) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/report-$( HOST).$(DATE)" DATA="$LOG_DIR/report-data-$(HOST).$(DATE).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDITOR)" –cronjob > $(REPORT) mv /var/log/lynis-report.dat $(DATA) # Ende

    Speichern Sie dieses Skript im Verzeichnis /etc/cron.monthly/lynis. Und vergessen Sie nicht, Pfade zum Speichern von Protokollen hinzuzufügen (/usr/local/lynis und /var/log/lynis), da es sonst möglicherweise nicht richtig funktioniert.

    Sie sehen eine Liste aller zum Aufruf verfügbaren Befehle:

    Lynis zeigt Befehle an

    Wer besonders neugierig ist, kann sich die Einstellungen aus der Standardkonfiguration ansehen:

    Lynis-Showeinstellungen

    Kurze Anweisungen zur Verwendung des Dienstprogramms:

    Mann, Lynis

    Die Optionen für mögliche Status basierend auf den Ergebnissen der Prüfung beschränken sich auf die folgende Liste: KEINE, SCHWACH, FERTIG, GEFUNDEN, NICHT_GEFUNDEN, OK, WARNUNG.


    Durchführung einzelner Tests in Lynis

    In der Praxis kann es erforderlich sein, nur wenige Tests durchzuführen. Wenn Ihr Server beispielsweise nur Mailserver- oder Apache-Funktionen ausführt. Hierzu können wir den Parameter -tests verwenden. Die Befehlssyntax lautet wie folgt:

    Lynis -tests "Test-IDs"

    Wenn Sie aufgrund der großen Anzahl an Testkennungen Schwierigkeiten beim Verständnis haben, können Sie den Gruppenparameter -test-category verwenden. Mit dieser Option führt Lynis nur Test-IDs aus, die in eine bestimmte Kategorie fallen. Wir planen beispielsweise die Durchführung von Firewall- und Kernel-Tests:

    ./lynis -tests-category „Firewalls-Kernel“

    Darüber hinaus wird die Funktionalität von Lynis durch verschiedene Plugins erweitert, die Sie selbst hinzufügen oder neue zum bestehenden Verzeichnis hinzufügen können.

    Vorschläge zur Korrektur

    Alle Warnungen werden nach den Ergebnissen aufgelistet. Jeder beginnt mit einem Warntext, daneben wird in Klammern der Test angegeben, der ihn generiert hat. Die nächste Zeile schlägt eine Lösung für das Problem vor, falls vorhanden. Tatsächlich handelt es sich bei der letzten Zeile um eine URL, unter der Sie Details anzeigen und zusätzliche Empfehlungen zur Behebung des Problems finden können.

    Profile

    Profile, die die Überwachung verwalten, werden in Dateien mit der Erweiterung definiert .prf, befindet sich im Verzeichnis /etc/lynis. Das Standardprofil trägt vorhersehbar den Namen: default.prf . Die Entwickler empfehlen, es nicht direkt zu bearbeiten: Es ist besser, alle Änderungen, die Sie am Audit vornehmen möchten, in die Datei „custom.prf“ einzufügen, die sich im selben Verzeichnis befindet.

    Die Fortsetzung steht nur Mitgliedern zur Verfügung

    Option 1: Treten Sie der „Site“-Community bei, um alle Materialien auf der Site zu lesen

    Durch die Mitgliedschaft in der Community innerhalb des angegebenen Zeitraums erhalten Sie Zugriff auf ALLE Hacker-Materialien, erhöhen Ihren persönlichen kumulativen Rabatt und können eine professionelle Xakep-Score-Bewertung erwerben!