티스토리 뷰
본 포스팅은 Apache Referer 기능에 대한 WebtoB 대체 방안에 대해 알아보겠습니다.
1. Apache Referer
apache에서는 출발지 즉 사용자 접속에 대한 제어가 가능합니다. 또한, 유저가 아닌 외부의 링크(referer)를 통해 특정 페이지나 파일들을 계속적으로 호출할 경우에도 제어가 가능합니다.
1.1 사용자 제어
httpd.conf 내에 Directory 내에 설정이 가능합니다.
Options FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
deny from 123.123.123. 123.123.125.125
</Directory>
Order 순서에 따라 모든 ip를 allow하고 표기된 123.123.123. 123.123.125.125 만 차단하는 설정이다.
1.2 외부의 링크 제어
httpd.conf 내에 Directory 내에 설정이 가능합니다.
SetEnvIF Referer "http://(.*\.)?amazonaws.com" block
SetEnvIF Referer "http://spam.test.com " block
SetEnvIF Referer "http://aaa.bbb.com" block
<Directory "/">
Options FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
deny from env=block
</Directory>
###################################
Order 순서에 따라 모든 url을 allow하고 block으로 선언된 Referer URL만 막는 설정이다.
1.3 Referer 활용 예제
디렉토리를 제한하는 방법
Ex) Directory “/home/nrson/test/avi“로 설정 된 위치의 동영상 파일들을 설정된 도메인에서 접근 해야만 사용할 수 있도록 하는 설정이다.
SetEnvIF Referer "http://nrson.test.com" local_test
SetEnvIF Referer "http://127.0.0.1" local_test
<Directory "/home/nrson/test/avi">
Order deny ,allow
Deny from all
Allow from env=local_test
</Directory>
이미지 파일 확장자로 제한하는 방법이다.
Ex) Files로 설정 된 확장자의 동영상 파일들을 설정된 도메인에서 접근 해야만 사용할 수 있도록 하는 설정이다.
SetEnvIF Referer "http://nrson.test.com" local_test
SetEnvIF Referer "http://127.0.0.1" local_test
<Files ~ ".(gif|jpg|png)$">
Order deny ,allow
Deny from all
Allow from env=local_test
</Directory>
2. WEBTOB ACCESS 절을 이용한 구현
Client 에서 접속을 시도할 때, IP address 나 network/netmask 들을 기준으로 요청의 허용/제한을 설정하고, 요청 허용/제한이 적용되는 순서를 설정할 수 있다. Access 절은 DIRECTORY/URI/EXT/TCPGW 절에 적용될 수 있으며, 각각에서 정의한 resource 를 허용/제한한다
2.1 환경 설정 및 설명
$WEBTOBDIR/config/http.m 파일에 ACCESS 절이 존재하는지 여부를 확인한다.
access1
Order = "allow, deny",
Allow = "all"
access2
Order = "allow, deny",
Allow = "211.1.1.10, 211.1.1.20"
access3
Order = "allow, deny",
Allow = "211.1.1.0/255.255.255.0"
access4
Order = "deny, allow",
Deny = "211.1.1.30"
access5
Order = "allow, deny",
Allow = "all",Deny = "211.1.1.30"
2.2 옵션 설명 옵션 내용
|
옵션 |
내용 |
필수 옵션 |
ACCESS name = <string> |
Access 절의 이름을 임의로 정할 수 있다. |
선택 옵션 |
Method = <literal> |
적용 할 HTTP 메소드를 설정한다. |
MethodException = <literal> |
제외 할 HTTP 메소드를 설정한다. | |
Order = <literal> |
Allow, AllowIf, Deny, DenyIf, Method가 적용되는 순서를 설정한다 (하단 표 참조) | |
Allow = <literal> |
요청이 허용되는 IP 주소나 network/netmask들을 설정 | |
Deny = <literal> |
요청이 거절되는 IP 주소나 network/netmask들을 설정 | |
Allowif = <literal> |
“<header field name> | |
Denyif = <literal> |
AllowIf와 동일한 방식으로 설정한다 |
# Order에 따른 처리 순서
|
옵션 |
내용 |
Deny, Allow |
Method > Deny > DenyIf > Allow > AllowIf 순서로 match한다. |
- 요청 메소드가 Method 항목에 포함되지 않을 경우: 요청 허용. |
Allow, Deny |
Method>Allow>AllowIf>Deny>DenyIf 순서로 match한다. |
- 요청 메소드가 Method 항목에 포함되지 않을 경우: 요청 거절. |
3 Referer 처리 테스트
webtob에서 index.html 파일을 호출하여 다른 uri로 다시 한번 호출하는 방법이다.
3.1 테스트 샘플 코드
~~~~~~ 생략 ~~~~~~~~~,
*VHOST
referer_t DOCROOT="/pinfra/user/narason/webtob/docs",
PORT = "8089",
HOSTNAME = "192.168.15.211",
SERVICEORDER = "uri,ext",
Headers = "nocache1,nocache2",
IndexName = "test.html"
~~~~~~ 생략 ~~~~~~~~~,
*URI
uri1 Uri = "/test", Svrtype = JSV, vhostname = "referer_t", svrname = "MyGroup", AccessName = accesslog
uri2 Uri = "/", Svrtype = HTML, vhostname = "referer_t", svrname = "html"
~~~~~~ 생략 ~~~~~~~~~,
*ACCESS
accesslog
Order = "allow,deny",
DenyIf ="Referer http://192.168.15.211:8089*"
*HEADERS
nocache1 action = "AddResponse", FieldName = "Cache-Control", FieldValue = "no-cache,no-store"
nocache2 action = "AddResponse", FieldName = "Pragma", FieldValue = "no-cache"
*EXT
htm MimeType = "text/html", SvrType = HTML
(index.html 파일)
<html>
<body>
<script language="javascript">
location.href="/test/index.jsp"
</script>
</body>
</html>
결과 화면
(Request-Line) GET /index.html HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Accept-Encoding gzip, deflate
Accept-Language ko-KR
Connection Keep-Alive
Host 192.168.15.211:8089
If-Modified-Since Tue, 08 Jan 2013 05:59:21 GMT
If-None-Match "0-6f-50ebb5b9"
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP02)
(index.jsp 파일)
<%@ page language="java" session="true" contentType="text/html; charset=euc-kr" %>
<html>
<head><title>서버 테스트 Page</title></head>
<body align="center" bgcolor="#8CA1FF">
<FONT COLOR="#FFFFFF"><B># This page is test.jsp File</B><br><br></FONT>
</body>
</html>
결과 화면
Access log를 거치지 않았을 경우의 index.jsp 결과 화면
(Request-Line) GET /test/index.jsp HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Accept-Encoding gzip, deflate
Accept-Language ko-KR
Connection Keep-Alive
Cookie org.apache.tapestry.locale=ko; JSESSIONID=P0XbsV9XNnmOjGrRXz4b0Zj6705KQlepjrVnbM7quVrOkmOssWouOZ1Ni932rAZQ.infrasvr_servlet_engine1
Host 192.168.15.211:8089
Referer http://192.168.15.211:8089/index.html
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP02)
3.2 정규 표현식을 이용한 URL 처리
정규표현식을 이용한 DenyIf 수정
1차, 2차 ip가 무엇으로 들어오든 2차, 3차 도메인이 168.15일 경우 모두 막는 설정
첨부한 javaScriptTest.html 파일에서 정규표현식 테스트 하실 수 있습니다.
Regexp string: Referer http://.*.168.15.*:8089
Subject string: Referer http://192.168.15.211:8089
에 각각 위와 같이 입력 값을 넣고 위에 표기한 빨간색 버튼을 누르시면 하단의 결과 창에 결과 값이 나옵니다.
만약 아래와 같이 나올 경우 해당 정규표현식으로 Subject string:이 도출되지 않습니다.
Regexp string: Referer http://*.168.15.*:8089
Subject string: Referer http://192.168.15.211:8089
< 참고 자료 >
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=57388 사이트 참고
'④ 미들웨어 > ⓦ WebtoB' 카테고리의 다른 글
[WebtoB] Caching Test (0) | 2018.07.06 |
---|---|
[WebtoB] 로드밸런싱 테스트 (0) | 2018.07.05 |
[WebtoB] ReverseProxy 로그밸런싱 처리 방법 (0) | 2018.07.04 |
[Web Server] SSL 설정 가이드 (0) | 2018.06.29 |
[Web Server] WEBTOB 사용 포트 가이드 (0) | 2018.06.07 |
- Total
- Today
- Yesterday
- node.js
- SWA
- 쿠버네티스
- 마이크로서비스
- JBoss
- OpenStack
- API Gateway
- aws
- git
- 마이크로서비스 아키텍처
- openstack tenant
- 아키텍처
- 오픈스택
- Architecture
- aa
- jeus
- apache
- MSA
- kubernetes
- Da
- SA
- JEUS7
- TA
- openstack token issue
- nodejs
- k8s
- wildfly
- Docker
- webtob
- JEUS6
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |