2009-05-23 9 views
3

Wie würden Sie den Zugriff auf den Admin-Bereich für eine Web-App sichern?So sichern Sie einen Admin-Bereich für eine öffentliche und private Rails-App

Unser Rails CMS bietet Seiten öffentlich an. Ich möchte das Backend (/ admin) nicht zugänglich machen, entweder mit dem Webserver (Apache) oder der Firewall (Netfilter).

Könnte dies mit einem SSL-Zertifikat geschehen? Ich möchte den Zugriff auf das Backend nur auf diejenigen beschränken, die den "Schlüssel" haben, ähnlich dem SSH-Zugriff auf einen Server.

Vielen Dank im Voraus.

Antwort

1

NICHT die Firewall verwenden, Sie werden nur Ihre Implementierung komplizieren. Der "richtige" Ansatz besteht darin, .htaccess zu verwenden oder die Autorisierung in der Apache Directory-Konfiguration einzurichten.

Es klingt wie Sie SSLRequire

SSLVerifyClient  none 
<Directory /usr/local/apache/htdocs/secure/area> 
SSLVerifyClient  require 
SSLVerifyDepth  5 
SSLCACertificateFile conf/ssl.crt/ca.crt 
SSLCACertificatePath conf/ssl.crt 
SSLOptions   +FakeBasicAuth 
SSLRequireSSL 
AuthName    "Snake Oil Authentication" 
AuthType    Basic 
AuthUserFile   /usr/local/apache/conf/httpd.passwd 
require    valid-user 
</Directory> 

Howto wollen: http://eregie.premier-ministre.gouv.fr/manual/mod/mod_ssl/ssl_howto.html

2

Sie haben völlig Recht, dass ein SSL-Zertifikat ist der Weg zu gehen. Und es ist gar nicht so schwierig einzurichten, obwohl es selten getan wird.

Es ist wichtig, daran zu denken, dass dieses Problem zwei Komponenten hat. Der erste ist: "Wie kann ich das verdammte Ding überhaupt arbeiten lassen", und da es sich um ein Sicherheitssystem handelt, lautet das zweite: "Wie richte ich es so ein, dass ich wahrscheinlich nicht zufällig etwas tun werde, was mich nervt? Sicherheit?"

Das erste, was ich vorschlagen würde ist eine separate Rails-Anwendung für die Admin-Sachen zu schreiben, und es mit einem anderen Webserver auf einem anderen Port ausführen. (Wenn Sie wirklich vermeiden möchten, dass eine Portnummer in die URL der Verwaltungssite eingefügt wird, verwenden Sie einen Proxy vor beiden Webservern, der den Header Host: verwendet, um Anforderungen an foo.com an einen Server und admin.foo.com an den anderen umzuleiten.) Durch diese Trennung wird sichergestellt, dass Sie nicht regelmäßig normalen Benutzern Zugriff auf Verwaltungsfunktionen gewähren und die SSL-Einrichtung vereinfachen.

Legen Sie für den Verwaltungsserver nur den SSL-Zugriff fest. Erstellen Sie ein neues Signaturzertifikat und lassen Sie nur vom Signaturzertifikat signierte Zertifikate zu. (Dies ist Webserver-abhängig; wenn Sie wirklich Details dazu benötigen, möchten Sie wahrscheinlich eine neue Frage stellen, die die Besonderheiten des Servers und der Konfiguration angibt, die Sie verwenden.) Sie können eine Seite einrichten (auf der Nicht-SSL-Site oder auf einer Seite, die für nicht authentifizierte Benutzer auf der SSL-Site zugänglich ist), bei der die Webbrowser Ihres Administrators automatisch ein Zertifikat generieren und hochladen, das Sie signieren können, um ihnen Zugriff zu gewähren.

Behalten Sie Kopien aller von Ihnen unterzeichneten Zertifikate, sodass Sie dieses Zertifikat in die Sperrliste aufnehmen können, wenn Sie den Zugriff widerrufen müssen.

Verwandte Themen