Nginx Secure 모듈을 이용한 보안링크
1. Nginx 설치
1) Nginx 다운로드
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 제한등과 같이 사용을 하면 좋을 듯 하다
̦