Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

pfSense+Squid với tính năng lọc https + Đăng nhập một lần (SSO) với tính năng lọc nhóm Active Directory

Tóm tắt nền

Công ty cần triển khai một máy chủ proxy có khả năng lọc quyền truy cập vào các trang web (bao gồm cả https) theo nhóm từ AD để người dùng không nhập bất kỳ mật khẩu bổ sung nào và có thể được quản lý từ giao diện web. Ứng dụng tốt phải không?

Câu trả lời đúng sẽ là mua các giải pháp như Kerio Control hoặc UserGate, nhưng như mọi khi thì không có tiền, nhưng có nhu cầu.

Đây là nơi Squid cũ tốt đến giải cứu, nhưng một lần nữa - tôi có thể lấy giao diện web ở đâu? SAMS2? Lỗi thời về mặt đạo đức. Đây là nơi pfSense đến để giải cứu.

Описание

Bài viết này sẽ mô tả cách cấu hình máy chủ proxy Squid.
Kerberos sẽ được sử dụng để ủy quyền cho người dùng.
SquidGuard sẽ được sử dụng để lọc theo nhóm miền.

Hệ thống giám sát Lightsquid, sqstat và pfSense nội bộ sẽ được sử dụng để giám sát.
Nó cũng sẽ giải quyết một vấn đề phổ biến liên quan đến việc giới thiệu công nghệ đăng nhập một lần (SSO), cụ thể là các ứng dụng cố gắng lướt Internet bằng tài khoản la bàn bằng tài khoản hệ thống của chúng.

Chuẩn bị cài đặt Squid

pfSense sẽ được lấy làm cơ sở, Hướng dẫn cài đặt.

Bên trong đó chúng tôi tổ chức xác thực trên chính tường lửa bằng tài khoản miền. Hướng dẫn.

Nó rất quan trọng!

Trước khi bắt đầu cài đặt Squid, bạn cần định cấu hình máy chủ DNS trong pfsense, tạo bản ghi A và bản ghi PTR cho nó trên máy chủ DNS của chúng tôi và định cấu hình NTP sao cho thời gian không khác với thời gian trên bộ điều khiển miền.

Và trên mạng của bạn, hãy cung cấp khả năng cho giao diện WAN của pfSense truy cập Internet và người dùng trên mạng cục bộ kết nối với giao diện LAN, kể cả trên các cổng 7445 và 3128 (trong trường hợp của tôi là 8080).

Tất cả đã sẵn sàng? Kết nối LDAP có được thiết lập với miền để ủy quyền trên pfSense và thời gian có được đồng bộ hóa không? Tuyệt vời. Đã đến lúc bắt đầu quá trình chính.

Cài đặt và cấu hình trước

Squid, SquidGuard và LightSquid sẽ được cài đặt từ trình quản lý gói pfSense trong phần "System/Package Manager".

Sau khi cài đặt thành công, hãy chuyển đến "Dịch vụ / Máy chủ proxy mực /" và trước hết, trong tab Bộ đệm cục bộ, định cấu hình bộ nhớ đệm, tôi đặt mọi thứ thành 0, bởi vì Tôi không thấy nhiều điểm trong các trang web lưu trữ, các trình duyệt làm rất tốt việc này. Sau khi cài đặt, hãy nhấn nút "Lưu" ở cuối màn hình và thao tác này sẽ cho chúng tôi cơ hội thực hiện các cài đặt proxy cơ bản.

Các cài đặt chính như sau:

Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

Cổng mặc định là 3128, nhưng tôi thích sử dụng 8080 hơn.

Các tham số đã chọn trong tab Giao diện Proxy xác định giao diện nào máy chủ proxy của chúng tôi sẽ lắng nghe. Vì tường lửa này được xây dựng theo cách mà nó trông giống như một giao diện WAN trên Internet, mặc dù LAN và WAN có thể nằm trên cùng một mạng con cục bộ, tôi khuyên bạn nên sử dụng LAN cho proxy.

Loopback là cần thiết để sqstat hoạt động.

Bên dưới, bạn sẽ tìm thấy cài đặt proxy Minh bạch (trong suốt), cũng như Bộ lọc SSL, nhưng chúng tôi không cần chúng, proxy của chúng tôi sẽ không minh bạch và để lọc https, chúng tôi sẽ không thay thế chứng chỉ (chúng tôi có luồng tài liệu, ngân hàng khách hàng, v.v.), chúng ta hãy nhìn vào cái bắt tay.

Ở giai đoạn này, chúng tôi cần truy cập bộ điều khiển miền của mình, tạo tài khoản xác thực trong đó (bạn cũng có thể sử dụng tài khoản đã được định cấu hình để xác thực trên chính pfSense). Đây là một yếu tố rất quan trọng - nếu bạn định sử dụng mã hóa AES128 hoặc AES256 - hãy chọn các hộp thích hợp trong cài đặt tài khoản của bạn.

Nếu miền của bạn là một khu rừng rất phức tạp với số lượng lớn thư mục hoặc miền của bạn là .local, thì CÓ THỂ, nhưng không chắc chắn, rằng bạn sẽ phải sử dụng một mật khẩu đơn giản cho tài khoản này, lỗi đã biết, nhưng nó có thể đơn giản là không hoạt động với một mật khẩu phức tạp, bạn cần kiểm tra một trường hợp cụ thể.

Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

Sau đó, chúng tôi tạo một tệp khóa cho kerberos, mở dấu nhắc lệnh với quyền quản trị viên trên bộ điều khiển miền và nhập:

# ktpass -princ HTTP/[email protected] -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

Nơi chúng tôi chỉ ra FQDN pfSense của mình, hãy đảm bảo tôn trọng trường hợp này, nhập tài khoản miền của chúng tôi và mật khẩu của nó vào tham số người dùng bản đồ và trong tiền điện tử, chúng tôi chọn phương thức mã hóa, tôi đã sử dụng rc4 cho công việc và trong trường -out, chúng tôi chọn nơi chúng tôi sẽ gửi tệp khóa đã hoàn thành của chúng tôi.
Sau khi tạo thành công tệp khóa, chúng tôi sẽ gửi nó đến pfSense của chúng tôi, tôi đã sử dụng Far cho việc này, nhưng bạn cũng có thể thực hiện việc này bằng cả lệnh và putty hoặc thông qua giao diện web pfSense trong phần "Dòng lệnh chẩn đoán".

Bây giờ chúng ta có thể chỉnh sửa/tạo /etc/krb5.conf

Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

trong đó /etc/krb5.keytab là tệp chính mà chúng tôi đã tạo.

Hãy chắc chắn kiểm tra hoạt động của kerberos bằng cách sử dụng kinit, nếu nó không hoạt động, bạn không cần phải đọc thêm.

Định cấu hình Danh sách truy cập và xác thực mực mà không cần xác thực

Đã định cấu hình thành công kerberos, chúng tôi sẽ gắn nó vào Squid của chúng tôi.

Để thực hiện việc này, hãy truy cập ServicesSquid Proxy Server và trong phần cài đặt chính, đi xuống dưới cùng, ở đó chúng ta sẽ tìm thấy nút "Cài đặt nâng cao".

Trong trường Tùy chọn tùy chỉnh (Trước khi xác thực), hãy nhập:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

Ở đâu chương trình đàm phán auth_param /usr/local/libexec/squid/negotiate_kerberos_auth - chọn trình trợ giúp kerberos xác thực mà chúng tôi cần.

Ключ -s với ý nghĩa GSS_C_NO_NAME — xác định việc sử dụng bất kỳ tài khoản nào từ tệp chính.

Ключ -k với ý nghĩa /usr/local/etc/squid/squid.keytab - xác định sử dụng tệp keytab cụ thể này. Trong trường hợp của tôi, đây là cùng một tệp keytab mà chúng tôi đã tạo, mà tôi đã sao chép vào thư mục /usr/local/etc/squid/ và đổi tên nó, vì con mực không muốn làm bạn với thư mục đó, rõ ràng là không có đủ quyền.

Ключ -t với ý nghĩa -không có - vô hiệu hóa các yêu cầu theo chu kỳ đối với bộ điều khiển miền, giúp giảm đáng kể tải cho bộ điều khiển nếu bạn có hơn 50 người dùng.
Trong thời gian thử nghiệm, bạn cũng có thể thêm phím -d - tức là chẩn đoán, nhiều nhật ký hơn sẽ được hiển thị.
auth_param thương lượng con 1000 - xác định có thể chạy bao nhiêu quy trình ủy quyền đồng thời
auth_param thương lượng keep_alive trên - không cho phép ngắt kết nối trong quá trình bỏ phiếu của chuỗi ủy quyền
acl auth proxy_auth BẮT BUỘC - tạo và yêu cầu danh sách kiểm soát truy cập bao gồm những người dùng đã được cấp phép
acl nonauth dstdomain "/etc/squid/nonauth.txt" - chúng tôi thông báo cho mực về danh sách truy cập nonauth, chứa các miền đích mà mọi người sẽ luôn được phép truy cập. Chúng tôi tự tạo tệp và bên trong tệp, chúng tôi nhập tên miền ở định dạng

.whatsapp.com
.whatsapp.net

Whatsapp được sử dụng làm ví dụ không phải là vô ích - nó rất kén chọn proxy có xác thực và sẽ không hoạt động nếu nó không được phép trước khi xác thực.
http_access cho phép nonauth - cho phép mọi người truy cập vào danh sách này
http_access từ chối !auth — chúng tôi cấm người dùng trái phép truy cập vào các trang web khác
http_access cho phép xác thực - cho phép truy cập vào người dùng được ủy quyền.
Vậy là xong, mực đã được cấu hình, giờ là lúc bắt đầu lọc theo nhóm.

Định cấu hình SquidGuard

Chuyển đến Bộ lọc proxy ServicesSquidGuard.

Trong Tùy chọn LDAP, chúng tôi nhập dữ liệu của tài khoản được sử dụng để xác thực kerberos, nhưng ở định dạng sau:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Nếu có khoảng trắng hoặc ký tự không phải là chữ Latinh, toàn bộ mục nhập này phải được đặt trong dấu ngoặc đơn hoặc kép:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

Tiếp theo, hãy chắc chắn kiểm tra các hộp này:

Máy chủ proxy miễn phí cho doanh nghiệp có ủy quyền tên miền

Để cắt bỏ DOMAINpfsense không cần thiết DOMAIN.LOCAL mà toàn bộ hệ thống rất nhạy cảm.

Bây giờ chúng tôi chuyển đến Nhóm Acl và liên kết các nhóm truy cập tên miền của chúng tôi, tôi sử dụng các tên đơn giản như nhóm_0, nhóm_1, v.v. cho đến 3, trong đó 3 chỉ có quyền truy cập vào danh sách trắng và 0 - mọi thứ đều có thể.

Các nhóm được liên kết như sau:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

lưu nhóm của chúng tôi, chuyển đến Thời gian, ở đó tôi đã tạo một khoảng cách có nghĩa là luôn hoạt động, bây giờ hãy chuyển đến Danh mục mục tiêu và tạo danh sách theo ý của chúng tôi, sau khi tạo danh sách, chúng tôi quay lại nhóm của mình và trong nhóm bằng các nút chúng tôi chọn ai có thể đi ở đâu, và ai không thể ở đâu.

LightSquid và sqstat

Nếu trong quá trình định cấu hình, chúng tôi đã chọn một vòng lặp trong cài đặt mực và mở khả năng truy cập 7445 trong tường lửa cả trên mạng của chúng tôi và trên chính pfSense, thì khi chuyển đến Chẩn đoán báo cáo proxy của Squid, chúng tôi có thể dễ dàng mở cả sqstat và Lighsquid, đối với cái sau, chúng ta sẽ cần ở cùng một nơi, nhập tên người dùng và mật khẩu, đồng thời cũng có cơ hội chọn một thiết kế.

Hoàn thành

pfSense là một công cụ rất mạnh có thể làm được nhiều việc - cả ủy quyền lưu lượng truy cập và kiểm soát quyền truy cập Internet của người dùng chỉ là một phần của toàn bộ chức năng, tuy nhiên, trong một doanh nghiệp có 500 máy, điều này đã giải quyết được vấn đề và tiết kiệm chi phí mua proxy.

Tôi hy vọng bài viết này sẽ giúp ai đó giải quyết một vấn đề khá phù hợp với các doanh nghiệp vừa và lớn.

Nguồn: www.habr.com

Thêm một lời nhận xét