您如何保护对Web应用程序的管理区域的访问权限?
我们的Rails CMS公开提供页面。我想使用webserver(apache)或防火墙(netfilter)使后端(/ admin)无法访问。
这可以使用SSL证书吗?我想限制只有那些拥有“密钥”的后端的访问权限,类似于对服务器的SSH访问。
提前致谢。
答案 0 :(得分:2)
你是一个绝对正确的SSL认证方式。而且设置起来并不是那么棘手,尽管很少这样做。
重要的是要记住这个问题有两个组成部分。第一个是,“我怎么才能让这个糟糕的东西工作”,而且,这是一个安全系统,第二个是,“我如何设置它以便我不会意外地做一些让我烦恼的东西安全?“
我建议的第一件事是为管理员编写一个单独的Rails应用程序,并在另一个端口上使用不同的Web服务器运行它。 (如果您确实希望避免在管理站点的URL中输入端口号,请在使用Host:
标头的两个Web服务器前面使用代理将foo.com
的请求重定向到一个服务器和admin.foo.com
到另一个。)这种分离将有助于确保您不会意外地让普通用户访问管理功能,并使SSL设置更容易。
对于管理服务器,仅将其设置为SSL访问。创建新的签名证书,并仅允许签名证书签名的证书进行连接。 (这是依赖于Web服务器的;如果您确实需要有关如何执行此操作的详细信息,您可能希望发布一个新问题,提供您正在使用的服务器和配置的详细信息。)您可以设置一个页面(在非SSL站点,或者可访问SSL站点上未经过身份验证的用户访问的页面),您的管理员的Web浏览器将自动生成并上载您可以签名的证书,以便他们访问。
保留您签署的所有证书的副本,以便在您需要撤销访问权限时,可以将该证书放入撤销列表中。
答案 1 :(得分:1)
不要使用防火墙,你只会使你的实现复杂化。 “正确”的方法是在Apache Directory配置中使用.htaccess或设置授权。
听起来你想要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:http://eregie.premier-ministre.gouv.fr/manual/mod/mod_ssl/ssl_howto.html