메뉴 닫기

Nginx Secure 모듈을 이용한 보안링크 #1 (HTTP)

Nginx Secure 모듈을 이용한 보안링크

 

1. Nginx 설치

     1) Nginx 다운로드

# wget http://nginx.org/download/nginx-1.8.0.tar.gz

 

     2) 압축 해제

 

# tar xvfpz nginx-1.8.0.tar.gz

 

     3) nginx 컴파일

# ./configure –prefix=/usr/local/nginx-1.8.0 –with-http_secure_link_module ;secure 모듈 enable

# make

# make instlal

 

2. secure link 사용을 위한 nginx.conf 설정

      location /smiletest/ {                     # location 부분에 추가

    secure_link $arg_st;              #url호출시 http://cloudv.kr/smiletest/test.png?st=md5암호키

 

    secure_link_md5 smilekey$uri;      # smilkey 부분을 임의로 지정

 

    ## If the hash is incorrect then $secure_link is a null string.

    if ($secure_link = “”) {

        return 403;

    }

 

    ## The current local time is greater than the specified expiration time.

    if ($secure_link = “0”) {

        return 403;

    }

}

 

3. 보안링크 호출

      1) 보통 일반적인 파일 및 이미지 호출 방법은 http://cloudv.kr/smiletest/test.png 와 같은 형태로 호출이

이루어지지만  nignx Secure 모듈을 적용후 위와 같은 빙식으로 호출할 경우에는 403에러는 출력한다

 

     2) 보안 URL 호출 방법

         – MD5 Hash 형태로 변환

 

# echo -n ‘smilekey/smiletest/test.png’ | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

42MLDAkOg9btcKiB2HCUeQ

 

– smilekey : nginx.conf 파일에서 설정한 값으로 지정

 

         – URL 호출

            MD5 Hash 값으로 변환된 값을 파일명뒤에 nginx.conf에서 설정한 값으로 url 뒤에 st라는 인자 값을

             입력해주면 된다

 

 

http://cloudv.kr/smiletest/test.png?st=42MLDAkOg9btcKiB2HCUeQ

 

     3) URL 만료 시간을 지정한 보안링크

         – nginx.conf 파일 수정

 

 

 

    secure_link $arg_st;      ->  secure_link $arg_st,$arg_expired;

    secure_link_md5 smilekey$uri;      ->  secure_link_md5 smilekey$uri$expired;

# nginx.conf 파일에서 해당 라인을 위와 같이 수정 후 재시작

 

         – URL 만료시간을 지정한 보안링크 호출

           MD5 Hash 형태로 변환하는 방법은 동일하며, UTC형태로 변환된 시간을 마지막 부분에 추가후

           MD5 Hash 형태로  변환한다

 

 

 

 

   #date +%s     리눅스 상에서 명령어로 쉽게 UTC 변환이 가능하다

   #date -d “+1 hours” +%s     1시간뒤에 만료일을 지정할 것이므로 1시간뒤의 UTC 값으로 변환

    1439432498

   #echo -n ‘smilekey/smiletest/test.png1439432498’ | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

    – test.png 뒤에 1시간 후인 UTC 시간 값을 추가후 MD5 Hash 형태로 변환

 

    http://http://cloudv.kr/smiletest/test.png?st=42MLDAkOg9btcKiB2HCUeQ&expired=1439432498

    – 현재시간에서 1시간후에는 403 에러는 출력하면서 정상적으로 호출이 불가능하며, 만료전까지는 이미지 호출이

      정상적으로 된다

 

 

지금까지 nginx 웹서버에서 보안모듈을 이용한 URL 호출방법에 대해서 테스트를 했지만

보안모듈을 이용해서 호출방법이 다르긴 하지만 Hash값이 소스보기로 노출이 될 경우에는 어느곳에서나

호출이 되기 때문에 referrer 제한등과 같이 사용을 하면 좋을 듯 하다

̦

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x