محمد نصیری
هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات

کاملترین آموزش Squid | کش سرور لینوکس | از ماهیت تا ACL ها

جامعترین آموزش Squid Proxy | آموزش راه اندازی کش سرور لینوکس | از Squid چیست تا ACL های Cache Proxy و ... همگی در قالب یک آموزش متنی نصب و راه اندازی کش سرور لینوکس برای شما آماده شده است . در این مقاله فوق العاده جامع شما از ماهیت کش سرور اسکوئید در لینوکس شروع به یادگیری می کنید ، آموزش نصب Squid را یاد می گیرید ، بصورت عملیاتی از Squid در شبکه استفاده خواهید کرد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

آموزش Squid Proxy قسمت 1 : Cache Proxy | کش پروکسی چیست؟

خوب یکی از بدبختی هایی که در شرکت هایی که تعداد کاربراشون زیاد هست اینه که حجم اینترنت خیلی سریع تموم میشه و کلی کاربر هستن که صبح تا شب کلی وب سایت رو زیر رو رو می کنن و طبیعتا فرصتی برای کار کردن ندارن ! بالاخره وبگردی و ویدیو دیدن و عکس بازی و ... زمانشون رو میگیره تو سازمان ها دیگه وقتی برای کار کردن نمیمونه اما خوب آیا راه حلی هست که بشه حجم مصرفی اینترنت رو بهینه کرد ؟

خوب ممکنه در روز صدها نفر همگی از یک وب سایت مشهور بازدید کنن ، نمیشه یه بار این وب سایت رو اول صبح دانلود کرد و بصورت شبکه داخلی بدون استفاده از حجم اینترنت برای کاربر جدید ارسال کرد ؟ جوابش مثبت هست ، شما می تونید اینکار رو با استفاده از راه اندازی کش سرور انجام بدید .

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

امنیت شما رو بالا ببره ، سرعت Load شدن صفحات وب رو بالا ببره ، ترافیک مزاحم رو فیلتر کنه ، فعالیت کاربران رو ثبت و ضبط کنه که بتونید به راحتی فضولی کنید و مدیریت پهنای باند و کلی کوفت و زهر مار دیگه هم داره که مهمترین کاربردش در Squid همین کش کردن هست که ما ازش استفاده می کنیم.

Cache Proxy به زبون زیادی ساده مکانیزم کاریش این هست که اولین درخواست وقتی برای وب سایتی ارسال میشه ، میره محتویات وب سایتی که قابل دانلود هستن رو روی RAM یا Hard Disk خودش دانلود می کنه و توی درخواست بعدی به جای اینکه از اینترنت دانلود کنه از شبکه داخلی و هارد دیسکش محتوا رو برای کاربر Load می کنه که دیگه خودتون می تونید حدس بزنید چه اتفاقی قرار هست بیوفته. طبیعتا برای اینکه بتونید از Cache Proxy استفاده کنید باید آدرسش رو توی قسمت Proxy Server مرورگر یا سیستم اضافه کنید .

آموزش Squid Proxy قسمت 2 : Squid Proxy چیست و چگونه نصب می شود؟

Squid یک Cache Server لینوکسی و Open Source هست که به عنوان محبوب ترین Cache Server یا Web Proxy Cache در دنیا شناخته میشه ، در بسیاری از سازمان های بزرگ هم استفاده میشه و جالب هست بدونید که اکثر مودم ها و روترها و هات اسپات هایی که روی خودشون Cache سرور دارن در واقع دارن از Squid برای اینکار استفاده می کنن . در ادامه نحوه نصب کردن این کش سرور رو به شما آموزش میدیم تا برسیم سراغ فایل های پیکربندی و حداقل موارد تنظیمات رو با هم انجام بدیم .

توجه کنید که هدف اصلی این سری مطلب اینه که شما یک Cache سرور ساده راه اندازی کنید و مفاهیم اصلیش رو یاد بگیرید و طبیعتا خود Squid پیکربندیش می تونه خیلی پیچیده بشه ، امروز روی سیستم عامل لینوکس CentOS نسخه 7 با دستورات زیر شروع به نصب Cache Server اسکوئید می کنیم .

خوب برای اینکار اول توجه داشته باشید که حداقل منابع لازم رو برای نصب کش سرور داشته باشید ، میزان RAM و Disk و البته CPU ای که شما برای این سرور نیاز دارید بسته به میزان درخواست کاربراتون متغیر هست ولی کلیات این هست که معمولا با منابع کم هم این سرویس به خوبی کار می کنه ، قبل از اقدام به نصب هر بسته ای در لینوکس دستور زیر رو برای به روز رسانی بکنیم :

[root@tosinso-centos7 ~]# yum -y update

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

[root@tosinso-centos7 ~]# yum -y install squid
[root@tosinso-centos7 ~]# systemctl start squid
[root@tosinso-centos7 ~]# systemctl enable squid 

خوب حالا هم Squid رو نصب کردید و هم فعالش کردید ! چقدر سادست نه ! زرشک ! هنوز اول کاره ، برای اینکه مطمئن بشید سرویس به درستی نصب شده و وضعیتش رو بدونید دستور زیر رو هم بزنید تا بریم تازه سراغ مراحل اولیه :

[root@tosinso-centos7 ~]# systemctl status squid

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

squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-01-26 08:29:23 EST; 1min 44s ago
 Main PID: 63361 (squid)
   CGroup: /system.slice/squid.service
           ├─63361 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─63363 (squid-1) -f /etc/squid/squid.conf
           └─63372 (logfile-daemon) /var/log/squid/access.log

Jan 26 08:29:23 tosinso-centos7 systemd[1]: Starting Squid caching proxy...
Jan 26 08:29:23 tosinso-centos7 squid[63360]: 2019/01/26 08:29:23| WARNING....
Jan 26 08:29:23 tosinso-centos7 squid[63360]: 2019/01/26 08:29:23| WARNING....
Jan 26 08:29:23 tosinso-centos7 squid[63360]: 2019/01/26 08:29:23| WARNING....
Jan 26 08:29:23 tosinso-centos7 squid[63361]: Squid Parent: will start 1 kids
Jan 26 08:29:23 tosinso-centos7 squid[63361]: Squid Parent: (squid-1) proc...d
Jan 26 08:29:23 tosinso-centos7 systemd[1]: Started Squid caching proxy.
Hint: Some lines were ellipsized, use -l to show in full.

خوب الان مطمئن هستید که Squid نصب شده و در حالت running هست ، شما باید مطمئن بشید که سه فایل اصلی زیر ( البته مهمترینش همون squid.conf هست ) در مسیرهای زیر وجود دارند وگرنه کارتون به مشکل میخوره :

  • فایل تنظیمات اصلی Squid در آدرس : etc//squid//squid.conf
  • فایل لاگ دسترسی های Squid در آدرس : var//log//squid//access.log
  • فایل لاگ کش Squid به آدرس : var//log//squid//cache.log

خوب حالا که مطمئن شدید این نرم افزار چی هست و چجوری کار می کنه و چجوری نصب پیشفرض میشه عجله نکنید تا در قسمت دوم محتویات فایل squid.conf رو بررسی می کنیم و به شما میگیم که چه چیزهایی رو باید داخل این فایل بررسی کنید و ازشون استفاده کنید

آموزش Squid Proxy قسمت 3 :  آموزش تنظیمات اولیه Squid Proxy

خوب تو قسمت قبلی از این سری مطالب دیدید که چجوری Squid رو نصب می کنیم و چجوری بررسی می کنیم که درست نصب شده یا خیر ، خوب گفتیم که مهمترین فایل تنظیمات این کش سرور squid.conf هست ! خوب اگر نگفتیم الان میگیم چه اشکالی داره نه ؟ ببینید ساختار کلی محتویات اصلی این فایل به شکل زیر هست یه نگاهی بهش بندازید تا من تقریبا خط به خط توضیح بدم که چی به چی هست و بعد بریم سراغ تنظیمات اولیه :

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

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

هر جا دیدید نوشته acl مخفف Access Control List هست که برای تعریف کردن سطح دسترسی هست توی این کش سرور و جلوش یه سری پارامتر قرار می گیره مثلا کلمه localnet وقتی بعد acl میاد یعنی میخاد بگه که یک آدرس شبکه میخام برات تعریف کنم ، اگه در ادامش کلمه src اومد مخفف Source هست یعنی میخاد مبدا رو تعریف کنه پس به زبون ساده جمله زیر یعنی تعریف کردن محدوده آدرس IP شبکه داخلی یا Local Network من ، فقط نکته اینکه بچه ها قسمت دوم اسم هست فقط !!!

یعنی الزامی نیست شما حتما اسمش رو بزارید localnet می تونید اسم دیگه ای هم بزارید پس 5 خط اول این تنظیمات یعنی تعریف کردن محدوده آدرس شبکه داخلی ، هر کسی با این مبدا ( src) درخواستی ارسال کرد توی این acl قرار میگیره ، خوب اینکار برای ساده تر شدن دسترسی به این مورد هست توی تعاریف بعدی همین فایل ، به زبون خیلی خیلی ساده مثل تعریف ثابت یا Constant هست که تو برنامه نویسی انجام میشه .

اول کار تعریف می کنی یه ثابت به یه اسم تا آخر برنامه فراخوانیش می کنی اوکی ؟ این از مفهوم اول ... خوب براتون جا افتاد ؟ بعدا مفصل در مورد این صحبت می کنیم که ما کلا دو قسمت اصلی داریم که به یکیش میگیم Access List و به یکی دیگش میگیم Access element که الان تو مثال های بالا چیزهایی مثل src و port رو بهشون میگن element و چیزهایی مثل acl و https_access و http_port و refresh_pattern رو هم بهشون میگن Access List ... بگذریم بریم ادامه ماجرا !!!

توی مثال بالا می بینید که یه سری acl به نام Safe_ports تعریف شده که شماره پورت تعریف کرده ! جلوشون نوشته port و یه شماره و یه اسم Safe_ports هم دائما تکرار شده با شماره های مختلف ! در واقع هر موقع شما Safe_ports رو فراخوانی کنید همه این پورت هایی که براش تعریف شدن مد نظر گرفته میشن 

از خط 7 تا 17 اگر اشتباه نکنم و درست شمرده باشم تعریف کردن پورت های مجاز برای دسترسی امن به اینترنت هستن و پروتکل های مجاز برای عبور !! اگه دقت کنید کمی پایینتر یه جا Access Element ای به نام http_access داریم که در مورد Safe_ports نوشته که به اینترنت دسترسی داشته باشه اما تعریف کردنش مثل عملیات NOT در Anding باینتری هست !

یعنی هر جا علامت تعجب دیدید به معنی معکوس قضیه هست ! حالا براتون میخونمش که میگه هر جا دیدید پورت هایی به غیر از پورت های موجود در Safe_ports هست اجازه دسترسی به اینترنت رو بهشون نده ... تا همینجا بسته تا بریم سراغ ادامه ماجرا فقط فراموش نکنید که پورت پیشفرض پروکسی سرور Squid که باید تو مرورگرها وارد بشه شماره 3128 هست که دیگه مشخصه چجوری تعریف میشه !! خوب بریم سراغ ادامه ماجرا و موضوع بعدی که انجام تنظیمات HTTP Proxy هست که در مطلب بعدی براتون توضیح میدیم . امیدوارم تا ایجا براتون مفید باشه .

آموزش Squid Proxy قسمت 4 : آموزش اضافه کردن شبکه داخلی و پورت

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

یعنی به زبون ساده آدرس IP هایی که حق عبور از پروکسی سرور رو دارن رو باید توی این لیست قرار بدید خوب چجوری اضافه میشه ؟ کاری نداره که توضیح دادیم شما باید یه خط acl وارد کنید به شکلی که اعلام می کنیم ، اول فایل squid.conf رو که در مسیر زیر هست باز کنید ترجیحا با nano :

 [root@tosinso-centos7 ~]# nano /etc/squid/squid.conf

خوب حالا توی فایل خط زیر رو اضافه کنید ترجیحا بالای فایل اضافه کنید جایی که Acl های دیگه رو هم می تونید ببینید :

acl localnet src 192.168.0.0/24

خوب طبیعی هست که شما باید به جای محدوده آدرسی که من گذاشتم محدوده آدرس IP خودتون تو شبکه داخلی رو وارد کنید ، می تونید اگر چند تا محدوده دارید به ترتیب همین خط رو اضافه کنید با همین نام و محدوده آدرس رو تغییر بدید .

اول فایل تقریبا این قسمت مشخص هست ، بهتره که جلوش با علامت هشتگ توضیحات هم بنویسید که بدونید منظورتون چی بوده از این نحوه تعریف Acl و ... خوب حالا که تغییراتتون رو اعمال کردید قطعا باید سرویس Squid رو Restart کنید که مجبور می شید دستور زیر رو وارد کنید :

[root@tosinso-centos7 ~]# systemctl  restart squid

خوب قسمت بعدی قضیه این هست که اگر شماره پورت خاصی رو مد نظر دارید که روی اسکوئید باز باشه باید حتما تعریفش کنید ، مثلا خیلی اوقات پیش میاد برخی وب سایت ها با پورت خاصی باز میشن که باید تعریف کنید ، قبلا گفتیم می تونید یه خط اضافه کنید مثل خط های قبلیش به نام Safe_ports و توی قسمت پورت ، پورت جدید رو وارد کنید که میخاین اجازه عبور از Squid رو داشته باشه مثال زیر باز کردن پورت 3389 ریموت دسکتاپ هست روی Squid که به شکل زیر انجام میشه :

acl Safe_ports port 3389

حالا شما هر پورتی رو میخاین باز کنید به جاش جایگزین کنید همین ! باز هم برای اعمال شدن هر چیزی فراموش نکنید سرویس Restart میشه برای بار شونصدم عرض کردم ! خوب شما شبکه داخلی رو تعریف کردید برای Squid و پورت های مجاز رو هم تعریف کردید نوبتی هم باشه میرسیم به بحث احراز هویت سمت کاربر در Squid که در قسمت بعدی میریم سراغش !!

توی قسمت بعدی شما احراز هویت و مسدود کردن آدرس های URL رو یاد می گیرید و بعد تمومش می کنیم فقط حواستون باید باشه که این فقط راه اندازی اولیه هست و کلی پارامتر میمونه که باید خودتون بر حسب نیاز بهش بخورید .

آموزش Squid Proxy قسمت 5 : آموزش احراز هویت و Block کردن URL

خوب شما هم می تونید بصورت کیلویی و فله ای اجازه استفاده اینترنت به کاربراتون رو بدید و هم می تونید براشون احراز هویت بزارید و بدونید کی کجا میره و مدیریت منظمی روی اینترنتتون داشته باشید ، شما در ساده ترین حالت ممکن می تونید از قابلیت Basic Authentication یا احراز هویت ساده Squid استفاده کنید و سریع اینکار رو انجام بدید.

فراموش نکنید که ما کلی روش های احراز هویت داریم که ساده ترینش رو داریم براتون توضیح میدیم ، خوب برای اینکار اول شما باید یک سری ابزار به نام httpd_tools رو نصب کنید ، اگه یادتون باشه که قطعا نیست ( والا به خدا ) همین ابزارها رو برای احراز هویت در آپاچی هم میشد استفاده کرد به شکل زیر دستور رو در CentOS وارد می کنیم :

[root@tosinso-centos7 ~]# yum -y install httpd-tools 

خوب حالا که ابزارها رو نصب کردید باید یک فایل درست کنید که بتونه اطلاعات نام کاربری و بعضا رمز عبور کاربرها رو ایجاد کنه که این فایل رو داخل دایرکتوری squid به شکل زیر ایجاد می کنیم و بعدش باید به کاربر squid که کاربر پیشفرض ساخته شده در squid هست هم دسترسی ها رو بدیم که بتونه مالکیت فایل مورد نظر رو بگیره پس دو تا دستور زیر رو هم وارد کنید پشت سر هم و به ترتیب :

[root@tosinso-centos7 ~]# touch /etc/squid/passwd
[root@tosinso-centos7 ~]# chown squid: /etc/squid/passwd 

بعد از اینکار نوبت به ایجاد کردن user میرسه که ما اسم کاربرمون رو گذاشتیم unity برای ایجاد کاربر کافیه دستور زیر رو وارد کنید و در ادامش هم خودکار پسورد کاربر ازتون پرسیده میشه و توی فایلی که ساختید بصورت Hash شده نگهداری میشه :

[root@tosinso-centos7 ~]# htpasswd /etc/squid/passwd unity
New password: 
Re-type new password: 
Adding password for user unity

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

[root@tosinso-centos7 ~]# nano /etc/squid/squid.conf 

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

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

حالا با دستور زیر سرویس رو Restart کنید :

[root@tosinso-centos7 ~]# systemctl restart squid

تبریک میگم ! الان وقتی میخاین وارد وب سایتی بشید از شما نام کاربری و رمز عبور خواسته میشه و تا اونهایی که درست کردیم رو وارد نکنید اجازه ورود ندارید ، اما خوب قسمت بعدی ماجرا این هست که چجوری یه وب سایت رو داخل Squid مسدود یا Block کنیم که این هم به عنوان حسن ختام ماجرا اول باید یک فایل درست کنیم که داخلش لیست وب سایت هایی باشد که میخایم تو لیست سیاه باشن و با دستور زیر براحتی ایجادش می کنیم :

[root@tosinso-centos7 ~]# touch /etc/squid/blacklisted_sites.acl 

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

.tosinso.com
.tosinso.com
.6i9.co

خوب لیست وب سایت های ممنوعه رو وارد کردید ؟ واقعا ؟ خیلی بی معرفتین که ما رو بلاک می کنید ! به هر حال سلیقه هست دیگه ! خطوط بالا داره میگه هر چیزی که در ادامه دامنه های بالا رو داشت بلاک کن یه جورایی نقطه یعنی همون ستاره توی جستجو که هر چی اولش بود رو حساب کن یعنی الان مثلا www.tosinso.com و network.tosinso.com و ... همش بلاک میشن ... حالا فایل تنظیمات squid رو باز کنید ، دیگه نیازی نیست بگم چجوری طبیعتا و در قسمت port ها ( بعد از Ports ) عین دو خط زیر رو وارد کنید :

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

حالا سرویس رو Restart کنید که دیگه بلد هستید و همه چیز الان اوکی هست می تونید توی پروکسی سمت کلاینت شماره پورت و IP پروکسی کش رو وارد کنید و تست بگیرید که درست شده یا نه ، امیدورام مورد توجه شما قرار گرفته باشه ، راه اندازی کنید و لذت ببرید ، هر چند فعال سازی میزان فضای RAM و Hard Disk پیشفرض رو تغییر ندادیم چون نیازی نبود و همین اندازه پیشفرض هم کلی کار مار رو راه میندازه .

آموزش Squid Proxy قسمت 6 : آموزش ACL Element در Squid

خوب قبلا خیلی خودمونی و راحت در مورد نصب و راه اندازی اولیه کش سرور 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 Proxy قسمت 7 : آموزش Access List ها

خوب توی قسمت قبلی در خصوص Element ها صحبت کردیم در Squid حالا نوبت به Access List ها میوفته که معرفیشون کنم و در ادامه یه سری نکته و سناریو بهتون میگم که تیکه تیکه انجام بدید تا دستتون راه بیوفته ! حالا جالبه بدونید من تا سن 17 سالگی وقتی به فارسی میدیدم روی مغازه ها نوشته شده المنت !!!

فکر می کنم منظورش ال منت هست ! یعنی یه واژه عربیه که ال اولش گذاشتن ! خدایا شکرت انگلیسی یاد گرفتم فهمیدم منظورش Element بوده ! یه عمر در تباهی زندگی کردیم ! اوکی خوب به ترتیب اسامی access list هایی که در squid.conf وجود داره رو با هم بررسی می کنیم :

  • http_access : مهمترین access list ای که توی squid هست همین بیشرفه ! ببخشید عصبانی شدم ! این یکی اجازه دسترسی به مرورگر ( Browser ) ها رو به اینترنت روی پورت 80 میده ! اصلی ترین access list در squid همین بی تربیته !
  • http_reply_access : ببینید شما توی مرورگر یا همون Browser می تونید روی همون پورت 80 درخواست های متنوعی ارسال کنید که نوع محتواهای مختلفی هم داشته باشه ! با این access list می تونید تعریف کنید که درخواست توی بازگشت چی بهتون برگردونه ! یه جور محدودیت اعمال کردن بیشتر برای http access هست .
  • icp_access : باور کنید اگر مخفف icp رو ندونید و مثلا سیسکو کار باشید حتما فکر می کنید icp مخفف internet content provider میشه در صورتیکه این icp اون icp نیست و هیچ صنمی هم با IP نداره ! خودش یه پروتکل هست که به Internet Cache Protoco معروف هست و پروتکل مورد استفاده در Cache هست ! حالا وقتی شما براش access تعریف می کنید یعنی می گید چه آدرسهایی بتونن به Cache شما دسترسی داشته باشن ( محتوای Cache شما )
  • cache : وقتی میخوایم یه سری درخواست ها توی Cache قرار نگیرن از این استفاده می کنیم
  • url_rewrite_access : وقتی آدرسی به آدرس دیگه Redirect شده اجازه عبور درخواست ها و تبدیل شدنش به اسم یا URL دیگه رو کنترل می کنه
  • identlookup_access : وقتی شما میخاین روی درخواست هایی که میاد FQDN و Reverse Lookup سرویس DNS انجام بشه از این Access List استفاده می کنید .
  • always_direct : وقتی میخاین درخواست شما مستقیما به یه سری سرور خاص ارسال بشه از این Access List استفاده میشه
  • never_direct : وقتی میخاین درخواست شما هیچوقت به یه سری سرور خاص هدایت نشه از این Access List استفاده میشه
  • snmp_access : وقتی میخاین دسترسی کلاینت های SNMP به منابع Cache رو کنترل کنید ازش استفاده میشه
  • broken_posts : حالا بحثش تخصصی هست اما فعلا در همین حد بدونید که لینک های خراب شده رو میشه تا حدودی با این Access List کنترل و مدیریت کرد که کاربرها تو در و دیوار نرن ( یه سری پارامترها به درخواست POST کاربر اضافه می کنه )
  • cache_peer_access : اول بدونید Cache Peer یعنی اینکه چند تا Cache Server می تونن در کنار هم کار بکنن که میگیم بهشون همسایه یا Neighbor خوب حالا با این Access List شما می تونید درخواست هایی که به سمت Neighbor ها میخاد ارسال بشه رو کنترل کنید
  • htcp_access : اول بدونید که htcp مخفف Hypertext Caching Protocol هست ، حالا راحت متوجه میشید که این Access List امکان دسترسی و ارسال درخواست روی پروتکل htcp رو برای کاربر فراهم می کنه .
  • htcp_clr_access : اول درک کنید htcp clr یک پروتکل هست ! بعد بدونید که با این میشه کنترلش کرد ! والا
  • requestheader_access : این Access list از نظر امنیتی خیلی خوبه 1 شما می تونید تعیین کنید که درخواست هایی با محتوای header خاصی امکان ارسال توسط http رو داشته باشن یا نه ! مثلا تعریف کنید اگر تغییری در header پروتکل http درخواست دیدی Block اش کن !
  • reply_header_access : توی قبلی درخواست های ارسالی رو کنترل می کردیم توی این یکی درخواست های پاسخ رو مدیریت می کنیم . یعنی اگه توی پاسخ یک درخواست http و header احساس کردی قوانین داره نقض میشه مثلا Block کن درخواست رو .
  • delay_access : وظیفه کنترل کردن درخواست هایی که با delay pool مدیریت میشن رو داره ! ( delay pool چیست بماند )
  • icap_access : یه مفهوم جدیده که از اسکوئید نسخه 3.1 اضافه شده وظیفش کنترل درخواست هایی هست که باید به سرورهای خاصی از پروتکل ICAP ارسال بشن هست ( Internet Content Adaptation Protocol )
  • adaptation_access : خوب مشخصه یه مقدار شبیه به قبلیه هست با این تفاوت که فیلتر eCAP هم داره .
  • log_access : وظیفه کنترل کردن اینکه چه چیزی لاگ برداری بشه رو بر عهده داره

اینها رو میگم و این بحث رو جمع می کنم تا در ادمه با مثالهای عملی تر اینها رو براتون باز کنم ، باز هم تکرار می کنم ( سیاسی نکنید قضیه رو فقط ) هر Access List یک قانون یا Rule هست که شامل دو تا کلمه کلیدی allow و dely هست ، در ادامش ACL Element ها میان که اسامی رو برای فایل و تنظیمات ما تعریف می کنن که بیخودی هر سری یه چیزی رو تعریف نکنیم .

یک Access List شامل یک یا بیشتر از یک لیست قوانین یا Rule هم می تونه باشه ، نحوه اجرای ACL ها در فایل تنظیمات بصورت خط به خط هست ، هر خطی اجرا شد به ترتیب خط بعدی و به ترتیب دسترسی ها چک میشن ، هر خطی که بالاتر باشه زودتر اجرا میشه و سطح اجراییش یا همون زورش بیشتر از خط پایینی هست 

یه حالتی مثل فایروال داره و Rule هاش . اگه توی Rule های نوشته شده تضادی وجود داشته باشه Rule بالاسری اجرا میشه ، مثلا میگن AND انجام میشه یعنی اگه هر دوتا درست بود اجرا میشه یکیش غلط بود یا مثال نقض بود اونی که بالاتره درست هست .

بنابراین شما می تونید Rule هایی بنویسید که هیچوقت اجرا نشن ! برای مثال هیچوقت یک درخواست همزمان نمی تونه روی دو تا پورت ارسال بشه ! مثلا درخواست های 80 و 8000 نمیشه همزمان ارسال بشه ، خوب امیدوارم کمی آماد شده باشید ، توی مطالب بعدی دیگه قسمت قسمت کارهای عملی انجام میدیم .

آموزش Squid Proxy قسمت 8 : آموزش فعال کردن Cache برای URL

خوب پسرای گلم رسیدیم به قسمت های عملیاتی ( آخه دخترا هم مگه Squid کانفیگ می کنن ؟ ) امروز می خوایم دو تا acl کاربردی بهتون معرفی کنیم ، فرض کنید که قرار هست به کاربراتون اجازه بدید که بتونن از Cache استفاده کنن ، در واقع اگر اینکار رو نکنید عملا گفتید که Cache سرور غیرفعال باشه

برای اینکار شما اول باید محدوده آدرس IP کلاینت ها رو تعریف کنید با acl و element ای به شکل Src که قبلا گفتیم و بعدش هم با access list معروف http_access بهشون دسترسی Allow بدید ، خوب پس فایل squid.conf رو باز می کنید ، دیگه قسمت های فایل مشخص هست کجا باید وارد کنید اول خط زیر رو برای تعریف کردن محدوده آدرس IP کاربرها اضافه کنید :

acl dummyclients src 192.168.1.0/24

دستور بالا داره میگه که برای محدوده آدرس IP ای که با این Subnetmask تعریف شده یه اسم بزار به نام dummyclients که بعدا بتونیم براش Access list بنویسیم و از این اسم استفاده کنیم ، حالا برای دسترسی دادن به اینترنت کار خاصی نیاز نیست کافیه فقط بگید پروتکل http رو برای dummyclients باز بزار ! اجازه بده برن بیرون از Cache درخواست بفرستن و بیان استفاده کنن بعدش که به شکل زیر هست :

http_access allow dummyclients

خوب حالا هر کسی که جزو این محدوده آدرس IP باشه بهش اجازه دسترسی داده میشه به وب ، اما خوب شاید شما دوست نداشته باشید یه سری چیزها یا یه سری وب سایت ها اصلا Cache بشن که قبلا دلایلش رو گفتیم چرا ، مثلا نمیخاین وب سایت توسینسو برای شما سرورش و اطلاعاتش Cache بشه برای اینکار کافیه اول Tosinso.com رو به عنوان یک element معرفی کنید و بهش اسم بدید و بعدش با deny کردن cache راحت دیگه اجازه Cache شدن رو بگیرید ازش خوب تعریف رو ببینید :

acl dontcache dstdomain .tosinso.com

خوب بالا ما تعریف کردیم که هر چیزی با پسوند Tosinso.com رو به عنوان dontcache در نظر بگیر اما الان فقط یک اسم بردیم ، خوب حالا باید با access list دیگه ای که گفتیم Cache هست اسمش بگیم که deny کن اگر درخواستی برای این سری آدرس اومد cache نکن که این شکلی تعریف میشه :

cache deny dontcache

خوب اینها رو که نوشتید ، فایل رو ذخیره کنید با تغییراتی که دادید و سرویس Squid رو restart کنید تا تغییرات اعمال بشه .

آموزش Squid Proxy قسمت 9 : آموزش Banned List با reg_exp

خوب بریم سراغ یکی دیگه از کارهای عملی مربوط به Squid ، فکر کنید رئیستون به شما گفته که هر کسی خواست بره داخل یک وب سایت با موضوع مثلا Book و Learning این اجازه رو بهش نده ! چون کلا از درس خوندن و یادگیری کارکنانش خوشش نمیاد !

خوب اولین راهکارش اینه که دونه دونه لیست وب سایت هایی که با این محتوا وجود دارن رو لیست کنید و برید برای هر کدوم از URL هایی که داره یک Rule بنویسید و مسدودش کنید که عقلانی نیست و کلی زمانبر هست و اگه سایت جدیدی هم بیاد باز زمان می بره تا شناسایی بشه و مسدود بشه .

اما شما می تونید از Regular Expressions استفاده کنید ! یعنی چی ؟ یعنی بگید هر آدرس URL ای که دیدی داخلش کلمه Book یا Learning بود رو اجازه دسترسی بهش نده که خیلی راحت خطوط پیکربندی زیر رو باید در فایل تنظیمات وارد کنید :

acl book1 url_regex book
acl learning1 url_regex learning
acl clients src 172.16.5.0/24
http_access deny book1
http_access deny learning1
http_access allow clients
http_access deny all

خوب به مثال بالا دقت کنید ! خیلی ساده اومدیم اول یه acl درست کردیم که توش کلمه book وجود داشت و بعدش یکی دیگه درست کردیم که کلمه learning توش بود و در ادامه کلاینت هامون رو در شبکه داخلی تعریف کردیم و بعدش هم گفتیم هر جا دیدید روی URL کلمه هایی که تعریف کردیم در این acl ها وجود داشتن همه رو deny کن درسته ؟

این access list به خوبی کار می کنه اما یه نکته مشکل ساز داره !! این نوع تعریف کردن Regular Expressions حالت Case Sensitive داره یعنی چی ؟ یعنی به حروف بزرگ و کوچیک حساس هست ، اگه توی URL شما به جای book مثلا Book باشه مشکلی از نظر این access list وجود نداره ! به همین راحتی !

آموزش Squid Proxy قسمت 10 : آموزش Block کردن سایت

خوب یکی دیگه از روش های مسدود کردن ، مسدود کردن دسترسی به یک آدرس دومین یا URL خاص هست که شما می دونید محتوای مناسبی نداره برای مجموعتون ! مثلا من میخام دسترسی به محتوای آموزشی وب سایت توسینسو رو برای کاربرام مسدود کنم کافیه خطوط زیر رو در فایل تنظیمات Squid وارد کنم :

acl Learning2 dstdomain www.tosinso.com
http_access deny Learning2
http_access allow all

خوب بزارید براتون ترجمه کنم خطوط بالا رو ، توی خط اول یک acl تعریف کردیم که اسمش رو گذاشتیم Learning2 و در آدرس دومین مقصد با استفاده از dstdomain گفتیم که آدرس وب سایت www.tosinso.com رو داشته باشه ، به زبان ساده هر جا گفتیم Learning2 یعنی www.tosinso.com ... توی خط دوم گفتیم که کلیه دسترسی با پروتکل http به Learning2 رو مسدود کن ، یعنی هیچکس نتونه به www.tosinso.com دسترسی داشته باشه و این یعنی مسدود باشه !

به همین سادگی . در ادامه هم گفتیم هر چیز دیگه ای در پروتکل http رو اجازه عبور بشه بده . نکته مهمی که در نحوه نوشتن این acl ها باید حواستون بهش باشه بحث آدرس IP هست ، بعضی از وب سایت ها رو میشه با آدرس IP باز کرد اگر فقط یک وب سایت روی سرور و اون آدرس IP وجود داشته باشن

حالا اگر کاربر به جای وارد کردن آدرس www.tosinso.com آدرس IP وب سایت رو وارد کرد Squid اول نگاه می کنه ببینه که اسم تو acl برابر هست یا خیر ، اگر نبود از FQDN Cache خودش یا همون DNS Cache خودش نگاه می کنه که آیا آدرس IP یکی هست یا نه ...

اگر یکی بود اجازه عبور نمیده ، اگر باز هم نتونست پیدا کنه یک فرآیند Reverse Lookup انجام میده تا بتونه آدرس URL و Domain آیپی درخواستی رو پیدا کنه و مجددا چک کنه که برابر هست یا نه . این فرآیند چون ممکنه زمانبر و طولانی باشه از نظر سرعت وب ، به اینجور acl ها اصطلاحا slow acl میگن یعنی کند عمل می کنن چون عملیات معکوس دارند . اگر میخاین عملیات Reverse Lookup انجام نشه برای این Acl کافیه که از Option یا به شکل –n استفاده کنید تا این عملیات غیرفعال بشه .

  • اسکوئید | Squid چیست؟

    در حوزه فناوری اطلاعات و امنیت ، اسکوئید یک کش سرور | Cache Server و البته یک Proxy سرور است که باعث می شود شما بتوانید بر روی مصرف اینترنت و نحوه استفاده از اینترنت در شبکه خودتان نظارت داشته باشید. کش سرور اسکوئید در بسیاری از موارد باعث کاهش مصرف و صرفه جویی در مصرف پهنای باند اینترنت شما می شود.
  • آیا یادگیری کش پروکسی | Squid Proxy آسان است؟

    کش سرور اسکوئید | Squid Proxy یک سرویس کاملا متنی و تحت سیستم عامل لینوکس است که کلیه تنظیمات آن بصورت دستی و در ویرایشگر متن انجام می شود. طبیعتا باید برای راه اندازی این سرویس بر روی سیستم عامل لینوکس مسلط باشید یا حداقل دوره های آموزشی مرتبط با لینوکس را بلد باشید.

محمد نصیری
محمد نصیری

هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات

هکر کلاه سفید ، کارشناس امنیت اطلاعات و ارتباطات و کشف جرائم رایانه ای ، بیش از 12 هزار ساعت سابقه تدریس در بیش از 40 سازمان دولتی ، خصوصی و نظامی ، علاقه مند به یادگیری بیشتر و عاشق محیط زیست ، عضو کوچکی از مجموعه توسینسو

06 بهمن 1397 این مطلب را ارسال کرده

نظرات