Bài viết hôm nay mình sẽ hướng dẫn cách cài đặt Squid lên máy ảo VPS miễn phí của Oracle Cloud để làm Proxy Server. Các bạn có thể áp dụng tương tự để cài lên server ở nhà hoặc lên các VPS của các dịch vụ khác như Digital Ocean, Vultr,…

Mình sẽ cài đặt Squid bằng Docker Compose để có thể xóa đi bất cứ lúc nào mà không ảnh hưởng đến hệ thống.

1. Yêu cầu chuẩn bị

  • Đã thiết lập sẵn VPS chạy hệ điều hành Ubuntu 20.04 hoặc 22.04
  • VPS đã được cài đặt Docker / Docker Compose.

2. Cài đặt Squid Proxy

Truy cập SSH vào VPS và tạo thư mục mới cho Squid

mkdir ~/squid
cd ~/squidCode language: Bash (bash)

Tạo file compose.yml

services:
  proxy:
    image: ubuntu/squid
    ports:
      - "3128:3128"
    environment:
      - TZ=Asia/Ho_Chi_Minh
    volumes:
      - ./squid.conf:/etc/squid/squid.confCode language: YAML (yaml)

Tạo thêm file cấu hình cho squid

nano squid.confCode language: CSS (css)

Nhập vào nội dung sau và lưu lại

http_access allow all
http_port 3128Code language: Nginx (nginx)

Với cấu hình này, squid sẽ hoạt động ở port 3128 và mở truy cập cho tất cả các giao thức mạng và IP nguồn.

3. Kích hoạt Squid

Kích hoạt squid bằng lệnh sau

docker compose up -dCode language: Nginx (nginx)

Tiếp theo kiểm tra xem Squid có đang hoạt động không bằng lệnh curl

curl -x 127.0.0.1:3128 -I -L http://google.comCode language: YAML (yaml)

Kết quả trả về thấy có dòng Via: 1.1 47b623f8c9ff (squid/6.6) nghĩa là Squid đang hoạt động ổn.

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Content-Security-Policy-Report-Only: object-src 'none';base-uri 'self';script-src 'nonce-eSmZn_UUYRd5jJKWrz2pcA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
Date: Sat, 21 Sep 2024 06:11:29 GMT
Expires: Mon, 21 Oct 2024 06:11:29 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Cache-Status: 47b623f8c9ff;detail=mismatch
Via: 1.1 47b623f8c9ff (squid/6.6)
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Content-Security-Policy-Report-Only: object-src 'none';base-uri 'self';script-src 'nonce-LLLlSd3CIXQZ_bzbO-3lgg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Sat, 21 Sep 2024 06:11:29 GMT
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Expires: Sat, 21 Sep 2024 06:11:29 GMT
Cache-Control: private
Set-Cookie: AEC=AVYB7co-QfUvSxhu9soW6ZgzlyOQJRXfhoUfBRWnDOC5nMYJLnNYnrfAlA; expires=Thu, 20-Mar-2025 06:11:29 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=517=h0bemJIvrMRrJZB4shhmaOXwuIcB1E7YgXuxGHpHFOqRnhN9uHiQW_BeC0xDzBeCAOHfdzxGuUsHXGErQH-Z_cTEvg8MkjZB_YbCznJ1WTILQqdQyFAYDhl4-w5JpizfuTWMnedLylBQaqZIr2AZfjMxFnTG8h98M83luUWRkEdfc4efIMDzn9y7KIEwg2eR; expires=Sun, 23-Mar-2025 06:11:29 GMT; path=/; domain=.google.com; HttpOnly
Cache-Status: 47b623f8c9ff;detail=mismatch
Via: 1.1 47b623f8c9ff (squid/6.6)
Connection: keep-alive

Code language: YAML (yaml)

Tìm địa chỉ Public IP của VPS

curl ifconfig.meCode language: CSS (css)

IP trả về sẽ được dùng để cấu hình Proxy trên máy tính client.

4. Cấu hình Security LIst cho Oracle VPS

Bước này chỉ cần áp dụng cho các bạn đang cài đặt Squid trên VPS của Oracle Cloud. Xem lại bài viết này nếu bạn chưa biết cách cấu hình cho Oracle Cloud VPS

Truy cập vào mục cấu hình Sercirity List cho VPS, vào thêm vào 1 Ingress Rule mới với thông số

  • Source Type: CIDR
  • Sour CIDR: 0.0.0.0/0
  • IP Protocol: TCP
  • Source Port Range : All (để trống)
  • Destination Port Range: 3128
  • Description: Squid Proxy Server

Bấm nút Add Ingress Rules để tạo.

5. Cấu hình Proxy trên trình duyệt

Tùy theo ứng dụng mà cách cấu hình proxy sẽ khác nhau. Ở đây mình sẽ cấu hình trênn Firefox.

Truy cập vào mục Setting (hoặc gõ about:preferences vào phần địa chỉ web và Enter), tìm đến mục Network Settings và chỉnh lại thông số

  • HTTP Proxy: nhập vào IP của VPS
  • Port: 3128
  • Bấm chọn thêm vào mục Also use this proxy for HTTPS

Sau đó truy cập vào website https://ifconfig.me/ , bạn sẽ thấy nó hiện ra IP của VPS đang cài Squid Proxy.

6. Cài extension Foxy Proxy

Việc cấu hình Proxy trực tiếp trong phần Setting của Firefox sẽ rất bất tiện nếu như bạn cần bật tắt proxy tùy theo website truy cập. Để tiện sử dụng, mình khuyến khích cài thêm extension Foxy Proxy standard để có thể chuyển đổi qua lại giữa nhiều Proxy khác nhau.

Sau khi cài xong, truy cập vào trang cấu hình của FoxyProxy và thêm Proxy ở mục Proxies. Bấm Save để lưu lại.

Mỗi khi cần sử dụng Proxy, mình sẽ bấm vào biểu tượng FoxyProxy để kích hoạt Proxy tương ứng. Hoặc bấm Disable để ngưng sử dụng Proxy.

6. Cấu hình bảo mật bằng tài khoản và mật khẩu

Với thiết lập đã chia sẻ ở trên, tất cả mọi người đều có thể sử dụng Squid Server của bạn nếu như biết địa chỉ IP. Để ngăn truy cập trái phép, mình sẽ cấu hình thêm bước bảo mật cho Squid Proxy bằng tài khoản và mật khẩu.

Cài đặt thêm công cụ apache2-utils

sudo apt install apache2-utilsCode language: Nginx (nginx)

Tạo file lưu tài khoản và mật khẩu. Bạn thay thế thuanbui bằng tên tài khoản của bạn

cd ~/squid/
htpasswd -c passwords thuanbuiCode language: JavaScript (javascript)

Nhập vào mật khẩu và xác nhận. Thông tin tài khoản và mật khẩu sẽ được lưu vào file passwords nằmg chung thư mục với file compose.yml

Cập nhật lại file compose.yml, bổ sung thêm dòng cuối cùng như bên dưới

services:
  proxy:
    image: ubuntu/squid
    #image: dmachard/squid
    ports:
      - "3128:3128"
    environment:
      - TZ=UTC
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
      - ./passwords:/etc/squid/passwordsCode language: YAML (yaml)

Chỉnh sửa lại file squid.conf với nội dung sau để kích hoạt tính năng xác thực tài khoản và mật khẩu.

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl password proxy_auth REQUIRED
http_access allow password

http_access deny all

http_port 3128Code language: YAML (yaml)

Khởi độgn lại Squid

docker compose restartCode language: Nginx (nginx)

Quay lại Firefox và truy cập mạng thông qua Proxy, bạn sẽ bị yêu cầu nhập tài khoản và mật khẩu để xác thực.

Vậy là xong! Giờ không lo bị người khác dùng lén Proxy Server của bạn.

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Để 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 *


3 Comments

  1. Cảm ơn bạn đã chia sẻ bài viết rất hay này. Mình đã làm theo hướng dẫn bài viết của bạn, và kết hợp với chatgpt mình đã chạy được . Chúc bạn nhiều sức khỏe và thành công.