tablighat1


نصب و پیکر بندی سرویس Squid


%d9%86%d8%b5%d8%a8-%d9%88-%d9%be%db%8c%da%a9%d8%b1-%d8%a8%d9%86%d8%af%db%8c-%d8%b3%d8%b1%d9%88%db%8c%d8%b3-squid

یک پراکسی سرور یک سرویس کارآمد جهت شبکه شما یا شبکه شما با اینترنت است که امنیت بالاتری را جهت کاربران اینترنت فراهم می کند و هم چنین می تواند بعنوان یک کش سرور استفاده شود که باعث
صرفه جویی در پهنای باند و بالا رفتن سرعت اینترنت شما شود.
Squid یکی از بسته های لینوکس میباشد که لینوکس را به عنوان یک پروکسی سرور یا همان کش سرور نتظیم میکند

حالا میرویم Squid را نصب کنیم
اگر داخل CD Linux قرار داشت این دستورات را در ترمینال لینوکس وارد میکنیم با کاربر ریشه وارد میشویم و بعد دستورات زیر را وارد میکنیم# mount /media/cdrom
# rpm –ivh /media/cdrom/Fedora Core/RPMS/squid-*.rpm
توجه کنید این مسیر بر حسب مثال بوده شما باید مسیر کامل را وارد کنید
و بعد ار نصب این دستور را در ترمینال وارد میکنید
umount /mnt/cdrom
اگر شما RPM یا Pack Squid را نداشتید میتوانید Source برنامه را از سایت www.squid-cache.org دریافت نموده و آن را Compile کرده و استفاده نمایید
موقعی که شما Source برنامه را دریافت میکنید این فایل یک فایل فشرده میباشد که باید ابتدا آن را Extract نمایید که با دستور زیر این کار را میکنیم
# tar -zxf squid-2.5.STABLE4-src.tar.gz
حالا فایل فشره باز شده و فولدر با نام فایل به وجود آمده داخل فولدر شده و عملیات Compile را شروع میکنیم
# cd squid-2.5.STABLE4
# ./configure
# make all
# make install
بعد از وارد کردن دستورات بالا Squid بر روی سیستم ما نصب شده و ما میخواهیم فایل squid.conf را پیکربندی کنیم
تذکر: برای نصب Squid بهتر است همیشه RPM Squid را نصب کنیم.
حالا بسته به نوع روش نصب ما squid.conf در مسیرهای مختلفی قرار میگیرد که ما با دستور
locate squid.conf
فایل squid.conf را پیدا میکنیم و میریم سراغ پیکربندی (در اینجا مسیر را /etc/squid/squid.conf در نظر میگیریم)
فایل squid.conf دارای صد و بیست وپنح برچسب(Tag) جهت انجام تنظیمات است که ما در اینجا به همه آن ها اشاره نخواهیم داد و به اصلی ترین آن ها اشاره خواهیم نمود
خود فایل squid.conf دارای توضیحاتی میباشد که میتوانید برای کمک از آنها هم استفاده نمایید.
حالا فایل مورد نظر(squid.conf) را پیکربندی میکنیم
http_port
از این گزینه برای مشخص کردن پورت پروکسی استفاده میشود یا به عبارتی آدرس درگاهی را که squid از آن به درخواست های سرویس‌گیرنده‌ها گوش می دهد که پیش فرض ۳۱۲۸ میباشد که ما میتوانیم از چندین پورت استفده کنیم اگر از پروکسی سرور به عنوان وب سرور نیز استفاده میشود پورت ۸۰ را نیز قرار میدهیم و یا اگر سیستم شما چند IP دارد و میخواهید به یک رنج گوش دهد به این صورت عمل میکنید
http_port 8080 3128
http_port 80 3128
http_port 45.58.69.8 3128
icp_port
مخفف Internet Cache Portocol میباشد که از این برچسب موقعی استفاده میشود که بخواهیم چند کش سرور را به هم متصل نمایم تا از اطلاعات همدیگر استفاده نماین که پورت پیش فرض آن ۳۱۳۰ میباشد
icp_port 3130
cache_peer Ip Or ProxyDomain parent 3128 3130
از این گزینه برای ارتباط با با کش سرورهای دیگر استفاده میشود که IP Or ProxyDomain کش سرور دیگر داده میشود Parent نوع کشینگ که سه حالت میباشد و پورت کش با پورت ICP که به شکل زیر استفاده میکنیم
cache_peer 217.218.155.147 parent 3128 3130
cache_peer 214.215.155.14 sibling 3128 3130
که sibling فقط Object های کش شده را Share میکند
hierarchy_stoplist
این برچسب یکی از برچسب های مهم Squid میباشد که میگوید مثلا
hierarchy_stoplist cgi-bin ?پوشه های cgi-bin کش به همراه? هر فایلی داخل این پوشه(cgi-bin) بود کش نشود که پیش فرض آن این است
hierarchy_stoplist cgi-bin ?acl QUERY urlpath_regex cgi-bin \?no_cache deny QUERYاین دو خط هم از برچسب های مهم Squid میباشند که برای این میباشد که پوشه cgi-bin و آدرس بعد این پوشه \? به هیچ وضح کش نشود no_cacheپوشه cgi-bin فایلهای با پسوند *.cgi را دارد که این فایلها مانند سایت Dynamic میباشند و بهتر است هیچ وقت کش نشوند چون اطلاعات این فایلها همیشه تغییر میکند این آدرس داخل فایل squid.conf قرار ندهید این مثال از cgi-bin میباشد.http://55.59.57.52/cgi-bin/cachemgr.cgiپیش فرض همین برچسبها خودشان میباشدacl QUERY urlpath_regex cgi-bin \?no_cache deny QUERYcache_memمقدار حافظه ای که Squid برای عملیات خود در احتیاج دارد که بهتر است این مقداربسته به اندازه Ram شما بیشتر از ۲۰۰-۱۲۸ نباشد و از مقدار بر حسب MB میباشدcache_mem 64 MBmaximum_object_sizeبیشترین حجم فایلی که Squid میتواند کش کند را مشخص میکند که اگر این حجم زیاد باشد کش سرور شما از لحاظ امنیتی دچار ضعف شده و هکرها به راحتی میتوانند با درخواست های سنگین سرور شما را از پا در بیارند و مقدار فایل را شما با KB یا MB میتوانید مشخص کنید سعی کنید حجم فایل بیشتر از ۱۲۸ MB نباشدmaximum_object_size 100 MBminimum_object_sizeکمترین حجم فایلی که Squid میتواند کش کند که سعی شود این را همیشه ۰ KB بگذارید اگر Bit یا Byte گذاشته شود Squid اخطار میدهد و Run نخواهد شدminimum_object_size 0 KBcache_dir Type Directory-Name Fs-specific-data L1 L2محل ذخیره objectهای Cache شده را مشخص میکند که Type مشخ کننده فرمت ذخیره شدن میباشد (Format Cache Dir) Directory-Name محل ذخیره شدن یا مسیر ذخیره کردن ObjectFs حجم داده‌ها بر روی دیسک بر حسب (مگابایت) را مشخص می کند پارامترهای چهارم و پنجم تعداد زیر شاخه ها (اولین و دومین رده) برای ایجاد در این مسیر را مشخص می‌کنند.فرمت به ترتیب عبارتند از ufs فرمت قدیمی Squid میباشد aufs فرمت که بعد از ufs وارد شدdiskd بهترین فرمت Squid که دارای ۲ Option میباشد که از این مثال خواهم زد.cache_dir diskd /var/spool/squid 3000 32 128 Q1=64 Q2=72Q1 وQ2 از Option فرمت diskd میباشد که پیش فرض ۶۴ و۷۲ میباشندcache_access_logcache_store_logcache_logاین سه برچسب برای گرفتن Log از کارکرد Squid و اینکه کاربران به چه سایتی میروند و کدام Object در حال کش شدن میباشد که Log مقداری از حجم هارد دیسک شما را خواهد گرفت اگر هارد شما حجم کمی دارد بهتر است این Log ها را None کنید تا هارد شما فضای خالی داشته باشد برای none کردن به این شکل عمل میکنیمcache_access_log nonecache_store_log nonecache_log noneو اگر هارد شما فضا زیاد دارد و میخواهید Log داشته باشید به این شکل عمل کنیدcache_access_log /var/log/squid/access.logcache_store_log /var/log/squid/store.logcache_log /var/log/squid/cache.logکه اگر این کار را انجام دهید احتیاج به یک برچسب دیگری به نامlogfile_rotateدارید که این برچسب بر حسب روزی که مشخص میکنید Log فایلهای شما را فشره کرده تا حجمی که Log فایل میگیرد کم شود اگه این برچسب گذاشته نشود Squid شما بعد از مدتی به خاطر یاد شدن Log میخوابد و تا موقعی که Log ها را پاک نکرده Run نمیشودlogfile_rotate 4ftp_userبرای انتقال فایلهای که از سور سرور FTP احتیاج به نام کاربر دارند مورد استفاده میشوند که شما میتوانید ایمیل خود را داده یا از کاربر میهمان anonymous استفاده نماییدftp_user anonymous@dns_nameserversSquid از DNS های که در فایل /etc/resolv.conf استفاده میکند شما با این برچسب میتوانید از DNS های دیگر استفاده نماییدdns_nameservers 192.9.9.3 4.2.2.2auth_paramاز این ابزار برای احزار هویت کاربران استفاده میشود که پیش فرض آن چند خط میباشدauth_param basic children 5auth_param basic realm Squid proxy-caching web serverauth_param basic credentialsttl 2 hoursauth_param basic casesensitive offکه از لحاظ امنیتی باید ۲ برچسب دیگر اضافه نماییم تا امنیت سرور بالا رودauthenticate_ttl 1 hourauthenticate_ip_ttl 2 secondsپارامتر authenticate_ttl تعریف کننده این مورد است که تا چه مدت زمان Squid اطلاعات Authenticate کلاینت را به خاطر بسپارد . این تنظیم در واقع کلاینت را وادار می‌نماید که تا بعد از یک دوره زمانی خود را دوباره Authenticate کندrequest_header_max_sizeاین پارامتر در این رابطه استفاده می‌شود که تا مقدار سایز قابل پذیرش HTTP Header را محدود نماید . مقدار پیش فرض در اینجا ۱۰ کیلو بایت بوده که از مقدار منطقی بیشتر به نظر میرسد به این دلیل که سایز متوسط header ۵۱۲ بایت است در صورتی که سنگین ترین header ممکن است در حد کیلوبایت باشند. بیشتر حملات DoS نسبت به پراکسی سرورها اینگونه رخ می‌دهد که header‌هایی برای آن‌ها فرستاده شود که از مقداری که پراکسی سرور می‌تواند جوابگو باشد بیشتر باشد که شما میتوانید مقدار آن را تغییر دهید سعی منید بیشتر از ۱۰ KB نباشدrequest_header_max_size 8 KBrefresh_patternاین برچسب یکی از مهمترین برچسب های Squid میباشد که برای Refresh کردن سایتهابه کار برده میشود که موقعی که سایت به روز شد یا تغییراتی در آن اعمال شد و موقعی که کاربر آن سایت را درخواست کرد این برچسب سایت را مجددا سایت را بازبینی Refresh میکند اگر این برچسبها درست باشد موقعی که سایت در خواست شد سایت فورا سایت باز میشود حتی اگر به روز شده باشد نیز نشان داده میشود اگر اشتباه باشد در باز شدن سایت تاخیر به وجود می آید و یا اگر سایت به روز شده باشد چیزی نشان داده نمیشود.من چند خط اینجا قرار میدهم که درست میباشد و شما میتوانید از آنها استفاده نماییدrefresh_pattern ^ftp: 1440 60% 10080refresh_pattern ^gopher: 1440 20% 1440refresh_pattern . 0 30% 4320اینها هم Refresh_pattern های Microsoft که تغییراتی داده ام تا درست کار کنندrefresh_pattern http://*.windowsupdate.microsoft.com/ 0 60% 20160refresh_pattern http://office.microsoft.com/ 0 60% 20160 refresh_pattern http://windowsupdate.microsoft.com/ 0 60% 20160refresh_pattern http://wxpsp2.microsoft.com/ 0 60% 20160refresh_pattern http://xpsp1.microsoft.com/ 0 60% 20160 refresh_pattern http://w2ksp4.microsoft.com/ 0 60% 20160 refresh_pattern http://download.microsoft.com/ 0 60% 20160Time Outدر این قسمت تعدادی برچسب وجود دارد که Time Out انها در اینجا تعیین میشود که میتوانید اینها را بدین شکل پیکربندی نماییدnegative_ttl 5 minutespositive_dns_ttl 30 minutesnegative_dns_ttl 1 minuteconnect_timeout 1 minuteread_timeout 15 minutesrequest_timeout 5 minutesclient_lifetime 14 hourspconn_timeout 120 secondsshutdown_lifetime 10 secondsکه اینجا به توضیح دو برچسب میپردازیم که از لحاظ امنیتی مهم هستند

برچسب client_lifetime بیشترین زمانی است که کلاینت می‌تواند به عنوان یک پروسه Squid قرار گرفته باشد. در واقع این تنظیم سرور شما را از باز بودن تعداد زیادی سوکت محافظت می‌نماید . بستگی به شرایط شما ممکن است ۸ ساعت مناسب باشد در صورتی که پیش فرض آن ۱ روز کمی‌زیاد به نظر می‌رسد. با بررسی در مورد وصل شدن کلاینت‌ها می‌توان زمان مناسب را تشخیص داد یک نفوذگر می‌تواند با استفاده از lifetime طولانی تعداد زیادی سوکت را باز نماید و این خود باعث نوعی حمله DoS می‌گردد. اما پارامتر pconn_timeout شبیه به client_lifetime می‌باشد با این تفاوت که فقط شامل ارتباط بیکار(Idle Connection‌) ها می‌گردد.
acl

مخفف Access Control List میباشد جهت کنترل دسترسی به Cache مورد استفاده قرار می گیرد. در کنترل دسترسی دو عنصر وجود دارد: کلاس ها و عملگرها
کلاس ها: یک کلاس معمولا به مجموعه ای از کاربرها ارجاع داده می‌شود(IP Range)
عملگرها: روی مجموعه ای از acl ها برای ICP و HTTP عمل می کند. یعنی شما می توانید مجموعه های مختلفی از پروتکل های مختلف داشته باشید. برای هر پروتکل یک acl_operator متفاوت وجود دارد. به عنوان مثال برچسب های icp_access و http_access و snmp_access

برای رد نمودن ویروسهایی که از CMD برای انتقال اسفاده میکنند
acl VIRCMD urlpath_regex winnt/system32/cmd.exe?
http_access deny VIRCMD
برای تعریف یک رنج IP
acl mynet src 217.218.0.0/24
http_access allow mynet
برای مسدود کردن سایتهای که حاوی کلمات خاصی هستند
acl badurl url_regex –i sx
http_access deny badurl
برای مسدود کردن پورتهای که از کش سرور رد میشوند
acl badports port 7 20 81
http_access deny badports
اجازه دسترسی در زمان خاص(روز-ساعت)
acl shab time 17:00-24:00
http_access allow shab
به طور پیش فرض در Squid چند خط acl وجود دارد که میتوانید از آنها استفده نمایید
acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl local src 192.168.0.0/24acl SSL_ports port 443 563acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhosthttp_access allow localhttp_access deny allicp_access allow allکه من این چند خط رو در این مقاله قرار دادم تا شما به راحتی بتوانید استفده متید تنها کافی است که شما Ip خود را در acl مربوط به local قرار دهید reply_body_max_sizeبا استفاده از این برچسب میتوانید یک رنج را محدود به استفاده از اینترنت نمایید که بر حسب bytes میباشدacl net src 192.168.1.0/24reply_body_max_size 800000000000 allow netcache_mgrاگر Squid از کار بیفتد، یک e-mail به آدرس مشخص شده با برچسب cache_mgr ارسال می شود. همچنین این آدرس به انتهای صفحه های خطایی که به کاربران ارسال می‌شود، اضافه می شودcache_mgr soft_persia@Yahoo.CoMcache_effective_user
cache_effective_group
Squid اگر به عنوان root شروع شود، تنها می تواند به پورت های شماره پایین (مثل پورت۸۰ ) بچسبد. در ضمن از لحاظ امنیتی هم صحیح نیست که پروسه‌ای به عنوان root در حال اجرا باشد. Squid به محض چسبیدن به پورت شبکه ID های گروه و کاربر را تغیر می دهد. این ID ها را به صورت زیر مشخص می کنیم
cache_effective_user squid
cache_effective_group squidvisible_hostnameبرای پروکسی سرور یک نام مشخص میکنیمvisible_hostname CacheServerhttpd_accel_hostاگر ما بخواهیم از Squid برای پروکسی استفاده کنیم باید این برچسب را در squid.conf گذاشته این برچسب به این معنی است که پروکسی برای کجا استفده میشود که پیش فرض آن virtual میباشد که همه کس از هر جای دنیا میتوانند استفاده کنند یا میتوانید IP بدهید تا فقط یک رنج بتواند به عنوان پروکسی استفده کنیدhttpd_accel_host virtualhttpd_accel_host 217.218.155.140httpd_accel_portمشخص کننده این است که به چه پورتهایی جواب بدهم که پیش فرض آن ۸۰ میباشدhttpd_accel_port 80httpd_accel_with_proxyمشخص کننده این است که آیا به عنوان پروکسی سرور در شبکه عمل کنم یا نه اگر پهنای باند شما کم میباشد بهتر است این گزینه را off کنید زیرا که اگر on باشد همه میتوانند از پروکسی سرور شما استفاده نمایندhttpd_accel_with_proxy offhttpd_accel_uses_host_header این برچسب کنترل کننده کاربرانی هست که از پروکسی سرور شما استفاده میکنند که همیشه این برچسب باید on باشدhttpd_accel_uses_host_header onاین ۴ برچسب همیشه باید در squid.conf باشد تا بتوان کش سرور را run کرددر این مقاله سعی کردم تا شما عزیزان را با Squid و نحوه پیکربندی این فایل آشنا کنم امیدوارم که توانسته باشم به هدف خود رسیده باشم.


برچسب ها:
ارسال شده در ترفند و آموزش لينوكس | بدون نظر »

نظر بدهید

به صورت خودکار کلمات فینگلیش را به فارسی تبدیل کن. در صورتی که می خواهید انگلیسی تایپ کنید Ctrl+g را فشار دهید.