Khớp owner của iptables có thể nhận diện các gói do socket của một tiến trình cục bộ tạo ra. Ví dụ, -m owner --uid-owner 1234 chỉ một socket cục bộ thuộc sở hữu của UID 1234; nó không nhận diện tên người dùng proxy HTTP.

Trên máy chạy Squid, hãy phân biệt các đường đi sau:

Lưu lượngKhác biệt liên quan
Một máy khách kết nối tới Squid trên máy nàyKết nối đến đi vào trình lắng nghe proxy
Squid mở kết nối tới đíchSocket đi ra được tạo cục bộ
Một máy khách LAN định tuyến trực tiếp qua máy nàyLưu lượng được chuyển tiếp không có socket tạo cục bộ

Phần mở rộng này hợp lệ trong OUTPUT và POSTROUTING. Các gói được chuyển tiếp không có socket cục bộ liên kết cho khớp này, nên quy tắc FORWARD không thể phát hiện người dùng của máy tính từ xa bằng cách hỏi UID của Squid.

Vì vậy, chính sách cho phép socket đi ra của chính Squid chỉ xử lý một phần của thiết kế mạng chỉ dựa vào proxy. Việc chuyển tiếp qua cổng, truy cập trình lắng nghe, các dịch vụ được phép khác và tài khoản dịch vụ proxy thực tế phải được xử lý trong phạm vi phù hợp.

Hãy dùng danh tính thời gian chạy đã cấu hình thay vì giả định Squid chạy dưới nobody. Nhiều tiến trình có thể dùng chung một UID, nên cấp phép dựa trên UID là ranh giới tài khoản, không phải bằng chứng rằng một tệp thực thi cụ thể đã tạo mọi kết nối được phép.

Bài viết liên quan