دوره‌ های آموزشی نووا
آوریل 24, 2019

تنظیم فایروال ویندوز با CMD

Avatar photo
برنامه نویس MERN Stack
تنظیم فایروال ویندوز با CMD

در سیستم عامل ویندوز Firewall یا دیوار آتش نقش بسزایی در تضمین امنیت سیستم عامل دارد چراکه فایروال کلیه ارتباطات ورودی (Inbound) و خروجی (Outbound) ویندوز را طبق قوانین (Firewall Rules) نوشته شده اش کنترل و مدیریت کرده و در واقع همانند یک دیوار آتشین از ورود هر گونه ارتباط نا خواسته جلوگیری میکند. در این آموزش قصد دارم نحوه تنظیم و پیکربندی فایروال ویندوز را با CMD توضیح دهم پس در ادامه همراه با نووا بلاگ باشید.

پیشنهاد: اگر میخواهید فایروال ویندوز را به صورت گرافیکی تنظیم کنید میتوانید از آموزش تنظیم فایروال ویندوز استفاده کنید.

تنظیم و پیکربندی Firewall با CMD

برای تنظیم و پیکربندی فایروال ویندوز میتوانید از دستور Netsh Advfirewall استفاده کنید برای این منظور ابتدا Command Prompt را به صورت Run As Administrator اجرا کنید تا مجوز کافی برای ویرایش و مدیریت سیستم عامل ویندوز را داشته باشید سپس میتوانید وارد محیط دستور Netsh شوید و از آنجا با وارد کردن دستور Advfirewall وارد محیط پیکربندی فایروال شوید. برای مثال:

Netsh -c advfirewall
دستور netsh advfirewall

فعال کردن و غیر فعال کردن فایروال بر اساس نوع پروفایل شبکه

برای فعال کردن یا غیر فعال کردن فایروال ویندوز بر اساس نوع پروفایل شبکه میبایست از دستور Set در محیط Advfirewall با نوع پروفایل شبکه مورد نظر و پارامتر State استفاده کنید. مثلا برای غیر فعال کردن پروفایل دامین دستور netsh به صورت زیر نوشته میشود:

Netsh -c advfirewall

Set domainprofile state off

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

Netsh Advfirewall set domainprofile state off
غیر فعال کردن فایروال با cmd

برای فعال سازی مجدد فایروال دامنه میبایست بجای استفاده از مقدار off از کلمه on استفاده کنید. برای مثال:

Netsh advfirewall set domainprofile state on
  • برای تنظیم پروفایل دامنه باید از domainprofile استفاده کنید.
  • برای تنظیم پروفایل عمومی باید از publicprofile استفاده کنید.
  • برای تنظیم پروفایل خصوصی باید از privateprofile استفاده کنید.
  • برای تنظیم همه پروفایل ها باید از allprofile استفاده کنید.
  • برای تنظیم پروفایل جاری باید از currentprofile استفاده کنید.

بررسی وضعیت پروفایل های فایروال

برای بررسی وضعیت پروفایل های فایروال میبایست از دستور show در مد Advfirewall استفاده کنید و در جلوی آن نام پروفایل مد نظر خود را وارد کنید. مثلا برای بررسی وضعیت پروفایل Private دستور Netsh Advfirewall به شکل زیر نوشته میشود:

Netsh advfirewall show privateprofile
نمایش پروفایلهای فایروال با cmd

همانطور که در تصویر بالا مشاهده میکنید دستور Netsh Advfirewall وضعیت فعلی پروفایل Private را به نمایش گذاشته است. در جلوی State وضعیت فعال بودن یا غیر فعال بودن فایروال ویندوز مشخص شده (مقدار On به معنای فعال بودن است) و در جلوی Firewall Policy سیاست های اصلی ارتباطات ورودی و خروجی مشخص شده است.

برای بررسی وضعیت کلیه پروفایل ها میبایست از مقدار Allprofile در جلوی دستور Show استفاده کنید. برای مثال:

Netsh Advfirewall show allprofile

سیاست های اصلی برای ورودی ها و خروجی های فایروال

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

هر کدام از این پروفایل ها دارای یک ورودی (Inbound) و یک خروجی (Outbound) هستند تا ارتباطات شبکه ای سیستم را توسط قوانین نوشته شده برای این ورودی ها و خروجی ها (Inbound and Outbound rules) کنترل و مدیریت کنند.

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

  • اگر قانونی (Rule) برای ارتباط ورودی یا خروجی نوشته شده بود باید طبق آن قانون با ارتباط برخورد شود در غیر اینصورت آن ارتباط باید مسدود و متوقف شود. (گزینه Blockinbound و Blockoutbound)
  • کلیه ارتباطات ورودی باید مسدود شوند حتی ارتباط های که برای آنها قانون نوشته شده است. (گزینه Blockinboundalways)
  • اگر قانونی برای ارتباطات خروجی نوشته نشده بود، آن ارتباط میتواند برقرار شد. (گزینه allowoutbound)

تنظیم سیاست های ورودی و خروجی هر پروفایل

برای تنظیم سیاست های اصلی هر پروفایل میتوانید از دستور Netsh Advfirewall با پارامتر Set و مشخص کردن نوع پروفایل و پارامتر firewallpolicy برای تعیین سیاست ورودی و خروجی استفاده کنید.

مثلا برای جلوگیری از کلیه ارتباطات ورودی به سیستم (حتی ارتباط های که برای آنها قانون تعیین شده است) و کلیه ارتباطات خروجی که برای آنها قانون تعیین نشده است از طریق پروفایل Domain دستور Netsh به شکل زیر نوشته میشود:

Netsh Advfirewall set domainprofile firewallpolicy blockinboundalways,blockoutbound

در دستور بالا مشخص شده کلیه ارتباطات ورودی از طریق شبکه Domain که برای آنها قانون نوشته یا ننوشته شده باشد باید توسط سیاست Block Inbound Always مسدود و متوقف شوند و همچنین با گزینه Blockoutbound مشخص شده کلیه ارتباطات خروجی که برای آنها قانونی ننوشته شده باشد هم باید متوقف شوند.

حال فرض کنید میخواهیم کلیه ارتباطات ورودی از شبکه private طبق قانون های نوشته شده در فایروال با آنها برخورد شود و کلی ارتباطات خروجی هم اگر قانونی برای آنها نوشته نشده بود مجوز برقراری ارتباط را داشته باشند. برای این منظور دستور Netsh Advfirewall به شکل زیر نوشته میشود:

Netsh Advfirewall Set privateprofile firewallpolicy blockinbound,allowoutbound
مسدود سازی دسترسی به یک آدرس IP با CMD

بعد از تنظیم پروفایل فایروال میتوانید دوباره از دستور Netsh advfirewall show برای مشاهده تنظیمات انجام شده پروفایل فایروال خود استفاده کنید.

نوشتن قانون در فایروال با دستور Netsh

برای نوشتن قانون در فایروال با دستور Netsh میبایست از مد Firewall در Advfirewall استفاده کنید سپس میتوانید با دستور Add قانون مورد نظر خود را به صورت inbound یا Outbound اضافه کنید یا با دستور Set قوانین موجود در فایروال را ویرایش کنید. ابتدا بگذارید پارامترهای دستور Add را به شما توضیح دهم. اگر دستور Netsh Advfirewall را به صورت زیر وارد کنید فهرست پارامترهای آنرا مشاهده خواهید نمود:

Netsh advfirewall firewall add rule /?
اضافه کردن rule در فایروال با cmd

توضیح پارامتر های ایجاد Rule در فایروال

پارامتر هاتوضیحات
Dirمشخص کردن نوع قانون in به معنای Inbound میباشد و out به معنای Outbound
Actionمشخص کردن نوع عملکرد قانون برای منع دسترسی از Block و برای مجوز دادن از Allow و برای دور زدن از Bypass استفاده میشود.
Programمسیر برنامه مد نظر خود را میتوانید در جلوی Program مشخص کنید.
Serviceنام مخفف سرویس (مثل Audiosrv) مد نظر خود را میبایست در جلوی پارامتر Service مشخص کنید.
Descriptionبرای اضافه نمودن توضیحات به قانون مد نظر خود میتوانید از پارامتر Description استفاده کنید
Enableبرای فعال بودن یا غیر فعال بودن قانون ایجاد شده میبایست از گزینه Enable استفاده کنید. به صورت پیشفرض قانون بعد از اضافه شدن فعال میباشد. (Yes)
Profileنوع پروفایل شبکه را میتوانید در جلوی این پارامتر مشخص کنید. مقدار های قابل استفاده Public و Private یا Domain میباشد و برای مشخص کردن همه پروفایل ها باید از مقدار Any استفاده کنید.
LocalIPبرای مشخص کردن آدرس مبدا باید از پارامتر Localip استفاده کنید. میتوان از آدرس IPv4 یا IPv6 یا یک Subnet و یا یک Range از آدرسها را مشخص کنید. برای مشخص کردن همه آدرس ها باید از مقدار Any استفاده کنید.
RemoteIPبرای مشخص کردن آدرس IP شبکه مقصد میبایست از پارامتر RemoteIP استفاده کنید. مقدارهای قابل استفاده در جلوی این دستور Any برای مشخص کردن همه آدرس ها، IPv4 یا IPv6 یا DNS یا DHCP یا WINS یا Default Gateway یا Subnet و یا یک Range از آدرسها را میتوانید مشخص کنید.
LocalPortدر جلوی پارامتر LocalPort میتوانید عدد پورت مورد نظر خود را وارد کنید. مقدار Any به معنای همه Port ها میباشد عدد پورت میتواند از 0 تا 65535 باشد همچنین میتوانید از مقدار RPC یا IPHTTPS یا RPC-EPMap هم استفاده کنید.
RemotePortبرای مشخص کردن عدد پورت های شبکه مقصد میتوانید از پارامتر RemotePort استفاده کنید. مقدار های قابل استفاده از عدد 0 تا 65535 میباشد و همچنین میتوانید از مقدار Any برای مشخص کردن همه Port ها استفاده کنید.
Protocolبرای مشخص کردن Protocol میتوانید از عدد 0 تا 255 یا نام پروتکل های مورد نظر خود استفاده کنید. مثلا میتوانید از مقدار های ICMPv4 یا ICMPv6 یا ICMPv4:Type,Code یا ICMPv6:Type,Code یا TCP یا UDP و یا مقدار Any برای مشخص کردن همه پروتکل ها استفاده کنید.
InterfaceTypeبرای مشخص کردن نوع کارت شبکه میتوانید از InterfaceType استفاده کنید. مقدارهای قابل استفاده در جلوی این پارامتر، Wireless یا LAN یا RAS یا مقدار Any برای مشخص کردن همه انوع کارت شبکه ها میباشد.
RmtComputerGrpاحراز هویت و تایید ارتباط کامپیوتر مقصد با مشخص کردن مقدار SSDL آن
RmtUserGrpاحراز هویت و تایید ارتباط کاربر مقصد با مشخص کردن مقدار SDDL آن
Edgeمقدار های قابل استفاده در جلوی این پارامتر Deferapp یا DeferUser و یا No میباشد. مقدار پیشفرض No است.
Securityمقدارهای قابل استفاده در جلوی این پارامتر authenticate یا authenc یا authdynenc یا authnoencap یا notrequired است که به صورت پیشفرض آخرین گزینه یعنی notrequired استفاده میشود.

چند مثال از اضافه نمودن Rule در فایروال

حال بگذاری چند مثال کاربردی از نحوه اضافه نمودن Rule در فایروال ویندوز بزنم. فرض کنید برای امنیت ارتباطات کاربر با وبسایت های اینترنتی کاربر نباید از پروتکل نا امن HTTP برای دسترسی به وبسایت ها استفاده کند از اینرو میتوانیم پروتکل HTTP را به صورت کامل از طریق فایروال مسدود سازیم. برای مثال:

Netsh Adv Fir Ad Ru Name="Block HTTP Traffics" Dir=Out Action=Block Protocol=TCP RemotePort=80
اضافه کردن قانون در فایروال ویندوز با CMD

همانطور که در تصویر بالا مشاهده میکنید دستور Netsh تا جای ممکن به صورت مخفف وارد شده تا فرایند اضافه نمودن Rule هرچه سریع تر انجام شود.

جلوگیری از دسترسی برنامه ها به اینترنت

برای جلوگیری از دسترسی برنامه ها به شبکه اینترنت میبایست از پارامتر Program استفاده کنید. مثلا برای جلوگیری از دسترسی نرم افزار Google Chrome به شبکه اینترنت دستور Netsh به شکل زیر نوشته میشود.

Netsh adv fir ad ru Name="Chrome Traffic Blocker" Dir=Out Program="C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe" Action=Block

مسدود کردن دسترسی به یک آدرس IP مشخص

برای مسدود کردن دسترسی سیستم به یک آدرس IP مشخص میبایست از پارامتر RemoteIP استفاده کنید. مثلا برای جلوگیری از دسترسی سیستم به آدرس آی پی 10.10.10.10 دستور Netsh به شکل زیر نوشته میشود.

Netsh adv fir ad rul Name="Block Specific IP" Dir=Out Action=Block RemoteIP=10.10.10.10

مسدود سازی دسترسی از یک آدرس مبدا مشخص به آدرس مقصد

با استفاده از پارامتر LocalIP میتوان آدرس مبدا را نیز مشخص نمود مثلا برای جلوگیری از دسترسی سیستم با آدرس مبدا 10.1.1.10 به آدرس مقصد 10.10.10.1 دستور به شکل زیر نوشته میشود:

Netsh adv fir ad ru Name="IP Blocker" Dir=out Action=Block LocalIP=10.1.1.10 RemoteIP=10.10.10.1

مسدود کردن دسترسی به شبکه بسته به نوع کارت شبکه

با استفاده از دستور Netsh Advfirewall میتوان قانونی نوشت که هنگام استفاده از کارت شبکه Wireless یا LAN یا RAS دسترسی به یک آدرس آی پی منع یا مجوز داده شود. مثلا برای جلوگیری از دسترسی به آدرس 78.233.121.123 در هنگام استفاده از کارت شبکه وایرلس دستور Netsh به شکل زیر نوشته میشود:

netsh adv fi ad ru Name="Block Network By Interface Type" Dir=Out Action=Block InterfaceType=Wireless RemoteIP=78.233.121.123

نمایش Rule های نوشته شده در فایروال

برای فهرست گیری و نمایش قوانین نوشته شده در فایروال ویندوز میتوانید از دستور Show در محیط Firewall استفاده کنید. مثلا برای بررسی کلیه Rule های ورودی دستور Netsh به شکل زیر نوشته میشود:

Netsh Adv Fir Show Rule Name=All Dir=In
نمایش rule های فایروال

توجه کنید در دستور بالا با پارامتر Name=All مشخص شده کلیه Rule‌ های ورودی باید به نمایش گذاشته شوند اگر میخواهید یک به یک این Rule ها را بررسی کنید بهتر است خروجی دستور Netsh‌ را به دستور More منتقل کنید. برای مثال:

Netsh Adv Fir Show Rule Name=All Dir=Out | More

برای بررسی جزئیات یک Rule باید در جلوی پارامتر Name بجای مقدار All از نام Rule مد نظر خود استفاده کنید. مثلا برای نمایش جزئیات Rule های مربوط به AnyDesk دستور Netsh به شکل زیر نوشته میشود:

Netsh Adv Fir Show Rule Name=AnyDesk

ویرایش Rule های نوشته شده در فایروال

برای ویرایش قوانین نوشته شده در فایروال میبایست از دستور Set در مد Firewall استفاده کنید. برای این منظور کافیست بعد پارامتر Set از پارامتر Rule و بعد از آن نام Rule مد نظر خود را با پارامتر های خط اول زیر مشخص کنید. پارامتر های قابل استفاده در جلوی دستور Set Rule از قرار زیر میباشند:

Group | Name – Dir – Profile – Program – Service – LocalIP – RemoteIP – LocalPort – RemotePort – Protocol

Name – Dir – Program – Service – Action – Description – Enable – Profile – LocalIP – RemoteIP – LocalPort – RemotePort – Protocol – InterfaceType – RmtComputerGrp – RmtUserGrp – Edge – Security

نکته: توجه کنید در خط اول پارامتر های مشخص کننده Rule های موجود مشخص شده است و در خط دوم پارامتر های که میتوانید از آنها برای تنظیم مجدد Rule ها استفاده نمود.

مثلا برای تنظیم مجدد نام یک Rule از Network Blocker به Specific Host Blocker دستور Netsh به شکل زیر نوشته میشود:

Netsh Adv fir set Ru Name="Network Blocker" new Name="Specific Host Blocker"

غیر فعال کردن Rule ها با دستور Set

برای فعال کردن یا غیر فعال کردن Rule ها با دستور Netsh Advfirewall باید از پارامتر Enable استفاده کنید. مثلا برای غیر فعال کردن قانون Network Blocker دستور Netsh به شکل زیر نوشته میشود:

Netsh Adv Fir set Ru Name="Specific Host Blocker" New Enable=No

توجه کنید برای تنظیم مجدد یا ویرایش یک Rule حتما باید آن Rule نوشته شده باشد در غیر اینصورت با خطا مواجه خواهید شد.

حذف Rule های فایروال با دستور Netsh

برای حذف قوانین نوشته شده در فایروال میبایست از دستور Delete در مد Firewall استفاده کنید. برای این منظور کافیست بعد از دستور Delete از پارامتر Rule و بعد از آن از پارامتر Name و جزئیات قانون مد نظر خود استفاده کنید. مثلا برای حذف کلیه Rule های که نام آنها Specific Host Blocker میباشد باید به صورت زیر عمل کنید:

Netsh Adv Fir Del Ru Name="Specific Host Blocker"

پارامتر های قابل استفاده برای حذف یک Rule از قرار زیر میباشند:

Name – Dir – Profile – Program – Service – LocalIP – RemoteIP – LocalPort – RemoteProt – Protocol

در صورت داشتن هر گونه سوال یا انتقاد نسبت به آموزش تنظیم فایروال ویندوز با CMD نووا بلاگ را از محبت خود محروم نکنید.

4 پاسخ به “تنظیم فایروال ویندوز با CMD”

  1. Avatar photo saeed.ord گفت:

    سلام وقتتون بخیر. اگر همین اموزشها رو بصورت فایل pdf درست میکردین خیلی بهتر بود.ممنون

  2. Avatar photo شایان گفت:

    با سلام
    در قسمت مسدود کردن دسترسی به شبکه بسته به نوع کارت شبکه میخوام فقط یکی از دو تا کارت شبکه ام مسدود بشه
    چه دستوری باید بهش اضافه کنم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *