Part 2 – Cấu Hình Bảo Mật Squid Proxy

Ở phần 1 trước đó, Vinahost đã hướng dẫn các bạn cách cài đặt Squid, một proxy caching server cho web clients. Bài viết này sẽ hướng dẫn bạn cách cấu hình Squid Proxy Server để có quyền truy cập Internet, cách cấu hình proxy trên trình duyệt Firefox. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

Môi trường Testing

Squid Server
Operating System: Centos 7
IP Address           : 123.30.129.185


Client Machine:  Window 10
IP Address       : 123.30.108.100

Một cách dễ hiểu, Web Proxy Server là một node mạng trung gian giữa một (hoặc nhiều) máy khách và Internet. Máy chủ proxy sẽ gồm 1 zone kết nối trực tiếp với Internet, zone còn lại các máy khách sẽ truy cập Web Server thông qua máy chủ proxy này.

Cấu hình Squid Proxy

Mô hình access control của Squid proxy bao gồm 2 thành phần sau:

+ ACL elements: gồm các dòng hiển thị bắt đầu với từ “acl” định nghĩa cho đối tượng cần phải kiểm soát truy cập

+ ACL rules: bao gồm các quy tắc để allow hoặc deny các đối tượng ACL Elements. Rules ACL hoạt động theo kiểu lần lượt so sánh các ACL elements với các rule được định nghĩa sẵn, nếu khớp sẽ thực hiện rule và lập tức ngừng quá trình so sánh. Nếu một rule có nhiều thành phần ACL, thì việc so sánh sẽ thực hiện dưới phép toán logic AND ( tất cả các thành phần ACL đều phải match với ACL rule)

Cấu hình:

Luôn luôn backup lại file config của server

$ cp /etc/squid/squid.conf{,.backup}

Thực hiện định nghĩa ACL Elements bằng cách thêm nội dung sau vào file squid.conf

acl localhost src 127.0.0.1/32
acl localnet src 192.168.0.0/24

Hai dòng trên là 1 ví dụ cho việc sự dụng ACL Elements

  • Bắt đầu với acl, đây là dòng chỉ thị cho ta biết là ACL elements
  • Từ thứ 2, localhost hoặc localnet, gán 1 cái tên cho đối tượng phía sau
  • Từ thứ 3, src là 1 loại ACL element đại diện cho IP của user hoặc 1 dãy IP

Thực hiện định nghĩa rule acesslist, trong file squid.conf

http_access allow localnet
http_access allow localhost

https_access deny all

Khi hoạt động, rule ACL sẽ check incoming request tới nếu có IP src trùng với dãy đã khai báo của localhost hoặc localnet, khi đó Squid sẽ cho phép truy cập và ngừng việc so sánh. Nếu vẫn chưa match được rule nào, Squid sẽ tiếp tục so sánh với rule access list tiếp theo cho đến khi gặp dòng cuối https_access deny all sẽ thực hiện loại bỏ gói tin đó đi. Đó là cơ chế hoạt động của Squid

Sau khi đã cấu hình hoàn tất, thực hiện restart lại Squid.service

$ systemctl restart squid.service

Trình duyệt Firefox

  1. Truy cập vào Menu > Tiện ích mở rộng
  2. Tại giao diện Tiện ích > Search từ khóa Extension FoxyProxy Standard và tiến hành cài đặt
  3. Mở extension Foxy Proxy > chọn Add > Điền thông tin IP proxy và port listening

Squid Proxy

Note: Chú ý rằng ở đây Squid sẽ lắng nghe ở port 3128, tuy nhiên chúng ta có thể tuy chỉnh bằng cách chỉnh sửa dòng http_port [PORT] ở trong file squid.conf, ở đây chúng ta đổi thành http_port 31280.

  1. Chọn save lại và tiến hành kiểm tra bằng cách truy cập vào https://ipinfo.io để kiểm tra
ip: "123.30.129.185"
hostname: "rs185-129.v-1000.com"
city: "Ho Chi Minh City"
region: "Ho Chi Minh"
country: "VN"
loc: "10.8230,106.6296"
org: "AS7643 Vietnam Posts and Telecommunications (VNPT)"
postal: "71606"
  1. Trên server Squid, log đã bắt đầu hoạt động, khi ta truy cập thông qua Squid, mọi hoạt động đều sẽ được log lại, đơn cử khi truy cập vào website vinahost thì log sẽ ghi vào file: /var/log/squid/access.log
Time_Access: 28/May/2021:06:48:10 +0700 Response_time: 94190(ms)  IP_Client: 123.30.108.100:51791 CONNECT Site: vinahost.vn:443(171.244.33.117:443)- 1.1  Status: TCP_TUNNEL/200 HIER_DIRECT vinahost.vn - -

Phân tích 1 chút về đoạn log format trên

  • Time_Access: thời điểm Client truy cập web Vinahost.vn thông qua Proxy
  • IP Client: IP thực tế của người dùng
  • URL Destination: IP của Webserver
  • Status: trạng thái kết nối. 200 nghĩa là kết nối bình thường

Ngăn chặn truy cập từ Client

  1. Định nghịa 1 ACL elements mới và đặt tên cho Elements này
 acl client_test src  123.30.108.100/32
  1. Thêm định nghĩa vừa tạo vào danh sách ACL trong file squid.conf
http_access allow localnet !client_test

Đồng nghĩa với việc rule sẽ hoạt động như sau: cho phép tất cả các IP được định nghĩa với tên localnet sẽ đi qua Squid ngoài trừ IP thuộc ACL elements client_test

  1. Sau khi cấu hình, cần restart lại Squid.service để có hiệu quả.

Kiểm tra lại truy cập 1 lần nữa

Hiện tại khi truy cập thông qua Squid đã báo lỗi “The requested URL could not be retrieved” sau khi ta apply rule ACL deny IP 123.30.108.100

Dòng rs185-129.v-1000.com (squid/3.5.20) là FQDN của máy chủ Squid

Cấu hình xác thực người dùng vơi username và password

Khi sử dụng Squid trong bất kỳ trường hợp nào, chúng ta nên bắt buộc xác thực bởi người dùng để phòng tránh trường hợp rủi ro trong không gian mạng

Squid proxy hỗ trợ đa dạng các phương thức Authentication, có thể kể đến như: Basic, NTLM, Digest, SPNEGO, Oauth và các giao thức SQL database, LDAP, NIS, NCSA…. Ở bài viết này, chúng ta sẽ cấu hình Basic authentication với NCSA

Thêm nội dung sau vào file squid.conf

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Lưu ý: Ở Centos 7, pluggin NCSA sẽ được định nghĩa ở đường dẫn /usr/lib64/squid/basic_ncsa_auth

Đầu tiên chúng ta cần khai báo cho Squid biết sẽ dùng loại phương thức xác thực nào thông qua dòng đầu tiên với chỉ thị auth_param

credentialsttl 2 hours sẽ force người dùng phải nhập username và password mỗi 2 tiếng ( có thể tùy chỉnh dựa theo tình hình thực tế)

Cùng với việc định nghĩa ACL Element auth_users, chỉ các requests được xác thực bằng username/password mới được quyền truy nhập qua Squid

Chạy lệnh sau để tạo file /etc/squid/passwd dùng để tạo mới thông tin người dùng và lưu vào file passwd

$ htpasswd -c /etc/squid/passwd username password

Note: vui lòng đổi 2 chuỗi username/password theo ý muốn

[root@rs185-129 ~]# cat /etc/squid/passwd
tam$$:$XXXXXXXXXXXYYYYYYYccIDUmT.

User và mật khẩu sẽ được lưu vào file passwd với dạng mã hóa MD5, ở đây vì lý do bảo mật nên mình đã thực hiện ẩn 1 số thông tin.

Truy cập vào Extension Foxy Proxy và nhập Username Password tương ứng đã tạo phía trên và bấm Save

Tổng kết

Ở bài viết này chúng ta đã thảo luận và thực hiện cách setup 1 máy chủ Squid Web proxy. Bạn có thể tận dụng sự hiệu quả của Proxy Server để lọc content, giảm độ trễ và cải thiện tốc độ mạng

Ở bài viết sau, mình sẽ giới thiệu cách caching proxy hiệu quả, từ đó có thể tăng tốc độ truy cập website và giảm việc sử dụng băng thông, từ đó tiết kiệm chi phí nếu bạn sử dụng traffic network theo kiểu Pay As You Go.

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST:

>> SERVERCOLOCATION – CDN

>> CLOUDVPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

>> SSL

Was this article helpful?