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.
Mục Lục
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 ~/squid
Code 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.conf
Code language: YAML (yaml)
Tạo thêm file cấu hình cho squid
nano squid.conf
Code language: CSS (css)
Nhập vào nội dung sau và lưu lại
http_access allow all
http_port 3128
Code 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 -d
Code 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.com
Code 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.me
Code 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-utils
Code 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 thuanbui
Code 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/passwords
Code 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 3128
Code language: YAML (yaml)
Khởi độgn lại Squid
docker compose restart
Code 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.
Bài viết rất bổ ích. Hi vọng Thuận lên bài hướng dẫn dùng Oracle lâu dài ko bị delete 🙂
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.
cho mình hỏi thêm là tại sao cài trực tiếp nó không chạy, mà sử dụng docker nó lại chạy ạ ?
Nhiều khả năng khi chạy trực tiếp bạn làm gì đó sai với vụ mở port trên ufw. Xài Docker thì nó auto mở port, không cần chỉnh ufw nữa.