در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش Squid (کش سرور) و ACL ها قسمت 1 : ACL Element

خوب قبلا خیلی خودمونی و راحت در مورد نصب و راه اندازی اولیه کش سرور Squid در توسینسو ( جزیره لینوکس و متن باز ) صحبت کردیم و امروز قصد دارم یعنی نیت کردم ( خخ ) که یه سری آموزشی در مورد یکی از چیزهایی که خیلی در موردش ابهام هست یعنی کنترل های دسترسی یا Access Control List ها در این کش سرور صحبت کنم ! اصل مطلب اینه که پیکربندی ACL ها در Squid خداییش یه مقدار مبهمه و تا قشنگ این موضوع برای شما جا نیوفته نمی تونید درست این تنظیمات رو پیاده سازی کنید .

اما من میخام ساده توضیح بدم تا راحت متوجه بشید ، ببینید جوجوهای وب سایت ( دیدم کاربران عزیز وب سایت تکراری شده ... ) کلا ما وقتی در مورد ACL در Squid صحبت می کنیم شما باید درک کنید که دو قسمت اصلی در ACL های این ابزار وجود داره که باید خوب تفاوتشون رو درک کنید ، قسمت اول رو بهش میگن ACL Element و قسمت دوم رو بهش میگن Access List !!! باور کنید من نمیدونم چرا مثل آدمیزاد نامگذاری نکردن که مثلا ACL خوب مخفف Access Control List هست دیگه چه مرضیه یه اسم گذاری بهتر پیدا می کردید !! ولی خوب تا اینجاش همینو بدونید که شما باید این دو قسمت رو درک کنید و بدونید هر چیزی که توی هر خطی از تنظیمات فایل squid.conf قرار می دید چه معنی داره .

ساختار پیکربندی این ACL ها اینجوری هست که همیشه اول یک خط که میخایم ACL بنویسیم قسمت Access List ما نوشته میشه ، در ادامه میگیم چه Access List هایی داریم اما مثلا فرض کنید http__access یک access list هست که برای مدیریت دسترسی به پروتکل http هست !! حالا این Access List دو تا عمل می تونه انجام بده که Allow و Deny هست و در ادامش ACL Element ها میان که کلی پارامتر دارن مثل src که مبدا رو مشخص می کند یا dst که مقصد رو مشخص می کنه و ... در نهایت کل این خط تبدیل به یک Access Control List برای Squid میشه که خط به خط خونده میشه و اجرا میشه !

شما باید حواستون به این قالب باشه تا یاد بگیرید ، ببینید ساختار کاری Squid یه جورایی شبیه به برنامه نویسی هست ! یعنی میشه مثلا یه اسم تعریف کردن که مشخص کننده زمان هست در فایل و توی فایل در جای دیگه استفاده کرد ! مثلا فرض کنید ما یک Element داریم به نام time که زمان رو مشخص می کنه اسمش رو میزاریم Shanbe !! خوب در ادامه میخایم توی یک ACL دیگه بگیم مثلا شنبه ها دسترسی به اینترنت با پروتکل http به فلان وب سایت فعال باشه یا نه ! خوب اینکار رو براحتی میشه با فراخوانی Shanbe به جای نوشتن مجدد زمان انجام داد !! برای مثال یه ACL به شکل زیر و خیلی ساده هست که می بینید میخایم قالبش رو بدونید که بریم سراغ معرفی ACL Element ها و Access List ها :

http_access allow accesses_during_lunchtime

خوب ببینید ACL ما ساختارش مثل بالا هست ، مثلا ما access list ای به نام http__access داری که Action ای که داره allow هست برای دسترسی به منابع وب در زمان نهار ( که قبلا در یک Acl دیگه که پارامتر time داشته و الان فراخوانی شده تعریف شده ) اجازه دسترسی به اینترنت رو میده مثلا !! اوکی ؟ خوب حالا با این تفاسیر شما باید یه سری از این ACL Element ها رو بشناسید که به ترتیب موارد زیر هست :

  • src : مخفف Source هست ، IP یا اسم کلاینت مبدا ( کامپیوتر یا کامپیوترهایی که درخواست دریافت سرویس ارسال می کنند )
  • dst : مخفف Destination هست ، IP یا اسم سرور یا سرورهای مقصد ( کامپیوتر یا کامپیوترهایی که درخواست رو دریافت می کنند )
  • myip : آدرس IP شبکه Local کلاینت ( درخواست کننده ) رو داره ( مبهمه کمی بعدا باید بحث بشه )
  • arp : می تونید به جای IP از آدرس MAC Address برای تعیین کردن مبدا درخواست استفاده کنید
  • srcdomain : تعیین مبدا درخواست با اسم دومین ( مثلا درخواست هایی که از tosinso.com میاد )
  • dstdomain : تعیین مقصد درخواست با اسم دومین ( مثلا درخواست هایی که به tosinso.com میره )
  • srcdom__regex : تعیین مبدا با استفاده از Regular Expressions ( شباهت داشتن Pattern ) سمت کلاینت
  • dstdom__regex : تعیین مقصد با استفاده از Regular Expressions ( شباهت داشتن Pattern ) سمت سرور
  • src__as : تعیین مبدا با استفاده از AS Number ( به مباحث Routing مراجعه کنید )
  • dst__as : تعیین مقصد با استفاده از AS Number ( به مباحث Routing مراجعه کنید )
  • peername : معرفی کلاینت با برچسب یا tag خاص برای ارسال درخواست ها
  • time : تعیین کردن زمان ( ساعت و روز )
  • url__regex : تعریف کردن آدرس URL با استفاده از Regular Expressions
  • urlpath__regex : همون تعریف خط قبلی با این تفاوت که پروتکل و hostname در نظر گرفته نمیشه
  • port : تعیین کردن شماره پورت در مقصد ( سرور )
  • myport : تعریف کردن پورتی که کلاینت از طریق آن با سرور ارتباط می گیرید
  • myportname : تعریف کردن یک اسم یا برچسب برای پورت ( port tag ) برای Listening اسکوئید
  • proto : تعیین کردن پروتکل ارتباطی ( http یا https یا ftp و ... )
  • method : تعیین کردن روش ارسال درخواست ها از طریق پروتکل http مثلا GET POST و ...
  • http__status : برگرداندن وضعیت پروتکل http در مقصد ( سرویس مثلا کدهای 404 و 503 برگردونه و ... )
  • browser : تعیین کردن نوع مرورگر مجاز برای استفاده با استفاده از شناسایی Header و Regular Expressions
  • referers__regex : تعیین کردن referrer مورد استفاده در http در Regular Expressions
  • ident : تعیین کردن رشته متنی خاص در نام کاربری درخواست کننده
  • ident__regex : تعریف کردن acl با استفاده از بررسی نام کاربری در Regular Expressions
  • proxy__auth : تعیین مکانیزم احراز هویت با استفاده از پردازش های خارجی ( مبهم )
  • proxy__auth__regex : تعیین کردن مکانیزم احراز هویت با استفاده از پردازش های خارجی و Regular Expressions
  • snmp__community : استفاده از Community String پروتکل SNMP
  • maxconn : تعیین کردن حداکثر تعداد Connection از یک تک آدرس IP سمت کلاینت
  • max__user__ip : تعیین کردن حداکثر تعداد آدرس IP ای که یک کاربر بتونه باهاش لاگین کنه
  • req__mime__type : تعیین کردن محتوای درخواست با استفاده از Regular Expressions
  • req__header : تعیین کردن محتوای درخواست بر اساس محتوای یک Header از بسته
  • repmimetype : تعیین نوع محتوای بازگشتی از سرور مقصد با Regular Expressions
  • external : اگر acl external یا خارجی تعریف شده باشه بر اساس اون تعیین تکلیف انجام میشه
  • user_cert : تعیین تکلیف بر اساس SSL Certificate کاربر درخواست کننده
  • ext_user : اگر acl external یا خارجی تعریف شده باشه بر اساس اون کاربری که تعریف شده رو مجاز می کنه

خوب این همه که گفتیم از Element های ACL های Squid هستن ، دقت کنید که قطعا و بدون شک یه سری چیزهایی که من نوشتم در بالا برای شما باید مبهم باشه مگر اینکه واقعا حرفه ای باشید توی لینوکس و البته برنامه نویسی ! شما باید بیشتر اینها رو از طریق سناریوهای مختلفی که براشون قابل تعریف هست استفاده کنید تا معنی پیدا کنه اما بصورت ساده توجه کنید که ما از واژه های Regular Expressions زیاد استفاده کردیم که باید بدونید چی هست !

ببینید وقتی میگیم Regular Expressions یا عبارات با قاعده شما همون نحوه جستجو کردن تو ویندوز رو یادتون بیاد ! مثلا ستاره نقطه ستاره یعنی همه فایل ها با هر پسوندی ! اینجوری درکشون ساده میشه ، اما خوب یه سری موارد دیگه رو هم در مورد Element ها باید بگم که در مقاله بعدی هم بیشتر تشریحشون می کنیم .

دقت کنید که همه ACL Element ها با همه Access List هایی که در ادامه در مقاله بعدی معرفی می کنیم قرار نیست کار بکنن و هر کدومشون رو باید با نوع access list ای که باهاش تطبیق داره باید استفاده کرد. برای مثال شما نمی تونید snmp__community رو برای دسترسی وب مثلا استفاده کنید و فقط باید برای دسترسی به پروتکل snmp استفاده کنید . یا مثلا element هایی مثل src__as و dst__as فقط برای استفاده کردن در access list ای به نام cache__peer__access قابل استفاده هست .

یا مثال دیگه که حتی نسخه Squid هم براش مهم هست Element ای به نام arp هست که باید قبلش مثلا فعال سازی arp رو داشته باشید در squid تا بتونید ازش استفاده کنید. یک نکته مهم که معمولا در تنظیمات Squid دوستان فراموش می کنن این هست که یه سری از element ها نیاز به process زیادی داره و به همین دلیل در پاسخگویی به کلاینت تاخیر ایجاد میشه ، برای مثال srcdomain و srcdom__regex از جمله این element ها هستن که چون عملیات معکوس کردن و تست کردن کلاینت از بابت DNS رو هم باید انجام بدن تاخیر ممکنه در پاسخ دادن داشته باشن .

هر ACL Element ای که شما در Squid تعریف کنید برای خودش یک اسم منحصر به فردا داره ، هر ACL Element ای که تعریف بشه و اسم داشته باشد شامل یک سری مقادیر یا Value ها هست . اگر شما یک Value با همون اسم داشته باشید فقط همون Value چک میشه اما اگر برای یک اسم Element مثلا سه تا یا چهار تا Value داشته باشید سیستم بصورت OR عمل می کنه یعنی اگر این نشد اون ! این یا اون ! به زبان دیگه توی هر خطی که یک Element باشه و براش مقدار تعریف شده باشه اجرا میشه !

شما نمی تونید یک ACL Element با یک اسم رو با مقادیر مختلف و اسامی مختلف تعریف کنید . برای شما Syntax Error از جانب Squid صادر میشه پس حواستون باید باشه ، اما در خطوط مختلف می تونید برای یک ACL Element مقادیر مختلف رو قرار بدید . خوب در مقاله بعدی به بررسی Access List ها در Squid می پردازیم . امیدوارم با اینکه یه مقدار گنگ هست ولی به هر حال کلیات رو درست باز کرده باشم تا مقاله بعدی فعلا ...

نویسنده : محمد نصیری

منبع : جزیره لینوکس و متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#آموزش_نصب_و_راه_اندازی_squid_سرور #اموزش_squid_proxy #آموزش_راه_اندازی_کش_سرور_squid #راه_اندازی_کش_سرور_squid #آموزش_کش_سرور_squid #آموزش_acl_های_squid #آموزش_راه_اندازی_squid #مشکل_استفاده_از_squid_cache #نوشتن_acl_در_squid #راه_اندازی_کش_سرور_با_squid #راه_اندازی_squid_کش_سرور
عنوان
1 آموزش Squid (کش سرور) و ACL ها قسمت 1 : ACL Element رایگان
2 آموزش Squid (کش سرور) و ACL ها قسمت 2 : Access List ها رایگان
3 آموزش Squid (کش سرور) و ACL ها قسمت 3 : فعال کردن Cache برای URL رایگان
4 آموزش Squid (کش سرور) و ACL ها قسمت 4 : Banned List با reg_exp رایگان
5 آموزش Squid (کش سرور) و ACL ها قسمت 5 : Block کردن سایت رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....