차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
apache_httpd_보안취약점_점검 [2024/03/29 03:14] – [적용방법] koovapache_httpd_보안취약점_점검 [2025/07/09 01:10] (현재) koov
줄 1: 줄 1:
 ====== Apache HTTPD 보안취약점 점검 ====== ====== Apache HTTPD 보안취약점 점검 ======
 + --- //[[koovis@gmail.com|이강우]] 2025/07/09 01:09//
 +
  
  
줄 5: 줄 7:
  
 전역설정으로 제한 걸기 전역설정으로 제한 걸기
 +''/etc/httpd/conf.d/method.conf''
  
 <WRAP prewrap> <WRAP prewrap>
-<code apache /etc/httpd/conf.d/method.conf>+<code bash /etc/httpd/conf.d/method.conf>
 <Location "/*"> <Location "/*">
     <LimitExcept GET POST>     <LimitExcept GET POST>
줄 149: 줄 152:
 ==== 적용방법 ==== ==== 적용방법 ====
 <WRAP prewrap> <WRAP prewrap>
-<code apache>+<code bash>
 <IfModule mod_headers.c> <IfModule mod_headers.c>
  
줄 177: 줄 180:
 ==== 적용방법 ==== ==== 적용방법 ====
 <WRAP prewrap> <WRAP prewrap>
-<code apache>+<code bash>
 <IfModule mod_headers.c> <IfModule mod_headers.c>
     Header set X-Content-Type-Options nosniff     Header set X-Content-Type-Options nosniff
줄 192: 줄 195:
 ==== 적용방법 ==== ==== 적용방법 ====
 <WRAP prewrap> <WRAP prewrap>
-<code apache>+<code bash>
 <IfModule mod_headers.c> <IfModule mod_headers.c>
     Header set X-Frame-Options DENY     Header set X-Frame-Options DENY
줄 201: 줄 204:
 ==== 참조링크 ==== ==== 참조링크 ====
   * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options   * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
 +
 +
 +===== X-XSS-Protection =====
 +
 +<WRAP center round important 60%>
 +이 헤더는 이제 **사용 중단(Deprecated)**되었고 모든 최신 브라우저에서 제거되었습니다. 오히려 이 기능 자체가 또 다른 취약점을 만들 수 있어 사용하지 않는 것이 표준이 되었습니다. 강력한 CSP 정책이 이 헤더의 역할을 완벽하게 대체하고도 남습니다. 따라서 이 헤더는 적용하지 않아야 합니다.
 +</WRAP>
 +
 +
 +누락된 ''XSS'' 보호 헤더 취약점은 HTTP 응답 메시지의 ''X-XSS-Protection'' 헤더가 없거나 제대로 설정되어 있지 않은 취약점입니다. ''X-XSS-Protection'' 헤더는 비 지속적 크로스 사이트 스크립팅 감지 시, 페이지 로딩을 중단합니다. 공격자는 이 취약점을 확인하여 비 지속적 크로스 사이트 스크립팅 공격을 시도할 수 있습니다. 그 결과 공격자는 사용자의 정보를 탈취하거나, 서버로 하여금 의도하지 않은 동작을 수행하도록 강제할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션의 설정을 변경하여 ''X-XSS-Protection'' 헤더를 추가하고 그 값을 ''0''으로 설정해야 합니다.
 +
 +==== 적용방법 ====
 +<WRAP prewrap>
 +<code bash>
 +<IfModule mod_headers.c>
 +Header set X-XSS-Protection "1; mode=block"
 +</IfModule>
 +</code>
 +</WRAP>
 +
 +==== 참조링크 ====
 +  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
 +
 +
 +===== CSRF (Cross-Site Request Forgery) =====
 +웹 쿠키는 악의적인 사용자의 주요 공격 벡터인 경우가 많으므로 애플리케이션은 쿠키를 보호하기 위한 보안 속성을 사용해야 합니다. ''SameSite'' 속성으로 쿠키의 자사 또는 동일 사이트로 컨텍스트 제한 여부를 선택할 수 있습니다. 이는 사이트 간 요청 위조(CSRF)를 방지하기 위한 방법으로도 사용됩니다.
 +사이트 간 요청 위조(CSRF)를 막기 위해 SameSite는 Lax나 Strict로 사용하는 것이 좋습니다. 구글 크롬도 80버전으로 업데이트 되면서 ''SameSite'' 속성의 기본 값을 ''None''에서 ''Lax''로 상향 조절했습니다. 하지만 ''None''으로 사용해야 한다면 반드시 ''Secure'' 속성과 함께 사용해야 합니다.
 +
 +==== 적용방법 ====
 +<WRAP prewrap>
 +<code bash>
 +<ifmodule mod_headers.c>
 +# none으로 사용할 경우
 +Header always edit Set-Cookie (.*) "$1; Secure; SameSite=None;"
 +
 +# strict로 사용할 경우
 +Header always edit Set-Cookie (.*) "$1; SameSite=strict"
 +</ifmodule> 
 +</code>
 +</WRAP>
 +==== 참조링크 ====
 +
 +  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value
 +
 +===== 설정 예제 =====
 +위의 설정을 이용하여 권장하는 설정방법 예제이다.
 +사이트 도메인이 ''atl.kr''이고 추가적으로 Google Analytics를 이용한다고 할때를 가정해서 설정하면 아래와 같다.
 +
 +<WRAP prewrap>
 +<code bash>
 +<IfModule mod_headers.c>
 +    # --------------------------------------------------------------------------
 +    # 1. CSRF 공격 보조 방어 (SameSite Cookie Attribute)
 +    # --------------------------------------------------------------------------
 +    # 애플리케이션에서 발행하는 모든 쿠키에 SameSite=Lax 속성을 추가합니다.
 +    # 'Lax'는 대부분의 CSRF 공격을 막아주면서, GET 링크를 통한 사이트 간 이동은 허용하여 사용자 편의성을 유지합니다.
 +    # 'Strict'는 보안이 더 강력하지만, 다른 사이트에서 내 사이트로 링크를 타고 들어올 때 로그인이 풀리는 등 불편을 줄 수 있습니다.
 +    Header edit Set-Cookie ^(.*)$ "$1; SameSite=Lax"
 +
 +    # --------------------------------------------------------------------------
 +    # 2. 콘텐츠 보안 정책 (CSP)
 +    # --------------------------------------------------------------------------
 +    # atl.kr 도메인과 Google Analytics(GA4) 작동을 기준으로 정책을 구성합니다.
 +    Header set Content-Security-Policy "default-src 'self'; \
 +        script-src 'self' https://www.googletagmanager.com https://www.google-analytics.com; \
 +        style-src 'self' 'unsafe-inline'; \
 +        img-src 'self' data: https://www.google-analytics.com https://stats.g.doubleclick.net; \
 +        connect-src 'self' https://*.google-analytics.com; \
 +        font-src 'self'; \
 +        object-src 'none'; \
 +        frame-ancestors 'self'; \
 +        form-action 'self'; \
 +        base-uri 'self'; \
 +        upgrade-insecure-requests;"
 +
 +    # --------------------------------------------------------------------------
 +    # 3. 기타 필수 보안 헤더
 +    # --------------------------------------------------------------------------
 +    # 클릭재킹(Clickjacking) 방어 (구형 브라우저 호환용)
 +    Header set X-Frame-Options SAMEORIGIN
 +
 +    # MIME 타입 스니핑(Sniffing) 방어
 +    Header set X-Content-Type-Options nosniff
 +
 +    # HSTS (Strict-Transport-Security): 모든 접속을 HTTPS로 강제
 +    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
 +
 +    # Referrer-Policy: 사용자 프라이버시 보호
 +    Header set Referrer-Policy "strict-origin-when-cross-origin"
 +
 +    # Permissions-Policy: 브라우저 기능 접근 제어
 +    Header set Permissions-Policy "geolocation=(), midi=(), camera=(), microphone=()"
 +</IfModule>
 +</code>
 +</WRAP>
 +
 +
  • apache_httpd_보안취약점_점검.1711682068.txt.gz
  • 마지막으로 수정됨: 2024/03/29 03:14
  • 저자 koov