Kiến Thức Linux Linux Nâng Cao

5 Bước cài đặt và cấu hình Squid Proxy trên Ubuntu

congdonglinux-Squid proxy

Giới thiệu Squid Proxy

Squid Proxy là một ứng dụng proxy server mã nguồn mở phổ biến được sử dụng rộng rãi trên hệ điều hành Linux để quản lý và kiểm soát truy cập Internet. Với khả năng làm việc ổn định và hiệu suất cao, Squid Proxy đóng vai trò quan trọng trong việc cung cấp dịch vụ truy cập web, cải thiện tốc độ truy cập và bảo vệ mạng.

Squid Proxy hoạt động như một cầu nối giữa người dùng và máy chủ web, thực hiện việc lưu trữ tạm thời các trang web và tài nguyên đã được truy cập trước đó. Điều này giúp giảm thiểu thời gian tải và tiết kiệm băng thông mạng bằng cách phục vụ lại các dữ liệu đã được lưu trữ. Đồng thời, Squid Proxy cũng cho phép quản trị viên thiết lập chính sách kiểm soát truy cập, giới hạn tốc độ và theo dõi hoạt động truy cập của người dùng, từ đó tạo ra một môi trường an toàn và hiệu quả cho mạng.

Một số tính năng nổi bật của Squid Proxy bao gồm:

  1. Bộ lưu trữ tạm thời: Squid Proxy có khả năng lưu trữ tạm thời các tài nguyên web, giúp giảm thiểu thời gian tải và tăng hiệu suất truy cập.
  2. Kiểm soát truy cập: Quản trị viên có thể thiết lập chính sách kiểm soát truy cập dựa trên địa chỉ IP, thời gian và nội dung, giúp ngăn chặn truy cập đến các trang web không mong muốn hoặc độc hại.
  3. Quản lý băng thông: Squid Proxy cho phép giới hạn tốc độ truy cập của người dùng, đảm bảo sự công bằng trong việc sử dụng tài nguyên mạng.
  4. Bảo mật: Với khả năng kiểm soát truy cập và các tính năng bảo mật khác như kiểm tra danh sách đen (blacklist) và trắng (whitelist), Squid Proxy giúp bảo vệ mạng khỏi các mối đe dọa trực tuyến.
  5. Ghi nhật ký (logging): Squid Proxy cung cấp các chức năng ghi nhật ký chi tiết về hoạt động truy cập của người dùng, giúp quản trị viên theo dõi và phân tích dữ liệu.

 

Cài đặt Squid với Ubuntu

Bước 1: Cài đặt squid từ repositories

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)

Bước 2: 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

Bước 3: 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 congdonglinux với password Cl@udZ@ne các ban gõ như sau

printf "congdonglinux:$(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

Bước 4: 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

Bước 5: Cấu hình trình duyệt sử dụng Proxy

Firefox

  1. Tại góc trên bên phải. Click icon  để mở menu của Firefox:
  2. Click vào mục ⚙ Preferences .
  3. Cuộn xuống mục Network Settings và click vào biểu tượng Settings....
  4. 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ập 3128 vào mục Port.
    • Chọn vào checkbox Use this proxy server for all protocols.
    • Cuối cùng bạn click nút OK.

j7LAYfX
Để 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"

Kết bài:

Với khả năng tùy chỉnh cao và tích hợp nhiều tính năng mạnh mẽ, Squid Proxy đã trở thành một giải pháp ưu việt trong việc quản lý và kiểm soát truy cập Internet trên hệ điều hành Linux, từ việc cung cấp dịch vụ web tốt hơn đến việc bảo vệ mạng khỏi các mối đe dọa trực tuyến. 

Chúc các bạn thành công.

Mã bài viết: 87647898

Đăng ký liền tay Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !

Add Comment

Click here to post a comment

Đăng ký liền tay
Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !