Hướng Dẫn Cài Đặt Proxy Dante trên Debian 11, duyệt web với Kết Nối Riêng Tư

Proxy Dante

Dante là một proxy SOCKS mã nguồn mở, ổn định và phổ biến. Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình Dante để cung cấp một proxy SOCKS trên máy chủ Debian 11. Hướng Dẫn Cài Đặt Proxy Dante trên Debian 11

Máy chủ proxy là một loại ứng dụng máy chủ hoạt động như một cổng 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 web của họ cho nhiều mục đích khác nhau, bao gồm bảo mật, quyền riêng tư và lưu trữ bộ nhớ đệm (caching). Ví dụ, bạn có thể sử dụng máy chủ proxy để thực hiện các yêu cầu web từ một địa chỉ IP khác với của mình. Bạn cũng có thể sử dụng máy chủ proxy để nghiên cứu cách mà web được phục vụ khác nhau giữa các khu vực pháp lý khác nhau, hoặc để tránh một số phương pháp giám sát hoặc hạn chế lưu lượng web.

Yêu cầu cần có

Để hoàn thành hướng dẫn này, bạn sẽ cần:

  • Một máy chủ Debian 11 và một người dùng không phải root có quyền sudo. Bạn có thể tìm hiểu thêm về cách thiết lập người dùng với quyền sudo trong hướng dẫn “Thiết Lập Máy Chủ Ban Đầu Với Debian 11”.

Bạn sẽ sử dụng tên miền your_domain trong hướng dẫn này, nhưng hãy thay thế tên miền này bằng tên miền hoặc địa chỉ IP của bạn.

Bước 1 — Cài Đặt Dante trên Debian 11

Dante là một máy chủ proxy SOCKS mã nguồn mở. SOCKS là một giao thức ít được sử dụng rộng rãi, nhưng nó hiệu quả hơn cho một số ứng dụng peer-to-peer và được ưu tiên hơn HTTP cho 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 quyền người dùng không phải root để cập nhật danh sách gói và cài đặt Dante:

sudo apt update
sudo apt install dante-server

Dante cũng sẽ tự động thiết lập một dịch vụ chạy ngầm và khởi động sau khi cài đặt. Tuy nhiên, nó được thiết kế để thoát ra một cách nhẹ nhàng với thông báo lỗi khi lần đầu chạy, vì nó được phát hành với tất cả các tính năng tắt. Bạn có thể xác nhận điều này bằ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 dịch vụ của Dante thành công, bạn sẽ cần phải bật các dịch vụ này trong tệp cấu hình của nó. Tệp cấu hình mặc định của Dante nằm trong /etc/danted.conf. Nếu bạn mở tệp này bằng nano hoặc trình soạn thảo văn bản yêu thích của mình, bạn sẽ thấy một danh sách dài các tùy chọn cấu hình, tất cả đều bị vô hiệu hóa. Bạn có thể cố gắng duyệt qua tệp này và bật từng tùy chọn, nhưng trên thực tế, việc xóa tệp này và thay thế nó bằng một tệp mới sẽ hiệu quả và dễ hiểu hơn. Đừng lo về việc này. Bạn luôn có thể xem lại cấu hình mặc định của Dante bằng cách truy cập tài liệu trực tuyến của nó, và thậm chí có thể tải lại gói cài đặt thủ công từ danh sách gói của Ubuntu nếu bạn muốn lấy lại tệp cấu hình mặc định. Trong lúc này, hãy xóa tệp này:

sudo rm /etc/danted.conf

Bây giờ bạn có thể thay thế nó bằng một tệp cấu hình ngắn gọn hơn. Mở tệp bằng trình soạn thảo văn bản sẽ tự động tạo tệp nếu nó không tồn tại, vì vậy khi sử dụng nano hoặc trình soạn thảo văn bản yêu thích của bạn, bạn sẽ nhận được tệp cấu hình trống:

sudo nano /etc/danted.conf

Hãy thêm nội dung sau vào tệp:

/etc/danted.conf

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ạn hiện đã có một cấu hình máy chủ SOCKS sử dụng, chạy trên cổng 1080, là một quy ước phổ biến cho SOCKS. Bạn cũng có thể giải thích các chi tiết cấu hình khác trong tệp:

  • logoutput cho biết cách Dante sẽ ghi lại các kết nối, trong trường hợp này là sử dụng logging hệ thống thông thường.
  • user.privileged cho phép Dante có quyền root để kiểm tra quyền truy cập.
  • user.unprivileged không cấp quyền cho server khi chạy dưới người dùng không có quyền hạn, vì điều này là không cần thiết khi không cấp quyền chi tiết.
  • internal chỉ định chi tiết kết nối, bao gồm cổng mà dịch vụ đang chạy và địa chỉ IP nào có thể kết nối.
  • external chỉ định chi tiết kết nối cho giao diện mạng được sử dụng cho kết nối ra ngoài, mặc định là eth0 trên hầu hết các máy chủ.

Proxy Dante

Bước 2 — Bảo Mật Dante trên Debian 11

Nếu bạn đã làm theo hướng dẫn này cho đến lúc này, Dante sẽ đang sử dụng các tài khoản người dùng Linux thông thường cho việc xác thực. Điều này 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 thuần túy, vì vậy việc tạo một người dùng SOCKS chuyên dụng không có quyền đăng nhập khác là rất quan trọng. Để làm điều đó, bạn sẽ sử dụng useradd với các tham số không gán shell đăng nhập cho người dùng, sau đó thiết lập mật khẩu:

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 bảo mật hoặc chia sẻ máy chủ quá rộng rãi. Nếu không, các tác nhân xấu có thể và sẽ thực hiện các nỗ lực đăng nhập liên tục.

Dante hỗ trợ các phương thức xác thực khác, nhưng nhiều ứng dụng (ví dụ, các ứng dụng) kết nối với proxy SOCKS chỉ hỗ trợ xác thực cơ bản với tên người dùng và mật khẩu, vì vậy bạn có thể để phần này như vậy. Một lựa chọn thay thế là hạn chế quyền truy cập chỉ đối với các địa chỉ IP cụ thể. Đây không phải là phương pháp tinh vi nhất, nhưng với sự kết hợp các công nghệ đang sử dụng ở đây, đó là một lựa 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ể với ufw từ các hướng dẫn yêu cầu trước, nhưng bạn cũng có thể làm điều này trực tiếp trong Dante. Chỉnh sửa tệp /etc/danted.conf:

sudo nano /etc/danted.conf

Output:

/etc/danted.conf

…
client pass {
    from: your_ip_address/0 to: 0.0.0.0/0
}

Để hỗ trợ nhiều địa chỉ IP, bạn có thể sử dụng ký hiệu CIDR, hoặc chỉ cần thêm một khối cấu hình client pass {} khác:

/etc/danted.conf

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
}

Sau đó, bạn có thể khởi động lại Dante với các thay đổi cấu hình của mình:

sudo systemctl restart danted.service

Lần này, khi kiểm tra trạng thái dịch vụ, bạn sẽ thấy nó đang chạy mà không có 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

Trong bước tiếp theo, bạn sẽ kết nối với proxy của mình cuối cùng.

Proxy Dante 2

Bước 3 — Kết Nối Qua Dante

Để chứng minh máy chủ Dante của bạn, bạn sẽ sử dụng một chương trình dòng lệnh có tên là curl, một công cụ phổ biến để thực hiện các yêu cầu web khác nhau. Nhìn chung, nếu bạn muốn xác minh liệu kết nối có hoạt động trong trình duyệt hay không trong điều kiện lý tưởng, bạn nên luôn thử nghiệm trước với curl. Bạn sẽ sử dụng curl trên máy cục bộ của mình để làm điều này – nó được cài đặt mặc định trên tất cả các môi trường Windows, Mac và Linux hiện đại, vì vậy bạn có thể mở bất kỳ shell cục bộ 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 68.183.159.74:1080...
* SOCKS5 connect to IPv4 142.251.33.68:80 (locally resolved)
* SOCKS5 request granted.
* Connected to 68.183.159.74 (68.183.159.74) port 1080 (#0)
> GET / HTTP/1.1
> Host: www.google.com
…

Những thông tin đăng nhập bạn sử dụng với curl bây giờ sẽ hoạt động ở bất kỳ đâu bạn muốn sử dụng máy chủ proxy mới của mình.

Sau khi đã cấu hình và bảo mật Dante, bạn có thể kết nối với máy chủ proxy của mình để kiểm tra xem tất cả các bước đã được thực hiện đúng hay chưa. Để làm điều này, bạn sẽ sử dụng lệnh curl, một công cụ dòng lệnh phổ biến được dùng để gửi các yêu cầu web.

Giải thích lệnh:

    • -v: Kích hoạt chế độ chi tiết, cho phép bạn xem tất cả các thông tin về quá trình kết nối.
    • -x socks5://: Chỉ định sử dụng giao thức SOCKS5.
    • your_dante_user: Tên người dùng của bạn đã được tạo cho Dante.
    • your_dante_password: Mật khẩu của người dùng đó.
    • your_server_ip: Địa chỉ IP của máy chủ Dante của bạn.
    • 1080: Cổng mặc định mà Dante đang lắng nghe (cổng SOCKS5).

Khi bạn nhận được phản hồi thành công từ Google, điều này có nghĩa là proxy SOCKS5 của bạn đang hoạt động tốt. Bạn có thể thử kết nối đến các website khác để đảm bảo rằng máy chủ proxy của bạn đã được cấu hình chính xác và đang hoạt động.

Kết Luận

Trong hướng dẫn này, bạn đã học cách triển khai một máy chủ proxy SOCKS sử dụng Dante trên Debian 11. Đây là một giải pháp đơn giản và hiệu quả để bảo mật và giám sát lưu lượng mạng của bạn mà không cần sử dụng VPN. Việc cài đặt và cấu hình Dante giúp bạn kiểm soát lưu lượng web của mình, bảo mật kết nối internet và cải thiện quyền riêng tư.

Với cấu hình SOCKS này, bạn có thể duyệt web thông qua một proxy an toàn mà không cần lo lắng về các vấn đề như giám sát hoặc giảm tốc lưu lượng. Hơn nữa, vì Dante là một phần mềm mã nguồn mở và phổ biến, bạn có thể dễ dàng cấu hình lại hoặc mở rộng nếu cần thiết.

Nếu bạn muốn triển khai một proxy HTTP, Squid là một lựa chọn tuyệt vời để kết hợp với Dante và có thể giúp bạn proxy các loại lưu lượng web khác nhau. Ngoài ra, nếu bạn muốn tự động hóa việc triển khai các máy chủ proxy này, bạn có thể sử dụng Ansible để triển khai Dante và các cấu hình liên quan trên nhiều máy chủ khác nhau, giúp việc mở rộng mạng của bạn trở nên dễ dàng hơn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *