Squid Proxy là một công cụ proxy caching mạnh mẽ, thường được sử dụng để tăng hiệu suất truy cập web, cải thiện bảo mật và quản lý lưu lượng mạng. Trong bài viết này, DNCLOUD sẽ hướng dẫn bạn cách cài đặt và cấu hình Squid Proxy trên hệ điều hành Ubuntu 20.04 một cách chi tiết nhất.
Contents
Các yêu cầu để cài đặt Squid Proxy trên Ubuntu 20.04
Để làm theo hướng dẫn bạn cần có máy chủ Ubuntu 20.04 và người dùng không phải là tài khoản root nhưng đặc quyền sudo.
Bước 1: Cài đặt Squid Proxy
Để tạo Proxy bằng Squid trên Ubuntu đầu tiên bạn cần cập nhật danh sách gói của bạn và cài đặt Squid Proxy với tư cách không phải root bằng câu lệnh sau:
1 sudo apt update 2 sudo apt install squid
Sau khi cài đặt, Squid sẽ tự động thiết lập một dịch vụ nền và bắt đầu nó. Để kiểm tra xem dịch vụ này chạy có đúng cách không, bạn cần kiểm tra lại bằng câu lệnh:
systemctl status squid. service
Và bạn sẽ nhận được phần output dưới đây, nếu bạn cài đặt thành công:
Output squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-11-26 14:13:15 UTC; 2min 11s ago
Squid mặc định không cho phép bất kỳ máy khách nào kết nối với nó từ bên ngoài dịch vụ máy chủ. Vì vậy, để kích hoạt kết nối từ bên ngoài, bạn cần thực hiện thay đổi đối với file cấu hình squid, tệp này được lưu trữ trong /etc/squid/squid.conf. Mở squid bằng soạn trình thảo nano hoặc bất cứ trình soạn thảo nào bạn muốn.
sudo nano/etc/squid/squid.conf
Lưu ý rằng cấu hình của Squid cực kỳ dài và chứa một số lượng cực kỳ lớn các tùy chọn đã tạm thời bị vô hiệu hóa bằng cách đặt một # ở đầu dòng khi đang bật ở chế độ mặc định. Tuy nhiên, để tìm kiếm trong tệp mà bạn muốn chỉnh sửa trong nano bằng cách nhấn tổ hợp phím Ctrl+W, tìm cụm từ bạn tìm kiếm và bấm Enter. Còn nếu bạn muốn tìm kết quả phù hợp của cụm từ đó nhấn Alt+W.
Bạn muốn thấy các khối văn bản giải thích các quy tắc truy cập mặc định của Squid, bạn tìm dòng có cụm từ http_access deny all:
1 . . . 2 # 3 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 4 # 5 include /etc/squid/conf.d/* 6 # Example rule allowing access from your local networks. 7 # Adapt localnet in the ACL section to list your (internal) IP networks 8 # from where browsing should be allowed 9 #http_access allow localnet 10 http_access allow localhost 11 12 # And finally deny all other access to this proxy 13 http_access deny all 14 . . .
Ở đây bạn có thể thấy, hành vi hiện tại cho phép máy chủ kết nối localhost, còn lại thì không kết nối. Bởi vì các quy tắc này được sắp xếp theo các trình trự từ trên xuống dưới, nên bạn cần giữ deny all các quy tắc ở cuối block cấu hình. Tất nhiên, người dùng cũng có thể sửa đổi các lệnh trên thành cho phép hay hạn chế một vài quy tắc hoặc nếu không bạn có thể thêm một dòng trên http_access allow localhost bao gồm IP người dùng,đã cụ thể như sau:
1# 2 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 3 # 4 include /etc/squid/conf.d/* 5 # Example rule allowing access from your local networks. 6 acl localnet src your_ip_address 7 # Adapt localnet in the ACL section to list your (internal) IP networks 8 # from where browsing should be allowed 9 #http_access allow localnet 10 http_access allow localhost
Trong đó, gồm:
acl
: là viết tắt của (Danh sách kiểm toán truy cập), là thuật ngữ phổ biến có các chính sách cho phép truy cậplocalnet
: Trong trường hợp này là tên ACL của bạn.src
: Đây là nơi bắt nguồn yêu cầu từ ACL, tức là địa chỉ IP của bạn.
Sau khi hoàn thành các bước trên, bạn hãy lưa và đóng file. Nếu bạn đang sử dụng nano bạn nhấn tổ hợp phím Ctrl + X, sau đó khung lời nhắc hiển thị bạn có đồng ý xác nhận không, hãy nhấn Y rồi Enter.
Vừa rồi bạn đã tạo proxy bằng Squid thành công, lúc này bạn có thể khởi động lại Squid để cập nhật cấu hình và kết nối. Nhưng bạn cần thực hiện nhiều thao tác để đảm bảo bảo mật của Squid trước khi khởi động lại. Hoặc nếu bạn chưa có máy chủ để triển khai proxy trên Squid, bạn tham khảo thêm dịch vụ VPS của DNCLOUD.
Bước 2 – Bảo mật Squid
Thường thì các Proxy và các ứng dụng từ client kết nối với Proxy đều được hỗ trợ nhiều phương thức xác thực bao gồm các phương thức như: khoá dùng chung (shared keys) hoặc máy chủ xác thực riêng biệt. Nhưng phổ biến nhất là cách thức bảo mật người dùng thông qua username/password. Squid cho phép các cặp có giá trị username/passwordbằng cách sử dụng tính năng kết hợp của Linux như bước bổ sung hay hạn chế quyển truy cập Proxy theo địa chỉ IP. Để thực hiện xác thực, bạn cần tạo file có tên /etc/squid/password và trỏ cấu hình Squid đến đó.
Đầu tiên, bạn phải cài đặt tiện ích từ Apache để có quyền truy cập và tạo mật khẩu Squid bạn thích bằng lênh như sau:
sudo apt install apache2-utils
Với cấp lệnh htpasswd bạn sử dụng để tạo mật khẩu cho người dùng Squid mới. Thường các tài khoản này sẽ không ghi đè hay tác động nào đến bất kỳ người dùng hệ thống mà bạn đã đăng nhập nếu muốn. Sau khi nhập tên tài khoản, bạn sẽ được nhắc nhập mật khẩu sau đó:
sudo htpasswd -c /etc/squid/passwords your_squid_username
Với thao tác này sẽ được lưu trữ tên người dùng và mật khẩu mới của bạn thể hiện trong file /etc/squid/passwords. Mật khẩu này sẽ được Squid làm nguồn xác thực, để xem mật khẩu sau khi băm bạn có thể sử dụng lệnh cat:
sudo cat /etc/squid/passwords
Bạn có thể thấy câu lệnh sau khi băm đã trở thành chuỗi tự nhiên, đảm bảo tính bảo mật tốt nhất.
Output dncloud:$apr1$Dgl.Mxnd$vdqLYjBGdtoWA47w4tDzv.
Sau khi tài khoản bạn đã được tạo thành công, hãy cập nhật cấu hình Squid và tệp /etc/squid/passwords để xác thực. Mở lại file Squid bằng lệnh:
sudo nano /etc/squid/squid.conf
Và thêm các dòng lệnh sau:
1 auth_param basic program /usr/lib/squid3/basic_ncsa_ 2 auth /etc/squid/passwords 3 auth_param basic realm proxy 4 acl authenticated proxy_auth REQUIRED 5 http_access allow authenticated
Lúc này, file cơ bản Squid sẽ như sau:
… # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # include /etc/squid/conf.d/* auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords auth_param basic realm proxy acl authenticated proxy_auth REQUIRED # Example rule allowing access from your local networks. acl localnet src your_ip_address # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed #http_access allow localnet http_access allow localhost http_access allow authenticated # And finally deny all other access to this proxy http_access deny all …
Các dòng lệnh vừa được thêm yêu cầu Squid kiểm tra passwords tệp mới của bạn. Để biết các hàm mật khẩu được phân tích bằng cách sử dụng basic_ncsa_auth và yêu cầu xác thực bằng Proxy. Để thực hiện bằng cách nhập lệnh: Quá trình này thường sẽ mất vài phút chờ đợi.
sudo systemctl restart squid.service
Nếu bạn sử dụng ufw bạn cần phải mở và đóng cổng 3128 thông qua tường lửa
sudo ufw allow 3128
Cuối cùng bạn đã được kết nối với Proxy của mình và thực hiện các tác vụ quản lý cần thiết.
Bước 3 – Kết nối thông qua Squid
Để kiểm tra máy chủ Squid đã được hoạt động chính xác trên các môi trường Windows, Mac và Linux thì hiện nay đều cài đặt mặc định chương trình crul. Chương trình này dùng để thực hiện các yêu cầu web khác nhau.
Nếu bạn muốn xác minh xem một kết nối tài nguyên nhất định có hoạt động tốt trong trinh duyệt thì có thể kiểm tra nhanh chóng bằng curl trên máy cục bộ của mình để kiểm tra và chạy lệnh như sau:
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 http://www.google.com/
Trong đó, đối số -xchuyển một yêu cầu Proxy tới curl sử dụng giao thức http , chỉ định username và password khi đăng nhập máy chủ, sau đó kết nối với một trang website đang hoạt như Google.com. Kết quả thành công nếu bạn thấy dòng lệnh sau:
Output * Trying 138.197.103.77... * TCP_NODELAY set * Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0) * Proxy auth using Basic with user 'dncloud' > GET http://www.google.com/ HTTP/1.1
Ngoài ra, bạn cũng có thể truy cập vào các trang web có sử dụng https trên mã nguồn mở Squid Proxy mà không cần thực hiện thêm bất cứ thay đổi cấu hình khác. Với những thay đổi này sử dụng một chỉ thị riêng biệt để duy trì SSL giữa máy chủ và máy khách được gọi là CONNECT như sau:
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 https://www.google.com/
Output * Trying 138.197.103.77... * TCP_NODELAY set * Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0) * allocate connect buffer! * Establish HTTP proxy tunnel to www.google.com:443 * Proxy auth using Basic with user 'dnclou' > CONNECT www.google.com:443 HTTP/1.1 > Host: www.google.com:443 > Proxy-Authorization: Basic c2FtbXk6c2FtbXk= > User-Agent: curl/7.55.1 > Proxy-Connection: Keep-Alive > < HTTP/1.1 200 Connection established < * Proxy replied OK to CONNECT request * CONNECT phase completed!
Thông tin đăng nhập mà bạn sử dụng curl sẽ hoạt động ở bất kỳ nơi nào mà bạn muốn sử dụng máy chủ Proxy của mình.
Lời kết
Thông qua bài hướng dẫn này, hy vọng bạn biết cách triển khai tạo Squid Proxy trên Ubuntu 20.04 để uỷ quyền và quản lý lưu lương truy cập mà không tốn chi phí nào hoặc với chi phí thấp. Nếu bạn có thắc mắc nào hãy để lại bình luận ở phía dưới DNCLOUD sẽ giải đáp thắc mắc cho bạn sớm nhất. Chúc bạn thành công!