Web アプリの管理領域へのアクセスをどのように保護しますか?
当社の Rails CMS はページを公開しています。Web サーバー (Apache) またはファイアウォール (netfilter) を使用してバックエンド (/admin) にアクセスできないようにしたいと考えています。
これは SSL 証明書を使用して行うことができますか? サーバーへのSSHアクセスと同様に、バックエンドへのアクセスを「キー」を持つ人だけに制限したいと思います。
前もって感謝します。
あなたはSSL証明書が進むべき道であることは絶対に正しいです。また、設定するのはめったにありませんが、設定するのはそれほど難しいことではありません。
この問題には2つの要素があることを覚えておくことが重要です。1つ目は「どうすればやっかいなことをうまく機能させることができるか」であり、これはセキュリティシステムであるため、2つ目は「誤って自分を困らせるようなことをしないように設定する方法」です。安全?"
私が最初に提案するのは、管理者用に別のRailsアプリケーションを作成し、それを別のポートの別のWebサーバーで実行することです。(管理サイトのURLにポート番号を入れないようにしたい場合は、両方のWebサーバーの前でプロキシを使用して、Host:
ヘッダーを使用して要求をfoo.com
一方のサーバーともう一方のサーバーにリダイレクトしますadmin.foo.com
。)この分離により、通常のユーザーに誤って管理機能へのアクセスを許可しないようにし、SSLのセットアップを容易にします。
管理サーバーの場合は、SSLアクセス専用に設定します。新しい署名証明書を作成し、署名証明書によって署名された証明書のみが接続できるようにします。(これはWebサーバーに依存します。これを行う方法の詳細が本当に必要な場合は、使用しているサーバーと構成の詳細を示す新しい質問を投稿することをお勧めします。)ページを設定できます(非SSLサイト、またはSSLサイトの非認証ユーザーがアクセスできるページ)では、管理者のWebブラウザーが自動的に証明書を生成してアップロードし、署名してアクセスを許可します。
アクセスを取り消す必要があるときにその証明書を失効リストに入れることができるように、署名したすべての証明書のコピーを保管してください。
ファイアウォールを使用しないでください。実装が複雑になるだけです。「正しい」アプローチは、.htaccess を使用するか、Apache ディレクトリ構成で認証を設定することです。
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>
ハウツー: http://eregie.premier-ministre.gouv.fr/manual/mod/mod_ssl/ssl_howto.html