Trong bài này mình sẽ hướng dẫn cách cài đặt và cấu hình Squid Proxy trên Ubuntu 20.04 và cấu hình Firefox và Chrome để sử dụng nó.
Squid là một proxy với đầy đủ các chức năng, hỗ trợ các giao thức mạng phổ biến như HTTP, HTTPS, FTP và nhiều hơn. Nó có thể dùng để cải thiện hiệu năng của máy chủ bằng việc tạo bộ nhớ đệm cho các requests lặp đi lặp lại, lọc web traffic và truy cập các thông tin bị giới hạn theo vị trí địa lí.
Mục lục
Cài đặt Squid với Ubuntu
Package Squid đã có sẵn trong repositories mặc định của Ubuntu 20.04. Để cài đặt bạn chỉ cần gõ hai câu lệnh sau:
sudo apt update sudo apt install squid
Sau khi cài đặt xong thì services của squid sẽ tự động khởi chạy. Để kiểm tra trạng thái của squid bạn sử dụng câu lệnh:
sudo systemctl status squid
Và bạn sẽ nhận được output tương tự dưới đây nếu squid được cài đặt thành công:
squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago Docs: man:squid(8)
Cấu hình squid
File cấu hình chính của squid được lưu tại file /etc/squid/squid.conf
. File cấu hình này chứa các comments mô tả mỗi cấu hình sẽ thực hiện những hành động nào. Bạn có thể viết file cấu hình riêng của bạn và đặt chúng vào trong file cấu hình chính sủ dụng chỉ thị include.
Trước khi thay đổi bất cứ điều gì, bạn nên sao lưu lại file cấu hình mẫu
sudo cp /etc/squid/squid.conf{,.orginal}
Tiến hành mở file bằng text editor bạn muốn, ở đây mình dùng nano
sudo nano /etc/squid/squid.conf
Mặc định squid sẽ lắng nghe ở cổng 3128 ở tất cả các network interfaces trong server
Nếu bạn muốn đổi port cho một interface cụ thể, bạn sẽ tìm dòng bắt đầu bằng http_port
và chỉ định IP của interface và port mới. Nếu không có interface nào được chỉ định thì Squid sẽ lắng nghe ở tất cả các interfaces
# Squid normally listens to port 3128 http_port IP_ADDR:PORT
Phần lớn người dùng thường chạy Squid ở tất cả các interfaces với port mặc định.
Squid cho phép bạn kiểm soát clients truy cập các tài nguyên web sử dụng Access Control Lists (ACLs). Mặc định thì quyền truy cập mặc định là chỉ từ localhost. Nếu tất cả clients mà sử dụng proxy này đều có một địa chỉ IP tĩnh, thì tuỳ chọn đơn giản nhất để kiểm soát truy cập vào proxy server là tạo ra một ACL trong đó có những IP được cho phép. Ngoài ra bạn có thể yêu cầu xác thực khi sử dụng squid
Thay vì thêm các địa chỉ IP vào trong file cấu hình chính, tạo một file riêng lưu trữ các địa chỉ IPs được yêu cầu. Chẳng hạn như files /etc/squid/allowed_ips.txt với nội dung như ở dưới
192.168.33.1 # All other allowed IPs
Sau khi hoàn thành, mở file cấu hình và tạo một ACL mới có tên là allowed_ips và cho phép truy cập vào ACL sử dụng chỉ thị http_access
# ... acl allowed_ips src "/etc/squid/allowed_ips.txt" # ... #http_access allow localnet http_access allow localhost http_access allow allowed_ips # And finally deny all other access to this proxy http_access deny all
Thứ tự các dòng của rules http_access
thực sự quan trọng. Bạn lưu ý hãy thêm dòng này trước dòng http_access deny all
.
Chỉ thị http_access
hoạt động như một rules của tường lửa. Squid đọc các rules từ cao xuống thấp, và khi một rule được kích hoạt thành công thì rules ở dưới sẽ không được thực hiện
Sau khi bạn thay đổi file cấu hình, bạn hãy khởi động lại Squid Service để thay đổi có hiệu lực
sudo systemctl restart squid
Xác thực trong Squid
Nếu việc giới hạn truy cập dựa trên IP không phù hợp cho trường hợp của bạn, bạn có thể dùng squild sử dụng một back-end để xác thực người dùng. Squid hỗ trợ Samba, LDAP và HTTP basic auth. Trong hướng dẫn này tôi sẽ sử dụng basic auth. Nó là một phương pháp xác thực đơn giản sử dụng giao thức HTTP
Để tạo ra một password được mã hoá, bạn sử dụng công cụ openssl. Câu lệnh dưới đây đưa cặp USERNAME:PASSWORD vào trong files /etc/squid/htpasswd
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Chẳng hạn như để tạo user cloudzone với password Cl@udZ@ne các ban gõ như sau
printf "cloudzone:$(openssl passwd -crypt 'Cl@udZ@ne')\n" | sudo tee -a /etc/squid/htpasswd
Bước tiếp theo để kích hoạt HTTP basic authentication và đưa file chứa thông tin đăng nhập vào file cấu hình của squid
Mở file cấu hình chính
sudo nano /etc/squid/squid.conf
Thêm vào các dòng sau
# ... auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd auth_param basic realm proxy acl authenticated proxy_auth REQUIRED # ... #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
Khởi chạy lại squid
sudo systemctl restart squid
Cấu hình tường lửa
Để mở port cho Squid. Hãy kích hoạt Profiles UFW
sudo ufw allow 'Squid'
Trong trường hợp Squid chạy ở một port khác, chẳng hạn như 8888. Thì bạn sử dụng câu lệnh như sau
sudo ufw allow 8888/tcp
Cấu hình trình duyệt sử dụng Proxy
Firefox
- Tại góc trên bên phải. Click icon
☰
để mở menu của Firefox: - Click vào mục
⚙ Preferences
. - Cuộn xuống mục
Network Settings
và click vào biểu tượngSettings...
. - Trong hộp thoại mới mở ra
- Chọn vào mục
Manual proxy configuration
- Nhập vào IP của Server cài Squid vào mục
HTTP Host
và nhập3128
vào mụcPort
. - Chọn vào checkbox
Use this proxy server for all protocols
. - Cuối cùng bạn click nút
OK
.
- Chọn vào mục
Để kiểm tra bạn mở google.com gõ what is my ip và bạn sẽ thấy IP của Squid server
Để quay về các thiết đặt mặc định bạn quay lại Network setting, lựa chọn Use system proxy settings và lưu lại
Có một số plugins bạn có thể dùng để cấu hình cài đặt proxy của Firefox, như FoxyProxy
Chrome
Google Chrome mặc định dùng cài đặt proxy của hệ thống. Nếu bạn không muốn thay đổi cài đặt proxy của hệ thống bạn có thể dùng những addon như SwitchyOmega hoặc khởi chạy Chrome từ dòng lệnh
Để khởi động Chrome với một profile mới và kết nối vào Squid server, sử dụng các câu lệnh dưới
Linux
/usr/bin/google-chrome \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
Windows
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^ --user-data-dir="%USERPROFILE%\proxy-profile" ^ --proxy-server="http://SQUID_IP:3128"
Cloudzone.vn chuyên cung cấp Proxy, Cloud VPS, Hosting số lượng lớn
Hotline: (+84) 90 509 18 05
Fanpage: https://www.facebook.com/cloudzone.vn
Hoặc truy cập website: https://cloudzone.vn/ để tham khảo các gói dịch vụ của chúng tôi.
Máy chủ vật lý
4 Lợi Ích Thiết Thực Mà Máy Chủ Vật Lý Mang Lại Cho Doanh Nghiệp
Trong thời đại chuyển đổi số mạnh mẽ như hiện nay, việc đầu tư vào [...]
Giải pháp
Cách Phòng Chống DDoS Cho Website, VPS, và Server Hiệu Quả
Các cuộc tấn công DDoS (Distributed Denial of Service) là một mối đe dọa lớn [...]
Chưa được phân loại portal portal cloudzone Về Portal
Mã đăng nhập Portal Cloudzone là gì? 3 cách lấy mã đăng nhập
Ngày nay, khi công nghệ số phát triển mạnh mẽ, việc bảo mật thông tin [...]
Cloud hosting Blog
So sánh Cloud Hosting cPanel, DirectAdmin và Plesk
Khi lựa chọn dịch vụ Cloud Hosting để lưu trữ website hoặc ứng dụng, một [...]
Cloud VPS
[2024] Kinh Nghiệm Chọn VPS Treo Game Không Lo Gián Đoạn
Với sự phát triển nhanh chóng của các trò chơi trực tuyến, việc duy trì [...]
Blog
Tuyển Đại lý dịch vụ Cloud – Chiết khấu đến 35%
Cloudzone tuyển đại lý dịch vụ Cloud, Data Center với lợi nhuận không giới hạn, [...]