차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
apache_httpd_보안취약점_점검 [2018/09/20 08:45] – 만듦 koov | apache_httpd_보안취약점_점검 [2024/03/29 03:27] (현재) – koov | ||
---|---|---|---|
줄 16: | 줄 16: | ||
</ | </ | ||
</ | </ | ||
- | + | ||
+ | |||
+ | ===== Apache httpd logfile permission(umask) ===== | ||
+ | |||
+ | 아파치 웹서버 로그 파일은 기본적으로 644로 생성된다. 이것은 실행하는 루트의 기본 umask가 0022로 설정되어있기 때문이다. | ||
+ | 따라서 웹서버를 기동하는 계정의 기본 umask값만 변경하면 자동으로 설정된다. | ||
+ | |||
+ | 하지만 계정의 기본값은 그대로 두고 아파치 웹서버의 설정변경만 하고 싶은경우 아래와 같이 설정하도록 한다. | ||
+ | |||
+ | ==== rpm 으로 설치한경우 ==== | ||
+ | |||
+ | rpm 패키지로 설치한경우에는 ''/ | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code vim> | ||
+ | umask 0027 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== envvars 사용법 ==== | ||
+ | rpm이 아닌 소스컴파일 설치한경우에 이 방법을 사용한다. | ||
+ | apache 기동 스크립트인 '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # pick up any necessary environment variables | ||
+ | if test -f / | ||
+ | . / | ||
+ | fi | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 위와같이 envvars 파일을 로딩하는 부분이 존재한다면 '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code vim envvars> | ||
+ | umask 0027 #<- 반드시 4자리 설정을 하여야 한다. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== apachectl 자체를 수정하는 방법 ==== | ||
+ | 만약 '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code vim> | ||
+ | umask 0027 #<- 이경우에도 반드시 4자리로 설정한다. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 위의 모든 방법을 써도 안되는경우 그냥 '' | ||
+ | |||
+ | |||
+ | ===== Host Header Poisoning / Injection ===== | ||
+ | |||
+ | HTTP Host Header 변조 공격을 방지하기 위해서는 아래와 같이 설정하여야 한다. | ||
+ | '' | ||
+ | |||
+ | * **Apache HTTPD** 의 경우 | ||
+ | <WRAP prewrap> | ||
+ | <code vim> | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP_HOST} !^(www.example.com|example.com)$ [NC] | ||
+ | RewriteRule .* - [F] | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 또는 VirtualHost 설정에서 기본 호스트를 최상단에 두어 걸러지도록 설정한다. | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code vim> | ||
+ | < | ||
+ | DocumentRoot / | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | * **JBoss EAP 7** 의 경우 Undertow 하위 시스템의 '' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 결과 xml 파일은 아래와 같습니다. | ||
+ | <WRAP prewrap> | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | <server name=" | ||
+ | ... | ||
+ | <host name=" | ||
+ | ... | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | ... | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * **JBoss EAP 6**의 경우 '' | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <alias name=" | ||
+ | <alias name=" | ||
+ | <!-- added --> | ||
+ | <rewrite pattern=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ==== 참조링크 ==== | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== Content-Security-Policy (CSP) ===== | ||
+ | 누락된 '' | ||
+ | CSP는 '' | ||
+ | |||
+ | ==== 적용방법 ==== | ||
+ | <WRAP prewrap> | ||
+ | <code apache> | ||
+ | < | ||
+ | |||
+ | # 누락된 Content-Security-Policy 헤더 취약점을 해결하기 위해서는 웹 애플리케이션 서버에서 Content-Security-Policy 헤더를 추가해야 합니다. 모든 웹 사이트 내의 콘텐츠를 서브 도메인을 제외한 같은 도메인에서만 제공 받으려면 다음과 같이 사용합니다. | ||
+ | Header set Content-Security-Policy " | ||
+ | |||
+ | # 서브 도메인을 포함시키려면 다음과 같이 사용합니다. | ||
+ | Header set Content-Security-Policy " | ||
+ | |||
+ | # 이외에도 신뢰할 수 있는 도메인의 리소스를 특정 웹 페이지 요소에서만 사용하도록 설정할 수도 있습니다.또한, | ||
+ | Header set Content-Security-Policy-Report-Only " | ||
+ | |||
+ | # 특정 사이트의 특정 리소스를 포함하려면 아래처럼 적용합니다. | ||
+ | Header set Content-Security-Policy " | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 참조링크 ==== | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== X-Content-Type-Options ===== | ||
+ | 누락된 X 콘텐츠 타입 옵션 취약점은 HTTP 응답 메시지 내에 '' | ||
+ | |||
+ | ==== 적용방법 ==== | ||
+ | <WRAP prewrap> | ||
+ | <code apache> | ||
+ | < | ||
+ | Header set X-Content-Type-Options nosniff | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 참조링크 ==== | ||
+ | * https:// | ||
+ | |||
+ | ===== X-Frame-Options ===== | ||
+ | 누락된 X 프레임 옵션 취약점은 HTTP 응답 메시지 내에 '' | ||
+ | |||
+ | ==== 적용방법 ==== | ||
+ | <WRAP prewrap> | ||
+ | <code apache> | ||
+ | < | ||
+ | Header set X-Frame-Options DENY | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 참조링크 ==== | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | ===== X-XSS-Protection ===== | ||
+ | 누락된 '' | ||
+ | |||
+ | ==== 적용방법 ==== | ||
+ | <WRAP prewrap> | ||
+ | <code apache> | ||
+ | < | ||
+ | Header set X-XSS-Protection "1; mode=block" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 참조링크 ==== | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | ===== CSRF (Cross-Site Request Forgery) ===== | ||
+ | 웹 쿠키는 악의적인 사용자의 주요 공격 벡터인 경우가 많으므로 애플리케이션은 쿠키를 보호하기 위한 보안 속성을 사용해야 합니다. '' | ||
+ | 사이트 간 요청 위조(CSRF)를 막기 위해 SameSite는 Lax나 Strict로 사용하는 것이 좋습니다. 구글 크롬도 80버전으로 업데이트 되면서 '' | ||
+ | |||
+ | ==== 적용방법 ==== | ||
+ | <WRAP prewrap> | ||
+ | <code apache> | ||
+ | < | ||
+ | # none으로 사용할 경우 | ||
+ | Header always edit Set-Cookie (.*) "$1; Secure; SameSite=None;" | ||
+ | |||
+ | # strict로 사용할 경우 | ||
+ | Header always edit Set-Cookie (.*) "$1; SameSite=strict" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== 참조링크 ==== | ||
+ | |||
+ | * https:// | ||
+ | |||
+ |