본문 바로가기
IT정보/보안

[Nginx] X-Frame-Options 웹취약점 예제, 명령어 (gs인증)

by 아크투어 2023. 8. 8.
반응형

Nginx X-Frame-Options 설정

 

'웹취약점 GS인증대비'
-

"nginx x-frame-options / hsts / x-content-type-options / x-xss-protection"

(적용예시및 테스트)

 

 

X-Frame-Options 개념

웹 페이지가 다른 웹 사이트의 프레임 또는 iframe 내에 표시되지 않도록 하는 HTTP 헤더입니다.
공격자가 사용자가 인식하는 것과 다른 것을 클릭하도록 사용자를 속이는 클릭재킹 공격을
완화하는데 도움이 되는 보안 기능이다.

 

| HTTP 응답헤더 종류

"DENY" - 해당 페이지는 frame을 랜더링 하지 않음
"SAMEORIGIN" - 해당 페이지와 동일한 origin에 해당하는 frame만 렌더링
"ALLOW-FROM  URL" - 지정된 uri(orgin)에 해당하는 frame만 렌더링

 

1. nginx X-Frame-Options 명령어

# nginx.conf 파일편집
$ sudo vi /etc/nginx/nginx.conf

# DENY의경우 아래내용 추가
$ add_header X-Frame-Options DENY;

# SAMEORIGIN 의경우 아래내용 추가
$ add_header X-Frame-Options SAMEORIGIN;

# example.com 특정URL의 경우 아래내용 추가
$ add_header X-Frame-Options ALLOW-FROM http://example.com/
$ add_header X-Frame-Options ALLOW-FROM http://www.example.com/
$ add_header X-Frame-Options ALLOW-FROM https://example.com/
$ add_header X-Frame-Options ALLOW-FROM https://www.example.com/

# 재시작
$ sudo service nginx restart
OR 
$ sudo systemctl restart nginx

 

 

2. nginx X-Frame-Options SAMEORIGIN

우분투 기준으로 /etc/nginx/nginx.conf 경로에 가서 nginx.conf 파일을 편집한다.

nginx sameorigin
nginx sameorigin

 

3. nginx 웹취약점 처리

HSTS, X-Content-Type-Options, X-XSS-Protection 3가지 웹취약점 추가하기

$ add_header X-Frame-Options SAMEORIGIN;
$ add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
$ add_header X-Content-Type-Options nosniff;
$ add_header X-XSS-Protection "1; mode=block";

 

 

HSTS (HTTP Strict Transport Security)

1.개념
HTTPS를 강제하게 될 때서버측에서 302 Redirect 를 이용하여 전환시켜 줄 수 있습니다. 
하지만 이것이 취약점 포인트로 작용될수 있습니다.

2.max-age=63072000
HSTS가 브라우저에 설정될 시간이며 초단위로 설정됩니다. 63072000은 2년을 의미합니다.

3.includeSubdomains 
HSTS가 적용될 도메인의 subdomain (test.com -  또는 admin.test.com) 까지 HSTS를 확장 적용함을 의미합니다.

4.preload 
HSTS 적용이 클라이언트 측에서 preload로 이루어짐을 의미합니다.

5. 테스트사이트주소
https://hstspreload.org

 

 

HSTS 성공화면

hsts 테스트
hsts 테스트

 

 

X-Content-Type-Options

특정 유형의 MIME 기반 공격을 방지하여 웹 보안을 강화하는데 사용되는HTTP 헤더이다.
예를들어 mime type이 "text/plain" 으로 인식해야하나 html이나 script 등의 내용이 헤더에 있으면
브라우저가 실행해 버린다.

 

 

X-XSS-Protection

"X-XSS-Protection: 0" (XSS 필터링을 비활성화)
"X-XSS-Protection: 1" (XSS 필터링을 활성화)
     → 공격이 감지되면 브라우저는 안전하지 않은 영역을 제거 후에 렌더링을 하게 됩니다.
"X-XSS-Protection: 1; mode=block" (XSS 필터링을 활성화)
    → 공격이 탐지되면 안전하지 않는 영역을 제거하는게 아니라, 페이지 렌더링을 중단합니
반응형