PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش اسکویید قدم به قدم



ourweb
April 11th, 2012, 21:47
با سلام
آموزش اسکویید قدم به قدم برای دوستانی که کمتر باهاش کار کردن رو با امید خدا شروع میکنم و سعی میکنم بصورت مداوم کاملش کنم

کارهایی که اسکویید برای ما میکنه در کل:

cache server
filter access to net
efficient bandwidth usage

مرحله اول نصب:

داخل ردهت بیس:

yum install squid
اگه بسته اسکویید رو دارید :

rpm -uhv /home/nami/squid- 2.7.STABLE7-1u.rpm

دبیان بیس (اوبونتو)

apt-get install squid
اگه بسته اسکویید رو دارید:

dpkg -i /home/nami/squid- 2.7.STABLE7-1u.deb

پیشنهاد می کنم برنامه squidclient رو هم به روش فوق برای تست اسکویید بگیرید

بعد از دریافت با یکی از دستورات زیر نصب شدن رو تست کنید:


rpm -q squid
dpkg -l squid

مسیر دایرکتوری اسکویید:


/etc/squid

فایل کانفیگ اصلی اسکویید:


etc/squid/squid.conf

قبل از هر تغییری بهتره ازش کپی بگیریم cp -r /etc/squid/squid.conf /home/nami/Desktop

مسیر لاگ های اسکویید:


/var/log/squid

دایرکتوری کش :


/var/spool/squid


دستور استارت اسکویید:

ردهت: service squid start










دبیان: etc/init.d/squid start/

با دستور زیر می تونید وضیت اسکویید رو توی شبکه ببینید:

netstat -ntlp |grep squid

پورت پیش فرض اسکویید ۳۱۲۸ روی پروتکل tcp هست

قدم اول تموم شد ؛

لطفا توی این تاپیک سوال نپرسید تا انشالله مراحل رو پشت سر هم بریم جلو برای سوال به تاپیک جدید زیر مراجعه کنید:

---------- Post added at 09:38 PM ---------- Previous post was at 09:36 PM ----------

قدم دوم کانفیگ اولیه و تست:

تمامی Document ها در مسیر:


/usr/share/doc/squid

تنظیم اسکویید برای اجازه دسترسی شبکه داخلی به اینترنت:
با یکی از ادیتورها مثل :vim-vi-nano,...... در محیط تکست یا gedit -knote و .... در محیط گرافیک فایل squid.conf رو باز میکنیم (برای تغییرات دسترسی رووت لازمه)

در زیر قسمت access control :
یک acl اضافه میکنیم:


acl mylan src 192.168.1.0/24

یعنی سورس آدرس شبکه داخلی من 192.168.1.0/24
یک access role اضافه می کنیم:


http_access allow mylan


توجه داشته باشید خطوط قبل از http_acceess deny all باید باشه
acl نویسی مثل سیسکو از بالا به پایین خونده میشه

در این مرحله با ریستارت اسکویید میتونید اون رو تست کنید:



service squid restart

etc/init.d/squid restart/


نکته: در مراحل بعد برای اینکه تغییراتی که دادیم اعمال بشه ولی کانکشن های ما باقی بمون از:



service squid reload

etc/init.d/squid reload/

استفاده می کنیم


برای تست از محیط cli هم می تونید از squidclient استفاده کنید به شکل:



squidclient -g 5 http://www.yahoo.com


که میبینید در 5 بار زمان خواندن سایت چقدر هست

برای دیدن پروسس squid:

ps -ef |grep -i squid


پایان قدم دوم;





لطفا توی این تاپیک سوال نپرسید تا انشالله مراحل رو پشت سر هم بریم جلو برای سوال به تاپیک جدید زیر مراجعه کنید:







---------- Post added at 09:40 PM ---------- Previous post was at 09:38 PM ----------


قدم سوم تنطیمات بیشتر:

میشه روی چند پورت listening داشت:


http_port 3128 8080


کانفیگ کردن دایرکتوری کش:

cache_dir ufs /usr/local/squid/var/cache/ 100 16 256


ابن خط داخل squid.conf مشخص میکنه که مسیر مورد نظر با فایل سیسنم ufs هست که با گنجایش ۱۰۰ مگابایت هست عدد ۱۶ بیانگر ماکزیمم تعداد فولدر داخل دایرکتوری و ۲۵۶ مشخص کننده حداکثر ۲۵۶ فایل داخل هر فولدر هست

**نکته: میشه یه تعداد دلخواه مسیر تعریف کرد مثلا cache_dir ufs /dev/sda1/1/ 100 16 256

** نکته: ضرایب باید حفظ بشه
** نکته : بالابردن بیش از حد ظرفیت کش performance رو پایین میآره
** نکته : بهتره از یک هارد دیگه برای کشینگ استفاده بشه که سرعت بالاتری هم داشته باشه

****با دستور df میشه مقدار فضای خالی پارتیشن ها رو دید

برای جلوگیری از اتصال یک یا چند آی پی خاص به اینترنت قبل از acl mylan:


acl bad_user src 192.168.1.10/24
http_access deny bad_user


برای ارتباط دادن با کش سرور های دیگه داریم:


cache_peer cache.omid.com parent 3128 3130 default no-query



اگه بخوایم که اگر توی کش سرور بالا پیدا نکرد سراغ اینترنت نره داریم:

cache_peer cache.omid.com parent 3128 3130



برای دیدن لاگ دسترسی ها:


cat /var/log/squid/access.log



انواع ACL :



Source/Destination IP address
Source/Destination Domain
Regular Expression match of requested domain
Words in the requested URL
Words in the source or destination domain
Current day/time
Destination port
Protocol (FTP, HTTP, SSL)
Method (HTTP GET or HTTP POST)
Browser type
Name (according to the Ident protocol)
Autonomous System (AS) number
Username/Password pair
SNMP Community


در مورد اولی توضیح داده بودم

Source/Destination Domain




acl myDomain srcdomain .omid.com .squid-cache.org


acl allow myDomain

فکر کنم نیازی به توضیح نباشه

ادامه در قدم بعدی انشالله
لطفا توی این تاپیک سوال نپرسید تا انشالله مراحل رو پشت سر هم بریم جلو برای سوال به تاپیک جدید زیر مراجعه کنید:












---------- Post added at 09:43 PM ---------- Previous post was at 09:40 PM ----------

دامه انواع access-list




[*=right] Regular Expression match of requested domain


برای ***** کردن url هایی که نمی خواهیم حاوی یک یا چند کلمه باشن:


acl badUrl url_regex -i nami.

i- برای اینه که چون پیش فرض case sensitive هست با این پارامتر insensitive میشه



acl badUrl url_regex -i \.avi

این هم که مشخصه

میشه جفتشون رو یکجا نوشت:


acl badUrl url_regex -i nami.\*\.avi


که در آخر با این دستور ***** میشن:


http_access deny badUrl


acl filterlist url_regex -i /etc/squid/blacklist


داخل این فایل می تونید url های مورد نظر رو بزارید



MIME type


*****ینگ میتونه بر اساس mime type باشه



acl mp3 reg_mime_type "audio/mp3"




Current time/date



میشه acl رو بر اساس زمان نوشت:


acl name time [day-list] [start_hour:minute-end_hour:minute







S – Sunday, M – Monday,T – Tuesday, W – Wednesday, H – Thursday

F – Friday, A – Saturday

مثلا :

acl saate-edari time ASMTW 8:00-16:00
http_access allow saate-edari



Destination port



پورتهای مقصد که کاربران اجازه دسترسی دارند

acl Safe_ports port 80 21 443 563 70 210 1025-65535

و بقیه بلاک میشن با دستور زیر :



http_access deny !Safe_ports


****نکته: علامت ! یعنی به جز (کل دستور یعنی همه بسته بجز safe ports


Method


متد get برای دانلود
متد post برای آپلود
متد connect برای ssl

مثال :

acl connect_method method CONNECT
acl SSL_PORTS port 443 563
http_access deny connect_method !SSL_PORTS


یعنی به کانکشن های غیر ssl اجازه دسترسی نمیده


لطفا توی این تاپیک سوال نپرسید تا انشالله مراحل رو پشت سر هم بریم جلو برای سوال به تاپیک جدید زیر مراجعه کنید:






















---------- Post added at 09:47 PM ---------- Previous post was at 09:43 PM ----------

باز هم ادامه انواع access-list

Browser type


میشه acl رو بر اساس browser کاربر ها نوشت که مثلا با firefox بشه با ie نشه



acl aclname browser MOZILLA



***** خدایی تا کجا هارو فکر کردن http://www.forum.persianadmins.ir/images/smilies/smiley-un.gif***********









Username



ident_lookup on
acl friends omid mohsen reza morteza
http_access allow friends
http_access deny all

میتونید اسمهای مورد نظر رو بدید که از روی دستگاه مقصد auth میشن

***** زیاد در مورد نحوه احراز هویت این مورد اطلاعی ندارمhttp://www.forum.persianadmins.ir/images/smilies/smiley-undecided.gif




Autonomous System (AS) Number




Squid is often used by large ISPs. These ISPs want all of their customers to have access to their caches without having incredibly long manually-maintained ACL lists (don't forget that such long lists of IPs generally increase the CPU usage of Squid too). Large ISP's all have AS (Autonomous System) numbers which are used by other Internet routers which run the BGP (Border Gateway Protocol) routing protocol.
The whois server whois.ra.net keeps a (supposedly authoritive) list of all the IP ranges that are in each AS. Squid can query this server and get a list of all IP addresses that the ISP controls, reducing the number of rules required. The data returned is also stored in a radix tree, for more cpu-friendly retrieval.
Sometimes the whois server is updated only sporadically. This could lead to problems with new networks being denied access incorrectly. It's probably best to automate the process of adding new IP ranges to the whois server if you are going to use this function.
If your region has some sort of local whois server that handles queries in the same way, you can use the as_whois_server Squid config file option to query a different server.

**** اینم برای isp دار ها خوشون ترجمه کنن زیادهhttp://www.forum.persianadmins.ir/images/smilies/smiley-tongue-out.gif






Username and Password

روشهای مختلفی برای ***** کردن یوزرها هست مثلا smb-خواندن از روی فایل و ....
من خودم از ntlm استفاده کردم برای خوندن یوزرهای AD



Using the NCSA authentication module

اینم روش جالبیه برای خوندن یوزر و پسوردها از روی یک فایل:
داخل squid.conf اضافه میکنیم:
authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd

فایل passwd رو در مسیر بالا میسازیم و با فرمت زیر یوزر اضافه میکنیم:

nami:lKdpxbNzhlo.w


Using the RADIUS authentication module




acl external_traffic *****_auth REQUIRED
http_access allow external_traffic
auth_param basic program /usr/local/squid/libexec/squid_radius_auth -f /usr/local/squid/etc/squid_radius_auth.conf
auth_param basic children 5
auth_param basic realm This is the realm
auth_param basic credentialsttl 45 minutes



acl بازهم هست ولی کمتر مورد استفاده قرار میگیره و موردی هست

**** مثالهایی هم که نوشتم فقط نمونه خیلی کوچکی از نحوه syntax نوشتن اونهاست و میشه هزاران جور دیگه تغییر داد یا ترکیب کرد و اینجا فقط به سر فصل اشاره شد.




refresh pattern ها

مشخص میکنند که چه چیزهایی باید کش بشن و تا چه مدت و اینکار رو با خوندن هدری که در html قرار داده میشه میغهمه ولی خیلی سایتها از tag default استفاده میکنن و زیاد توی سرعت باز شدن اینگونه سایتها تاثیری حاصل نمیشه

نمونه های زیادی از refresh pattern توی اینترنت هست و با یاد***ی روش میشه دستی هم نوشت:




refresh_pattern [-i] regex min percent max [options]refresh_pattern -i \.gif$ 1440 20% 10080


نمونه:




refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tif f)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private
refresh_pattern -i \.index.(html|htm)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320
refresh_pattern . 0 40% 40320
********مهم

داینامیک content ها رو کش نمیکنه مثلا عکسهای کوچک کد امنیتی:




refresh_pattern (/cgi-bin/|\?) 0 0% 0
پایان قدم ۵ ؛







لطفا توی این تاپیک سوال نپرسید تا انشالله مراحل رو پشت سر هم بریم جلو برای سوال به تاپیک جدید زیر مراجعه کنید:

alef1
April 11th, 2012, 22:14
سلام
با تشکر
نوشتن منبع هم توصیه میشه البته

ourweb
April 11th, 2012, 22:28
با سلام میخواستم اخر اموزش بزنم ولی الان میگم منبع پرشین ادمین میباشد .

alef1
April 11th, 2012, 22:38
ممنون
بنده هم اونجا خوندم خواستم حالا که زحمت کشیدید و قرار دادید کامل باشه و حقوق نویسنده اصلی هم حفظ بشه

ourweb
April 11th, 2012, 22:39
سلام
با نشکر
نوشتن منبع هم توصیه میشه البته

لطفا انقدر اسپم نفرستید.

kingrokh
November 14th, 2012, 07:09
سلام و سپاس از زحماتتون.
سوالی دارم ازتون، این refresh_pattern ها رو کجا باید وارد کرد ؟

smargenius
January 18th, 2013, 20:26
این اموزش از سایت پرشین ادمینز ***یده شده
واقعا متاسفم

esmailfaal
February 6th, 2013, 02:26
آموزش رو خوندم تایید میشه
با آرزوی موفقیت برای همه دوستان

alis2004
February 10th, 2013, 20:44
دوستان سناریو
می زاشتید
بهتر بود

آگونیس
February 13th, 2013, 14:37
دوستان سناریو
می زاشتید
بهتر بود

زیر خاکی بالا میارین شماها!