[httpd] https://{IP} 로 URL을 입력받았을 때, https://{domain name}으로 리다이렉션 시키는 방법
·
Middleware/웹서버
사내에 여러 보안 사항을 DEV 및 QA 서버에서 테스트 하기 위해, 기존 SSL이 적용되지 않은 DEV 및 QA 서버에 SSL을 적용하였는데, https://{IP} 로 입력하여 해당 서비스에 접근할 경우, 다음과 같이 SSL이 적용되지 않는 문제를 발견하였다. http://{IP} -> https://{domain name} 으로 리다이렉션하는 설정은 쉽게 넣었는데, https://{IP} -> https://{domain name} 은 찾는게 쉽지 않았다... 참고로, http://{IP} -> https://{domain name} 이 방법은, 다음과 같은 방법으로 진행하였다. RewriteEngine on # IP가 123.123.123.123 이라고 가정 RewriteCond %{HTTP_HO..
[httpd] RedHat JBCS httpd 에서 Apache httpd로 이전하기 (1)
·
Middleware/웹서버
사내 취약성 기준이 httpd 버전을 2.4.58 이상으로 반드시 쓰라는 얘기가 나와서,기존에 설치되어 있던 RedHat JBCS httpd 에서 Apache httpd 로 이전해보고자 한다. RedHat JBCS httpd도 분명 꾸준히 업데이트가 되고 있지만,단순 버전 차이에서 오는 문제라든지, OpenSSL의 종속성 문제라든지, 대부분의 구글링 문서들이 Apache httpd 문서 기준이라든지(RedHat JBCS httpd와 Apache httpd의 디렉토리 구조가 다르다.), 앞으로도 계속 이런 자잘자잘한 문제들이 나를 괴롭힐 수 있을 것 같다는 생각에,Apache httpd 를 컴파일 설치하여, RedHat JBCS httpd를 걷어내보고자(?) 한다! 참고로, 필자의 경우, RHEL 7,8,..
[httpd] Apache httpd의 로그 삭제 스크립트 및 crontab 등록하여 로그 파일 삭제 자동화하기
·
Middleware/웹서버
apache httpd를 apachctl -k start 명령어로 실행하면, 다음과 같이 rotatelogs 플래그가 붙어서 실행되는 것을 확인할 수 있다. rotatelogs는 apache httpd 패키지에 포함되어 있는 logrotate 바이너리인데, 문제는 이 녀석이 자동으로 삭제는 지원을 안 하는 듯 하다. (아니 이걸 왜 안함? ㅡㅡ) 그래서 간혹 아파치 웹서버 로그 파일들 때문에 스토리지가 Full 나버려서 장애가 발생하는 경우가 있으니, 아파치 웹서버를 사용하는 환경에서는 반드시 아래 스크립트를 작성하고 crontab을 등록하여 로그가 쌓여 스토리지가 Full 나버리는 상황을 예방해보자. 30일 이상 지난 로그 파일 삭제하는 스크립트 작성 - 'Delete_Log.sh' #!/bin/sh ..
[Nginx] http → https 리다이렉션 및 SSL 인증서 적용 (Nginx ver.1.20.1 기준)
·
Middleware/웹서버
CSR을 만들고 SSL 인증서 파일을 발급 받는 과정은 무사히 마쳤다고 생각하고 생략하기로 한다. 필자는 기관에 요청하여 받은 인증서 파일이 base64 방식으로 인코딩된 .p7b 파일과 DER 방식으로 인코딩된 .cer 파일로 2개였다. 둘 중에 하나로 원하는 걸 사용하면 되고, 두 인증서 포맷은 다음과 같은 특징이 있으므로, 참고하면 된다. 또한, 다양한 인증서 관련 파일 포맷에 대한 설명이 아래 링크에 있으니, 확인하면 되겠다. .p7b 확장자 PKCS#7 포맷 [‘서버 인증서’ + ‘Root 인증서’ + ‘Chain 인증서’] 를 모두 담을 수 있어, SSL 인증서 적용 또는 이전 시에 상당히 유용하고 편리 Windows 에서는 자동 인식, 일부 서버에서는 p7b 포맷으로만 인증서 설정이 되는 경..
[Gunicorn] logrotate, crond를 활용한 nginx와 gunicorn의 log 파일 관리하기
·
Middleware/WSGI
logrotate 란? Linux 환경에서 로그의 관리를 도와주는 CUI 기반의 도구이다. 사용자가 정한 주기마다 쌓인 로그를 아카이빙, 아카이빙된 파일의 갯수를 일정 갯수로 제한하는 등의 로그 관리를 하여, 스토리지 용량이 부족해지는 등의 문제를 방지할 수 있도록 한다. logrotate 자체는 daemon이 아닌, 로그의 관리를 도와주는 단순 실행파일이므로, 주기적으로 알아서 작업할 수 있는 능력이 없다. 따라서, 반드시 Linux 내의 ‘crond’ 와 같은 스케줄러 설정이 필요하다. 그리고 /etc/logrotate.d 디렉토리에 각 로그파일마다의 logrotate 설정에 대한 파일들이 있는데, 여기에 ‘nginx’, ‘{Gunicorn으로 구동할 APP 이름}’ 으로 파일명을 하여 Nginx 및..
[Gunicorn] gunicorn - nginx 연동
·
Middleware/WSGI
1. nginx 디렉토리 권한 수정 RHEL9 에서 dnf로 nginx를 설치하면 nginx 디렉토리들에 대한 권한이 default로 root로 들어가 있을 것이다. 이는 보안상 취약하므로, 아래 명령어를 수행하여 ‘nginx’ 유저 및 그룹으로 변경해 주도록 하자. # /etc/nginx/ 디렉토리 권한을 nginx:nginx로 변경 chown -R nginx:nginx /etc/nginx/ 2. SELinux 설정 변경 SELinux는 최신 RHEL 및 CentOS 에서 기본적으로 활성화되어 있는 Linux 시스템용 보안 아키텍처이다. SELinux 모듈이 켜져 있으면, 파일 접근 권한, Upstream 위치로의 Proxy 및 소켓을 통한 다른 프로세스와 통신하는 것 등에 제한이 따르기 때문에, ng..