액세스가 제한된 Magento 준비 환경 설정


18

액세스 제한이있는 준비 환경을 설정하는 가장 좋은 방법을 찾으려고합니다.

간단한 해결책은 기본 인증을 포기하는 것이지만 성능 최적화 및 액세스하려는 다른 유사한 외부 서비스를 테스트하는 동안 Google Page Speed ​​Insights를 지적 할 수는 없습니다.

검색 엔진에 표시되지 않도록 robots.txt로 완전히 공개 할 수 있습니다. 그러나 내 관심사는 robots.txt의 실수로 인한 위험이 상당히 높기 때문에 걱정할 필요가 없습니다.

검색 엔진을 차단하지 않으면 (또는 일부를 무시하는 경우) 실제 고객이 준비 사이트에 주문을하게되어 만족스럽지 않습니다.

또는 더 나쁜 것은 실수로 robots.txt를 프로덕션 환경에 배포하면 모든 Google 주스와 판매량이 줄어드는 것입니다.

그래서 내가 좋아하는 옵션은 간단한 IP 주소 제한입니다. 그러나 Nginx를 다시 시작하지 않고 제한 사항을 추가 / 제거하고 변경하는 동안 위험을 다시 최소화하기를 원합니다.

따라서 활성화 된 경우 개발자 IP 주소를보고 사용자의 IP 주소 (또는 X_FORWARDED_FOR)와 일치하는 경우에만 사이트 (프론트 및 백엔드)에 대한 액세스를 허용하는 빠른 모듈에 기대기 시작했습니다.

이것이 합리적인 해결책처럼 들리거나 내가 놓친 간단한 것이 있는지 궁금합니다.

업데이트 : robots.txt는 기본 백엔드 스위치를 통해 제어 할 수 있으며 데모 스토어 통지는 합법적 인 고객 주문을 막을 수 있으며 준비 사이트에 대한 공개 액세스에 대해 걱정하지 않기 때문에 Phil의 솔루션이 좋습니다.

그러나 준비 사이트에 대한 액세스를 제한하려는 사람에게는 Kris의 솔루션이 필요하다고 생각합니다.

업데이트 2 : 시스템 구성> 디자인> HTML 헤드에서 robots.txt 옵션이 무엇을 해야하는지 100 % 확신하지 못하지만 제 경우에는 간단한 검색에서 평범한 것처럼 보입니다. 평평한 robots.txt가 있습니다. 텍스트 파일을 사용하고 있으므로 구성 옵션이 존중되지 않습니다.

그래서 지금 유지 관리 모듈을 사용하려고합니다 : https://github.com/aleron75/Webgriffe_Maintenance

답변:


6

몇 가지 제안-일부는 내장되어 있습니다!

- 개발자 IP 제한 은 시스템 구성> 개발자에 내장되어 있습니다.

이것은 IP 액세스를 제한하지 않습니다. 를 따라 이동.

  • IP 제한은 어렵 기 때문에 개인적으로 방화벽에서 처리하는 것을 선호합니다. IP 테이블 또한 htaccess 제한이나 $_SERVER['REMOTE_ADDR']index.php 를 통한 후보 입니다.

  • 시스템 구성> 디자인> HTML 헤드에서 준비하는 동안 CMS 의 기본 페이지 당 로봇 메타 를 NOINDEX / NOFOLLOW로 업데이트합니다 .

여기에 이미지 설명을 입력하십시오

  • 동일한 구성 영역에서 데모 상점 통지표시하는 기능이 있습니다 .

여기에 이미지 설명을 입력하십시오


1
고마워 Phil. 로봇이 기본 백엔드 옵션이라는 것을 잊어 버렸습니다. robots.txt 파일로 수동으로 처리하는 것보다 사용하는 것이 조금 덜 위험합니다. 나는 실제로 개발자의 IP 제한을 알고 있었지만 실제로는 사이트에 대한 액세스를 제한하는 데 도움이되지 않습니다. 개발자 기능 만? 그리고 데모 공지-나중에 고객이 실수로 전화를 걸지 않아도 주문을 피해야합니다.
kalenjordan

1
네 말이 맞아 나는 그것을 어떻게 몰랐는지 전혀 모른다.
philwinkle 2016 년

11

(대부분의) 스테이징 환경을 잠그는 주요 방법은 기본 인증입니다. 그러나 Google은 엔진에 의해 검색되지 않도록하고 공개 웹 사이트에 링크가 표시되지 않도록 방지하고 Google에서 색인을 생성하는 것을 방지하기위한 예방 조치를 마련했습니다.

/etc/httpd/conf.d/robots.conf다음 별칭 으로 규칙을 설정했습니다 .

Alias /robots.txt /<path_to_public_html>/robots.txt
<Location /robots.txt>
  Satisfy any
</Location>

별명은 모든 요청을 robots.txt 위치로 잠근 파일로 라우팅합니다. 즉, Magento 준비 루트의 robots.txt 파일에 무엇이 있는지는 중요하지 않으며 서버는 항상 다음 규칙을 제공합니다.

User-agent: *
Disallow: /

위치와 만족 여부는 전역 disallow from any규칙 이 없으므로 robots.txt 파일을 인증에 관계없이 누구에게나 제공 할 수 있습니다 .

비밀번호 인증의 Satisfy any경우 .htaccess파일 에 추가 하여 단일 사이트에서 인증을 임시로 열 수 있도록 규칙을 설정했습니다 . 이는 동일한 전용 내부 준비 서버에서 여러 단계 사이트를 실행하기 때문입니다. 또한 다른 IP 주소를 유지하면서 특정 IP 주소에 대한 비밀번호 인증을 제거 allow from하는 규칙과 함께 규칙을 설정할 수 Satisfy any있습니다 (필요한 경우).

내가 보드 전체에서 IP 기반 화이트리스트를 좋아하지 않는 이유는 (즉, 암호 기반 인증이없는) 클라이언트의 IP 주소가 항상 고정적이지 않기 때문입니다. 즉, ISP가 임대 기간을 얼마나 보유하고 있는지에 따라 (잠재적으로) 매일 또는 매주 액세스 할 수 있도록 IP를 업데이트해야합니다.

DNS의 경우 DNS 크롤러가 퍼블릭 DNS가 필요한 모든 스테이지 사이트 호스트 이름에서 픽업하지 않도록 와일드 카드 DNS를 사용합니다. Google은 실제로 DNS 레코드에서 사이트를 선택합니다. 이것은 누군가가 어딘가에 링크를 남기는 경우를 찾는 유일한 방법임을 의미합니다. 그러나 로봇 파일이 허용되지 않는 규칙을 제공하도록 강요하면 링크를 찾으면 인덱싱이 중지됩니다.

회사 웹 사이트의 무대 사이트를 운영하는 상인 대신에 조금 다르게 행동하고 IP 주소가 알려지지 않은 한 무대 상자로 들어오는 모든 트래픽을 바로 막을 것입니다. 사이트에서 원격으로 (사내에서) 작업하는 사람은 내가 허용 할 수있는 고정 IP가없는 경우 회사 VPN에 연결하여 액세스해야합니다.

대부분의 게이트웨이와 달리 지불 프로세스를 진행하기 위해 서버에 콜백을 수행해야하는 지불 프로세서 통합과 같은 사항을 테스트해야하는 경우 공용 DNS를 갖추어야합니다.


2
이것은 정말 신중합니다. 우리는 또한 BASIC 인증을 사용하지만, 대부분의 경우 위에 언급 한 것과 같은 문제를 해결해야합니다 : 지불
처리자

6

유지 관리 모드를 활성화하는 모듈을 개발하여 전면에 액세스하는 사용자를 차단하는 것과 동일한 효과로 사용할 수 있습니다 (Magento의 기본 IP 차단 기능으로 제한 될 수있는 관리자는 아님).

실제로 유지 보수 모드가 활성화 된 경우에도 일부 IP가 프론트 엔드에 액세스하도록 허용 할 수 있습니다.

어쩌면 도움이되기를 바랍니다. 무료이며 오픈 소스입니다 : https://github.com/aleron75/Webgriffe_Maintenance


+1 니스! 이것은 내가 생각했던 종류의 모듈입니다. 니스 뒤에서 테스트 했습니까?
kalenjordan

안녕하세요, 불행히도 나는 바니시 뒤에서 테스트하지 않았습니다. 죄송합니다. 그렇게 하시겠습니까? ;-)
Alessandro Ronchi

준비 환경에서 작업 나는 내가 본 적이 c를이 논리는 / B를 일하는 것이 확실하면하지 않았다 REMOTE_ADDR사용할 수 있지만, 정확한 주소가 아닐 나는 비교할 더 나은 것 같아요, 그래서 하나 REMOTE_ADDR 또는 X_FORWARDED_FOR. 스테이징에서 잘 작동하므로 아직 개인적으로 파고 들지 않아도됩니다.
kalenjordan

4

이를 수행하는 여러 가지 방법이 있습니다.

한 가지 방법은 개발자가 올바른 IP 주소로 / hosts 파일을 편집하게하는 것입니다.

더 우아한 방식으로 이것을 수행한다고 주장하는 확장이 있습니다 : http://www.magentocommerce.com/magento-connect/et-ip-security.html


1
고마워 크리스! 나는 생각할 때 데모 스토어 기능을 사용하는 데 집중하고 있다고 생각합니다. robots.txt를 사용하여 수동으로 돌아 다닐 필요가없고 데모 스토어 통지가 있으므로 충분하다고 생각합니다. 그러나 스테이징에 대한 액세스를 제한하려는 사람에게는 찾은 모듈이 갈 길이라고 생각합니다. 감사!!
kalenjordan

2

주석에서 Varnish에 대해 물었으므로 예외를 포함하여 Varnish를 사용하여 HTTP 기본 인증과 구성을 공유합니다. VCL에서 설정해야합니다. 그렇지 않으면 캐시 된 페이지에 항상 액세스 할 수 있습니다.

니스 VCL 구성

VCL 파일 맨 위에 ACL로 정의한 지불 제공 업체의 콜백에 특정 IP 주소와 범위를 허용하고 싶습니다.

acl payment {
  "1.2.3.4"/28;
  "1.3.3.7";
}

그런 다음 vcl_recv바로 앞에 다음을 추가하십시오 return (lookup).

if (! req.http.Authorization ~ "Basic XXXXXXXXX"
&& ! client.ip ~ payment
&& ! req.url ~ "^/index.php/ADMIN/.*/upload") {
    error 401 "Restricted";
}

payment위에 정의 된 ACL입니다. 또한 Flash 업 로더가 인증 헤더를 보내지 않으므로 HTTP 기본 인증 뒤에서 실패하기 때문에 업로드 경로에 대한 액세스를 허용합니다. ADMIN을 실제 관리자 URL로 바꾸십시오. 이 방법으로 다른 예외를 추가 할 수 있습니다.

XXXXXXXXX는 base64로 인코딩 된 사용자 이름 및 비밀번호입니다. 이 문자열을 생성하려면 쉘에서 다음을 실행하십시오.

$ echo -n "username:password" | base64

그런 다음 VCL 끝에 이것을 추가하여 401 오류 응답을 정의하십시오.

sub vcl_error {
if (obj.status == 401) {
  set obj.http.Content-Type = "text/html; charset=utf-8";
  set obj.http.WWW-Authenticate = "Basic realm=Secured";
  synthetic {" 

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">

 <HTML>
 <HEAD>
 <TITLE>Error</TITLE>
 <META HTTP-EQUIV='Content-Type' CONTENT='text/html;'>
 </HEAD>
 <BODY><H1>401 Unauthorized (varnish)</H1></BODY>
 </HTML>
 "};
  return (deliver);
}
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.