Máy chủ Proxy là một loại dịch vụ máy chủ có chức năng như một cổng kết nối giữa người dùng cuối và tài nguyên internet. Thông qua máy chủ Proxy, người dùng cuối có thể kiểm soát và giám sát lưu lượng truy cập web của họ cho nhiều mục đích khác nhau, bao gồm quyền riêng tư, bảo mật và lưu vào bộ nhớ đệm. Dante là một SOCKS Proxy mã nguồn mở, phổ biến, ổn định. Trong hướng dẫn này, Vietnix sẽ trình bày cách cài đặt và cấu hình Dante để cung cấp SOCKS Proxy trên máy chủ Ubuntu 20.04.
Yêu cầu để cài đặt Dante Proxy trên Ubuntu 20.04 cho các kết nối riêng tư
Để hoàn thành hướng dẫn này, bạn cần một máy chủ Ubuntu 20.04 và người dùng không phải root
nhưng có quyền sudo
.
Hướng dẫn này sử dụng tên miền là your_domain
, tốt nhất bạn nên thay thế bằng tên miền hoặc địa chỉ IP của riêng bạn.
Bước 1: Cài đặt Dante
Dante là một máy chủ SOCKS Proxy. Trong đó, SOCKS là một giao thức ít được sử dụng rộng rãi hơn, nhưng hiệu quả hơn đối với một số ứng dụng ngang hàng (peer-to-peer applications) và được ưu tiên hơn HTTP đối với một số loại lưu lượng. Bắt đầu bằng cách chạy các lệnh sau với người dùng có quyền sudo
trong phần điều kiện:
sudo apt update
sudo apt install dante-server
Dante sẽ tự động thiết lập một dịch vụ nền và bắt đầu sau khi được cài đặt. Tuy nhiên, trong lần chạy đầu tiên, dịch vụ sẽ không khởi động một cách chính xác và bắn ra một thông báo lỗi vì dịch vụ này được tải xuống với tất cả cấu hình các tính năng bị vô hiệu hóa. Bạn có thể xác minh trạng thái bằng cách sử dụng lệnh systemctl
:
systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago
Docs: man:danted(8)
man:danted.conf(5)
Main PID: 14496 (code=exited, status=1/FAILURE)
Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)...
Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted).
Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended?
Để khởi động thành công Dante, bạn cần kích hoạt chúng bằng cách thay đổi một số cấu hình trong tệp cấu hình Dante.
Mặc định, tệp cấu hình của Dante được lưu tại /etc/danted.conf
. Bạn có thể mở tệp này bằng trình soạn thảo nano
hoặc bất kỳ trình soạn thảo văn bản nào mà bạn yêu thích, bạn sẽ thấy một danh sách dài các cấu hình tùy chọn, tất cả chúng đều bị vô hiệu hóa.
Bạn có thể tùy chỉnh cấu hình thông qua tệp này và bật một số tùy chọn theo từng dòng, nhưng trên thực tế bạn nên xóa tệp cấu hình này, thay thế bằng cách tạo một tệp cấu hình mới khác sẽ hiệu quả hơn và dễ đọc hơn.
Bài viết sẽ hướng dẫn bạn cấu hình một cách dễ dàng, nếu không bạn luôn có thể xem lại cấu hình mặc định của Dante bằng cách xem lại cấu hình mặc định hoặc tải lại package Dante để cấu hình.
Thực hiện lệnh xóa tệp cấu hình mặc định bằng lệnh sau:
sudo rm /etc/danted.conf
Bây giờ, bạn mở một tệp cấu hình mới bằng trình soạn thảo văn bản nano
hoặc trình soạn thảo văn bản yêu thích của bạn. Với trình soạn thảo nano
, bạn thực hiện câu lệnh:
sudo nano /etc/danted.conf
Tất nhiên ban đầu, tệp cấu hình sẽ trống rỗng. Sau đó, thực hiện thêm các nội dung cấu hình sau:
logoutput: syslog
user.privileged: root
user.unprivileged: nobody
# The listening network interface or address.
internal: 0.0.0.0 port=1080
# The proxying network interface or address.
external: eth0
# socks-rules determine what is proxied through the external interface.
socksmethod: username
# client-rules determine who can connect to the internal interface.
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
Bây giờ, cấu hình máy chủ SOCKS Proxy này đã có thể sử dụng được, chạy trên cổng mặc định 1080
. Bạn cũng có thể chia nhỏ phần còn lại của tệp cấu hình này theo từng dòng như sau:
logoutput
đề cập đến cách mà Dante sẽ ghi lại các kết nối, trong trường hợp này là sử dụng ghi nhật ký hệ thống thông thường.user.privileged
cho phép Dante có quyềnroot
để kiểm tra quyền.user.unprivileged
không cấp cho máy chủ bất kỳ quyền nào để thao tác dịch vụ với tư cách là người dùng không có đặc quyền, vì điều này là không cần thiết khi không cấp nhiều quyền chi tiết.internal
chỉ định cổng mà dịch vụ đang chạy và địa chỉ IP nào có thể kết nối đến Dante.external
chỉ định network interface nào được sử dụng cho các kết nối bên ngoài, theo mặc định trên hầu hết các máy chủ làeth0
. Tuy nhiên có thể khác đối với cấu hình máy chủ của bạn. Bạn có thể kiểm tra bằng câu lệnhifconfig -a
để xemnetwork interface
nào đảm nhiệm nhiệm vụ kết nối bên ngoài nhé.
Phần còn lại của các chi tiết cấu hình đảm bảo xử lý các phương pháp xác thực, sẽ được đề cập trong phần tiếp theo. Đừng quên mở cổng 1080
và cho phép hoạt động thông qua tường lửa nếu bạn đang sử dụng ufw
bằng câu lệnh:
sudo ufw allow 1080
Lúc này, bạn có thể khởi động lại Dante và kết nối với dịch vụ. Tuy nhiên, khi khởi động Dante, tức là bạn sẽ có một máy chủ SOCKS mở cho toàn bộ không gian mạng có thể kết nối đến. Điều này làm tăng nguy cơ máy chủ của bạn sẽ bị tấn công bởi bất kỳ máy tính nào. Vì vậy, trước tiên bạn sẽ học cách bảo mật nó.
Bước 2: Thực hiện bảo mật Dante
Dante sẽ sử dụng các tài khoản người dùng Linux thông thường để xác thực bằng cơ chế xác thực ngang hàng (peer authentications). Điều này là rất hữu ích nhưng mật khẩu được sử dụng cho kết nối đó sẽ được gửi qua văn bản bằng định dạng thông thường (tức chưa được mã hóa). Vì vậy, điều quan trọng là phải tạo một người dùng SOCKS chuyên dụng đảm bảo được tính kết nối riêng tư.
Để làm điều đó, bạn sẽ sử dụng lệnh useradd
với cờ chỉ định không cho phép người dùng đăng nhập bằng shell
, sau đó đặt mật khẩu cho tài khoản đó:
sudo useradd -r -s /bin/false your_dante_user
sudo passwd your_dante_user
Bạn cũng nên tránh đăng nhập vào tài khoản này qua kết nối không dây không an toàn hoặc chia sẻ máy chủ quá rộng rãi.
Dante hỗ trợ các phương pháp xác thực khác, nhưng các kết nối bên ngoài (ví dụ: ứng dụng, tiện ích mở rộng,…) kết nối với SOCKS Proxy sẽ chỉ được hỗ trợ xác thực tên người dùng và mật khẩu, vì vậy bạn có thể giữ nguyên cấu hình người dùng.
Một cách khác được khuyên dùng là hạn chế địa chỉ IP cụ thể truy cập. Tuy không phải là tùy chọn mang đến hiệu quả tốt nhất, nhưng với sự kết hợp của các công nghệ được sử dụng, có thể nói đây là một tùy chọn hợp lý. Bạn có thể học cách hạn chế quyền truy cập vào các địa chỉ IP cụ thể bằng ufw
và điều này cũng có thể thực hiện trực tiếp trong Dante bằng cách chỉnh sửa tệp /etc/danted.conf
như sau:
sudo nano /etc/danted.conf
…
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
Có thể thêm vào nhiều địa chỉ IP trong một khối cấu hình bằng cách sử dụng ký hiệu CIDR
(CIDR notation) hoặc chỉ cần thêm một vài khối cấu hình client pass {}
khác:
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
client pass {
from: another_ip_address/0 to: 0.0.0.0/0
}
Lúc này, bạn có thể thoải mái khởi động lại Dante để áp đặt các thay đổi cấu hình của mình bằng câu lệnh:
sudo systemctl restart danted.service
Thực hiện kiểm tra trạng thái dịch vụ, bạn sẽ thấy Dante hoạt động mà không có bất kỳ lỗi nào:
systemctl status danted.service
Output
● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable>
Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago
Thiết lập Dante Proxy là giải pháp hoàn hảo để đảm bảo tính riêng tư, bảo vệ dữ liệu và ổn định của hệ thống. Tuy nhiên, để VPS vận hành ổn định, mượt mà và đạt hiệu quả tối đa thì tốc độ cũng là một yếu tố quan trọng cần được chú trọng.
Hiện tại Vietnix đang cung cấp các gói VPS tốc độ cao, đa dạng cấu hình, tính năng hiện đại, bảo mật cao gồm: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU với nhiều mức giá khác nhau.
Nhanh tay liên hệ Vietnix để được tư vấn gói VPS tốc độ cao phù hợp với nhu cầu ngay hôm nay.
Bước 3: Đảm bảo kết nối thông qua Dante
Để chứng minh máy chủ Dante đã hoạt động bình thường, thực hiện gửi một dòng lệnh curl
, lệnh này phổ biến giúp thực hiện kiểm tra các yêu cầu tài nguyên web ( web request) khác nhau. Tóm lại, khi muốn xác minh xem một yêu cầu kết nối tài nguyên web có hoạt động hay không, bạn phải luôn kiểm tra trước với curl
. Công cụ này được cài đặt theo mặc định trên tất cả các hệ điều hành như Windows, macOS và Unix/Linux hiện đại, vì vậy bạn có thể mở bất kỳ giao diện dòng lệnh nào để chạy lệnh này:
curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
Output
* Trying 138.197.103.77...
* TCP_NODELAY set
* SOCKS5 communication to www.google.com:80
* SOCKS5 connect to IPv4 142.250.189.228 (locally resolved)
* SOCKS5 request granted.
* Connected to 138.197.103.77 (138.197.103.77) port 1080 (#0)
> GET / HTTP/1.1
...
Thông tin đăng nhập mà bạn đã sử dụng cho lệnh curl
giờ đây sẽ hoạt động với bất kỳ yêu cầu nào khác mà bạn muốn sử dụng đối với máy chủ proxy SOCKS này.
Lời kết
Trong hướng dẫn này, bạn đã học cách triển khai một mã nguồn mở đầu cuối, kiểm soát lưu lượng truy cập mà không tốn phí hoặc ít chi phi với Dante. Mong rằng, từ thao tác với proxy, bạn sẽ biết cách bảo vệ môi trường internet của mình, ngăn chặn, loại bỏ các nguồn thông tin độc hại, nguy hiểm. Nếu có bất kỳ thắc mắc nào, hãy để lại bình luận bên dưới để mọi người cùng thảo luận nhé.
Cho mình hỏi, sau khi sử dụng lệnh “systemctl status danted.service’ thì làm sao để thoát nội dung này ra ạ?
Nhấn tổ hợp phím Ctrl + C nhé bạn