우분투에서 Tor를 사용하여 웹사이트 호스팅하는 방법

Tor 웹사이트 호스팅 리눅스 00 대표 이미지

Tor 네트워크는 혁신적인 소프트웨어입니다. 단일 프로그램으로 이제 웹을 익명으로 탐색하고 볼 수 있습니다. 이는 웹사이트를 탐색할 때 개인 정보를 보호하고자 하는 사용자에게 Tor가 필수 도구가 되게 합니다. 또한 Tor를 사용하여 로컬 웹 서버를 온라인으로 호스팅할 수 있어, 자신을 드러내지 않고 공개적으로 정보를 공유하고자 하는 개인 정보 보호에 민감한 사용자에게 매우 유용합니다.

참고: 진행하기 전에 Tor와 양파 라우팅이 무엇인지 먼저 알아보세요.

목차

  • Tor를 통해 웹사이트를 호스팅하는 이유
  • 요구 사항
  • Nginx 및 Tor 설치
  • 방화벽 구성
  • 웹사이트를 위한 Tor 서비스 생성
  • Nginx를 사용하여 간단한 웹사이트 만들기
  • Tor를 통해 웹사이트에 접근하기
  • 자주 묻는 질문

Tor를 통해 웹사이트를 호스팅하는 이유

Tor를 통해 호스팅하는 가장 큰 장점 중 하나는 연결이 Tor 브라우저와 유사한 중개 노드를 통해 이루어진다는 것입니다. 웹사이트를 방문하는 사용자는 웹사이트가 어디에서 호스팅되고 있는지 알 수 없습니다.

Tor 웹사이트 호스팅 리눅스 02 중개 노드

그 외에도 Tor 전용 웹사이트가 작동하도록 포트를 포워딩할 필요가 없습니다. 이는 매우 제한된 네트워크에서도 호스팅을 간단하고 접근 가능하게 만듭니다. 예를 들어, Carrier-Grade NAT 네트워크에 있는 기계도 Tor를 통해 웹사이트를 직접 게시할 수 있습니다.

요구 사항

Nginx와 Tor를 설치하기 전에 다음 리소스가 준비되어 있는지 먼저 확인해야 합니다:

  • Tor의 수신 및 송신 요청을 제한하지 않는 인터넷 연결. 이를 통해 Tor 네트워크를 통해 웹사이트를 방송할 수 있습니다.
  • 호스팅할 웹사이트를 처리할 수 있는 기계. 대부분의 경우, 4GB RAM을 가진 듀얼 코어 데스크탑이면 기본 웹사이트를 운영하기에 충분합니다.
  • Tor를 구성하려면 시스템 파일에 접근해야 하므로 호스팅 기계에 대한 루트 접근 권한이 필요합니다.

아래 이미지는 Ubuntu 22.04 LTS 기계에서 Nginx Tor 전용 웹사이트를 호스팅하는 방법을 보여줍니다.

Tor 웹사이트 호스팅 리눅스 03 Neofetch Ubuntu 기계

Nginx 및 Tor 설치

터미널을 엽니다. 다음 명령어를 입력하여 Nginx와 Tor를 설치합니다:

sudo apt install nginx tor wget

Tor 웹사이트 호스팅 리눅스 05 패키지 다운로드

방화벽 구성

시스템에 두 패키지를 설치한 후, 다음 명령어를 터미널에 입력하여 방화벽을 구성하여 Tor 네트워크에서만 수신 연결을 허용하여 서버를 보호할 수 있습니다:

sudo iptables -I INPUT -m state --state NEW -p tcp --dport80-j ACCEPT  
sudo iptables -I INPUT -m state --state NEW -p tcp --dport443-j ACCEPT  
sudo iptables -I INPUT -m state --state NEW -p tcp --dport9050-j ACCEPT

Tor 웹사이트 호스팅 리눅스 06 방화벽 규칙 생성

첫 번째 두 명령어는 시스템에서 HTTP 및 HTTPS 포트를 열고, 마지막 명령어는 Tor 네트워크를 위한 SOCKS 포트를 명시적으로 엽니다. 이 접근 방식은 Tor가 귀하의 기계로 가는 모든 트래픽을 적절히 리디렉션할 수 있도록 보장합니다.

웹사이트를 위한 Tor 서비스 생성

다음으로, 웹 서버를 위한 숨겨진 서비스 항목을 생성해야 합니다. 이는 Tor 네트워크에서 방송할 수 있도록 해주는 서비스 전용 구성입니다.

먼저 루트 계정으로 전환합니다. 다음 명령어를 실행하여 그렇게 할 수 있습니다:

sudo-i

Tor 웹사이트 호스팅 리눅스 07 루트로 전환

루트 내부에 들어가면 “/etc/tor/torrc” 파일을 편집하여 숨겨진 서비스를 생성합니다. 제 경우에는 GNU Nano를 통해 이 파일을 엽니다.

nano/etc/tor/torrc

Tor 웹사이트 호스팅 리눅스 08 torrc 파일

Ctrl + W를 눌러 “location-hidden services” 섹션을 찾고 “location-hidden”을 입력합니다.

Tor 웹사이트 호스팅 리눅스 09 torrc 숨겨진 서비스

자신의 Tor 숨겨진 서비스를 생성하는 방법을 보여주는 몇 가지 예제가 표시됩니다. 그러나 대부분의 경우, 두 가지 옵션만 설정하면 됩니다: HiddenServiceDirHiddenServicePort.

HiddenServiceDir 옵션은 Tor가 숨겨진 서비스의 구성 파일을 저장해야 하는 위치를 알려줍니다. HiddenServicePort 옵션은 Tor가 숨겨진 서비스에 대한 요청을 어떻게 리디렉션해야 하는지를 알려줍니다.

다음 코드 줄은 웹 서버를 위한 새로운 숨겨진 서비스를 생성합니다:

HiddenServiceDir /var/lib/tor/nginx-tor-service/  
HiddenServicePort 80 127.0.0.1:80  
HiddenServicePort 443 127.0.0.1:443

Tor 웹사이트 호스팅 리눅스 10 torrc 새로운 숨겨진 서비스 생성

다음 명령어를 실행하여 새로운 설정을 적용하기 위해 Tor 데몬을 다시 로드합니다:

systemctl enable tor  
systemctl restart tor

: VPN 연결과 함께 Tor를 사용하는 방법을 배우세요.

Nginx를 사용하여 간단한 웹사이트 만들기

Tor 숨겨진 서비스가 작동하기 시작하면 웹 서버 설정을 시작합니다. touch 명령어를 통해 새로운 구성 파일을 생성합니다:

sudotouch/etc/nginx/sites-available/nginx-tor-service

Tor 웹사이트 호스팅 리눅스 11 새로운 Nginx 서버 생성

새로운 Nginx 구성 파일을 기본 웹 서버로 편집합니다. 예를 들어, 다음 코드 블록은 포트 80에서 간단한 웹 서버를 배포합니다:

server{  
listen 80 default_server;  
listen[::]:80 default_server;  
  
root /var/www/html;  
  
server_name 4tth4kzmipldb5elklravakdwlnte3ck6m5ahl73nfbe6ni67zmyvxyd.onion;  
  
location / {  
try_files$uri$uri/ =404;  
}  
}
  • 두 개의 listen 변수는 이 서버 구성에서 수신해야 하는 포트와 호스트를 설정합니다. 이 경우, Nginx는 IPv4 및 IPv6에서 포트 80을 수신합니다.
  • root 변수는 Nginx가 웹 서버에서 파일을 찾을 위치를 설정합니다.
  • server_name 변수는 서버의 도메인 이름을 포함합니다. sudo less /var/lib/tor/nginx-tor-service/hostname를 실행하여 찾을 수 있습니다.
  • location 변수는 Nginx가 웹사이트의 루트에서 파일을 처리하는 방법에 대한 기능을 포함합니다. 이 예에서는 누락된 파일에 대해 404 오류만 설정합니다.

Tor 웹사이트 호스팅 리눅스 12 샘플 서버 구성

새로운 구성 파일에 대한 심볼릭 링크를 “/etc/nginx/sites-enabled”에 생성합니다:

sudoln-s/etc/nginx/sites-available/nginx-tor-service /etc/nginx/sites-enabled/

마지막으로 Nginx를 재시작하여 새로운 웹사이트를 활성화합니다:

sudo systemctl enable nginx  
sudo systemctl restart nginx

Tor 웹사이트 호스팅 리눅스 13 Nginx 실행 중

Tor를 통해 웹사이트에 접근하기

Tor와 Nginx가 모두 실행 중인 상태에서 Tor 네트워크에서 웹사이트에 접근할 수 있는지 확인합니다. (다크 웹에서 더 많은 웹사이트를 찾고 싶으신가요? 이러한 검색 엔진을 확인하세요.) 먼저 최신 Tor 브라우저 바이너리를 다운로드합니다:

wget https://www.torproject.org/dist/torbrowser/11.5.7/tor-browser-linux64-11.5.7_en-US.tar.xz

Tor 웹사이트 호스팅 리눅스 14 Tor 브라우저 다운로드

다음 명령어를 실행하여 현재 디렉토리에 브라우저 파일을 추출합니다:

tar xvf ./tor-browser-linux64-11.5.7_en-US.tar.xz  
cd ./tor-browser_en-US

Tor 웹사이트 호스팅 리눅스 15 Tor 브라우저 추출

또한 Tor 브라우저 바이너리에 올바른 실행 비트가 있는지 확인합니다:

sudochmod +x ./start-tor-browser.desktop

다음 명령어를 실행하여 기계에서 Tor 브라우저를 실행하고 설치합니다:

./start-tor-browser.desktop --register-app

Tor 웹사이트 호스팅 리눅스 16 Tor 브라우저 실행 중

마지막으로 주소 표시줄에 도메인 이름을 입력하여 새로운 Tor 웹사이트를 탐색합니다.

Tor 웹사이트 호스팅 리눅스 17 Tor 웹사이트 실행 중

자주 묻는 질문

Tor를 사용하여 게임 서버를 호스팅할 수 있나요?

예, 하지만 Tor 게임 서버를 실행하면 매우 열악한 게임 경험이 발생합니다. 예를 들어, Tor를 통해 Minetest 서버를 실행하면 지연 시간이 1000에서 5000 밀리초 사이가 됩니다.

Tor 연결 속도를 높이는 방법이 있지만, Tor의 개발자들은 네트워크가 저지연 애플리케이션에서 작동하도록 설계하지 않았습니다. 따라서 Tor는 주로 웹페이지와 저지연에 의존하지 않는 애플리케이션을 게시하는 데 유용합니다.

FTP 웹사이트를 호스팅하려고 하지만 Tor를 통해 접근할 수 없습니다.

이 문제는 대부분 “/etc/tor/torrc” 파일의 구성 누락으로 인한 것입니다. Tor를 통해 새로운 서비스를 제대로 호스팅하려면 방화벽과 torrc에서 적절한 포트가 열려 있는지 확인하세요.

예를 들어, HiddenServicePort 21 127.0.0.1:21HiddenServicePort 22 127.0.0.1:22를 추가하여 기계에서 열린 FTP 및 SFTP 포트를 생성합니다.

Tor에서 SSL을 통해 웹사이트를 호스팅할 수 있나요?

Tor 웹사이트를 보호하는 데 SSL은 필수 요구 사항이 아닙니다. 기본적으로 Tor는 Tor 브라우저를 로드하는 즉시 연결을 암호화하므로, Tor에서 방문하는 모든 웹사이트는 종단 간 암호화됩니다.

원하신다면 Tor 웹사이트에 대한 SSL 인증서를 얻을 수 있지만, .onion 도메인에 대해 TLS를 적극적으로 발급하는 인증 기관이 몇 개 없기 때문에 과정이 복잡할 수 있습니다.

이미지 출처: Unsplash. 모든 수정 및 스크린샷은 Ramces Red에 의해 작성되었습니다.