Thứ hai, 26/10/2020 | 00:00 GMT+7

Cách định tuyến lưu lượng truy cập web an toàn mà không cần VPN bằng đường hầm SOCKS

Đôi khi bạn đang ở trên một mạng không an toàn hoặc có firewall quá hạn chế và bạn cần truy cập một trang web. Bạn muốn đảm bảo không có ai ở giữa đang theo dõi giao thông.

Một giải pháp là VPN , nhưng nhiều VPN yêu cầu phần mềm ứng dụng client đặc biệt trên máy của bạn mà bạn có thể không có quyền cài đặt.

Nếu tất cả những gì bạn cần bảo mật là duyệt web, thì có một giải pháp thay thế đơn giản: tunnel proxy SOCKS 5.

Proxy SOCKS về cơ bản là một tunnel SSH, trong đó các ứng dụng cụ thể chuyển tiếp lưu lượng của chúng xuống tunnel tới server và sau đó ở đầu server , proxy sẽ chuyển tiếp lưu lượng ra Internet chung. Không giống như VPN, proxy SOCKS phải được cấu hình trên ứng dụng theo từng ứng dụng trên client , nhưng có thể được cài đặt mà không cần bất kỳ tác nhân khách đặc biệt nào.

Miễn là bạn có Server có quyền truy cập SSH, bạn có thể sử dụng nó làm điểm cuối proxy SOCKS. Trong hướng dẫn này, ta sẽ sử dụng Server Ubuntu 14.04 làm proxy và trình duyệt web Firefox làm ứng dụng client . Đến cuối hướng dẫn này, bạn có thể duyệt các trang web một cách an toàn thông qua tunnel .

Yêu cầu

Như đã đề cập ở trên, điều đầu tiên cần thiết là một server chạy bất kỳ version Linux nào, như Ubuntu 14.04, có quyền truy cập SSH .

  • Triển khai một server (ví dụ này sử dụng Ubuntu 14.04)

Cần cài đặt thêm một chút trên máy local của bạn . Đối với điều này, bạn cần download một hoặc hai phần mềm.

  • Trình duyệt web Firefox (mọi người)
  • PuTTY ( user Windows)

Firefox cho phép bạn đặt proxy chỉ cho Firefox thay vì đặt proxy toàn hệ thống.

PuTTY được sử dụng để cài đặt tunnel proxy cho user Windows. User Mac OS X hoặc Linux có các công cụ để cài đặt tunnel được cài đặt sẵn.

Bước 1 (Mac OS X / Linux) - Cài đặt tunnel

Trên máy tính local của bạn, hãy tạo khóa SSH . Nếu bạn đã có SSH key , bạn có thể sử dụng khóa đó.

Mặc dù thực tế tốt là đặt cho SSH key của bạn một passphrase (password bảo vệ) , đối với hướng dẫn này, ta thực sự sẽ để trống passphrase (password bảo vệ) để tránh các vấn đề về sau.

Khi bạn cài đặt khóa, hãy đảm bảo bạn thêm khóa đó vào các khóa được ủy quyền cho user sudo trên server (trong ví dụ này, đó là user sammy ).

Mở một chương trình terminal trên máy tính của bạn. Trên Mac OS X, đây là Thiết bị terminal trong Ứng dụng> Tiện ích.

Cài đặt tunnel bằng lệnh này:

  • ssh -D 8123 -f -C -q -N sammy@example.com

Giải thích các lập luận

  • -D : Cho SSH biết rằng ta muốn có tunnel SOCKS trên số cổng được chỉ định (bạn có thể chọn một số trong repository ảng 1025-65536)
  • -f : Chuyển quá trình xuống nền
  • -C : Nén dữ liệu trước khi gửi đi
  • -q : Sử dụng chế độ yên tĩnh
  • -N : Cho SSH biết rằng sẽ không có lệnh nào được gửi sau khi tunnel lên

Đảm bảo thay thế sammy @ example.com bằng user sudo và địa chỉ IP server hoặc domain của bạn .

Sau khi bạn nhập lệnh, bạn sẽ ngay lập tức được đưa trở lại dấu nhắc lệnh mà không có dấu hiệu thành công hay thất bại; điều đó là bình thường.

Xác minh tunnel đang hoạt động và chạy bằng lệnh này:

  • ps aux | grep ssh

Bạn sẽ thấy một dòng trong kết quả như:

Đầu ra
sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com 

Bạn có thể thoát khỏi ứng dụng terminal của bạn và tunnel sẽ vẫn hoạt động. Đó là vì ta đã sử dụng đối số -f để đặt phiên SSH vào nền.

Lưu ý: Nếu bạn muốn kết thúc tunnel , bạn sẽ phải lấy PID qua ps và sử dụng lệnh kill , ta sẽ hướng dẫn bạn cách thực hiện sau.

Bước 1 (Windows) - Cài đặt tunnel

Mở PuTTY .

Nếu bạn chưa cài đặt nó, hãy download PuTTY và lưu nó ở nơi bạn thích. PuTTY không yêu cầu quyền admin để cài đặt; chỉ cần download .exe và chạy nó.

Hoàn thành các bước sau để cài đặt tunnel :

  1. Từ phần Phiên , thêm Tên server (hoặc địa chỉ IP) của server của bạn và Cổng SSH (thường là 22)Phiên Putty
  2. Ở bên trái, chuyển đến: Kết nối> SSH> Đường hầm
  3. Nhập bất kỳ số cổng Nguồn nào trong repository ảng 1025-65536. Trong ví dụ này, ta đã sử dụng cổng 1337 Kết nối Putty> SSH> Đường hầm
  4. Chọn nút radio Động
  5. Nhấp vào nút Thêm
  6. Quay lại Phiên ở bên trái
  7. Thêm tên trong Phiên đã lưu và nhấp vào nút Lưu
  8. Bây giờ hãy nhấp vào nút Mở để tạo kết nối
  9. Nhập tên user sudo và password server của bạn để đăng nhập

Bạn có thể thu nhỏ cửa sổ PuTTY ngay bây giờ, nhưng đừng đóng nó. Kết nối SSH của bạn sẽ được mở.

Mẹo: Bạn có thể lưu tên user sudo ( sammy ) và SSH key của bạn cho cùng một phiên này theo hướng dẫn PuTTY SSH Key . Sau đó, bạn sẽ không phải nhập tên user và password của bạn mỗi khi mở kết nối.

Bước 2 - Cấu hình Firefox để sử dụng Đường hầm

Đến đây bạn đã có tunnel SSH, đã đến lúc cấu hình Firefox để sử dụng tunnel đó. Lưu ý để một tunnel SOCKS 5 hoạt động, bạn phải sử dụng một ứng dụng local có thể tận dụng tunnel ; Firefox thực hiện thủ thuật.

Bước này tương tự đối với Windows, Mac OS X và Linux.

Đảm bảo rằng bạn có số cổng mà bạn đã sử dụng trong lệnh SSH của bạn hoặc trong PuTTY được ghi chú cho ví dụ này. Ta đã sử dụng 8123 trong ví dụ OS X / Linux và 1337 trong ví dụ Windows cho đến nay, hoặc bạn có thể đã sử dụng một cổng khác.

(Các bước sau được thực hiện với Firefox version 39 nhưng sẽ hoạt động trên các version khác, mặc dù vị trí của các tùy chọn có thể khác nhau.)

  1. Ở góc trên bên phải, nhấp vào biểu tượng bánh hamburger để truy cập menu của Firefox: Tùy chọn Firefox
  2. Click vào Preferences hoặc chọn biểu tượng
  3. Điều hướng đến phần Nâng cao
  4. Nhấp vào tab Mạng Tùy chọn Nâng cao của Firefox
  5. Bấm vào nút Cài đặt dưới tiêu đề Kết nối . Một cửa sổ mới sẽ mở ra
  6. Chọn nút radio cho cấu hình proxy thủ công: Cài đặt proxy của Firefox
  7. Nhập localhost cho SOCKS Host
  8. Nhập cùng một số Cổng từ kết nối SSH của bạn; trong hình ảnh bạn có thể thấy ta đã nhập 1337 để trùng với hướng dẫn của Windows
  9. Nhấp vào nút OK để lưu và đóng cấu hình của bạn

Bây giờ, hãy mở một tab khác trong Firefox và bắt đầu duyệt web! Bạn phải sẵn sàng để duyệt an toàn qua tunnel SSH của bạn .

Tùy chọn: Để xác minh bạn đang sử dụng proxy, hãy quay lại Cài đặt mạng trong Firefox. Hãy thử nhập một số cổng khác. Bấm OK để lưu cài đặt. Bây giờ nếu bạn cố gắng duyệt web, bạn sẽ nhận được thông báo lỗi Server proxy đang từ chối kết nối . Điều này chứng tỏ Firefox đang sử dụng proxy chứ không chỉ là kết nối mặc định. Hoàn nguyên về số cổng chính xác và bạn có thể duyệt lại.

Hoàn nguyên về duyệt web bình thường không an toàn trong Firefox:

Khi bạn hoàn tất việc cần quyền riêng tư của tunnel SSH, hãy quay lại Cài đặt proxy mạng ( Tùy chọn> Nâng cao> Mạng> Cài đặt ) trong Firefox.

Bấm vào nút radio cho Sử dụng cài đặt proxy hệ thống và bấm OK . Firefox bây giờ sẽ duyệt qua cài đặt kết nối bình thường của bạn, những cài đặt này có thể không được bảo mật.

Nếu bạn sử dụng xong tunnel , bạn cũng sẽ phải kết thúc tunnel , điều này ta sẽ đề cập trong phần tiếp theo.

Nếu bạn định sử dụng tunnel thường xuyên, bạn có thể để nó mở để sử dụng sau này, nhưng lưu ý nó có thể tự ngắt nếu không hoạt động quá lâu hoặc nếu máy tính của bạn chuyển sang chế độ ngủ hoặc tắt nguồn.

Bước 3 (Mac OS X / Linux) - Đóng tunnel

Việc đóng tunnel sẽ ngăn khả năng duyệt qua proxy của Firefox.

Đường hầm mà ta đã tạo trước đó trên máy local của ta đã được gửi đến nền, vì vậy việc đóng cửa sổ terminal mà bạn sử dụng để mở tunnel sẽ không kết thúc nó.

Để kết thúc tunnel , ta cần xác định ID tiến trình (PID) bằng cách sử dụng lệnh ps , sau đó kết thúc tunnel bằng lệnh kill .

Hãy tìm kiếm tất cả các quy trình ssh đang hoạt động trên máy của ta :

  • ps aux |grep ssh

Tìm dòng giống như lệnh bạn đã nhập trước đó để tạo tunnel . Đây là một số kết quả mẫu:

Đầu ra
sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com 

Từ đầu dòng, ở một trong hai cột đầu tiên, là một số có 3-5 chữ số. Đây là PID. Ở trên, PID mẫu của 14345 được đánh dấu.

Đến đây bạn đã biết PID là gì, bạn có thể sử dụng lệnh kill để đưa tunnel xuống. Sử dụng PID của bạn khi bạn kết thúc quá trình.

  • sudo kill 14345

Bây giờ, nếu bạn muốn tự động hóa quá trình kết nối, hãy chuyển sang Bước 4.

Bước 3 (Windows) - Đóng tunnel

Việc đóng tunnel sẽ ngăn khả năng duyệt qua proxy của Firefox.

Đóng cửa sổ PuTTY mà bạn đã sử dụng để tạo tunnel . Đó là nó!

Trong Windows không có cách dễ dàng để tự động hóa quá trình kết nối, nhưng cả PuTTY và Firefox đều có thể lưu các cài đặt bạn đã nhập trước đó, vì vậy chỉ cần mở lại các kết nối để sử dụng lại tunnel .

Bước 4 (Mac OS X / Linux) - Tạo lối tắt để sử dụng nhiều lần

Đối với hệ thống OS X hoặc Linux, ta có thể tạo alias hoặc tạo tập lệnh để nhanh chóng tạo tunnel cho ta . Sau đây là hai cách để tự động hóa quá trình tunnel .

Lưu ý: Các phương pháp phím tắt này đều yêu cầu xác thực SSH key không password / không password cho server !

Tập lệnh BASH có thể nhấp

Nếu bạn muốn một biểu tượng nhấp đúp và tunnel chỉ bắt đầu, ta có thể tạo một tập lệnh BASH đơn giản để thực hiện công việc.

Ta tạo tập lệnh cài đặt tunnel và chạy Firefox, mặc dù bạn vẫn cần thêm cài đặt proxy theo cách thủ công trong Firefox lần đầu tiên.

Trên OS X , file binary Firefox mà ta có thể chạy từ dòng lệnh nằm trong Firefox.app . Giả sử ứng dụng nằm trong folder Ứng dụng, file binary sẽ được tìm thấy tại /Applications/Firefox.app/Contents/MacOS/firefox .

Trên hệ thống Linux , nếu bạn đã cài đặt Firefox qua repo hoặc nó được cài đặt sẵn, thì vị trí của nó phải là /usr/bin/firefox . Bạn luôn có thể sử dụng lệnh which firefox để tìm ra vị trí của nó trên hệ thống.

Trong tập lệnh dưới đây, hãy thay thế đường dẫn đến Firefox bằng đường dẫn phù hợp với hệ thống của bạn.

Sử dụng một editor như nano tạo một file mới:

  • nano ~/socks5.sh

Thêm các dòng sau:

vớ5.sh
#!/bin/bash ssh -D 8123 -f -C -q -N sammy@example.com /Applications/Firefox.app/Contents/MacOS/firefox & 
  • Thay thế 8123 bằng số cổng mong muốn của bạn (nó phải trùng với những gì bạn đặt trong Firefox)
  • Thay thế sammy@example.com bằng user SSH và tên server hoặc IP của bạn
  • Thay thế /Applications/Firefox.app/Contents/MacOS/firefox bằng đường dẫn đến file binary của Firefox

Lưu tập lệnh của bạn. Đối với nano, hãy nhập CONTROL + o , sau đó để thoát, hãy nhập CONTROL + x .

Làm cho tập lệnh có thể thực thi được, để khi bạn nhấp đúp vào nó, nó sẽ thực thi. Từ dòng lệnh, nhập lệnh này để thêm quyền thực thi, sử dụng đường dẫn tập lệnh của bạn :

  • chmod +x /path/to/socks5.sh

Trên OS X, bạn có thể phải thực hiện một bước bổ sung để cho Mac OS X biết rằng file .sh phải được thực thi giống như một chương trình và không được mở trong editor .

Để thực hiện việc này, hãy nhấp chuột phải vào file socks5.sh của bạn và chọn Nhận thông tin .

Tìm phần Mở bằng: và nếu hình tam giác tiết lộ không trỏ xuống, hãy nhấp vào phần đó để bạn có thể thấy menu thả xuống. Xcode có thể được đặt làm ứng dụng mặc định. Nhận thông tin

Thay đổi nó thành Terminal.app . Nếu Terminal.app không được liệt kê, hãy chọn Khác , sau đó chuyển đến Ứng dụng> Tiện ích> Terminal.app .

Để mở proxy SOCKS của bạn ngay bây giờ, chỉ cần nhấp đúp vào file socks.sh

(Sau khi thực thi, tập lệnh sẽ không nhắc nhập password và do đó, tập lệnh sẽ không thực hiện được nếu trước đó bạn đã cài đặt SSH key của bạn để yêu cầu passphrase (password bảo vệ) .)

Tập lệnh sẽ mở một cửa sổ terminal , bắt đầu kết nối SSH và chạy Firefox. Vui lòng đóng cửa sổ terminal . Miễn là bạn vẫn giữ cài đặt proxy trong Firefox, bạn có thể bắt đầu duyệt qua kết nối an toàn của bạn .

Bí danh dòng lệnh

Nếu bạn thấy mình thường xuyên sử dụng dòng lệnh và muốn hiển thị tunnel , bạn có thể tạo alias BASH để thực hiện công việc cho mình.

Phần khó nhất của việc tạo alias là tìm ra nơi lưu lệnh alias .

Các bản phân phối Linux và bản phát hành OS X khác nhau lưu alias ở những nơi khác nhau. Cách tốt nhất là tìm một trong các file sau và tìm kiếm alias để xem các alias khác hiện đang được lưu ở đâu. Khả năng bao gồm

  • ~/.bashrc
  • ~/.bash_aliases
  • ~/.bash_profile
  • ~/.profile

Khi bạn đã định vị đúng file , hãy thêm alias này bên dưới bất kỳ alias nào bạn đã có hoặc ngay ở cuối file .

.bashrc
alias socks5='ssh -D 8123 -f -C -q -N sammy@example.com && /Applications/Firefox.app/Contents/MacOS/firefox &' 
  • Thay thế 8123 bằng số cổng mong muốn của bạn (nó phải trùng với những gì bạn đặt trong Firefox)
  • Thay thế sammy@example.com bằng user SSH và tên server hoặc IP của bạn
  • Thay thế /Applications/Firefox.app/Contents/MacOS/firefox bằng đường dẫn đến file binary của Firefox

Bí danh của bạn chỉ được tải khi bạn bắt đầu một shell mới, vì vậy hãy đóng phiên terminal của bạn và bắt đầu một phiên mới.

Bây giờ khi bạn nhập:

  • socks5

Bí danh này cài đặt tunnel của bạn, sau đó chạy Firefox cho bạn và đưa bạn trở lại dấu nhắc lệnh.

Đảm bảo rằng Firefox vẫn được cài đặt để sử dụng proxy. Đến đây bạn có thể duyệt một cách an toàn!

Bước 5 (Tùy chọn) - Khắc phục sự cố: Bắt qua firewall

Nếu kết nối của bạn đang hoạt động, bạn có thể tiếp tục và có thể ngừng đọc.

Tuy nhiên, nếu bạn phát hiện ra rằng bạn không thể tạo kết nối SSH do firewall hạn chế, thì có khả năng cổng 22, được yêu cầu để tạo tunnel , đang bị chặn.

Nếu bạn có thể kiểm soát cài đặt SSH của server proxy (với quyền truy cập siêu user vào DigitalOcean Server, bạn có thể làm điều này), bạn có thể đặt SSH để lắng nghe trên một cổng khác 22.

Bạn có thể sử dụng cổng nào mà không bị chặn?

Ngoài kế hoạch chạy quét cổng bằng một công cụ như ShieldsUP! (có vấn đề vì mạng local của bạn có thể coi đây là một cuộc tấn công), tốt nhất hãy thử các cổng thường bị bỏ ngỏ.

Các cổng thường được mở bao gồm 80 ( truy cập web chung) và 443 ( truy cập web SSL).

Nếu server SSH của bạn không cung cấp nội dung web, ta có thể yêu cầu SSH sử dụng một trong các cổng web này để giao tiếp thay vì cổng mặc định 22. 443 là lựa chọn tốt nhất vì nó dự kiến sẽ có truy cập được mã hóa trên cổng này và Lưu lượng SSH sẽ được mã hóa.

Từ vị trí không có firewall , hãy SSH vào DigitalOcean Server mà bạn đang sử dụng cho proxy. (Hoặc, sử dụng control panel tích hợp sẵn từ console , nhưng bạn có thể không muốn làm điều này nếu bạn sợ lưu lượng truy cập web của bạn đang bị theo dõi.)

Chỉnh sửa cài đặt SSH của server :

  • sudo nano /etc/ssh/sshd_config

Tìm Port 22 dòng Port 22 .

Ta có thể thay thế hoàn toàn 22 (dù sao cũng là một kỹ thuật củng cố SSH tốt) hoặc thêm một cổng thứ hai để SSH nghe tiếp.

Ta sẽ chọn để SSH lắng nghe trên nhiều cổng, vì vậy ta sẽ thêm một dòng mới bên dưới Port 22 đọc Port 443 . Đây là một ví dụ:

sshd_config
. . .  Port 22 Port 443  . . . 

Khởi động lại SSH để nó reload cấu hình SSH mà bạn vừa chỉnh sửa.

Tùy thuộc vào bản phân phối của bạn, tên của daemon server SSH có thể khác nhau, nhưng nó có thể là ssh hoặc sshd . Nếu một cái không hoạt động, hãy thử cái kia.

  • sudo service ssh restart

Để xác minh cổng SSH mới của bạn hoạt động, hãy mở một shell mới (chưa đóng giao diện hiện tại, đề phòng trường hợp bạn vô tình tự khóa) và SSH bằng cách sử dụng cổng mới.

  • ssh sammy@example.com -p 443

Nếu bạn thành công, bây giờ bạn có thể đăng xuất khỏi cả hai shell và mở tunnel SSH của bạn bằng cách sử dụng cổng mới.

  • ssh -D 8123 -f -C -q -N sammy@example.com -p 443

Đó là nó! Cài đặt Firefox sẽ giống hệt nhau vì chúng không phụ thuộc vào cổng SSH, chỉ là cổng tunnel ( 8123 ở trên).

Kết luận

Mở tunnel SOCKS 5 để duyệt qua tunnel SSH an toàn khi nào bạn cần một cách nhẹ nhàng để truy cập web an toàn khỏi những con mắt tò mò.


Tags:

Các tin liên quan

Xây dựng ứng dụng web thân thiện với thiết bị di động với React Native Web
2020-10-09
Cách gọi API web với useEffect Hook trong React
2020-10-05
Cách triển khai xác thực API bằng mã thông báo web JSON và hộ chiếu
2020-09-24
Cách cài đặt và sử dụng GoAccess Web Log Analyzer trên Ubuntu 20.04
2020-09-15
Xây dựng ứng dụng web CRUD với Python và Flask - Phần thứ nhất
2020-09-15
Phông chữ có thể thay đổi trên web bằng CSS
2020-09-01
Làm thế nào để tạo một Web Scraper đồng thời với Puppeteer, Node.js, Docker và Kubernetes
2020-08-19
Cách tạo ứng dụng web tiến bộ với Angular
2020-07-09
Cách cài đặt Django Web Framework trên Ubuntu 20.04
2020-07-06
Cách tạo chế độ xem để phát triển web Django
2020-05-14