Tip #32: Tạo Socks5 bằng SSH

22/01/2021

Tạo Socks5 bằng SSH là cách làm nhanh gọn, hiệu quả và an toàn nhất. Socks sẽ chỉ được tạo khi cần sử dụng (on-demand) bởi những người có quyền SSH vào server và không cần phải cài thêm package nào khác. Ngoài ra, tạo Socks bằng SSH Tunnel còn bổ sung thêm chức năng mã hóa dữ liệu – điều mà giao thức Socks mặc định không hỗ trợ. 

Xem thêm: Cơ chế hoạt động của Socks và cách áp dụng chúng trong việc quản trị hệ thống

I. Tạo Private Socks5 bằng SSH

Quá trình tạo Private Socks bằng SSH gồm 2 bước sau:
1. Thiết lập Socks5 Proxy bằng SSH Tunnel đến server dùng làm socks

Tạo socks5  bằng ssh
Nguồn: ma.ttias.be
[[email protected] ~]$ ssh -D 127.0.0.1:50000 -q -C -N [email protected]
  • -D 127.0.0.1:50000: Chỉ định ssh client sẽ mở socks proxy ở local listen trên socket 127.0.0.1:50000
  • -C: nén dữ liệu tăng tốc độ
  • -q: quite mode
  • -N: không thực thi lệnh, chỉ làm nhiệm vụ port forwarding
  • [email protected]: server sẽ dùng để làm socks

Lệnh trên sẽ mở 1 socket mới trên máy bạn ở 127.0.0.1:50000. Đây là IP của socks mà bạn sẽ dùng cho tool của mình.

2. Thiết lập client/browser sử dụng socks vừa tạo

Tạo socks5  bằng ssh
Nguồn: ma.ttias.be
  • Với browser bạn có thể cấu hình trong phần Network hoặc sử dụng addon như Foxy Proxy.
  • Với các client khác, tùy theo client có hỗ trợ chạy qua socks hay không thì mới sử dụng được. Ví dụ với curl:
Tạo socks5  bằng ssh
Kiểm tra IP trả về IP của server

Lúc này, dữ liệu sẽ mã hóa trong quá trình gửi đến server vì chạy trong Tunnel của SSH. Điều này giúp bảo vệ dữ liệu khi bạn làm việc ở những public wifi như quán Cafe, nhà hàng, sân bay … nơi tiềm ẩn nhiều nguy cơ bị logging hoặc sniffing.

Tạo socks5  bằng ssh
Nguồn: ma.ttias.be

II. Tạo public Socks

Nếu bạn muốn tạo public socks5 bằng ssh để nhiều người cùng kết nối thì dùng tricks sau:

  • SSH vào server bạn muốn làm socks
  • Tạo 1 user mới để chạy socks, set password và set login shell là /sbin/nologin (vì chỉ cần chạy port forwarding thôi)
  • Mở “screen” trên server và thực hiện lệnh sau để server SSH vào chính nó bằng user vừa tạo
[[email protected] ~]$ ssh -D 0.0.0.0:50000 -C -q -N socks@localhost
  • -D 0.0.0.0:50000: Chỉ định socks server sẽ listen trên all interface (toàn bộ IP – có thể thay 0.0.0.0 thành IP bạn muốn)
  • -C: nén dữ liệu tăng tốc độ
  • -q: quite mode
  • -N: không thực thi lệnh, chỉ làm nhiệm vụ port forwarding
  • socks@localhost: kết nối vào chính server

Lúc này, trên server sẽ có 1 socket listen trên 0.0.0.0:50000, đây là socks server của chúng ta, có thể dùng Socks client kết nối đến để sử dụng

Tạo socks5  bằng ssh
Kiểm tra IP trả về IP của server

Lưu ý: với cách làm này thì:

  • Không có chứng thực khi client connect vào socks, bạn phải tự control access.
  • Dữ liệu từ client gửi lên socks server sẽ không được mã hóa, do việc mã hóa bằng SSH tunnel chỉ xảy ra giữa local socket chạy trên server và chính nó, ứng dụng bạn sử dụng chịu trách nhiệm cho việc mã hóa.

Bạn còn kinh nghiệm khác thú vị về việc sử dụng socks? Hãy join Group Telegram Quản Trị Linux để chia sẻ với mình và các đồng đội khác nhé!