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:
- bin/bash
- #userlistinthesystem.sh
- # count und listet vorhandene „echte“ Benutzer im System auf.
- echo „[*] Bestehende Benutzer (alphabetisch sortiert):“
- grep '/bin/bash' /etc/passwd | grep -v 'root' | Schnitt -f1
- -d':' | Sortieren
- echo -n „[*] Anzahl der gefundenen echten Benutzer: „
- grep '/bin/bash' /etc/passwd | grep -v 'root' | wc -l
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:
- #!/bin/bash
- # passwd –s Kontoname
1.3 Statistiken für alle Benutzer anzeigen
- #!/bin/bash
- #!/bin/bash
- # ac -d
- #!/bin/bash
- # AC-Benutzer
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:
- #!/usr/bin/envksh
- last -Fa|awk‘
- /wtmp beginnt/ (nächster;)
- /noch eingeloggt/ (nächster;)
- $0 == neu starten (nächster;)
- NF > 0 (
- if(NR > 1)
- printf("
”); - printf("Benutzer:t%s
”, $1); #Benutzer - printf („Start:t%s %s %s %s
”, $3, $4, $5, $6); - if($9 == „down“)
- printf("Ende:tshutdown
”); - printf („Ende:t%s %s %s %s
”, $9, $10, $11, $12); - if(substr ($NF, 1, 1) == „(“)
- t = $NF;
- h = „localhost“;
- t = $(NF-1);
- h = $NF;
- gsub(„[()]“, „“, t);
- printf("Uhrzeit:t%s
", T); - 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
- 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:
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
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!