it-swarm-eu.dev

Härten von Linux Server

Wir hatten hier bereits Fragen zu Hardening Apache , Hardening PHP und Securing SSH .

Um diesen Trend fortzusetzen, interessiert mich, welche Schritte die Leute unternehmen, um Linux-Server zu härten. Wie bei den Schritten, die Benutzer beim Einrichten eines neuen Servers immer ausführen, sind diese nicht anwendungsspezifisch. B. Festlegen der tmp-Partition auf noexec, Deinstallieren/Deaktivieren bestimmter Dienste, z.

88
Mark Davidson

Identifizieren Sie die erforderlichen Anwendungen und Prozesse und wenden Sie eine Checkliste an, um zu vermeiden, dass sie installiert werden, oder deinstallieren Sie sie im schlimmsten Fall nach dem ersten Build.

Hier denke ich an die häufigsten Schuldigen, die standardmäßig immer noch zu viele Distributionen haben!

  • NFS-Dienste: nfsd, lockd, mountd, statd, portmapper
  • telnet-Server und FTP-Server
  • R-Dienste: rlogin, rsh, rcp, rexec
  • BIND- und DNS-Server, sofern nicht erforderlich
  • mailserver wie sendmail
  • X11 (sofern kein Desktop benötigt wird)
  • finger Daemon etc.

Der nächste Schritt besteht darin, die potenziell schwachen Dienste zu untersuchen und den Zugriff auf sie zu beschränken

  • verwenden Sie at.allow und cron.allow, um den Zugriff auf crontab einzuschränken
  • Stellen Sie sicher, dass alle Geräte für normale Benutzer nicht lesbar und nicht beschreibbar sind (ausgenommen solche wie/dev/tty und/dev/null usw.).
  • Schlüsseldateien - Berechtigungen für diese sollten root gehören:/etc/fstab,/etc/password,/etc/shadow
  • Überprüfen Sie sorgfältig hosts.equiv - eine großartige Zugangsquelle hier :-)
  • Ebenso wird die NFS-Konfiguration gesperrt, wenn dies erforderlich ist
  • Deaktivieren Sie nicht benötigte Systemkonten.
  • Schauen Sie sich das Dateisystem an - Sticky Bits für alle ausführbaren Dateien und öffentlichen Verzeichnisse.
  • Überprüfen Sie alle Root-Anforderungen (Umgebungsvariable PATH, kein Remotezugriff als Root, Gruppenmitgliedschaft, Kennwortanforderungen)
  • Überprüfen Sie alle Benutzeranforderungen (Mitgliedschaft in privilegierten Gruppen, gültige Shells, Umask, SUID, SGID-Anforderungen
  • und natürlich ist der SANS-Leitfaden eine wirklich gute Quelle!
57
Rory Alsop

Der Bereich "Linux Server" enthält einen riesigen Bereich von Distributionen , jeder mit seiner eigenen Strategie zur Aktualisierung der Standardkonfiguration, einer Toolchain für die Paketverwaltung und einem Ansatz für Standarddienste und offene Ports. Es gibt auch eine Vielzahl von Bereitstellungsszenarien: Das Härten eines Webservers unterscheidet sich erheblich vom Härten eines Linux-basierten Routers. Sie können bessere Ratschläge erhalten, indem Sie nach den Distributionen und Anwendungsfällen fragen, die Ihnen am wichtigsten sind.

In diesem Sinne werde ich hier nur Ubuntu-Sicherheit ansprechen, indem ich auf einige relevante Quellen verweise, obwohl vieles davon für andere Situationen nützlich sein wird.

Eine gute Einführung finden Sie hier: http://www.andrewault.net/2010/05/17/securing-an-ubuntu-server/

Die Community hat hier einige strengere Standardeinstellungen und Tipps zur Verhärtung beschrieben, die mehr auf Sicherheit abzielen, selbst wenn die Benutzerfreundlichkeit beeinträchtigt wird: https://help.ubuntu.com/community/StricterDefaults

Hier ist eine Matrix und eine Zusammenfassung der Ubuntu-Sicherheitsfunktionen, damit die Leute Checklisten durchsuchen können, die Sie an anderer Stelle finden: https://wiki.ubuntu.com/Security/Features

Um zu sehen, wie Sie einige der Tests selbst durchführen können, lesen Sie das Transkript in http://people.canonical.com/~kees/demo/ec2-session.log , das vom Demo-Code in gesteuert wird http://people.canonical.com/~kees/demo/

Eine Zusammenfassung dessen, was erforderlich ist, um Folgendes zu tun: https://wiki.ubuntu.com/Security/Privileges

Das Sicherheitsteam für Ubuntu hat einige andere nützliche Dinge in seinem Wiki: https://wiki.ubuntu.com/Security/

25
nealmcb

Das Härten von Systemen zu einem bestimmten Zeitpunkt ist eine vorteilhafte Leistung, aber was die sichere Bereitstellung eines Servers wirklich definiert, ist das, was getan wird, um diesen Status beizubehalten.

Wählen Sie eine der Qualitätsprüflisten (siehe Links unten) aus, in denen die empfohlenen Konfigurationsänderungen aufgeführt sind, um die Sicherheit Ihrer Server zu erhöhen, und übernehmen Sie die Änderungen, die für Ihr Setup sinnvoll sind. Besser noch, kodifizieren Sie die Empfehlungen über Puppet ( http://www.puppetlabs.com/ ): Dies ist ein Gewinn. Wenn Sie gewinnen, werden Sie sicherer eingesetzt und geben sich die Chance, die gehärteten Konfigurationen im Laufe der Zeit aufrechtzuerhalten.

Bonus : Angriffsmodellierung/Bedrohungsmodellierung durchführen ( http://taosecurity.blogspot.com/2007/06/threat- model-vs-attack-model.html ), um Ihre Verteidigungsbemühungen zu konzentrieren. Stellen Sie sich zum Beispiel Fragen wie:

Wie kann ein Angreifer Zugriff auf diese Server erhalten?
Was kann ich tun, um ihre Erfolgschancen zu verringern?

Übersetzen Sie Ihre Antwort auf die zweite Frage in bestimmte Konfigurationsänderungen (Härten) oder implementieren Sie zusätzliche Steuerelemente. Das Spiel besteht natürlich darin, die Wahrscheinlichkeit des Erfolgs einer Bedrohung zu minimieren. Dies braucht Zeit, aber Sie werden sich besser fühlen über die Änderungen, die Sie vorgenommen haben, und warum, anstatt willkürlich Änderungen vorzunehmen, weil jemand sagte, es sei gut, dies zu tun.

Machen Sie sich großartig beim Protokollieren und Überprüfen . Prävention schlägt immer fehl - um dieser Realität entgegenzuwirken, möchten Sie die Protokollierung verbessern, damit Sie Vorfälle schneller identifizieren und darauf reagieren und schneller wiederherstellen können. Mein Lieblingswerkzeug zur Stärkung der Verteidigung und zur Verbesserung der Protokollierung unter Linux ist [~ # ~] ossec [~ # ~] ( http: //www.ossec .Netz/ ). Es lohnt sich, zusätzliche Zeit damit zu verbringen, die in [~ # ~] ossec [~ # ~] enthaltenen Regeln anzupassen, um nach Dingen zu suchen, über die Sie sich mehr Sorgen machen (z. B. das Auflisten zusätzlicher Verzeichnisse) und Dateien, die benachrichtigt werden sollen, wenn sie geändert werden. Fügen Sie Regeln hinzu oder erhöhen Sie den Schweregrad vorhandener Regeln, um Sie auf Authentifizierungsanomalien aufmerksam zu machen. Fügen Sie Regeln hinzu, um nach Änderungen an der MySQL-Benutzertabelle zu suchen ( http: // blog.rootshell.be/2011/01/07/auditing-mysql-db-integrity-with-ossec/ ), ad infinitum). Richard Bejtlich hat gerade einen aktuellen Blogeintrag mit dem Titel Sieben coole Open Source-Projekte für Verteidiger ( http://taosecurity.blogspot.com/2011/01/seven-cool veröffentlicht -open-source-projects-for.html )

Um die kontinuierliche Überprüfung Ihrer Serverabwehr zu unterstützen, können Sie Nessus ( http://www.nessus.org/nessus/ ausführen. ) laufend mit den Linux-Prüfvorlagen des Center for Internet Security (CIS). Verwenden Sie die Ergebnisse als Basis, achten Sie auf Änderungen und beheben Sie entdeckte Schwachstellen.

Um es noch einmal zusammenzufassen:

1) Nutzen Sie vorhandene, anerkannte Checklisten für die Sicherheitshärtung, um eine benutzerdefinierte Checkliste zu erstellen, die für Ihre Umgebung geeignet ist (hoffentlich nach Durchführung von Aktivitäten zur Modellierung von Angriffen/Bedrohungen und Auswahl eines Konfigurationsmanagement-Frameworks).

2) Verbessern Sie die Beobachtungsfunktionen: Verbessern Sie die Protokollierung (dh optimieren Sie das System, um ausreichende Protokolle für die Aktivitäten zu generieren, die Sie beobachten möchten), setzen Sie HIDS ein (z. B. [~ # ~] ossec [~ # ~] ), Protokollanalyse-Tools bereitstellen (z. B. logwatch - http://sourceforge.net/projects/logwatch/ ) , vielleicht Netzwerkflüsse erfassen (zB über softflowd )

3) Machen Sie es zu jemandem, ein eifriger Verteidiger der Systeme zu sein

4) Überprüfen und testen Sie kontinuierlich, um sicherzustellen, dass das getan wird, was Ihrer Meinung nach getan wird

benchmark-/Checklisten-Ressourcen:.

http://cisecurity.org/ Das Center for Internet Security (CIS) ist ein gemeinnütziges Unternehmen, dessen Abteilung Benchmarking und Metriken Unternehmen dabei hilft, das Risiko von Geschäft und E-Commerce zu verringern Störungen aufgrund unzureichender technischer Sicherheitskontrollen. Die Abteilung bietet Unternehmen Konsens-Best-Practice-Standards für Sicherheitskonfigurationen sowie Ressourcen zur Messung des Informationssicherheitsstatus und zur rationellen Entscheidung über Sicherheitsinvestitionen.

http://iase.disa.mil/stigs/checklist/ Agentur für Verteidigungsinformationssysteme (DISA)

http://web.nvd.nist.gov/view/ncp/repository
http://csrc.nist.gov/fdcc/faq-common_security_configurations.html
Das National Checklist Program (NCP), definiert durch das NIST SP 800-70 Rev. 1), ist das Repository der US-Regierung für öffentlich verfügbare Sicherheitschecklisten (oder Benchmarks), die bereitgestellt werden Detaillierte Anleitungen auf niedriger Ebene zum Festlegen der Sicherheitskonfiguration von Betriebssystemen und Anwendungen.

21
Tate Hansen

Sie könnten viel schlimmeres tun, als mit der Sans Checkliste zu beginnen.

Meine einzige Kritik daran ist, dass nicht genug Wert auf die Verwaltung der Sicherheit eines bereitgestellten Systems gelegt wird - insbesondere auf die Aktualisierung der Hersteller-Patches, die Planung eines guten Berechtigungsmodells, die Verwaltung der IDS-Ausnahmeberichte usw.

17
symcbean

Zunächst müssen Sie den Zweck des Servers und das Bedrohungsmodell herausfinden, gegen das Sie sich verteidigen möchten. Ist es ein Einwegserver? Haben mehrere Benutzer Zugriff? Wenn mehrere Benutzer Zugriff haben, vertrauen Sie ihnen allen oder nicht?

Angenommen, dieser Server wird nur für Netzwerkdienste verwendet, und Sie müssen sich nicht mit der Bedrohung durch Angriffe von Personen befassen, die ein Konto auf Ihrem Computer haben. Hier sind die Schritte, die ich unternehme:

  • Aktivieren Sie eine Firewall. Ich verwende iptables, um eine lokale Firewall einzurichten. Ich verwende eine Standardverweigerung Richtlinie: Alle eingehenden Verbindungen sind standardmäßig blockiert, sofern dies nicht ausdrücklich in der Firewallrichtlinie zulässig ist. Ich aktiviere eingehende Verbindungen zu den Diensten, die in die Welt exportiert werden sollen (z. B. Port 25, wenn dies ein Mailserver ist, Ports 80/443, wenn dies ein Webserver ist usw.). iptables unterstützt die Stateful-Filterung hervorragend, sodass nach dem Herstellen einer Verbindung alle dieser Verbindung zugeordneten Pakete zulässig sind.

  • Aktualisieren Sie alle Pakete und aktivieren Sie automatische Updates. Ich aktualisiere meine Linux-Distribution auf die neueste Version aller Pakete (yum upgrade Unter Fedora, aber Verwenden Sie alles, was für Ihre Konfiguration geeignet ist. Ich habe auch ein Cron-Skript eingerichtet, um Updates einmal am Tag automatisch abzurufen und zu installieren (yum -y upgrade Unter Fedora). Mir ist klar, dass einige erfahrene Systemadministratoren möglicherweise von automatischen Updates abraten, da das Risiko besteht, dass ein Update einen Dienst unterbricht. Sie müssen dieses Risiko gegen das Risiko einer Sicherheitsverletzung aufgrund eines veralteten Pakets abwägen. Persönlich finde ich, dass die Benutzerfreundlichkeit und Bequemlichkeit automatischer Updates das Risiko von Dienstausfällen wert ist, aber dies ist möglicherweise nicht in allen Betriebseinstellungen die richtige Antwort.

  • SELinux aktivieren. SELinux bietet eine zweite Verteidigungsstufe gegen Angriffe auf exponierte Dienste. Es kann gelegentlich ein bisschen schmerzhaft sein (es hat gelegentlich Probleme für mich verursacht, einen Dienst auf eine schwer zu debuggende Weise zu unterbrechen), aber für eine sicherheitskritische Einstellung denke ich, dass es sich lohnt.

  • SSH für die Remoteverwaltung einrichten. Sie sollten SSH einrichten, damit Sie den Computer remote verwalten können. Ich empfehle, dass Sie auf der Clientseite einen privaten DSA-Schlüssel generieren, ihn mit einer Passphrase verschlüsseln, den entsprechenden öffentlichen Schlüssel in der Datei authorized_keys auf dem Server installieren und sich mit dem privaten Schlüssel anmelden. Möglicherweise möchten Sie auch die Konfigurationsdatei sshd_config Auf dem Server anpassen. Deaktivieren Sie PasswordAuthentication und verlangen Sie, dass sich Personen mit einem öffentlichen Schlüssel anmelden. Die Kennwortauthentifizierung kann ein nützlicher Fallback sein, falls mit Ihrem privaten Schlüssel etwas schief geht, aber es ist auch ein größeres Risiko, da Menschen häufig erratene Kennwörter wählen. Wenn Ihr System andere Benutzer hat, auf die Sie sich bei der Auswahl von Kennwörtern von sehr hoher Qualität nicht verlassen können, können Sie die Kennwortauthentifizierung deaktivieren. Wenn es nur Sie sind und Sie ein sehr hohes Vertrauen in alle Ihre Passwörter haben, können Sie es aktiviert lassen. Ich verhindere nicht, dass sich root über SSH anmeldet, aber Sie fühlen sich möglicherweise anders.

  • Wenn Sie mehrere Systemadministratoren haben, richten Sie Konten für diese ein. Geben Sie entweder jedem von ihnen Sudo Zugriff oder richten Sie ein separates Root-Konto ein für jeden Systemadministrator.

  • DNSSEC aktivieren. Ich konfiguriere meine Server so, dass ein lokaler Caching-DNS-Server ausgeführt wird, der Hostnamen nach Möglichkeit mit DNSSEC überprüft, um das Risiko von DNS-Spoofing zu verringern.

Dann treffe ich für jeden Dienst, der der Welt ausgesetzt ist, Vorkehrungen, um diesen Dienst zu sichern. Zum Beispiel aktiviere ich Kryptografie (z. B. STARTTLS für Mailserver) und Chroot- oder Sandbox-Server, wo immer dies möglich ist. Die Einzelheiten variieren jedoch von Service zu Service. Daher empfehle ich, für jeden Dienst, den Sie ausführen möchten, eine separate Frage zu stellen und um Rat zu fragen, wie dieser Dienst gesperrt werden kann.

Wenn Sie nach einer Linux-Distribution suchen, auf die bereits viel Härten angewendet wurde, kann ich Openwall Linux nur empfehlen.

(Kommentar: Wenn Sie nicht vertrauenswürdigen Benutzern auf Ihrem Server geben, wird es viel schwieriger, die Sicherheit zu erhöhen: Die Angriffsfläche ist viel größer. Wenn Sie sich Sorgen machen, schlage ich vor, eine separate Frage zu stellen, wie Sie Ihren Server sperren können Server zum Schutz vor Angriffen lokaler Benutzer mit Konten auf Ihrem Server, da die Techniken hierfür sehr unterschiedlich sind.)

13
D.W.

Und was ist mit den Grsecurity/PAX-Kernel-Patches? Dazu gehören sehr nette Funktionen zum Härten des Servers auf Kernel-Ebene.

Zusammenfassung:

  • Schützen Sie Haufen- und Stapelüberläufe
  • Prozesse anderer Benutzer ausblenden
  • Rollenbasierte Zugriffssteuerungsliste
  • Chroot Härten
  • / proc, FIFO und dmesg Einschränkungen
  • Erweiterte Protokollierungsfunktionen
6
Jerry Jacobs

Für Red Hat hat NSA Ratschläge zum Härten. Siehe Konfigurationsanleitung für Red Hat Enterprise Linux 5) - NSA/CSS .

Sie sollten auch für CentOS und andere Derivate hilfreich sein.

4
nealmcb

Für RHEL scheint der CIS Red Hat Enterprise Linux 5-Benchmark aus dem Center for Internet Security eine gute Ressource zu sein.

3
nealmcb

Wenn Sie versuchen, Ihr System durch Deinstallation nicht benötigter Pakete/Dienste zu sichern, haben Sie bereits ein größeres Problem. Diese Pakete sollten überhaupt nicht installiert worden sein.

Sie sollten ein minimalistisches System installieren und nur Pakete hinzufügen, die Sie wirklich benötigen. Gleiches gilt für Ihren Kernel. Kompilieren Sie Ihren eigenen Kernel nur mit den Funktionen, die Sie benötigen. Verwenden Sie Ihren Distributionskernel nicht mit Unterstützung für alles (Sie werden sowieso nicht 95% davon benötigen).

2
Martin Vegter