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 ~/squidcd ~/squidTạo file compose.yml
services: proxy: image: ubuntu/squid ports: - "3128:3128" environment: - TZ=Asia/Ho_Chi_Minh volumes: - ./squid.conf:/etc/squid/squid.confTạo thêm file cấu hình cho squid
nano squid.confNhập vào nội dung sau và lưu lại
http_access allow allhttp_port 3128Vớ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 -dTiế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.comKế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 PermanentlyLocation: http://www.google.com/Content-Type: text/html; charset=UTF-8Content-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-hpDate: Sat, 21 Sep 2024 06:11:29 GMTExpires: Mon, 21 Oct 2024 06:11:29 GMTCache-Control: public, max-age=2592000Server: gwsContent-Length: 219X-XSS-Protection: 0X-Frame-Options: SAMEORIGINCache-Status: 47b623f8c9ff;detail=mismatchVia: 1.1 47b623f8c9ff (squid/6.6)Connection: keep-alive
HTTP/1.1 200 OKContent-Type: text/html; charset=ISO-8859-1Content-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-hpP3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."Date: Sat, 21 Sep 2024 06:11:29 GMTServer: gwsX-XSS-Protection: 0X-Frame-Options: SAMEORIGINExpires: Sat, 21 Sep 2024 06:11:29 GMTCache-Control: privateSet-Cookie: AEC=AVYB7co-QfUvSxhu9soW6ZgzlyOQJRXfhoUfBRWnDOC5nMYJLnNYnrfAlA; expires=Thu, 20-Mar-2025 06:11:29 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=laxSet-Cookie: NID=517=h0bemJIvrMRrJZB4shhmaOXwuIcB1E7YgXuxGHpHFOqRnhN9uHiQW_BeC0xDzBeCAOHfdzxGuUsHXGErQH-Z_cTEvg8MkjZB_YbCznJ1WTILQqdQyFAYDhl4-w5JpizfuTWMnedLylBQaqZIr2AZfjMxFnTG8h98M83luUWRkEdfc4efIMDzn9y7KIEwg2eR; expires=Sun, 23-Mar-2025 06:11:29 GMT; path=/; domain=.google.com; HttpOnlyCache-Status: 47b623f8c9ff;detail=mismatchVia: 1.1 47b623f8c9ff (squid/6.6)Connection: keep-aliveTìm địa chỉ Public IP của VPS
curl ifconfig.meIP 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
https://thuanbui.me/cau-hinh-vps-mien-phi-oracle-cloud/
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-utilsTạ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 thuanbuiNhậ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/passwordsChỉ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/passwordsauth_param basic children 5auth_param basic realm Squid proxy-caching web serverauth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIREDhttp_access allow password
http_access deny all
http_port 3128Khởi độgn lại Squid
docker compose restartQuay 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.