2009-05-23 3 views
3

웹 앱의 관리 영역에 대한 액세스를 어떻게 보호 하시겠습니까?공개 및 비공개 레일 앱의 관리 영역 보안 방법

레일스 CMS는 공개적으로 페이지를 제공합니다. webserver (apache) 또는 방화벽 (netfilter)을 사용하여 백엔드 (/ admin)에 액세스 할 수 없게하고 싶습니다.

SSL 인증서를 사용하여이를 수행 할 수 있습니까? 백엔드에 대한 액세스를 서버에 대한 SSH 액세스와 유사한 "키"를 가진 사용자로만 제한하려고합니다.

미리 감사드립니다.

답변

2

사용자가 SSL 인증서가 갈 수있는 방법이라는 것을 절대적으로 맞다 :

그것은 당신이 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> 

노하우를 원하는 같은 소리. 드물게 이루어지기는하지만 설정하는 것이 까다로울 필요는 없습니다.

이 문제에는 두 가지 구성 요소가 있다는 것을 기억해야합니다. 첫 번째는 "어떻게 돈을 벌지?"보안 시스템인데, 두 번째는 "어떻게해야 내가 실수로 borks my 보안?"

내가 먼저 제안하는 것은 관리 도구에 대해 별도의 레일즈 애플리케이션을 작성하고 다른 포트에있는 다른 웹 서버와 함께 실행하는 것입니다. (관리 사이트의 URL에 포트 번호를 지정하지 않으려면 Host: 헤더를 사용하는 두 웹 서버의 프록시를 사용하여 foo.com에 대한 요청을 한 서버에 리디렉션하고 다른 서버에 admin.foo.com을 리디렉션하십시오.) 이렇게 분리하면 일반 사용자가 실수로 관리자 기능에 액세스하지 못하게하고 SSL 설정을 쉽게 할 수 있습니다.

관리 서버의 경우 SSL 액세스 전용으로 설정하십시오. 새 서명 인증서를 만들고 서명 인증서에 서명 된 인증서 만 연결하도록 허용합니다. (이것은 웹 서버에 따라 다르므로이 작업을 수행하는 방법에 대한 자세한 내용이 필요하면 사용중인 서버 및 구성의 특성을 제공하는 새로운 질문을 게시하고 싶을 것입니다. 비 SSL 사이트 또는 SSL 사이트의 인증되지 않은 사용자가 액세스 할 수있는 페이지)를 통해 관리자의 웹 브라우저에서 사용자가 로그인 할 수있는 인증서를 자동으로 생성하고 업로드하게 할 수 있습니다.

액세스를 취소해야 할 때 해지 목록에 해당 인증서를 넣을 수 있도록 서명 한 모든 cert의 사본을 보관하십시오.