Cách thiết lập máy chủ Bastion với Warpgate trên Debian

theanh

Administrator
Nhân viên
Máy chủ Bastion là máy tính/máy móc/máy chủ được thiết kế và cấu hình chuyên biệt để chống lại các cuộc tấn công vào mạng máy tính. Chức năng của Máy chủ Bastion tương tự như proxy hoặc bộ cân bằng tải cho các ứng dụng. Nó cho phép bạn truy cập vào các máy tính hoặc máy chủ nằm trong mạng DMZ.

Warpgate là giải pháp hiện đại có thể được sử dụng như máy chủ Bastion. Giải pháp này được viết bằng Rust và cung cấp bảng điều khiển quản trị dựa trên web. Bạn có thể cài đặt giải pháp này trên một nút cụ thể, sau đó bạn có thể dễ dàng thêm các nút mục tiêu hoặc máy chủ nằm trên cơ sở hạ tầng riêng của mình. Hiện tại, Warpgate có thể được sử dụng như Máy chủ Bastion cho SSH, MySQL/MariaDB và HTTP.

Trong hướng dẫn này, bạn sẽ thiết lập máy chủ Bastion cho các kết nối SSH và MySQL/MariaDB trên máy chủ Debian 11 bằng Warpgate. Bạn sẽ cài đặt và cấu hình Warpgate trên máy chủ Debian, sau đó thêm máy chủ mục tiêu SSH và máy chủ MySQL vào Warpgate. Cuối cùng, bạn sẽ đảm bảo rằng máy chủ Warpgate Bastion đang hoạt động bằng cách kết nối với máy chủ SSH và máy chủ MySQL của máy chủ đích.

Điều kiện tiên quyết​

Bạn sẽ cần các yêu cầu sau để hoàn thành hướng dẫn này:
  • Máy chủ Linux chạy Debian 11 - Ví dụ này sử dụng máy chủ có tên máy chủ 'warpgate-debian' và địa chỉ IP '192.168.5.10'.
  • Người dùng không phải root có quyền quản trị viên sudo/root.

Tải xuống tệp nhị phân Warpgate​

Trong phần này, bạn sẽ tải xuống tệp nhị phân Warpgate theo cách thủ công từ GitHub, sau đó di chuyển tệp đó vào thư mục 'bin' của hệ thống. Một cách khác để cài đặt Warpgate là biên dịch từ mã nguồn hoặc sử dụng phiên bản Warpgate Docker.

Để bắt đầu, hãy chạy lệnh wget sau để tải xuống tệp nhị phân Warpgate. Truy cập trang tải xuống GitHub chính thức để tải phiên bản Warpgate mới nhất.
Mã:
wget -q https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux
Sau khi tải xuống, hãy di chuyển tệp nhị phân Warpgate đến '/usr/local/bin/warpgate'. Sau đó, thực hiện lệnh 'chmod +x' để có thể thực thi.
Mã:
mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate
sudo chmod +x /usr/local/bin/warpgate

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22128%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh sau để định vị tệp nhị phân 'warpgate' trên hệ thống.
Mã:
which warpgate
Bây giờ hãy xác minh phiên bản Warpgate và liệt kê các tham số có sẵn của lệnh 'warpgate'.
Mã:
warpgate version
warpgate --help
Bạn sẽ nhận được kết quả như thế này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22546%22%3E%3C/svg%3E

Cấu hình Warpgate thành Bastion Server​

Sau khi tải xuống tệp nhị phân Warpgate, bây giờ bạn sẽ thiết lập và cấu hình cài đặt Warpgate của mình. Bạn có thể thực hiện tương tác thông qua lệnh 'warpgate'.

Thực hiện lệnh sau để cấu hình Warpgate làm máy chủ pháo đài.
Mã:
warpgate setup
Sau khi lệnh được thực thi, bạn sẽ được hỏi về các cấu hình sau:
  • Bạn muốn lưu trữ dữ liệu Warpgate ở đâu? Để mặc định là thư mục '/var/lib/warpgate'.
  • Điểm cuối của bảng điều khiển quản trị web Warpgate? Để mặc định là chạy Warpgate trên địa chỉ IP nội bộ/công khai của bạn với cổng 8888.
  • Chấp nhận kết nối SSH? Nhập yes để bật Warpgate làm máy chủ bastion SSH.
  • Điểm cuối của máy chủ bastion SSH? Để mặc định là chạy máy chủ bastion SSH trên địa chỉ IP nội bộ/công khai với cổng 2222.
  • Chấp nhận kết nối MySQL? Nhập yes để bật Warpgate làm máy chủ bastion MySQL.
  • Điểm cuối của máy chủ bastion MySQL? Để mặc định với cổng 33306.
  • Ghi lại phiên người dùng? Nhập yes để bật.
  • Thiết lập mật khẩu cho người dùng mặc định là admin. Nhập mật khẩu để cài đặt Warpgate.

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22717%22%20height=%22386%22%3E%3C/svg%3E


Sau khi quá trình thiết lập hoàn tất, bạn sẽ nhận được kết quả như thế này. Bạn cũng sẽ thấy tệp cấu hình Warpgate '/etc/warpgate.yaml' và thư mục dữ liệu '/var/lib/warpgate' được tạo trong quá trình này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22598%22%20height=%22335%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để hiển thị nội dung của tệp '/etc/warpgate.yaml' và danh sách các tệp và thư mục có sẵn trên '/var/lib/warpgate'.
Mã:
cat /etc/warpgate.yaml
ls /var/lib/warpgate
Dưới đây là kết quả sẽ được in ra trên thiết bị đầu cuối của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22586%22%20height=%22677%22%3E%3C/svg%3E


Bây giờ hãy thực hiện lệnh sau để chạy Warpgate. Bạn sẽ thấy đầu ra 'Warpgate is now running' và mở các cổng TCP cho kết nối SSH, MySQL và HTTP.
Mã:
warpgate --config /etc/warpgate.yaml run

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22651%22%20height=%22289%22%3E%3C/svg%3E


Mở trình duyệt web của bạn và truy cập địa chỉ IP Warpgate có cổng 8888 (tức là: https://192.168.5.10:8888/). Khi thành công, bạn sẽ nhận được trang đăng nhập của Warpgate.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22699%22%20height=%22581%22%3E%3C/svg%3E


Quay lại thiết bị đầu cuối của bạn và nhấn Ctrl+c để kết thúc quy trình Warpgate.

Chạy Warpgate dưới dạng Dịch vụ Systemd​

Trong phần này, bạn sẽ thiết lập và cấu hình Warpgate để chạy với Systemd. Điều này cho phép bạn chạy Warpgate ở chế độ nền và dễ quản lý hơn thông qua tiện ích lệnh systemctl.

Tạo tệp đơn vị systemd mới '/etc/systemd/system/warpgate.service' bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/systemd/system/warpgate.service
Thêm các cấu hình đơn vị systemd sau vào tệp.
Mã:
[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
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Chạy lệnh sau để tải lại trình quản lý systemd và áp dụng các thay đổi.
Mã:
sudo systemctl daemon-reload
Sau đó, khởi động và kích hoạt dịch vụ Warpgate bằng lệnh systemctl sau tiện ích.
Mã:
sudo systemctl start warpgate
sudo systemctl enable warpgate

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22160%22%3E%3C/svg%3E


Sau đó, hãy xác minh trạng thái dịch vụ Warpgate để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl status warpgate
Đầu ra bên dưới xác nhận rằng dịch vụ Warpgate đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22202%22%3E%3C/svg%3E


Nếu bạn kiểm tra danh sách các cổng mở trên máy chủ của mình, bạn sẽ thấy nhiều cổng 2222, 8888 và 33306 trong Trạng thái NGHE. Chạy lệnh ss bên dưới.
Mã:
ss -tulpn
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22196%22%3E%3C/svg%3E

Thiết lập UFW​

Trong phần này, bạn sẽ cài đặt, chạy và kích hoạt UFW trên máy chủ Debian của mình. Bạn cũng sẽ mở các cổng được Warpgate sử dụng.

Cài đặt UFW bằng cách chạy lệnh apt sau.
Mã:
sudo apt install ufw
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22645%22%20height=%22307%22%3E%3C/svg%3E


Sau khi UFW được cài đặt, hãy chạy lệnh sau để mở Dịch vụ OpenSSH và các cổng Warpgate 2222, 888833306.
Mã:
sudo ufw allow OpenSSH
sudo ufw allow 8888/tcp
sudo ufw allow 2222/tcp
sudo ufw allow 33306/tcp
Sau đó, khởi động và bật UFW bằng lệnh bên dưới. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo ufw enable
Sau khi lệnh sau được thực thi, UFW sẽ chạy và được bật, điều này có nghĩa là UFW sẽ tự động chạy khi hệ thống khởi động.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22743%22%20height=%22348%22%3E%3C/svg%3E


Bây giờ hãy nhập lệnh sau để xác minh trạng thái UFW. Bạn sẽ thấy UFW là 'Trạng thái: Hoạt động' với dịch vụ OpenSSH, các cổng 2222, 8888,33306 được thêm vào.
Mã:
sudo ufw status
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22531%22%20height=%22326%22%3E%3C/svg%3E

Đăng nhập vào Warpgate​

Với Warpgate chạy như một dịch vụ systemd và UFW đang chạy, giờ đây bạn sẽ truy cập vào cài đặt Warpgate.

Mở trình duyệt web của bạn và truy cập địa chỉ IP của máy chủ theo sau là cổng 8888 (ví dụ: https://192.168.5.20:8888/) và bạn sẽ thấy trang đăng nhập Warpgate.

Nhập người dùng mặc định 'admin' và mật khẩu mà bạn đã cấu hình. Sau đó nhấp vào Đăng nhập để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22641%22%20height=%22513%22%3E%3C/svg%3E


Sau khi đăng nhập với tư cách là 'admin', hãy nhấp vào menu 'Manage Warpgate'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22575%22%20height=%22315%22%3E%3C/svg%3E


Bây giờ bạn sẽ thấy bảng điều khiển người dùng Warpgate.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E


Lúc này, bạn đã hoàn tất cài đặt Warpgate dưới dạng máy chủ SSH và MySQL Bastion trên máy chủ Debian. Bây giờ bạn đã sẵn sàng thêm máy chủ và máy chủ MySQL vào Warpgate.

Thêm máy chủ mục tiêu SSH​

Trong phần này, bạn sẽ thêm máy chủ Linux có địa chỉ IP 192.168.5.25 và tên máy chủ 'node1' vào máy chủ Warpgate Bastion. Để thực hiện điều đó, bạn phải thêm khóa công khai Warpgate SSH vào máy chủ mục tiêu của mình.

Trên bảng điều khiển Warpgate, hãy nhấp vào menu SSH và bạn sẽ thấy khóa công khai và riêng tư Warpgate SSH sẽ được sử dụng để đăng nhập vào máy chủ mục tiêu.

Sao chép khóa công khai SSH vào ghi chú của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22467%22%3E%3C/svg%3E


Bây giờ hãy đăng nhập vào máy chủ mục tiêu, tạo một thư mục mới '~/.ssh', sau đó tạo tệp 'authorized_keys' bằng trình chỉnh sửa nano sau lệnh.
Mã:
mkdir -p ~/.ssh/
nano ~/.ssh/authorized_keys
Thêm khóa công khai Warpgate SSH vào đó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22175%22%3E%3C/svg%3E


Tiếp theo, di chuyển đến bảng điều khiển Warpgate và nhấp vào menu Cấu hình, sau đó nhấp vào 'Thêm mục tiêu'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22272%22%3E%3C/svg%3E


Nhập tên máy chủ của máy chủ đích, chọn loại là SSH, sau đó nhấp vào Tạo mục tiêu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22279%22%3E%3C/svg%3E


Thay đổi địa chỉ IP của máy chủ đích và người dùng sẽ là được sử dụng để đăng nhập vào máy chủ. Đối với xác thực, hãy chọn 'Khóa riêng của Warpgate'. Sau đó, bạn phải bật vai trò 'warpgate:admin' trên phần 'Cho phép truy cập cho các vai trò'.

Khi hoàn tất, hãy nhấp vào 'Cập nhật cấu hình'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22668%22%3E%3C/svg%3E


Với thao tác này, máy chủ mục tiêu 'node1' được thêm vào Warpgate. Bây giờ bạn có thể kết nối với 'node1' thông qua máy chủ Warpgate bastion.

Chạy lệnh ssh sau để kết nối với 'node1' thông qua máy chủ Warpgate bastion. Trong lệnh này, định dạng được sử dụng là 'role: server-name' với địa chỉ IP máy chủ bastion 192.168.5.10 và cổng 2222.
Mã:
ssh 'admin:[emailprotected]' -p 2222
Nhập yes để xác nhận và thêm dấu vân tay SSH của mục tiêu. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu của người dùng bastion 'admin'.

Khi kết nối thành công, bạn sẽ nhận được đầu ra như 'Warpgate connected'. Và bạn sẽ được đăng nhập vào máy chủ đích 'node1'.

Nhập lệnh sau để xác minh máy chủ hiện tại mà bạn đã đăng nhập. Bạn sẽ thấy rằng bạn đã đăng nhập vào máy chủ 'node1' thông qua máy chủ Warpgate SSH bastion.
Mã:
id
hostname
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22320%22%3E%3C/svg%3E


Nếu bạn kiểm tra trên bảng điều khiển quản trị web Warpgate, bạn sẽ thấy dấu vân tay của máy chủ đích SSH của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22535%22%3E%3C/svg%3E

Thêm máy chủ đích MySQL/MariaDB​

Trong phần này, bạn sẽ thêm máy chủ MariaDB vào máy chủ Warpgate bastion. Trước đó, bạn sẽ thiết lập máy chủ MariaDB để chạy trên địa chỉ IP riêng/nội bộ và cũng tạo người dùng MariaDB mới cho các kết nối từ xa.

Đăng nhập vào máy chủ MariaDB và mở tệp cấu hình '/etc/mysql/mariadb.conf.d/50-server.cnf' bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Bỏ chú thích tham số 'bind-address' và thay đổi giá trị thành địa chỉ IP nội bộ của bạn. trong ví dụ này, máy chủ MariaDB sẽ được chạy ở địa chỉ IP riêng '192.168.5.25'.
Mã:
bind-address = 192.168.5.25
Lưu tệp, sau đó chỉnh sửa trình chỉnh sửa.

Nhập lệnh sau để khởi động lại dịch vụ MariaDB và áp dụng các thay đổi. Khi khởi động lại, MariaDB sẽ chạy trên địa chỉ IP '192.168.5.25' thay vì localhost mặc định.
Mã:
sudo systemctl restart mariadb
Tiếp theo, đăng nhập vào shell MariaDB với tư cách là người dùng root để thiết lập và tạo người dùng mới.
Mã:
sudo mariadb -u root -p
Nhập các truy vấn sau để tạo MariaDB mới người dùng 'appuser' và cho phép người dùng truy cập tất cả cơ sở dữ liệu trên máy chủ MariaDB. Ngoài ra, hãy đảm bảo thay đổi mật khẩu trong truy vấn sau.
Mã:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
FLUSH PRIVILEGES;
EXIT;
Tiếp theo, bạn sẽ thiết lập gói máy khách MariaDB trên máy sẽ được sử dụng để kết nối với máy chủ MariaDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22232%22%3E%3C/svg%3E


Cài đặt Gói 'mariadb-client' thông qua lệnh sau. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo apt install mariadb-client

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22295%22%3E%3C/svg%3E


Bây giờ hãy di chuyển đến máy chủ Warpgate, thay đổi thư mục làm việc thành '/var/lib/warpgate', sau đó sao chép chứng chỉ Warpgate TLS vào MariaDB của bạn máy khách.
Mã:
cd /var/lib/warpgate/
sudo scp tls.certificate.pem tls.key.pem [emailprotected]:/etc/mysql/

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22212%22%3E%3C/svg%3E


Bây giờ quay lại máy khách và mở cấu hình máy khách MariaDB '/etc/mysql/mariadb.conf.d/50-client.cnf' bằng trình soạn thảo nano sau lệnh.
Mã:
sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf
Thêm các cấu hình sau vào phần '[client]' để kích hoạt kết nối máy khách an toàn.
Mã:
[client]
....
ssl-cert=/etc/mysql/tls.certificate.pem
ssl-key=/etc/mysql/tls.key.pem
Lưu tệp, sau đó chỉnh sửa trình chỉnh sửa khi hoàn tất.

Bây giờ trên bảng điều khiển Warpgate, hãy nhấp vào menu 'Cấu hình', sau đó nhấp vào 'Thêm mục tiêu'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22239%22%3E%3C/svg%3E


Nhập tên máy chủ MariaDB, chọn loại là 'MySQL', sau đó nhấp vào Tạo mục tiêu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22238%22%3E%3C/svg%3E


Thay đổi thông tin máy chủ, người dùng và mật khẩu bằng thông tin người dùng MariaDB của bạn. Hãy nhớ tắt tùy chọn 'Xác minh chứng chỉ' nếu bạn có chứng chỉ TLS mặc định, sau đó bật vai trò 'warpgate:admin' trên phần 'Cho phép truy cập cho các vai trò'.

Nhấp vào 'Cập nhật cấu hình' khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22589%22%3E%3C/svg%3E


Sau khi thêm máy chủ MariaDB vào Warpgate, giờ đây bạn có thể truy cập máy chủ MariaDB thông qua máy chủ Warpgate MySQL Bastion.

Từ máy khách MariaDB, nhập lệnh sau để kết nối với máy chủ MariaDB. Khi được nhắc, hãy nhập mật khẩu của người dùng quản trị Warpgate.
Mã:
mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p
Khi đã kết nối, bạn sẽ thấy dấu nhắc shell MariaDB như 'MySQL [(dbname)]>'. Nhập các truy vấn sau để đảm bảo rằng người dùng bạn đang sử dụng có sẵn trên máy chủ MariaDB.
Mã:
SELECT host, user, plugin, authentication_string from mysql.user;
SHOW GRANTS FOR appuser@'%';
Đầu ra:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22443%22%3E%3C/svg%3E


Với điều này, giờ bạn đã kết nối với máy chủ MariaDB thông qua máy chủ Warpgate MySQL/MariaDB Bastion.

Kết luận​

Trong hướng dẫn này, bạn đã cài đặt và cấu hình máy chủ Warpgate Bastion trên Debian 11. Bạn đã cấu hình Warpgate để chạy với systemd và tường lửa UFW. Ngoài ra, bạn đã cấu hình Warpgate làm máy chủ SSH và MySQL/MariaDB Bastion, thêm máy chủ mục tiêu SSH và cũng thêm máy chủ mục tiêu MySQL/MariaDB.

Với điều này trong đầu, giờ bạn có thể thiết lập người dùng, vai trò mới và thêm kết nối mới vào Máy chủ Warpgate Bastion của mình. Và bạn có thể tập trung hóa các kết nối và quyền truy cập của người dùng thông qua một máy chủ Bastion tập trung duy nhất. Để tìm thông tin chi tiết về Warpgate, hãy truy cập tài liệu chính thức của Warpgate.
 
Back
Bên trên