2008-08-07 16 views
19

Ich möchte eine billige Linux-Box als Web-Server einrichten, um eine Vielzahl von Web-Technologien zu hosten (PHP & Java EE in den Sinn, aber ich möchte mit Ruby experimentieren oder Python auch in Zukunft).Einen Linux-Webserver für den öffentlichen Zugriff sichern

Ich bin ziemlich versiert in der Einrichtung von Tomcat, um auf Linux zu laufen, um Java EE-Anwendungen zu bedienen, aber ich möchte diesen Server öffnen können, nur um einige Tools zu erstellen, die ich verwenden kann Ich arbeite im Büro. Alle Erfahrungen, die ich mit der Konfiguration von Java EE-Sites gemacht habe, waren alle für Intranet-Anwendungen, bei denen uns gesagt wurde, dass wir uns nicht darauf konzentrieren sollten, die Seiten für externe Benutzer zu sichern.

Was empfehlen Sie, einen persönlichen Linux-Webserver so sicher einzurichten, dass er für externen Datenverkehr geöffnet werden kann?

Antwort

5

Dieser Artikel hat einige der besten Möglichkeiten, Dinge zu sperren:

http://www.petefreitag.com/item/505.cfm

Einige Highlights:

  • Stellen Sie sicher, niemand die Verzeichnisse durchsuchen können
  • Stellen Sie sicher, nur Wurzel hat Schreibrechte für alles und nur root hat Leseberechtigungen für bestimmte Konfigurationsdateien
  • Führen Sie mod_security

Der Artikel nimmt auch einige Hinweise aus diesem Buch:

Apache Securiy (O'Reilly Press)

Soweit distros, ich habe Debain und Ubuntu laufen, aber es kommt nur darauf an, wie viel willst du machen. Ich habe Debian mit keinem X laufen lassen und einfach hineingehauen, wann immer ich etwas brauchte. Das ist eine einfache Möglichkeit, den Aufwand gering zu halten. Oder Ubuntu hat einige nette GUI-Dinge, die es leicht machen, Apache/MySQL/PHP zu kontrollieren.

0

Es gibt viele Möglichkeiten, dies zu tun, die gut funktionieren werden. Normalerweise würde ich nur eine .htaccess-Datei verwenden. Schnell einzurichten und zu sichern genug. Wahrscheinlich nicht die beste Option, aber es funktioniert für mich. Ich würde meine Kreditkartennummern nicht hinter mich legen, aber abgesehen davon kümmert es mich nicht wirklich.

1

Es ist sicher und sicher, wenn Sie Ihre Stimme darüber halten (dh selten wird jemand nach Ihrem Home-Server kommen, wenn Sie nur eine verherrlichte Webroot auf einer Heimverbindung hosten) und Ihr Verstand über Ihre Konfiguration Vermeiden Sie die Verwendung von root für alles, stellen Sie sicher, dass Sie Ihre Software auf dem neuesten Stand halten).

In diesem Sinne, wenn auch dieser Thread wird möglicherweise zu flammen schwinden, mein Vorschlag für Ihren persönlichen Server ist es, sich an alles Ubuntu (get Ubuntu Server here); Meiner Erfahrung nach ist es am schnellsten, Antworten zu bekommen, wenn man Fragen in Foren stellt (ich bin mir nicht sicher, was ich über die Aufnahme sagen soll).

Mein Heimserver Sicherheit BTW irgendwie Vorteile (ich denke, oder ich mag es zu denken) von nicht mit einer statischen IP (läuft auf DynDNS).

Viel Glück!

/mp

0

Wow, du bist so schnell eine Dose Würmer eröffnen, wie Sie alles bis zu externem Datenverkehr zu öffnen beginnen. Denken Sie daran, dass das, was Sie als Versuchsserver ansehen, fast wie ein Opferlamm, auch eine leichte Beute für Leute ist, die mit Ihrem Netzwerk und Ihren Ressourcen schlechte Dinge tun wollen.

Ihr gesamter Ansatz zu einem extern verfügbaren Server sollte sehr konservativ und gründlich sein. Es beginnt mit einfachen Dingen wie Firewall-Richtlinien, beinhaltet das zugrundeliegende Betriebssystem (es wird gepatcht, es für die Sicherheit konfiguriert usw.) und bezieht jede Ebene jedes Stapels ein, den Sie verwenden. Es gibt keine einfache Antwort oder Rezept, fürchte ich.

Wenn Sie experimentieren möchten, werden Sie den Server lieber privat halten und ein VPN verwenden, wenn Sie remote daran arbeiten müssen.

1

Seien Sie vorsichtig beim Öffnen des SSH-Ports. Wenn du dies tust, vergewissere dich, dass du die Root-Logins deaktivierst (du kannst immer su oder sudo, sobald du rein kommst) und erwäge aggressivere Authentifizierungsmethoden. Ich sah einen riesigen Wörterbuchangriff in meinen Serverprotokollen an einem Wochenende nach meinem SSH-Server von einem DynDNS-Heim-IP-Server.

Das ist gesagt, es ist wirklich toll, in der Lage zu sein, zu Hause Shell von der Arbeit oder weg ... und die Tatsache, dass Sie SFTP über den gleichen Port verwenden können, konnte ich mir nicht vorstellen, ein Leben ohne sie . =)

1

Sie könnten eine EC2 instance from Amazon betrachten. Auf diese Weise können Sie problemlos "Zeug" testen, ohne die Produktion zu stören. Und zahlen Sie nur für den Platz, die Zeit und die Bandbreite, die Sie verwenden.

1

Wenn Sie einen Linux-Server von zu Hause aus ausführen, installieren Sie ossec darauf für eine nette leichte IDS, die wirklich gut funktioniert.

[EDIT]

Als Randbemerkung, stellen Sie sicher, dass Sie nicht in Konflikt geraten Ihre ISPs Acceptable Use Policy und, dass sie auf Standard-Ports eingehende Verbindungen erlauben laufen. Der ISP, mit dem ich gearbeitet habe, hatte in seinen Bedingungen geschrieben, dass Sie für die Ausführung von Servern über Port 80/25 getrennt werden könnten, es sei denn, Sie waren in einem Business-Class-Konto. Während wir diese Ports nicht aktiv blockierten (es war uns nicht wichtig, es sei denn, es verursachte ein Problem), erlauben einige ISPs keinen Verkehr über Port 80 oder 25, so dass Sie alternative Ports verwenden müssen.

2

Eine Sache, die Sie berücksichtigen sollten, ist, welche Häfen für die Welt offen sind. Ich persönlich öffne nur Port 22 für SSH und Port 123 für ntpd. Aber wenn Sie Port 80 (http) oder ftp öffnen, stellen Sie sicher, dass Sie zumindest wissen, was Sie der Welt servieren und wer damit was anfangen kann. Ich weiß nicht viel über FTP, aber es gibt Millionen von großartigen Apache-Tutorials nur eine Google-Suche entfernt.

5

Es ist wichtig, die Best Practices für die Sicherheit zu befolgen, wo immer es möglich ist, aber Sie möchten sich die Dinge nicht übermäßig schwer machen oder den Schlaf verlieren, weil Sie sich mit den neuesten Exploits beschäftigen.Nach meiner Erfahrung gibt es zwei wichtige Dinge, die sicher genug halten Sie Ihren persönlichen Server helfen können, im Internet zu werfen, während der geistige Gesundheit Halt:

1) Sicherheit durch Unklarheit

Unnötig zu sagen, die sich auf das in der 'realen Welt' ist eine schlechte Idee und nicht zu unterhalten. Aber das liegt daran, dass die Bösen in der realen Welt wissen, was da ist und dass es Beute gibt.

Auf einem persönlichen Server werden die meisten "Attacken", die Sie erleiden, einfach automatisierte Sweeps von bereits kompromittierten Maschinen sein, die nach Standardinstallationen von Produkten suchen, die als anfällig bekannt sind. Wenn Ihr Server an den Standardports oder an den Standardspeicherorten nichts verführt, wird der automatisierte Angreifer weitermachen. Wenn Sie also einen SSH-Server ausführen, legen Sie ihn auf einen nicht standardmäßigen Port (> 1024), und er wird wahrscheinlich nie gefunden. Wenn Sie mit dieser Technik für Ihren Web-Server durchkommen können, dann verschieben Sie das auch auf einen obskuren Port.

2) Paketverwaltung

nicht kompilieren und installieren Apache oder sshd von der Quelle selbst, wenn Sie absolut zu haben. Wenn Sie dies tun, übernehmen Sie die Verantwortung, die neuesten Sicherheitspatches auf dem neuesten Stand zu halten. Lassen Sie die netten Paketbetreuer von Linux-Distributionen wie Debian oder Ubuntu die Arbeit für Sie übernehmen. Installieren Sie aus den vorkompilierten Paketen der Distribution, und um auf dem neuesten Stand zu bleiben, müssen Sie nur gelegentlich dasapt-get-Update ausgeben oder das, was auch immer Sie für ein fantastisches GUI-Tool von Ubuntu benötigen.

+0

Solange es externen Verkehr erlaubt, ist es jedoch Teil der "realen Welt". – icedwater

1

Wenn Sie dies tun, geben Sie ein bisschen Geld aus und kaufen Sie zumindest einen dedizierten Router/Firewall mit einem separaten DMZ-Port. Sie sollten Ihr internes Netzwerk von Ihrem Server fernschalten, damit Ihr internes Netzwerk nicht sofort gefährdet ist, wenn (wenn nicht!) Ihr Webserver kompromittiert wird.

2

Bit-Tech.Net hat ein paar Artikel darüber geschrieben, wie man einen Heimserver mit Linux einrichten kann. Hier sind die Links:

Article 1
Article 2

Hoffnung diejenigen eine Hilfe sind.

2

@svrst erwähnt EC2. EC2 bietet eine API zum Öffnen und Schließen von Ports aus der Ferne. Auf diese Weise können Sie Ihre Box in Betrieb halten. Wenn Sie eine Demo aus einem Café oder einem Kundenbüro geben müssen, können Sie Ihre IP-Adresse abrufen und sie zur ACL hinzufügen.