Linux, CentOS, Network

Hướng dẫn cài đặt và cấu hình Squid Proxy trên CentOS 7

Written by ductri

Squid với đầy đủ tính năng của một caching proxy hỗ trợ các giao thức mạng phổ biến như HTTP, HTTPS, FTP ...Sử dụng Squid bạn có thể cải thiện đáng kể hiệu năng khi truy cập các website bằng cách lưu trữ các yêu cầu lặp lại, lọc lưu lượng truy cập web và truy cập nội dung bị giới hạn theo địa lý.

Cài đặt Squid trên CentOS

Squid package đã có sẵn trên CentOS repositories, chạy lệnh sau để thực hiện cài đặt:

$sudo yum install squid

Sau khi cài đặt hoàn tất, start và enable Squid service:

$sudo systemctl start squid
$sudo systemctl enable squid

Để xác minh việc cài đặt thành công, hãy nhập lệnh sau sẽ in trạng thái dịch vụ:

$sudo systemctl status squid
squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 8:47:56 UTC; 12s ago
...

Cấu hình Squid

Squid có thể được cấu hình bằng cách chỉnh sửa file /etc/squid/squid.conf.

Trước khi thực hiện bất kỳ thay đổi nào, hãy sao lưu tệp cấu hình gốc bằng lệnh cp:

$sudo cp /etc/squid/squid.conf{,.orginal}

Để chỉnh sửa tệp, hãy mở nó trong trình soạn thảo của bạn:

$sudo nano /etc/squid/squid.conf

Theo mặc định, Squid được cấu hình để lắng nghe trên cổng 3128 trên tất cả các network interfaces của máy chủ.

Nếu bạn muốn thay đổi port và network interface, xoá dấu # trước http_port và thiết lập IP và port mới.

# Squid normally listens to port 3128
http_port IP_ADDR:PORT
/etc/squid/squid.conf

Bạn có thể kiểm soát quyền truy cập vào máy chủ Squid bằng việc sử dụng Access Control Lists (ACLs).

Theo mặc định, Squid chỉ cho phép truy cập từ localhost và localnet.

Nếu tất cả các máy client sử dụng proxy có địa chỉ IP tĩnh, bạn có thể tạo ra một ACL chứa các IP được phép truy cập.

Thay vì thêm các địa chỉ IP trong tệp cấu hình chính, chúng ta sẽ tạo một file riêng biêt chứa các IP:

192.168.33.1
192.168.33.2
# All other allowed IPs
/etc/squid/allowed_ips.txt

Sau khi hoàn tất, hãy mở tệp cấu hình chính và tạo một ACL mới có tên allow_ips và cho phép truy cập vào ACL đó bằng 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
/etc/squid/squid.conf

Thứ tự của các quy tắc http_access rất quan trọng. Hãy đảm bảo bạn thêm quy tắc phía trên dòng http_access deny all.

Các quy tắc http_access hoạt động theo cách tương tự như các quy tắc tường lửa. Squid sẽ đọc các quy tắc từ trên xuống dưới.

Bất cứ khi nào bạn thay đổi tệp cấu hình, bạn cần khởi động lại dịch vụ Squid để các thay đổi có hiệu lực:

$sudo systemctl restart squid

Xác thực Squid

Squid có thể sử dụng nhiều loại backend để xác thực người dùng như Samba, LDAP and HTTP basic auth.

Trong bài này, chúng ta sẽ cấu hình Squid để sử dụng basic auth. Nó là một phương thức xác thực đơn giản được tích hợp trong giao thức HTTP.

Chúng ta sẽ sử dụng openssl để tạo username:password và ghép nối với file /etc/squid/htpasswd với lệnh tee như bên dưới:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

Ví dụ: để tạo một người dùng có tên là huudoanh,  mật khẩu là Pz@$154, bạn sẽ chạy:

$printf "huudoanh:$(openssl passwd -crypt 'Pz@$154')\n" | sudo tee -a /etc/squid/htpasswd
huudoanh:2nkgQsTSPCsIo
Output

Bước tiếp theo là cấu hình Squid để kích hoạt HTTP basic authentication. Mở file cấu hình chính và thêm vào như sau:

# ...
auth_param basic program /usr/lib64/squid/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
/etc/squid/squid.conf

Khởi động lại Squid service

$sudo systemctl restart squid

Cấu hình firewall

Nếu bạn đang chạy tường lửa, bạn sẽ cần mở cổng 3128. Để thực hiện, hãy chạy các lệnh sau:

$sudo firewall-cmd --permanent --add-port=3128/tcp
$firewall-cmd --reload

Cấu hình trình duyệt sử dụng proxy

Firefox

Các bước thiết lập dưới đây dành cho cả Windows, macOS, và Linux.

  1. Ở góc trên bên phải, nhấp vào biểu tượng để mở Firefox menu:
  2. Click vào link ⚙ Preferences.
  3. Cuộn xuống Network Settings click vào nút Settings....

Một cửa sổ mới mở ra.

  • Chọn Manual proxy configuration.
  • Nhập địa chỉ IP address của Squid server vào trường HTTP Host  và 3128 ở trường Port.
  • Chọn Also use this proxy for FPT and HTTPS.
  • Click vào nút OK để lưu lại các thiết lập.