Cook Mail

stunnel 사용

앤써니킴 2024. 8. 3. 14:55
728x90

Stunnel은 기존의 암호화되지 않은 네트워크 서비스에 SSL/TLS 암호화를 추가하기 위한 오픈 소스 소프트웨어입니다. 이를 통해 클라이언트와 서버 간의 통신을 안전하게 보호할 수 있습니다. Stunnel은 다양한 프로토콜(HTTP, SMTP, POP3, IMAP 등)을 지원하며, 애플리케이션 소스 코드를 수정하지 않고도 SSL/TLS 암호화를 적용할 수 있다는 장점이 있습니다.

Stunnel의 주요 기능

  • SSL/TLS 암호화 제공: 기존의 암호화되지 않은 프로토콜을 SSL/TLS로 암호화하여 보안을 강화합니다.
  • 프록시 역할: 클라이언트와 서버 사이에서 트래픽을 암호화/복호화하는 중간자 역할을 합니다.
  • 다양한 프로토콜 지원: HTTP, SMTP, POP3, IMAP, FTP 등 다양한 프로토콜을 지원합니다.

Stunnel 설치

Stunnel을 설치하는 방법은 사용하는 운영체제에 따라 다릅니다.

CentOS/RHEL

sudo yum install stunnel

Stunnel 설정

Stunnel을 사용하려면 설정 파일과 SSL 인증서를 준비해야 합니다. 여기서는 예제로 로컬에서 443 포트를 통해 접속을 받아 원격 서버의 80 포트로 전달하는 방법을 설명하겠습니다.

1. 인증서 생성

자체 서명된 SSL 인증서를 생성하려면 다음 명령을 사용합니다:

openssl req -new -x509 -days 365 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem

2. 설정 파일 생성

/etc/stunnel/stunnel.conf 파일을 생성하고 다음 내용을 추가합니다:

# stunnel.conf

# Global options
foreground = yes
cert = /etc/stunnel/stunnel.pem

# Service-level configuration
[https]
accept = 443
connect = 80
  • foreground = yes: stunnel을 포그라운드에서 실행합니다(디버깅에 유용).
  • cert = /etc/stunnel/stunnel.pem: 인증서 파일 경로를 지정합니다.
  • [https]: 서비스 섹션 시작. accept는 로컬 포트, connect는 원격 포트를 지정합니다.

3. Stunnel 실행

설정 파일을 기반으로 Stunnel을 실행합니다.

sudo stunnel /etc/stunnel/stunnel.conf

시스템 서비스로 설정

Stunnel을 supervise 방식으로 사용하는 방법은 supervise 도구를 사용하여 Stunnel을 관리하고, 프로세스가 다운되면 자동으로 재시작하는 것입니다. supervise는 DJB(Daniel J. Bernstein)가 만든 도구로, daemontools 패키지에 포함되어 있습니다.

1. daemontools 설치

먼저 daemontools를 설치해야 합니다.

  • CentOS/RHEL:
  • sudo yum install daemontools

2. 서비스 디렉토리 생성

supervise가 사용할 서비스 디렉토리를 생성합니다. 일반적으로 /service 디렉토리를 사용합니다.

sudo mkdir -p /service/stunnel

3. 실행 스크립트 작성

run 스크립트를 작성하여 Stunnel을 실행하도록 설정합니다. /service/stunnel/run 파일을 생성하고 실행 가능하도록 설정합니다.

sudo vi /service/stunnel/run

다음 내용을 run 파일에 추가합니다:

#!/bin/sh

exec /usr/bin/stunnel /etc/stunnel/stunnel.conf

실행 권한을 부여합니다:

sudo chmod +x /service/stunnel/run

4. supervise 실행

supervise를 실행하여 Stunnel 서비스를 관리합니다.

sudo ln -s /service/stunnel /etc/service/

daemontools의 svscan이 /service 디렉토리를 모니터링하여 Stunnel 서비스를 자동으로 시작하고, 중지되면 다시 시작합니다.

7. 상태 확인 및 로그 관리

Stunnel 서비스의 상태를 확인하고 로그를 관리합니다.

  • 서비스 상태 확인:
  • sudo svstat /service/stunnel
  • 로그 확인:
  • Stunnel 로그는 일반적으로 syslog 또는 다른 로깅 시스템을 통해 관리됩니다. /var/log/syslog 또는 /var/log/messages 파일을 확인하여 로그를 볼 수 있습니다.

요약

  1. daemontools 설치: apt-get install daemontools 또는 yum install daemontools를 사용하여 설치합니다.
  2. 서비스 디렉토리 생성: /service/stunnel 디렉토리를 생성합니다.
  3. 실행 스크립트 작성: /service/stunnel/run 파일을 작성하고 실행 가능하도록 설정합니다.
  4. Stunnel 설정 파일 작성: /etc/stunnel/stunnel.conf 파일을 작성합니다.
  5. SSL 인증서 생성: openssl을 사용하여 SSL 인증서를 생성합니다.
  6. supervise 실행: ln -s /service/stunnel /etc/service/ 명령을 사용하여 서비스를 관리합니다.
  7. 상태 확인 및 로그 관리: svstat 명령을 사용하여 서비스 상태를 확인하고 로그를 관리합니다.

이렇게 하면 Stunnel을 supervise 방식으로 실행하고 관리할 수 있습니다.

728x90