임대일

Locky Linux: IP 기반 호스팅, 이름 기반 호스팅, SSL/TLS, PostgrSQL (feat. apache 2.4.57) 본문

리눅스/Locky

Locky Linux: IP 기반 호스팅, 이름 기반 호스팅, SSL/TLS, PostgrSQL (feat. apache 2.4.57)

limdae94 2024. 9. 5. 09:37

호스팅(Hosting)

- 서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해 주는 서비스

 

IP 기반 호스팅(IP-based Hosting)

- 각 도메인이 고유의 IP 주소를 가지는 방식

- 동일한 서버에 여러 IP 주소를 할당하고, 각 IP 주소에 특정 도메인을 연결하여 웹 사이트를 제공

 

이름 기반 호스팅(Name-based Hosting)

- 하나의 IP 주소를 여러 도메인에서 공유하는 방식

-  웹 브라우저가 서버에 연결될 때, 도메인 이름(Host 헤더)을 전달하고, 서버는 이 도메인 이름을 기반으로 어떤 웹사이트를 제공할지 결정

 

IP 기반 호스팅과 이름 기반 호스팅 비교

구분 IP 주소 기반 호스팅 이름 기반 호스팅
IP 주소 각 도메인마다 고유 IP 주소 필요 하나의 IP로 여러 도메인 사용 가능
SSL 인증서 개별 도메인마다 SSL 적용 용이 SNI 기술 필요 (대부분 지원)
자원 소모 많은 IP 필요 IP 자원을 절약 가능
설정 복잡성 도메인마다 설정 필요 상대적으로 간단함
호환성 모든 브라우저에서 문제 없음 구형 브라우저에서 SSL 문제 발생 가능

 

- 현대의 웹 호스팅 환경에서는 이름 기반 호스팅이 더 일반적
- IP 자원을 절약할 수 있고, SSL 인증서도 SNI를 통해 쉽게 처리 가능

SNI(Server Name Indication)은 컴퓨터 네트워크 프로토콜인 TLS의 확장으로, 핸드셰이킹 과정 초기에 클라이언트가 어느 호스트명에 접속하려는지 서버에 알리는 역할을 한다.

 

SSL/TLS

- SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신을 보호하는 암호화 프로토콜

- 인터넷에서 데이터를 전송할 때 개인 정보 보호와 데이터의 무결성을 보장하기 위해 설계

- SSL은 원래의 보안 프로토콜이며, 이후 TLS가 이를 대체하여 현재 더 안전하고 업데이트된 표준으로 사용

 

SSL/TLS 특징

  1. 암호화: 클라이언트와 서버 간의 데이터가 전송 중에 제3자에 의해 읽히지 않도록 데이터를 암호화
  2. 인증: 서버 또는 클라이언트의 신원을 확인하여 신뢰할 수 있는 대상과 통신하고 있음을 보장
  3. 데이터 무결성: 데이터가 전송 중에 변경되거나 위조되지 않았음을 보장

 

HTTPS

- HTTPS(HyperText Transfer Protocol Secure)는 HTTP(웹 통신을 위한 프로토콜) 위에 SSL/TLS를 추가한 버전

- 브라우저와 웹 서버 간의 모든 통신이 암호화되어 제3자가 중간에서 데이터를 가로채거나 조작할 수 없도록 보호

- HTTPS는 HTTP 프로토콜을 통해 웹사이트와 데이터를 주고받을 때 SSL/TLS를 사용하여 보안을 강화한 통신 방식 

 

- 요약하자면, SSL/TLS는 HTTPS의 핵심 보안 기술이며, HTTPS는 이를 통해 웹 통신의 기밀성과 무결성을 보장

 

pg_hba.conf

- pg_hba.conf 파일은 PostgreSQL의 클라이언트 인증 방식을 설정하는 파일

- 서버에 접속할 수 있는 호스트, 사용자, 데이터베이스, 그리고 인증 방법을 정의

- "HBA"는 "Host-Based Authentication"의 약자로, 클라이언트가 어떻게 인증될지에 대한 정책을 설정하는 파일

# TYPE  DATABASE        USER            ADDRESS                 METHOD

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

 

 

postgresql.conf

- PostgreSQL 서버의 동작을 제어하는 다양한 설정을 포함

- 성능, 네트워크, 로깅, 메모리 관리 등과 관련된 항목들을 조정이 가능

 

 

네트워크 설정

- listen_addresses: PostgreSQL 서버가 수신할 IP 주소를 설정

- 기본적으로 localhost만 설정되어 있으며, 외부에서 접근 가능하게 하려면 *로 설정

listen_addresses = '*'

 

 

- port: 서버가 수신할 포트를 설정. 기본값은 5432
port = 5432

 

 
메모리 관리
- shared_buffers: PostgreSQL이 사용할 공유 메모리 버퍼의 크기를 설정
- 시스템 메모리의 약 25%로 설정하는 것이 일반적
shared_buffers = 128MB

 

 

- work_mem: 쿼리 실행 중 정렬이나 해시 작업에 사용할 메모리 양을 설정

work_mem = 4MB

 

 

로그 관리

- log_destination: 로그 출력 방법을 설정

- 기본적으로 stderr를 사용하지만, csvlog 등 다양한 형식으로 로그를 출력

log_destination = 'stderr'

 

- logging_collector: 로그 수집기를 활성화하여 로그를 파일로 저장할지 여부를 결정

logging_collector = on

 

- log_directory: 로그 파일이 저장될 디렉터리를 지정

log_directory = 'log'

 

 

성능 최적화

- effective_cache_size: PostgreSQL이 사용할 수 있는 커널 파일 시스템 캐시 크기를 설정

- 시스템 메모리의 약 50~75%로 설정

effective_cache_size = 4GB

 

- maintenance_work_mem: VACUUM과 같은 유지보수 작업에 사용할 메모리 양을 설정

maintenance_work_mem = 64MB

 

 

기타 중요 설정

max_connections: 동시에 접속할 수 있는 최대 클라이언트 수를 설정

max_connections = 100

 

 

timezone: 서버의 시간대를 설정

timezone = 'UTC'