본문 바로가기

Server

Web - Apache HTTPS 프로토콜 강제 적용하기 (HSTS 설정) HSTS(HTTP Strict Transport Security)는 HTTP 응답 헤더에 설정하는 방식으로, 브라우저에게 HTTP 대신 HTTPS를 강제하도록 하는 기능입니다. HSTS 헤더를 중심으로 Apache 서버에서 HTTPS를 강제하는 방법을 알아보겠습니다. HSTS란 무엇인가요?HSTS는 서버가 브라우저에게 Strict-Transport-Security라는 HTTP 응답 헤더를 통해 HTTPS를 강제하도록 알려주는 보안 기술입니다. 브라우저는 이 헤더를 읽고 다음과 같은 동작을 수행합니다HTTP 연결 차단: HTTP로 접속하려는 시도를 HTTPS로 자동 변환합니다.정책 기억: HSTS 헤더의 max-age 값에 따라 정해진 기간 동안 HTTPS 강제 정책을 유지합니다.중간자 공격 방지: HTT.. 더보기
WAS - Tomcat SSL 적용 및 HTTP Methods 제한 방법 이번 포스팅에서는 Tomcat 서버에 SSL을 적용하고, HTTP Methods를 제한하여 보안을 강화하는 방법을 소개합니다.최근 서버 설정 중 발생한 문제 해결 과정도 함께 다뤄볼 예정이니, 관련 작업을 진행 중이신 분들에게 도움이 되었으면 합니다.1. Tomcat SSL 적용 방법SSL은 서버와 클라이언트 간 데이터를 암호화하여 안전한 통신을 가능하게 합니다. 1-1. 준비물도메인이름.crt: 인증서 파일도메인이름.ca-bundle: 체인 인증서 파일private.key: CSR 생성 시 발행한 개인 키1-2. 인증서 파일 통합먼저 . crt와. ca-bundle을 하나의 .pem 파일로 통합합니다cat 도메인이름.crt 도메인이름.ca-bundle > 도메인이름.pem1-3. PEM to PFX 변.. 더보기
WAS - 하나의 Tomcat으로 여러 서비스 운영하는 방법 서버 환경에서 여러 서비스를 하나의 Tomcat에서 구동할지, 아니면 서비스별로 독립적인 Tomcat 인스턴스를 사용할지는 운영 환경의 특성에 따라 다릅니다. 이번 글에서는 다중 서비스를 운영할 때 도메인 기반, 포트 기반 구분 방식과, Tomcat 메모리 설정의 차이점에 대해 살펴보겠습니다. Tomcat에서 다중 서비스 운영 - Host와 Port 구분 방식Tomcat에서 여러 서비스를 구동할 때 가장 기본적인 방식은 도메인 기반과 포트 기반으로 구분하는 방법입니다.1. 도메인 기반 구분도메인 기반 구분은 하나의 Tomcat 인스턴스 내에서 여러 도메인을 이용하여 서비스를 구분하는 방식입니다.service1.example.com, service2.example.com과 같은 도메인으로 각각의 서비스를 .. 더보기
Tomcat8 - JSESSIONID 세션 충돌 문제와 해결 방법 웹 애플리케이션에서 로그인 후 다른 페이지로 이동해도 계속 로그인이 유지되는 이유는 바로 세션(Session) 덕분입니다. 세션은 서버가 사용자 정보를 기억하고, 사용자가 서버와의 연결된 동안 일관된 상태를 유지하는 데 중요한 역할을 합니다.서버는 JSESSIONID라는 쿠키를 발급하는데, 동일한 서버에 여러 톰캣을 설치하거나 한 톰캣에 여러 애플리케이션을 배포하면 예상치 못한 세션 충돌 문제가 발생할 수 있습니다. 세션이란 무엇인가?세션(Session)은 웹 서버가 클라이언트(사용자)를 인식하기 위해 일정 시간 동안 유지하는 정보를 말합니다. 예를 들어, 사용자가 웹사이트에 로그인하면, 그 사용자의 로그인 상태를 서버가 기억하고 있다가 다른 페이지로 이동해도 로그인이 유지되도록 합니다.이 세션 정보를 .. 더보기
Tomcat8 - 세션 클러스터링(Session Clustering) 가이드 웹 서비스를 운영하다 보면 트래픽이 급증하거나 서버 장애가 발생하는 경우에도 안정적인 서비스를 제공하기 위해 여러 대의 서버를 사용하게 됩니다. 하지만 여러 서버를 사용할 때 생기는 가장 큰 문제 중 하나는 세션(session) 관리입니다.사용자가 A 서버에서 로그인했는데, 갑자기 B 서버로 이동하면 다시 로그인해야 하는 문제가 발생하게 됩니다.이때 세션 클러스터링(Session Clustering)을 이용하면 이런 문제를 해결할 수 있습니다. 1. 세션 클러스터링이란?먼저 세션(Session)에 대해 잠깐 설명드리겠습니다. 웹 애플리케이션에서 사용자가 로그인하거나 장바구니에 상품을 담는 등 개인화된 데이터를 서버에 저장할 때, 이 정보를 세션에 저장합니다. 기본적으로 세션은 사용자가 접속한 서버에만 저.. 더보기
Web - Apache를 이용한 프록시 패스 설정 가이드 프록시 패스란?프록시 패스는 클라이언트의 요청을 다른 서버로 전달하는 기능입니다.백엔드 서버 분리 : 클라이언트는 프록시 서버만을 통해 접근하며, 실제 백엔드 서버는 외부에 노출되지 않습니다.로드 밸런싱 : 프록시 서버에서 요청을 받아 여러 백엔드 서버로 분산시킬 수 있습니다.보안 강화 : 프록시 서버에서 SSL 종료를 처리하여 백엔드 서버의 부담을 줄여 네트워크 보안을 강화할 수 있습니다.1. 모듈 활성화httpd.conf 파일은 일반적으로 /etc/httpd/conf/httpd.conf 또는 /etc/apache2/httpd.conf에 위치합니다.# mod_proxy 모듈 활성화LoadModule proxy_module modules/mod_proxy.so# mod_proxy_http 모듈 활성화 (.. 더보기
Web - Apache를 이용한 로드 밸런서 설정 가이드 Apache 웹 서버는 웹 사이트나 애플리케이션의 트래픽을 여러 서버에 분산시키는 로드 밸런서로도 사용합니다. 이를 통해 서버의 부하를 줄이고 성능을 향상시키며 고가용성을 보장할 수 있습니다. 로드 밸런서란?로드 밸런서는 네트워크 트래픽을 여러 서버로 분산시키는 역할을 합니다. 부하 분산 : 여러 서버에 트래픽을 분산시켜 서버 과부하를 방지합니다.성능 향상 : 여러 서버가 트래픽을 분담하여 응답 시간이 단축됩니다.고가용성 : 특정 서버에 문제가 발생해도 다른 서버에서 요청을 처리하여 서비스의 가용성을 높입니다.1. 모듈 활성화httpd.conf 파일은 일반적으로 /etc/httpd/conf/httpd.conf 또는 /etc/apache2/httpd.conf에 위치합니다.# mod_proxy 모듈 활성화L.. 더보기
Web - Apache mod_rewrite 사용 변수 모음집 Apache의 mod_rewrite 모듈에서 RewriteCond 지시문은 조건에 따라 RewriteRule이 실행되도록 하는 역할을 합니다. 이때 다양한 변수를 사용할 수 있는데, 각 변수는 서버 환경이나 요청 정보와 관련된 특정 값을 나타냅니다.Rewrite가 궁금하다면? 자주 사용되는 변수들1. %{HTTP_USER_AGENT}설명 : 클라이언트의 User-Agent 헤더 값을 나타냅니다.예제 : 특정 브라우저에서만 접근을 허용하거나 차단할 때 사용합니다.RewriteEngine OnRewriteCond %{HTTP_USER_AGENT} "MSIE" [NC]RewriteRule ^ - [F] 인터넷 익스플로러(IE) 사용자 접근을 차단 2. %{HTTP_REFERER}설명: 이전 페이지의 URL을 .. 더보기