서버 설정 · 8 min read · Sep 09, 2025

Warpgate를 사용하여 Debian에서 Bastion 서버 설정하는 방법

Bastion 서버는 컴퓨터 네트워크에 대한 공격을 견딜 수 있도록 특별히 설계되고 구성된 컴퓨터/기계/서버를 의미합니다. Bastion 서버의 기능은 애플리케이션을 위한 프록시 또는 로드 밸런서와 유사합니다. 이는 DMZ 네트워크에 위치한 컴퓨터나 서버에 접근할 수 있게 해줍니다.

Warpgate는 Bastion 서버로 사용할 수 있는 현대적인 솔루션입니다. Rust로 작성되었으며 웹 기반 관리 대시보드를 제공합니다. 특정 노드에 설치한 후, 개인 인프라에 위치한 대상 노드나 서버를 쉽게 추가할 수 있습니다. 현재 Warpgate는 SSH, MySQL/MariaDB 및 HTTP에 대한 Bastion 서버로 사용할 수 있습니다.

이 튜토리얼에서는 Warpgate를 사용하여 Debian 11 서버에서 SSH 및 MySQL/MariaDB 연결을 위한 Bastion 서버를 설정합니다. Debian 서버에 Warpgate를 설치하고 구성한 후, SSH 대상 서버와 MySQL 서버를 Warpgate에 추가합니다. 마지막으로, 대상 호스트 SSH 서버와 MySQL 서버에 연결하여 Warpgate Bastion 서버가 작동하는지 확인합니다.

전제 조건

이 튜토리얼을 완료하기 위해 다음 요구 사항이 필요합니다:

  • Debian 11을 실행하는 Linux 서버 - 이 예제에서는 호스트 이름이 ‘warpgate-debian‘이고 IP 주소가 ‘192.168.5.10‘인 서버를 사용합니다.
  • sudo/root 관리자 권한이 있는 비루트 사용자.

Warpgate 바이너리 파일 다운로드

이 섹션에서는 GitHub에서 Warpgate 바이너리 파일을 수동으로 다운로드한 후 시스템 ‘bin’ 디렉토리로 이동합니다. Warpgate를 설치하는 또 다른 방법은 소스 코드를 컴파일하거나 Warpgate Docker 버전을 사용하는 것입니다.

시작하려면 다음 wget 명령을 실행하여 Warpgate 바이너리 파일을 다운로드합니다. Warpgate의 최신 버전은 공식 GitHub 다운로드 페이지를 방문하세요.

wget -q https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux

다운로드가 완료되면 Warpgate 바이너리 파일을 ‘/usr/local/bin/warpgate ‘로 이동합니다. 그런 다음 ‘chmod +x’ 명령을 사용하여 실행 가능하게 만듭니다.

mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate  
sudo chmod +x /usr/local/bin/warpgate

다음으로, 시스템에서 ‘ warpgate ‘ 바이너리 파일의 위치를 찾기 위해 다음 명령을 실행합니다.

which warpgate

이제 Warpgate 버전을 확인하고 ‘warpgate’ 명령의 사용 가능한 매개변수를 나열합니다.

warpgate version  
warpgate --help

다음과 같은 출력을 받아야 합니다.

warpgate help

Warpgate를 Bastion 서버로 구성하기

Warpgate 바이너리 파일을 다운로드한 후, 이제 Warpgate 설치를 설정하고 구성합니다. 이는 ‘ warpgate ‘ 명령을 통해 대화식으로 수행할 수 있습니다.

다음 명령을 실행하여 Warpgate를 Bastion 서버로 구성합니다.

warpgate setup

명령이 실행된 후, 다음 구성에 대해 질문을 받게 됩니다:

  • Warpgate 데이터를 어디에 저장하시겠습니까? 기본값인 ‘/var/lib/warpgate’ 디렉토리로 두십시오.
  • Warpgate 웹 관리 대시보드의 엔드포인트는 무엇입니까? 기본값으로 두어 내부/공용 IP 주소에서 포트 8888로 Warpgate를 실행하십시오.
  • SSH 연결을 수락하시겠습니까? Warpgate를 SSH Bastion 서버로 활성화하려면 yes를 입력하십시오.
  • SSH Bastion 서버의 엔드포인트는 무엇입니까? 기본값으로 두어 내부/공용 IP 주소에서 포트 2222로 SSH Bastion 서버를 실행하십시오.
  • MySQL 연결을 수락하시겠습니까? Warpgate를 MySQL Bastion 서버로 활성화하려면 yes를 입력하십시오.
  • MySQL Bastion 서버의 엔드포인트는 무엇입니까? 기본값으로 포트 33306으로 두십시오.
  • 사용자 세션을 기록하시겠습니까? 활성화하려면 yes를 입력하십시오.
  • 기본 사용자 admin의 비밀번호를 설정하십시오. Warpgate 설치를 위한 비밀번호를 입력하십시오.

setup warpgate

설정 프로세스가 완료되면 다음과 같은 출력을 받아야 합니다. 또한 이 과정에서 생성된 Warpgate 구성 파일 ‘/etc/warpgate.yaml’ 및 데이터 디렉토리 ‘/var/lib/warpgate’를 볼 수 있습니다.

setup finished

이제 다음 명령을 실행하여 ‘/etc/warpgate.yaml’ 파일의 내용을 표시하고 ‘/var/lib/warpgate’의 사용 가능한 파일 및 디렉토리 목록을 표시합니다.

cat /etc/warpgate.yaml  
ls /var/lib/warpgate

다음은 터미널에 출력될 내용입니다.

warpgate config files and directories

이제 다음 명령을 실행하여 Warpgate를 실행합니다. ‘ Warpgate is now running ‘라는 출력과 함께 SSH, MySQL 및 HTTP 연결을 위한 TCP 포트를 엽니다.

warpgate --config /etc/warpgate.yaml run

running warpgate

웹 브라우저를 열고 Warpgate IP 주소에 포트 8888을 추가하여 방문합니다 (예: https://192.168.5.10:8888/). 성공하면 Warpgate의 로그인 페이지가 표시됩니다.

accessing warpgate

터미널로 돌아가 Ctrl+c를 눌러 Warpgate 프로세스를 종료합니다.

Warpgate를 Systemd 서비스로 실행하기

이 섹션에서는 Warpgate를 Systemd와 함께 실행하도록 설정하고 구성합니다. 이를 통해 Warpgate를 백그라운드에서 실행할 수 있으며 systemctl 명령 유틸리티를 통해 더 쉽게 관리할 수 있습니다.

다음 nano 편집기 명령을 사용하여 새로운 systemd 유닛 파일 ‘/etc/systemd/system/warpgate.service’를 만듭니다.

sudo nano /etc/systemd/system/warpgate.service

파일에 다음 systemd 유닛 구성을 추가합니다.

[Unit]  
Description=Warpgate  
After=network.target  
StartLimitIntervalSec=0  
  
[Service]  
Type=notify  
Restart=always  
RestartSec=5  
ExecStart=/usr/local/bin/warpgate --config /etc/warpgate.yaml run  
  
[Install]  
WantedBy=multi-user.target

파일을 저장하고 편집기를 종료합니다.

다음 명령을 실행하여 systemd 관리자를 다시 로드하고 변경 사항을 적용합니다.

sudo systemctl daemon-reload

그런 다음 다음 systemctl 명령 유틸리티를 사용하여 Warpgate 서비스를 시작하고 활성화합니다.

sudo systemctl start warpgate  
sudo systemctl enable warpgate

wearpgate systemd

그 후, Warpgate 서비스 상태를 확인하여 서비스가 실행 중인지 확인합니다.

sudo systemctl status warpgate

아래 출력은 Warpgate 서비스가 실행 중임을 확인합니다.

warpgate service status

서버에서 열린 포트 목록을 확인하면 LISTEN 상태의 여러 포트 2222, 8888 및 33306이 표시됩니다. 아래 ss 명령을 실행합니다.

ss -tulpn

출력:

check open ports

UFW 설정하기

이 섹션에서는 Debian 서버에서 UFW를 설치하고 실행 및 활성화합니다. 또한 Warpgate에서 사용하는 포트를 엽니다.

다음 apt 명령을 실행하여 UFW를 설치합니다.

sudo apt install ufw

프롬프트가 표시되면 y를 입력하여 확인하고 ENTER를 누릅니다.

install ufw

UFW가 설치되면 다음 명령을 실행하여 OpenSSH 서비스와 Warpgate 포트 2222, 8888, 33306을 엽니다.

sudo ufw allow OpenSSH  
sudo ufw allow 8888/tcp  
sudo ufw allow 2222/tcp  
sudo ufw allow 33306/tcp

그런 다음 아래 명령을 사용하여 UFW를 시작하고 활성화합니다. 프롬프트가 표시되면 y를 입력하고 ENTER를 눌러 진행합니다.

sudo ufw enable

다음 명령이 실행된 후, UFW가 실행 중이고 활성화되어 있어야 하며, 이는 시스템 시작 시 자동으로 UFW가 실행됨을 의미합니다.

setup ufw

이제 다음 명령을 입력하여 UFW 상태를 확인합니다. UFW가 ‘Status: Active’로 표시되고 OpenSSH 서비스, 포트 2222, 8888,33306이 추가된 것을 볼 수 있어야 합니다.

sudo ufw status

출력:

verify ufw

Warpgate에 로그인하기

Warpgate가 systemd 서비스로 실행되고 UFW가 실행 중인 상태에서 이제 Warpgate 설치에 접근합니다.

웹 브라우저를 열고 서버 IP 주소 뒤에 포트 8888을 추가하여 방문합니다 (예: https://192.168.5.20:8888 /) 그리고 Warpgate 로그인 페이지를 볼 수 있습니다.

기본 사용자 ‘admin‘과 구성한 비밀번호를 입력합니다. 그런 다음 로그인을 클릭하여 계속 진행합니다.

Warpgate login as admin

admin‘으로 로그인한 후, 메뉴 ‘Manage Warpgate‘를 클릭합니다.

manage warpgate

이제 Warpgate 사용자 대시보드를 볼 수 있습니다.

warpgate dashboard

이 시점에서 Debian 서버에서 SSH 및 MySQL Bastion 서버로서 Warpgate 설치를 완료했습니다. 이제 서버와 MySQL 서버를 Warpgate에 추가할 준비가 되었습니다.

SSH 대상 서버 추가하기

이 섹션에서는 IP 주소 192.168.5.25와 호스트 이름 ‘node1‘을 가진 Linux 서버를 Warpgate Bastion 서버에 추가합니다. 이를 위해 Warpgate SSH 공개 키를 대상 서버에 추가해야 합니다.

Warpgate 대시보드에서 SSH 메뉴를 클릭하면 대상 서버에 로그인하는 데 사용할 Warpgate SSH 공개 및 개인 키를 볼 수 있습니다.

SSH 공개 키를 메모합니다.

list ssh keys

이제 대상 서버에 로그인하여 새로운 디렉토리 ‘~/.ssh‘를 만들고, 다음 nano 편집기 명령을 사용하여 ‘authorized_keys‘ 파일을 생성합니다.

mkdir -p ~/.ssh/  
nano ~/.ssh/authorized_keys

Warpgate SSH 공개 키를 추가합니다.

add SSH key to node

다음으로 Warpgate 대시보드로 이동하여 Config 메뉴를 클릭한 후 ‘Add a target‘을 클릭합니다.

add target server

대상 서버의 호스트 이름을 입력하고 유형을 SSH로 선택한 후 Create target을 클릭합니다.

create target

대상 서버의 IP 주소와 서버에 로그인하는 데 사용할 사용자로 변경합니다. 인증의 경우 ‘Warpgate의 개인 키‘를 선택합니다. 그런 다음 ‘Allow access for roles‘ 섹션에서 ‘warpgate:admin’ 역할을 활성화해야 합니다.

완료되면 ‘Update configurations‘를 클릭합니다.

details target ssh

이로써 대상 서버 ‘node1‘이 Warpgate에 추가되었습니다. 이제 Warpgate Bastion 서버를 통해 ‘node1‘에 연결할 수 있습니다.

다음 ssh 명령을 실행하여 Warpgate Bastion 서버를 통해 ‘node1‘에 연결합니다. 이 명령에서 사용된 형식은 ‘role: server-name’이며 Bastion 서버 IP 주소는 192.168.5.10이고 포트는 2222입니다.

ssh 'admin:[email protected]' -p 2222

확인하려면 yes를 입력하고 대상의 SSH 지문을 추가합니다. 비밀번호 프롬프트가 표시되면 Bastion ‘admin‘ 사용자의 비밀번호를 입력합니다.

연결이 성공하면 ‘Warpgate connected‘와 같은 출력을 받아야 하며, ‘node1‘ 대상 서버에 로그인하게 됩니다.

현재 로그인한 서버를 확인하기 위해 다음 명령을 입력합니다. Warpgate SSH Bastion 서버를 통해 ‘node1‘ 서버에 로그인한 것을 볼 수 있습니다.

id  
hostname

출력:

connect to target server via Warpgate bastion Server

Warpgate 웹 관리 대시보드에서 대상 서버의 SSH 지문을 확인할 수 있습니다.

list known hosts

MySQL/MariaDB 대상 서버 추가하기

이 섹션에서는 MariaDB 서버를 Warpgate Bastion 서버에 추가합니다. 그 전에 MariaDB 서버를 개인/내부 IP 주소에서 실행하도록 설정하고 원격 연결을 위한 새로운 MariaDB 사용자를 생성합니다.

MariaDB 서버에 로그인하고 다음 nano 편집기 명령을 사용하여 구성 파일 ‘/etc/mysql/mariadb.conf.d/50-server.cnf’를 엽니다.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address ‘ 매개변주의 주석을 제거하고 값을 내부 IP 주소로 변경합니다. 이 예제에서는 MariaDB 서버가 개인 IP 주소 ‘192.168.5.25‘에서 실행됩니다.

bind-address            = 192.168.5.25

파일을 저장한 후 편집기를 종료합니다.

다음 명령을 입력하여 MariaDB 서비스를 재시작하고 변경 사항을 적용합니다. 재시작 후 MariaDB는 기본 localhost 대신 IP 주소 ‘192.168.5.25’에서 실행되어야 합니다.

sudo systemctl restart mariadb

다음으로, 루트 사용자로 MariaDB 셸에 로그인하여 새로운 사용자를 설정하고 생성합니다.

sudo mariadb -u root -p

다음 쿼리를 입력하여 새로운 MariaDB 사용자 ‘appuser’를 생성하고 사용자가 MariaDB 서버의 모든 데이터베이스에 접근할 수 있도록 허용합니다. 또한 다음 쿼리에서 비밀번호를 변경해야 합니다.

CREATE USER 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';  
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';  
FLUSH PRIVILEGES;  
EXIT;

다음으로, MariaDB 서버에 연결하는 데 사용할 머신에 MariaDB 클라이언트 패키지를 설치합니다.

create mariadb server

다음 명령을 통해 ‘mariadb-client‘ 패키지를 설치합니다. 프롬프트가 표시되면 y를 입력하고 ENTER를 눌러 진행합니다.

sudo apt install mariadb-client

install mariadb client

이제 Warpgate 서버로 이동하여 작업 디렉토리를 ‘/var/lib/warpgate‘로 변경한 후 Warpgate TLS 인증서를 MariaDB 클라이언트 머신으로 복사합니다.

cd /var/lib/warpgate/  
sudo scp tls.certificate.pem tls.key.pem [email protected]:/etc/mysql/

copy tls certificates to mariadb client

이제 클라이언트 머신으로 돌아가서 MariaDB 클라이언트 구성 ‘/etc/mysql/mariadb.conf.d/50-client.cnf’를 다음 nano 편집기 명령으로 엽니다.

sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf

다음 구성을 ‘[client]‘ 섹션에 추가하여 안전한 클라이언트 연결을 활성화합니다.

[client]  
....  
ssl-cert=/etc/mysql/tls.certificate.pem  
ssl-key=/etc/mysql/tls.key.pem

파일을 저장한 후 편집기를 종료합니다.

이제 Warpgate 대시보드에서 Config 메뉴를 클릭한 후 ‘Add a target‘을 클릭합니다.

add target warpgate

MariaDB 서버 이름을 입력하고 유형을 ‘MySQL‘로 선택한 후 Create target을 클릭합니다.

add target mysql server

세부 호스트, 사용자 및 비밀번호를 MariaDB 사용자 세부 정보로 변경합니다. 기본 TLS 인증서가 있는 경우 ‘Verify certificate‘ 옵션을 끄고, ‘Allow access for roles‘ 섹션에서 ‘warpgate:admin’ 역할을 활성화해야 합니다.

완료되면 ‘Update configuration‘을 클릭합니다.

setup target server

MariaDB 서버가 Warpgate에 추가되었으므로 이제 Warpgate MySQL Bastion 서버를 통해 MariaDB 서버에 접근할 수 있습니다.

MariaDB 클라이언트 머신에서 다음 명령을 입력하여 MariaDB 서버에 연결합니다. 프롬프트가 표시되면 Warpgate 관리 사용자 비밀번호를 입력합니다.

mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p

연결되면 ‘MySQL [(dbname)]>‘와 같은 MariaDB 셸 프롬프트를 볼 수 있습니다. 다음 쿼리를 입력하여 사용 중인 사용자가 MariaDB 서버에서 사용 가능한지 확인합니다.

SELECT host, user, plugin, authentication_string from mysql.user;  
SHOW GRANTS FOR appuser@'%';

출력:

connect to MySQL server via Warpgate Bastion Server

이로써 Warpgate MySQL/MariaDB Bastion 서버를 통해 MariaDB 서버에 연결되었습니다.

결론

이 튜토리얼에서는 Debian 11에서 Warpgate Bastion 서버를 설치하고 구성했습니다. Warpgate를 systemd 및 UFW 방화벽과 함께 실행하도록 구성했습니다. 또한 Warpgate를 SSH 및 MySQL/MariaDB Bastion 서버로 구성하고, SSH 대상 서버를 추가하고, MySQL/MariaDB 대상 서버를 추가했습니다.

이제 새로운 사용자, 역할을 설정하고 Warpgate Bastion 서버에 새로운 연결을 추가할 수 있습니다. 또한 단일 중앙 집중식 Bastion 서버를 통해 사용자 연결 및 접근을 중앙 집중화할 수 있습니다. Warpgate에 대한 자세한 내용은 Warpgate 공식 문서를 방문하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.