Frage:
Reicht eine Firewall als Sicherheitsmaßnahme für einen Ubuntu-Server aus, auf dem eine Website gehostet wird?
b.bikivichi
2020-04-07 23:55:16 UTC
view on stackexchange narkive permalink

Ich habe kürzlich ein VPS mit Ubuntu darauf und möchte eine sehr einfache Website erstellen. Ich weiß jedoch nicht, welche Schritte ich zur Sicherung dieses Servers unternehmen soll.

Ich bin neu bei Ubuntu, neu bei der Sicherheit und neu beim Erstellen von Websites (die Website wird wahrscheinlich nur aus HTML, CSS, Django / Python und einige Datenbanken).

Meine größte Sorge ist, dass ein Hacker versuchen könnte, es als Zombie zu verwenden, und ich werde es nicht wissen. Oder dass Roboter versuchen könnten, sich anzumelden und sich an die Daten zu schleichen, die ich auf diesem Computer speichern werde, und ich werde es nicht wissen. Oder wer weiß was noch.

Ich habe die Firewall-Informationsseite auf der Ubuntu-Website gefunden, aber reicht das aus?

PS: Wenn es unmöglich ist Geben Sie eine Antwort, ich würde mich auch über eine Buch- / Website-Empfehlung für Ubuntu und Anfänger mit vollständiger Sicherheit

freuen
*** Für alle, die antworten ***, machen Sie bitte keine Liste nach der anderen aller *** anderen *** Dinge, die jemand verwenden möchte.Diese Listen werden endlos sein.Beschränken Sie Ihre Antworten auf die direkte Beantwortung der Frage.Andernfalls muss diese Frage so geschlossen werden, dass sie mit "Wie sichere ich einen Server?" Entspricht.
@schroeder Würde es Ihnen etwas ausmachen, auf dieses potenzielle Duplikat zu verlinken?Ich konnte keine Frage mit "Wie sichere ich einen Server?" Finden.als Titel (obwohl viele Variationen des Themas).
@JonBentley Ich betrachte dies nicht als Duplikat, aber viel zu weit gefasst, um es zu beantworten.
Acht antworten:
Steffen Ullrich
2020-04-08 00:08:47 UTC
view on stackexchange narkive permalink

Reicht eine Firewall als Sicherheitsmaßnahme für einen Ubuntu-Server aus, auf dem eine Website gehostet wird?

Angesichts der Technologien, die Sie verwenden möchten, möchten Sie eine dynamische datenbankgestützte erstellen Website ohne Erfahrung damit. Diese Art der Einrichtung ist typisch für Websites, die einfach zu ausnutzen sind: Datenbankgestützt ermöglicht häufig SQL-Injection, unsichere Uploads ermöglichen möglicherweise die Ausführung von Code usw. Die normale Paketfilter-Firewall unter Linux schützt nicht vor diesen Angriffen auf Anwendungsebene, dh Eine Firewall reicht nicht als Sicherheitsmaßnahme aus .

Angesichts der Erfahrung, über die Sie derzeit verfügen, empfehle ich dringend, keine dynamische Anwendung zu erstellen, auf die jeder zugreifen kann (und die möglicherweise ausgenutzt werden kann). Wenn dies nur für Ihre eigenen oder einige ausgewählte Benutzer gilt, können Sie versuchen, die Website mithilfe des vom Webserver festgelegten Mechanismus (z. B. htpasswd oder ähnlich) mit einem Kennwort zu schützen, um die Angriffsfläche zumindest einzuschränken, indem Sie einschränken, wer auf Ihre Website zugreifen kann.

Ich würde mich auch über eine Buch- / Website-Empfehlung für Ubuntu und Anfänger mit vollständiger Sicherheit freuen.

Um mehr über die Web-Sicherheit zu erfahren, können Sie mit dem Top beginnen 10 Sicherheitsrisiken für Webanwendungen. Im Allgemeinen ist dies leider ein ziemlich komplexes Thema. Erwarten Sie daher nicht, dass Sie schnell genug damit vertraut sind.

Danke, dass du Steffen geantwortet hast.Wird die normale Paket-Firewall jedoch für die anderen Angriffe (die nicht auf Anwendungsebene erfolgen) ausreichen?
@b.bikivichi: Eine Paketfilter-Firewall schützt vor dem Zugriff auf lokale Anwendungen, auf die ohne die Firewall möglicherweise von außen zugegriffen werden kann.Es kann auch verwendet werden, um eine Ratenbegrenzung durchzuführen, um mit DoS- oder Brute-Force-SSH-Zugriff fertig zu werden.Es schützt im Allgemeinen nicht vor allen möglichen Arten von Angriffen auf Anwendungsebene, kann jedoch für viele Arten konfiguriert werden.
Was mir in dieser Antwort fehlt, ist die Sicherheit in Schichten / Tiefe.Keine einzelne Aktion schützt ein mit dem Internet verbundenes System ausreichend.(Meiner bescheidenen Meinung nach!
@LvB: Sie haben Recht, dass eine einzelne Schutzschicht keine gute Idee ist.Aber das war eigentlich nicht die Frage.Die Frage war, ob eine Firewall __ genug Schutz bietet - und dies ist eindeutig nicht der Fall.Eine Firewall kann sicherlich Teil einer umfassenderen Strategie der mehrschichtigen Verteidigung sein.Dies im Detail zu erklären (notwendig, da nur wenige Kenntnisse über das OP vorhanden sind), wäre jedoch nicht Gegenstand dieser Frage und viel zu lang.
@SteffenUllrich Ich stimme zu (und ich hätte es als solches erwähnt, wenn es meine Antwort gewesen wäre)
Abhängig davon, wie die Website mit der Datenbank interagiert (wenn nur Daten von ihr abgerufen werden, anstatt auch zu schreiben), kann die Benutzerauthentifizierung eine zusätzliche Angriffsfläche erzeugen, anstatt ein Problem zu lösen, wenn sie nicht ordnungsgemäß implementiert wird.Dies hängt jedoch von der Art der Website ab.
@jackgu1988: Guter Punkt, und deshalb habe ich ausdrücklich empfohlen, vorhandene Authentifizierungsmechanismen zu verwenden, die in den Webserver integriert sind, und keine selbst erstellten, die in der Webanwendung implementiert sind.Um mich selbst zu zitieren * ".... unter Verwendung des etablierten Mechanismus, über den der Webserver verfügt (d. H. Htpasswd oder ähnliches) ..." *.
Anonymous
2020-04-08 01:05:16 UTC
view on stackexchange narkive permalink

Eine Firewall ist nie genug, sie ist das absolute Minimum. Dann ist es wünschenswert, eine Art IDS zu haben. Wenn Ihr SSH-Port beispielsweise offengelegt ist, sollten Sie Brute-Force-Angriffe blockieren, auch wenn Sie ein sicheres Kennwort haben. Ein typischer Server im Internet wird hunderttausend Mal am Tag untersucht und angegriffen. Ich weiß aus all den Benachrichtigungen, die ich an einem einzigen Tag erhalte und nur durch Lesen der Protokolle. Sicherheit kann übrigens leicht zu einer Vollzeitbeschäftigung werden. Und wenn Sie Protokolle haben, diese aber nie lesen, könnten Sie etwas verpassen.

Wenn Sie eine Website von Grund auf neu erstellen, besteht die größte Gefahr meines Erachtens in Ihrem eigenen Code. Ihr größter Feind sind Sie, wenn Sie nicht wissen, was Sie tun. Wenn Ihr Code beispielsweise SQL-Injektionen zulässt, schützt Sie ufw nicht. Die Verwendung eines Frameworks sollte Ihnen helfen, einige Anfängerfehler zu vermeiden, garantiert jedoch nicht die Qualität des Codes. Sie müssen Best Practices und das Schreiben von sicherem Code lernen. Das Framework wird Ihnen das nicht beibringen.

Da Sie Python erwähnt haben, schlage ich pylint vor, um die Qualität Ihres Codes zu testen. Es gibt andere Tools wie Bandit oder Mypy für spezifischere Überprüfungen.

Eine WAF (Webanwendungs-Firewall) kann ebenfalls von Vorteil sein, erfordert jedoch einige Optimierungen, um effektiv zu sein, ohne zu restriktiv zu sein.

Es gibt viele Dinge, die Sie tun können, um Ihre Angriffsfläche zu reduzieren. Google: "Linux Hardening". Wenn ich ein Buch empfehlen müsste, wäre es Hacking ausgesetzt für einen umfassenden Überblick.

Eine wichtige Sache ist, Ihr System auf dem neuesten Stand zu halten . Es werden ständig Sicherheitslücken gefunden, manchmal auch 0 Tage, sodass Sie schnell reagieren müssen, um ein Upgrade oder einen Patch herunterzuladen (ein aktuelles Beispiel ist Exim). Ich empfehle daher dringend, einige Mailinglisten, Websites oder Blogs zum Thema Computersicherheit zu abonnieren, um stets über Neuigkeiten informiert zu sein.

Equifax wurde aufgrund eines Fehlers gehackt, der einige Monate zuvor behoben worden war. Ihr Aufschub kostete sie viel Geld. Wenn Sie Ihr System nicht warten, erhöht sich das Risiko erheblich. Alles was es braucht ist ein ausnutzbarer Fehler.

Schließlich würde ich Ihnen raten, sich pentest. Zum Testen auf SQL-Injektionen SQLmap ist ein großartiges Tool. Um jedoch die besten Ergebnisse zu erzielen, müssen Sie verstehen, wie die Tools funktionieren. Wenn Sie sie nur mit Standardoptionen ausführen, reicht dies meistens nicht aus, um Fehler zu finden (es sei denn, die Site ist sehr schlecht codiert). Manchmal belassen Webmaster vertrauliche Dateien wie SQL-Sicherungen auf ihrem Server, weil sie vergessen haben, die Datei nach dem Wiederherstellen einer Datenbank zu löschen. Eine Verzeichnisliste kann das Vorhandensein von Dateien anzeigen, die nicht vorhanden sein sollten.

Viele Websites verfügen über ein phpmyadmin-Verzeichnis und bieten keinerlei Schutz vor Brute-Force-Angriffen. Auf diese Weise kann ein Hacker Zugriff auf Ihre Datenbank erhalten. Wenn Sie wirklich phpmyadmin auf dem Server haben möchten, verwenden Sie zumindest keinen vorhersehbaren Verzeichnisnamen und beschränken Sie den Zugriff so, dass nicht das ganze Wort für null Vorteile verfügbar ist.

Darrell Root
2020-04-08 00:14:43 UTC
view on stackexchange narkive permalink

Eingang: Ihre Website ist an den TCP-Ports 80 und 443 für die Welt geöffnet. Möglicherweise müssen Sie auch einige andere Ports öffnen, um die Website verwalten zu können (z. B. TCP-Port 22 für SSH, obwohl Sie dies einschränken können die Quelle zu Ihrer Management Station). Das bedeutet, dass Ihr Webserver für Angriffe auf Anwendungsebene auf diese Ports offen ist. Testen Sie diese Ports auf Schwachstellen auf Anwendungsebene.

Ausgang: Wenn jemand einen Angriff auf Anwendungsebene gegen Ihren Webserver verwaltet, kann er ihn dazu verleiten, eine ausgehende Verbindung herzustellen, um die Fernsteuerung zu ermöglichen. Es ist daher gut, die Ausgangsverbindungen von Ihrem Webserver zu begrenzen.

Sie benötigen wahrscheinlich den Ausgangsport 53 (DNS). Möglicherweise benötigen Sie einen Ausgang, um Patch-Updates zu erhalten (idealerweise können Sie die Ziel-IPs spezifisch machen). Abhängig von Ihrer Anwendung benötigen Sie möglicherweise einen Ausgangszugriff, um auf Daten oder Authentifizierungsressourcen zugreifen zu können.

Während dies zutrifft, müssen Sie den Ein- und Ausgang des Servers steuern.Von ihnen selbst gibt es nicht genug.Auch dies sendet nicht die gestellte Frage (während noch Wert haben)
Dies sieht aus wie eine Firewall-Strategie, aber das sagen Sie eigentlich nicht.Ich denke, Sie müssen einige Punkte verbinden.
Coding_A_Nation
2020-04-08 01:42:06 UTC
view on stackexchange narkive permalink

Eine einzelne Firewall reicht nicht aus, da Sie mehrere Sicherheitsebenen benötigen, um die gesamte Lösung oder das gesamte System vor verschiedenen Arten von Angriffen in den OSI-Schichten zu schützen.

Mein Vorschlag ist das folgende Setup.

  • Der Server sollte sich hinter der IP-Firewall mit NAT und der Webanwendungs-Firewall befinden.
  • Entfernen Sie alle unnötigen Dienste auf den Servern.
  • Ändern Sie die Standardkennwörter
  • Schließen Sie nicht benötigte Ports.
  • Öffnen Sie nur 443 und mit TLS.
  • Patchen Sie Ihren Webserver regelmäßig.
  • Pentestieren Sie Ihre Website und Server mindestens einmal im Jahr.
  • DDOS / DOS-Lösung hilft auch.

Die folgenden Dokumente von NIST helfen Ihnen, zusätzliche Sicherheitsmaßnahmen anzuwenden. https://csrc.nist.gov/publications/detail/sp/800-44/version-2/final \ https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800 -44ver2.pdf https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-123.pdf

Roman Odaisky
2020-04-09 16:18:44 UTC
view on stackexchange narkive permalink

Eine Firewall macht auf einem typischen VPS so gut wie nichts.

Was macht einen Server anfällig? Eine fehlerhafte Anwendung, die Verbindungen von außen akzeptiert und ausgenutzt werden kann, um nicht autorisierten Zugriff zu erhalten.

Was macht eine Firewall? Es fängt Pakete basierend auf Regeln wie Quell-IP-Adresse, Zielport usw. ab. Reichen diese Informationen aus, um schädliche Pakete zu verwerfen, ohne legitime zu stören? Nein, es sei denn, die Angreifer sind rücksichtsvoll genug, um RFC 3514 (Veröffentlichungsdatum beachten) zu befolgen.

Die Verwendung einer Firewall ist marginal und schützt vor versehentlichem Fehlkonfigurieren einer Anwendung, um erreichbar zu sein Von außen, wenn es nur für andere Anwendungen auf demselben Server sichtbar sein sollte, kann es von fail2ban aufgerufen werden, um Benutzer auf die schwarze Liste zu setzen, deren Aktivität nach anwendungsspezifischen Regeln usw. als unerwünscht eingestuft wird.

Die Sicherheit eines typischen VPS hängt in erster Linie davon ab, welche Anwendungen ausgeführt werden und wie diese konfiguriert sind, nicht von seiner Firewall.

Ich bin froh, dass mindestens eine Person außer mir dies genauso betrachtet wie ich.
WoJ
2020-04-08 16:34:59 UTC
view on stackexchange narkive permalink

Nein, das ist nicht der Fall, da andere geantwortet haben.

Je nachdem, was Sie erreichen möchten, können Sie eine statische Website oder eine Einzelseitenanwendung.

Wenn Sie sie der Welt zugänglich machen müssen, können Sie diese als Lernerfahrung kostenlos auf einigen Plattformen wie Netifly oder GitHub oder GitLab Pages hosten (es gibt viele weitere, ich bin nicht verbunden)

Dies hilft Ihnen dabei, HTML, CSS, JavaScript und einige Automatisierungen auf sichere Weise kennenzulernen.

Es gibt Nachteile (keine serverseitige Generierung): Sie können immer noch nach einigen Daten greifen (durch Abrufen von APIs) - all dies kann tatsächlich ein guter Weg sein, um die Sicherheit zu erlernen.

Hermann
2020-04-09 14:59:24 UTC
view on stackexchange narkive permalink

Nein, und eine Firewall sollte nicht Ihr Hauptanliegen sein.

Sie können sich nicht auf eine Firewall verlassen, um die Sicherheit Ihres Servers auf magische Weise zu verbessern. Hier ist mein Anliegen: Eine Firewall kann Ihnen ein falsches Sicherheitsgefühl vermitteln. Eine Firewall schränkt die Kommunikationsmöglichkeiten Ihres Systems ein. Aber warten Sie - Ihr System sollte nicht einmal versuchen, auf eine Weise zu kommunizieren, die Sie nicht möchten. Meiner Meinung nach sollten Sie sich auf die Konfiguration der Dienste konzentrieren, anstatt eine Firewall zu optimieren.

Um dies zu erreichen, müssen Sie alle Ihre Dienste ordnungsgemäß konfigurieren. Beispielsweise können einige interne Dienste die Verbindungen zum lokalen System einschränken, indem sie stattdessen localhost auf 0.0.0.0 (alle) abhören. Die Datenbank kann lokale Unix-Sockets verwenden. Alle SSH-Server und Webserver, mit denen ich jemals gearbeitet habe, haben sinnvolle Standardeinstellungen. Verwenden Sie sinnvolle Passwörter. Halten Sie die Frameworks auf dem neuesten Stand. Wenn Sie zusätzliche Sicherheit wünschen, beschränken Sie den Schreibzugriff der Anwendungen oder verwenden Sie Apparmor, um das Verhalten der Anwendungen im Auge zu behalten.

In dem Moment, in dem Ihr Server einen Port öffnet, um einen nicht autorisierten Dienst anzubieten von dir bist du schon in Schwierigkeiten. Haben Sie Malware auf Ihrem Server, die schädliche ausgehende Verbindungen herstellt? Du hast schon verloren. Ein Angreifer, der es geschafft hat, unerwünschten Code auf Ihrem Computer auszuführen, wird sich sicher bald in Ihrer Firewall zurechtfinden. Sie möchten nicht, dass eines dieser Dinge überhaupt passiert. Konfigurieren Sie es daher sorgfältig.
Stellen Sie sich vor, Ihr Zimmer brennt. Sie schließen die Tür nicht und sagen "Dies ist eine stabile Tür, in der das Feuer sicher eingeschlossen ist" - Sie müssen das Feuer löschen.

Eine Firewall kann zum Schutz von Netzwerken nützlich sein, aber a Ein einzelner Server kann darauf verzichten. Für mich sieht die Gewohnheit, einzelne Systeme mit Software-Firewalls zu schützen, wie eine Windows 2000-Sache aus, bei der das Betriebssystem selbst unsichere Dienste offenlegt.

Update: Ich gehe davon aus, dass Sie beabsichtigen, eine kleine private Site zu hosten. Nehmen wir an, dass der Code in einer Ihrer Anwendungen oder in einem der verwendeten Frameworks / Anwendungen einen ausnutzbaren Fehler enthält. Dies kann nach meiner Vorstellung passieren:

  • Datenleck: Ein Angreifer erhält Informationen, die verborgen bleiben sollten.
  • Datenänderung: Ein Angreifer schafft es, die Daten auf Ihrem Computer zu ändern Site, die möglicherweise für böswillige Absichten (z. B. Phishing) verwendet wird.
  • Remotecodeausführung: Ein Angreifer kann seine willkürliche Ausführung auf Ihrem Computer ausführen, einschließlich, aber nicht beschränkt auf:

    • Bieten Sie einen der oben genannten
    • einen unerwünschten Dienst an¹
    • greifen Sie andere Computer an²
    • erhalten Root-Zugriff

Laut @schroeder umfasst die Wartung eines Servers Bemühungen, Angriffe abzuwehren. Mit Regeln für eingehenden Datenverkehr kann eine Firewall leicht 1 stoppen - es sei denn, der Angreifer verwendet UDP-Sockets. Eine Firewall kann auch 2 abschwächen, aber Sie müssten die Firewall sorgfältig konfigurieren, um ausgehende Verbindungen nicht zuzulassen, ohne die gewünschten Funktionen wie Aktualisierungsmechanismen zu stören. Falls der Angreifer Root-Zugriff erhält, kann er die Firewall einfach deaktivieren und alle Anstrengungen akademisch machen.

Eine Firewall schützt andere Systeme mehr als Ihr eigenes System, Ihre Daten oder Benutzer. Es liegt an Ihnen, ob Sie sich für die Sicherheit anderer einsetzen möchten. Dies ist für Netzwerkadministratoren oder Serverfarmen interessanter als für den Personal Server. Konzentrieren Sie sich mehr auf die Anwendungen selbst als auf die Firewall.

Dies ist ein schlechter Rat und Ihre Feueranalogie ist ein perfektes Beispiel dafür, warum.Eine ordnungsgemäße Brandschutztür (oder eine physische Brandschutzwand) bedeutet, dass das Feuer *** im Raum enthalten ist und nicht das gesamte Gebäude *** zerstören darf."Tiefenverteidigung" ist ein Konzept aus einem bestimmten Grund.Sollten ordnungsgemäße Prozesse vorhanden sein?Na sicher.Ist es möglich, 100% der Zeit alles 100% richtig zu machen?Natürlich nicht.Deshalb werden *** Milderungen *** verwendet.
Ich erweiterte meine Antwort in der Hoffnung, meine Überlegungen zu klären.
Georgiy Chipunov
2020-04-08 00:14:48 UTC
view on stackexchange narkive permalink

House Keeping:

  • Firewall
  • Bullproof-PHP-MysqlCode
  • Schließen Sie alle nicht verwendeten Ports

Ihre Apache- und PHP-Bins sollten über Schreib- / Lese- / Ausführungsberechtigungen für die richtigen Ordner verfügen.

  • google: 'sicherer Apache-Server'

  • Google: "Linux Secure Networking"; // Befehle
  • google: 'Linux Exploits' und alles, was mit Linux Root Scanner zu tun hat.
  • Es ist eigentlich eine Einführung in Linux und Frontend-Codierung, das kann es nicht sein So nutzen nur Wartung und Vlog-Technologie das Lesen.

    Dies beantwortet nicht die eigentliche Frage, d. H. Wenn eine Firewall ausreicht.Abgesehen davon ist überhaupt kein PHP am Setup des OP beteiligt.Und es ist nicht klar, ob Apache beteiligt ist, möglicherweise Nginx oder andere Server.
    "Bullproof-PHP" danke, ich musste lachen


    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
    Loading...