Sunday, September 29, 2024

Tạo proxy SOCKS trên Linux bằng SSH

-

Cách sử dụng SSH để tạo một SOCKS5 proxy, đây là một loại máy chủ trung gian, để ẩn hoặc mã hóa lưu lượng internet của bạn. Điều này có thể hữu ích trong trường hợp bạn đang sử dụng mạng có giới hạn hoặc bị kiểm duyệt, và bạn muốn truy cập internet một cách riêng tư và tự do hơn.

Bạn đã có quyền truy cập vào một máy chủ từ xa thông qua SSH. Đây là một máy tính hoặc máy chủ khác trên internet mà bạn có thể truy cập bằng SSH.

Sử dụng máy chủ bạn đã truy cập để thiết lập một máy chủ proxy SOCKS5, nơi bạn có thể đưa dữ liệu qua trước khi nó đến internet. SOCKS5 là một giao thức proxy cho phép bạn chuyển tiếp dữ liệu qua máy chủ proxy.

Mọi dữ liệu từ máy tính của bạn sẽ được gửi đến máy chủ SSH qua kết nối mã hóa. Điều này đảm bảo dữ liệu không thể bị người khác đọc được.

Máy chủ SSH của bạn sẽ tiếp tục gửi dữ liệu của bạn ra internet thông qua kết nối của nó. Điều này đồng nghĩa với việc bạn truy cập internet thông qua máy chủ proxy SSH.

Bạn có thể sử dụng kết nối SOCKS5 proxy này để truy cập các trang web bằng HTTP và HTTPS thông qua máy chủ SSH của bạn. Điều này giúp bạn che giấu hoạc bảo mật lưu lượng truy cập.

Cách thiết lập một SOCKS5 tunnel bằng SSH.

Trước khi thiết lập bạn hãy kiểm tra lại IP Public của máy tính cá nhân bằng cách vào https://ping.eu hoặc các trang kiểm tra IP Public tương tự. Hiện tại IP Public của mình đang là 115.79.213.185.

Thiết lập SSH Tunnel.

Đầu tiên, bạn cần thiết lập một SSH tunnel tới một máy chủ từ xa. Điều này sẽ tạo một kênh bảo mật giữa máy tính của bạn và máy chủ từ xa. Điều này được thực hiện bằng cách sử dụng lệnh ssh. Dưới đây là một ví dụ:

ssh -g -f -N -D 1080 0.0.0.0
  • -D 1080: Mở một SOCKS proxy trên cổng 1080 trên máy tính của bạn. Bạn có thể chọn một cổng khác nếu cổng này đã được sử dụng.
  • -q: Chế độ yên tĩnh, không hiển thị thông tin trên màn hình.
  • -C: Nén dữ liệu trong kết nối để tiết kiệm băng thông.
  • -N: Không thực hiện lệnh từ xa, chỉ sử dụng để chuyển tiếp cổng.
  • 0.0.0.0: cho phép toàn bộ IP kết nối đến SOCKS.

Nếu bạn muốn giới hạn username và máy client cụ thể có thể truyền tham số thay hoanghd@hoanghd.com thay cho 0.0.0.0: Với hoanghd@hoanghd.com là máy chủ SSH từ xa mà bạn đang kết nối đến.

ssh -D 1337 -q -C -N hoanghd@hoanghd.com

Nếu bạn muốn chạy kết nối SSH đó trong nền, bạn có thể sử dụng -f để nó chạy ở chế độ nền:

ssh -D 1337 -q -C -N -f hoanghd@hoanghd.com

Ví dụ của mình sẽ chạy trên máy có IP là 103.118.30.55.

$ ip a | grep 103.118.30.55
    inet 103.118.30.55/26 brd 103.118.30.63 scope global eth0

$ ssh -g -f -N -D 1080 0.0.0.0

Nếu kiểm tra lại port bạn sẽ thấy port 1080 đã listen với dịch vụ SSH.

$ netstat -tlnp | grep 1080
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      443711/ssh
tcp6       0      0 :::1080                 :::*                    LISTEN      443711/ssh

Cấu hình Trình duyệt.

Sau khi bạn đã thiết lập SSH tunnel, bạn cần cấu hình trình duyệt (như Chrome hoặc Firefox) để sử dụng SOCKS5 proxy.

Dưới đây là cách cấu hình trình duyệt Chrome để sử dụng SOCKS proxy:

  • Mở Chrome và truy cập vào chrome://settings/ trong thanh địa chỉ.
  • Chọn “Advanced” để mở các cài đặt nâng cao.
  • Tìm “Proxy Settings” và nhấp vào nó.
  • Trong cửa sổ cài đặt proxy, chọn “Manual proxy configuration”.
  • Bạn sẽ thấy một tùy chọn “SOCKS host” và “Port”. Nhập 103.118.30.55 vào ô “SOCKS host” và cổng SOCKS proxy bạn đã thiết lập (ở ví dụ trước là 1080) vào ô “Port”.
  • Chọn “SOCKS v5” nếu bạn đang sử dụng SOCKS5 proxy.

Bây giờ, mọi lưu lượng internet từ trình duyệt của bạn sẽ đi qua SOCKS5 proxy bạn đã thiết lập thông qua máy chủ từ xa. Nếu bạn sử dụng https://ping.eu để kiểm tra lại IP Public bạn sẽ thấy IP của máy chủ SOCKS thay cho IP mà chúng ta đã kiểm tra lúc đầu.

Điều này có nghĩa rằng dữ liệu được mã hóa và gửi qua kết nối bảo mật đến máy chủ từ xa, trước khi đi ra ngoài internet. Điều này giúp che giấu địa chỉ IP của bạn và bảo vệ dữ liệu truyền qua mạng.

Mã hóa traffic.

Thông qua việc sử dụng SOCKS5 proxy cùng với SSH, bạn tạo một kênh bảo mật cho lưu lượng internet của bạn, nhưng việc mã hóa lưu lượng có một số hạn chế:

  • Lưu lượng giữa trình duyệt và SOCKS Proxy (local proxy):
    • Nếu bạn truy cập một trang web sử dụng giao thức HTTPS (ví dụ: trang web có URL bắt đầu bằng “https://”), dữ liệu giữa trình duyệt và SOCKS proxy (ở máy tính cục bộ của bạn) được mã hóa và an toàn.
    • Nếu bạn truy cập một trang web bằng giao thức HTTP (ví dụ: trang web có URL bắt đầu bằng “http://”), dữ liệu giữa trình duyệt và SOCKS proxy được gửi dưới dạng văn bản không mã hóa.
  • Kết nối giữa SSH Client và Remote Server:
    • Kết nối giữa máy tính của bạn và máy chủ SSH từ xa (remote server) luôn được mã hóa, bất kể trang web bạn truy cập, đảm bảo tính bảo mật.
  • Kết nối từ Remote Server đến trang web yêu cầu:
    • Khi máy chủ từ xa kết nối đến trang web mà bạn yêu cầu, mức độ mã hóa phụ thuộc vào trang web đó. Nếu trang web sử dụng giao thức HTTPS, thì kết nối giữa máy chủ từ xa và trang web cũng được mã hóa. Tuy nhiên, nếu trang web sử dụng giao thức HTTP, kết nối có thể là văn bản không mã hóa.

Vì vậy, mặc dù một phần lưu lượng thông qua SOCKS proxy được mã hóa, một phần khác có thể không được mã hóa tùy thuộc vào trang web mà bạn truy cập. Do đó, việc sử dụng SOCKS proxy và SSH giúp bảo vệ tính riêng tư và an toàn hơn khi bạn truy cập internet, nhưng không phải lúc nào cũng đảm bảo mã hóa toàn bộ lưu lượng.

Cách vượt qua các hạn chế của Firewall.

Cách vượt qua các hạn chế firewall (firewall limitations) khi bạn không được phép mở kết nối SSH đến một máy chủ từ xa, chẳng hạn do firewall đã chặn các cổng SSH thông thường.

Dưới đây là một số chi tiết:

  • Sử dụng cổng SSH khác: Thay vì sử dụng cổng SSH tiêu chuẩn (cổng 22), bạn có thể cố gắng chạy máy chủ SSH trên các cổng khác, chẳng hạn như cổng 80, 443 hoặc 53. Lý do là:
    • Cổng 80 và 443 thường được sử dụng cho lưu lượng web, nên chúng thường được phép qua firewall.
    • Cổng 443 sử dụng giao thức HTTPS, đã được mã hóa, và ít có khả năng bị firewall ngăn chặn vì nó sử dụng một giao thức đã được mã hóa.
  • Kiểm tra firewall của máy cá nhân: Đôi khi, firewall trên máy tính cá nhân của bạn cũng có thể ngăn chặn kết nối SSH. Bạn cần đảm bảo rằng bạn không đặt cấu hình firewall trên máy tính của mình để chặn kết nối SSH.
  • Kiểm tra tình trạng kết Nối SOCKS Proxy: Sau khi bạn đã thiết lập SOCKS proxy bằng SSH, bạn cần kiểm tra xem kết nối đó có hoạt động hay không. Bạn có thể thử truy cập một trang web “what is my IP” trước và sau khi cấu hình SOCKS proxy. Nếu IP của bạn thay đổi sau khi cấu hình proxy, điều đó có nghĩa rằng proxy hoạt động. Nếu không, bạn cần kiểm tra lại cấu hình SSH và proxy của mình.
  • Khi SOCKS Proxy không hoạt động: Nếu bạn gặp thông báo lỗi “proxy server refusing connections” hoặc tương tự, đó có thể là do SOCKS proxy không hoạt động. Bạn nên kiểm tra lại cấu hình SSH và proxy của mình, có thể cần kiểm tra kết nối SSH và khắc phục lỗi nếu có.

Lưu ý rằng việc sử dụng SSH và SOCKS proxy để vượt qua firewall có thể vi phạm quy định của mạng hoặc luật pháp ở một số trường hợp, vì vậy bạn nên sử dụng nó cẩn thận và đảm bảo rằng bạn tuân thủ các quy tắc và quy định cụ thể của mạng bạn đang sử dụng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories