웹사이트 검색

Ubuntu에서 Stunnel을 사용하여 SSL 터널을 설정하는 방법


상태: 더 이상 사용되지 않음

이 문서는 더 이상 사용되지 않으며 더 이상 유지 관리되지 않습니다.

이유

Ubuntu 12.04는 2017년 4월 28일에 수명 종료(EOL)에 도달했으며 더 이상 보안 패치 또는 업데이트를 받지 않습니다.

대신 보기

이 문서는 여전히 참조용으로 유용할 수 있지만 모범 사례를 따르지 않거나 이 또는 다른 Ubuntu 릴리스에서 작동하지 않을 수 있습니다. 사용 중인 Ubuntu 버전에 대해 작성된 최신 문서를 사용하는 것이 좋습니다.

  • Ubuntu 16.04에서 Stunnel로 Redis에 대한 트래픽을 암호화하는 방법

현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 12.04에서 Ubuntu 14.04로 업그레이드하는 방법
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드하는 방법
  • 서버 데이터를 지원되는 버전으로 마이그레이션하는 방법

스턴넬이 뭐야

Stunnel 프로그램은 원격 클라이언트와 로컬(inetd-startable) 또는 원격 서버 사이에서 SSL 암호화 래퍼로 작동하도록 설계되었습니다. 프로그램 코드를 변경하지 않고 POP2, POP3 및 IMAP 서버와 같이 일반적으로 사용되는 inetd 데몬에 SSL 기능을 추가하는 데 사용할 수 있습니다.

Stunnel이 기본적으로 하는 일은 암호화를 위해 OpenSSL 패키지를 사용하여 안전하지 않은 TCP 포트를 안전한 암호화 포트로 바꾸는 것입니다. 특정 포트에서 실행되는 작은 보안 VPN과 같습니다.

1단계: Ubuntu Droplet 만들기

지금까지 Ubuntu 12.04 x32/x64, Ubuntu 12.10 x32/x64, Ubuntu 13.04 x32/x64에서 테스트했습니다.

2단계: Ubuntu 업데이트 및 업그레이드

다음 명령을 사용하여 Ubuntu의 패키지 목록을 업데이트하고 기존 패키지를 최신 버전으로 업그레이드하십시오.

apt-get update
apt-get upgrade

3단계: VPS에 Stunnel 설치

아래 코드를 사용하여 Stunnel 패키지를 설치합니다.

apt-get install stunnel4 -y

4단계: VPS에서 Stunnel 구성

Stunnel은 기본적으로 "/etc/stunnel\에 있는 "stunnel.conf\라는 파일을 사용하여 자체적으로 구성합니다.

\/etc/stunnel” 디렉터리에 \stunnel.conf” 파일을 만듭니다.

nano /etc/stunnel/stunnel.conf

우리는 SSL 인증서를 사용하여 서버에 자신을 식별할 것이므로 다음 줄을 사용하여 "stunnel.conf” 파일에서 해당 인증서의 경로를 설정해야 합니다(다음 단계에서 인증서 파일을 생성합니다).

cert = /etc/stunnel/stunnel.pem

다음으로 Stunnel과 함께 사용할 서비스를 지정합니다. 메일 서버, 프록시 서버 등과 같이 네트워킹을 사용하는 모든 서비스가 될 수 있습니다.

예를 들어 Stunnel을 사용하여 Squid 프록시 서버와 클라이언트 간의 트래픽을 보호할 것입니다. 6단계에서 Squid를 설치하고 구성하는 방법을 설명합니다.

사용할 서비스의 이름을 설정한 후 Stunnel이 해당 서비스의 포트를 수신하도록 지정해야 합니다. 다른 서비스나 방화벽에 의해 차단되지 않는 한 65535 포트 중 하나일 수 있습니다.

[squid]
accept = 8888

그런 다음 보안 터널을 사용하려는 서비스에 따라 구성 파일에서 해당 포트와 IP 주소를 지정해야 합니다. 기본적으로 Stunnel은 보안 포트에서 패킷을 가져온 다음 해당 포트 및 IP 주소로 전달합니다. 당신이 지정한 서비스.

Squid 프록시는 기본적으로 localhost 및 포트 3128에서 실행되므로 Stunnel에 수락된 연결을 해당 포트로 전달하도록 지시해야 합니다.

따라서 전체 "stunnel.conf\ 파일에는 다음과 같은 내용이 포함되어야 합니다.

client = no
[squid]
accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem

참고: client = no 부분은 필요하지 않으며 Stunnel은 기본적으로 서버 모드로 설정됩니다.

5단계: SSL 인증서 생성

Stunnel은 SSL 인증서를 사용하여 OpenSSL 패키지를 사용하여 쉽게 생성할 수 있는 연결을 보호합니다.

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

기본적으로 위의 명령은 개인 키를 생성하고 해당 키를 사용하여 인증서를 생성하고 Stunnel과 함께 사용할 "stunnel.pem\이라는 하나의 파일로 두 개를 결합하는 것입니다.

참고: 인증서를 만들 때 원하는 대로 입력할 수 있는 국가 및 주와 같은 일부 정보를 묻는 메시지가 표시되지만 "일반 이름\을 묻는 메시지가 표시되면 드롭릿의 올바른 호스트 이름 또는 IP 주소를 입력해야 합니다( VPS).

또한 "/etc/default/stunnel4” 파일을 구성하여 Stunnel 자동 시작을 활성화하고 아래 명령을 입력하여 텍스트 편집기에서 파일을 엽니다.

nano /etc/default/stunnel4

그리고 ENABLED를 1로 변경합니다.

ENABLED=1

마지막으로 다음 명령을 사용하여 구성이 적용되도록 Stunnel을 다시 시작합니다.

/etc/init.d/stunnel4 restart

6단계: Squid 프록시 설치

아래 명령을 사용하여 Squid를 설치합니다.

apt-get install squid3 -y

7단계: 클라이언트에서 Stunnel 구성

참고: 여기서는 Stunnel을 Windows에서 클라이언트로 설치 및 구성하는 과정을 설명하지만 Stunnel은 Linux 및 Android에도 설치할 수 있으며 구성은 여전히 동일하게 유지됩니다. 유일한 차이점은 Stunnel 구성에 필요한 "stunnel.conf\ 파일의 배치입니다.

Stunnel이 서버와 통신하려면 5단계에서 생성한 SSL 인증서가 클라이언트에 있어야 합니다. 서버에서 "stunnel.pem\ 파일을 얻는 방법에는 여러 가지가 있지만 우리는 쉽고 매우 안전한 SFTP를 사용할 것입니다.

Filezilla와 같은 SFTP 클라이언트를 사용하여 서버에 연결하고 "/etc/stunnel/” 디렉터리에 있는 "stunnel.pem” 파일을 클라이언트로 다운로드합니다.

여기에 SFTP에 대한 좋은 자습서도 있습니다.

SFTP를 사용하여 원격 서버와 파일을 안전하게 전송하는 방법

웹 사이트에서 Stunnel을 다운로드합니다.

원하는 곳에 Stunnel을 설치하세요. 그런 다음 Stunnel 폴더로 이동하여 다운로드한 인증서 "stunnel.pem\을 Stunnel 폴더로 이동합니다.

Stunnel 폴더에 \stunnel.conf 파일이 없으면 만듭니다. 메모장과 같은 텍스트 편집기로 파일을 엽니다.

우선 Stunnel에 Windows의 경우 Stunnel의 디렉터리에 있는 인증서의 경로를 알려줍니다(알림: Ubuntu의 경우 \/etc/stunnel/” 디렉터리에 있음).

cert = stunnel.pem

클라이언트를 설정할 예정이므로 Stunnel에게 이것이 클라이언트임을 알려야 합니다. 구성 파일에 아래 줄을 넣으십시오.

client = yes

그런 다음 서버와 마찬가지로 사용하려는 서비스의 구성을 지정해야 합니다.

먼저 서비스 이름을 지정한 다음 Stunnel이 클라이언트에서 수신 대기해야 하는 IP 주소와 포트를 지정합니다.

[squid]
accept = 127.0.0.1:8080

수락 포트는 다른 서비스가 점유하거나 방화벽에 의해 차단되지 않는 한 클라이언트 컴퓨터의 모든 포트가 될 수 있습니다.

다음으로 Stunnel에 이 포트로 들어오는 패킷을 Stunnel 서버의 IP 주소와 포트로 전달하도록 지시합니다. IP 주소는 드롭릿 설정 시 부여받은 서버의 (드롭릿) 공인 IP 주소이고, 포트는 서버에서 Stunnel 구성 시 지정한 포트입니다. 우리의 경우에는 8888이었으므로 Stunnel에 해당 포트에 연결하도록 지시할 것입니다.

connect = [Server’s Public IP]:8888

따라서 클라이언트의 최종 "stunnel.conf\ 파일은 다음과 같아야 합니다.

cert = stunnel.pem
client = yes
[squid]
accept = 127.0.0.1:8080
connect = [Server’s Public IP]:8888

파일을 저장하고 닫은 후 "stunnel.exe\를 실행합니다.

그게 다야. 이제 클라이언트는 보안 SSL 터널을 사용하여 가상 서버와 안전하게 통신하도록 구성되었습니다. 앞으로 저희 VPS의 어떤 서비스에 접속을 시도할 때, 서버의 IP 주소에 직접 접속하는 대신 Stunnel의 "accept\ 구성 부분에 각 서비스에 지정된 IP 주소와 포트를 사용해야 합니다.

예를 들어 클라우드 서버에서 Squid 프록시에 연결하려면 클라이언트를 127.0.0.1:8080에 연결하도록 구성해야 하며 Stunnel은 보안 터널을 통해 해당 포트에 지정된 서비스에 자동으로 연결합니다. 여기서 IP 127.0.0.1 및 포트 8080을 프록시로 사용하여 웹 트래픽을 보호하도록 웹 브라우저를 구성할 수 있습니다.

제출자: Nima Karimi