احراز هویت (Authentication) در سرویس دهنده اسکوئید (squid)

امروز می‌خواهیم در رابطه با احراز هویت کاربران در سرویس دهنده Squid که باعث کنترل بهتر کاربران می‌شود صحبت کنیم. برای این منظور راهکارهای زیادی وجود دارد که ما در اینجا به دو مقوله احراز هویت معمولی خود Squid و احراز هویت به وسیله Radius سرورها می پردازیم.

احراز هویت به وسیله دیتابیس داخلی خود Squid

اولین نکته ای که باید در نظر بگیریم اینکه تمام این کارها با استفاده از acl ها انجام می‌شود. ابتدا بررسی می‌کنیم که آیا ماژول ncsa_auth را هنگام نصب Squid فعال کرده‌ایم یا نه. اگر ماژول را فعال کرده باشیم به صورت طبیعی باید در مسیر /usr/local/squid/bin/ncsa_auth باشد و در غیر این صورت باید Squid را از نو کامپایل و نصب کنیم و ماژول مربوطه را فعال کنیم. بعد از انجام مراحل بالا و اطمینان از فعال بودن ماژول ncsa_auth خط زیر را به فایل تنظیمات Squid که در مسیر نصب Squid قرار دارد اضافه می کنیم.

auth_param basic program /usr/local/squid/bin/ncsa_auth 
/usr/local/squid/etc/passwd

توضیح اینکه در این خط ما به Squid می‌گوییم که احراز هویت را به صورت پایه‌ای با استفاده از ماژول ncsa_auth فعال کن و برای پیدا کردن کاربران مجاز به فایل passwd مراجعه کن.

بعد از اضافه کردن خط کلیدی زیر نوبت به تعریف های مربوط به نحوه رفتار با کاربران احراز هویت شده می‌شود که طبق توصیه‌های خود تولید کننده Squid از موارد زیر استفاده می کنیم.

auth_param basic children 5 
auth_param basic realm Squid proxy-caching web server 
auth_param basic credentialsttl 2 hours 
auth_param basic casesensitive off
authenticate_ttl 1 hour 
authenticate_ip_ttl 2 seconds
acl ncsa_auth proxy_auth REQUIRED

بعد از انجام مراحل بالا نوبت به تعریف کاربران می رسد برای این منظور ابتدا فایل passwd را با استفاده از دستور زیر می سازیم

touch  /usr/local/squid/etc/passwd

بعد از ساختن فایل passwd نوبت به تعریف کاربران با استفاده از دستور htpasswd می رسید. برای این منظور به ترتیب زیر عمل می کنیم.

htpasswd /usr/local/squid/etc/passwd user1

توصیح اینکه ما به htpasswd می گوییم در مسیر /usr/local/squid/etc/passwd یک کاربر با نام user1 بسازد. بعد از اجرای دستور بالا سیستم از شما برای کاربر user1 یک کلمه عبور درخواست می کند که شما باید آن را وارد کنید.

نکته:
شما می توانید از هر نام کاربری دلخواه خود به جای user1 استفاده کنید.

احراز هویت به وسیله radius سرور

برای این منظور ما از Freeradius استفاده می کنیم که مقاله نصب آن را در همین سایت می توانید ببینید. بعد از نصب freeradius نوبت به تنظیمات Squid می‌شود که به صورت زیر عمل می کنیم.

ابتدا باید توجه داشته باشید که برای این منظور ماژول squid_radius_auth باید فعال باشد برای اینکه ببینیم این ماژول قبلاً فعال شده به مسیر/usr/local/libexec/squid/ می‌رویم و بررسی می کنیم و اگر نصب نبود Squid را مجدد کامپایل می کنیم و ماژول squid_radius_auth را فعال می کنیم. بعد از انجام این مراحل خط زیر را به فایل squid.conf اضافه می کنیم.

نکته:
برای نصب این ماژول می توانید از پورت زیر استفاده کنید:
/usr/ports/www/squid_radius_auth
auth_param basic program /usr/local/libexec/squid/squid_radius_authh -f /usr/local/squid/etc/squid_rad_auth.conf

توضیح اینکه در خط بالا ما به Squid می گوییم که برای احراز هویت با Radius سرور از ماژول squid_radius_auth استفاده کند و برای ارتباط با Radius سرور از اطلاعات فایل squid_rad_auth.conf در مسیر مربوطه استفاده کند.

نکته:
برای تنظیم فایل squid_rad_auth.conf خطوط زیر را با استفاده از اطلاعات خودمان ویرایش می کنیم و در فایل قرار می دهیم.
server 123.123.123.123 # Radius Server IP or Hostname
secret your_secret_here

بعد از اضافه کردن خط کلیدی و تنظیم فایل squid_rad_auth.conf نوبت به تعاریف مربوط به نحوه رفتار با کاربران احراز هویت شده می‌شود که طبق توصیه‌های خود تولید کننده Squid از موارد زیر استفاده می کنیم.

auth_param basic children 5 
auth_param basic realm Squid proxy-caching web server 
auth_param basic credentialsttl 2 hours 
auth_param basic casesensitive off
authenticate_ttl 1 hour 
authenticate_ip_ttl 2 seconds
acl radius-auth proxy_auth REQUIRED
نکته:
برای تعریف کاربران مجاز شما باید آنها را در Radius سرور خودتان تعریف کنید.
نکته:
فراموش نکنید با استفاده از http_access به ACL خود اجازه دسترسی دهید.
http_access allow  ncsa_auth
http_access allow  radius-auth

مرحله آخر

بعد از تعریف کاربران و تنظیمات Squid نوبت راه اندازی مجدد Squid با یکی از دستورات زیر می‌شود.

service squid restart
/usr/local/etc/rc.d/squid restart

در صورتی که همه مراحل را به درستی انجام داده باشید از این به بعد Squid شما برای سرویس دهی به کاربرانش درخواست احراز هویت می کند.