تنظیم فایروال ویندوز با CMD
در سیستم عامل ویندوز Firewall یا دیوار آتش نقش بسزایی در تضمین امنیت سیستم عامل دارد چراکه فایروال کلیه ارتباطات ورودی (Inbound) و خروجی (Outbound) ویندوز را طبق قوانین (Firewall Rules) نوشته شده اش کنترل و مدیریت کرده و در واقع همانند یک دیوار آتشین از ورود هر گونه ارتباط نا خواسته جلوگیری میکند. در این آموزش قصد دارم نحوه تنظیم و پیکربندی فایروال ویندوز را با CMD توضیح دهم پس در ادامه همراه با نووا بلاگ باشید.
پیشنهاد: اگر میخواهید فایروال ویندوز را به صورت گرافیکی تنظیم کنید میتوانید از آموزش تنظیم فایروال ویندوز استفاده کنید.
تنظیم و پیکربندی Firewall با CMD
برای تنظیم و پیکربندی فایروال ویندوز میتوانید از دستور Netsh Advfirewall استفاده کنید برای این منظور ابتدا Command Prompt را به صورت Run As Administrator اجرا کنید تا مجوز کافی برای ویرایش و مدیریت سیستم عامل ویندوز را داشته باشید سپس میتوانید وارد محیط دستور Netsh شوید و از آنجا با وارد کردن دستور Advfirewall وارد محیط پیکربندی فایروال شوید. برای مثال:
Netsh -c advfirewall
فعال کردن و غیر فعال کردن فایروال بر اساس نوع پروفایل شبکه
برای فعال کردن یا غیر فعال کردن فایروال ویندوز بر اساس نوع پروفایل شبکه میبایست از دستور Set در محیط Advfirewall با نوع پروفایل شبکه مورد نظر و پارامتر State استفاده کنید. مثلا برای غیر فعال کردن پروفایل دامین دستور netsh به صورت زیر نوشته میشود:
Netsh -c advfirewall Set domainprofile state off
نکته: توجه کنید شما میتوانید از دستور Netsh برای پیکربندی فایروال به صورت کامل استفاده کنید. یعنی به طور کلی نیاز نیست ابتدا وارد محیط AdvFirewall دستور Netsh شوید. برای مثال:
Netsh Advfirewall set domainprofile state off
برای فعال سازی مجدد فایروال دامنه میبایست بجای استفاده از مقدار off از کلمه on استفاده کنید. برای مثال:
Netsh advfirewall set domainprofile state on
- برای تنظیم پروفایل دامنه باید از domainprofile استفاده کنید.
- برای تنظیم پروفایل عمومی باید از publicprofile استفاده کنید.
- برای تنظیم پروفایل خصوصی باید از privateprofile استفاده کنید.
- برای تنظیم همه پروفایل ها باید از allprofile استفاده کنید.
- برای تنظیم پروفایل جاری باید از currentprofile استفاده کنید.
بررسی وضعیت پروفایل های فایروال
برای بررسی وضعیت پروفایل های فایروال میبایست از دستور show در مد Advfirewall استفاده کنید و در جلوی آن نام پروفایل مد نظر خود را وارد کنید. مثلا برای بررسی وضعیت پروفایل Private دستور Netsh Advfirewall به شکل زیر نوشته میشود:
Netsh advfirewall show privateprofile
همانطور که در تصویر بالا مشاهده میکنید دستور 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
بعد از تنظیم پروفایل فایروال میتوانید دوباره از دستور Netsh advfirewall show برای مشاهده تنظیمات انجام شده پروفایل فایروال خود استفاده کنید.
نوشتن قانون در فایروال با دستور Netsh
برای نوشتن قانون در فایروال با دستور Netsh میبایست از مد Firewall در Advfirewall استفاده کنید سپس میتوانید با دستور Add قانون مورد نظر خود را به صورت inbound یا Outbound اضافه کنید یا با دستور Set قوانین موجود در فایروال را ویرایش کنید. ابتدا بگذارید پارامترهای دستور Add را به شما توضیح دهم. اگر دستور Netsh Advfirewall را به صورت زیر وارد کنید فهرست پارامترهای آنرا مشاهده خواهید نمود:
Netsh advfirewall firewall add rule /?
توضیح پارامتر های ایجاد 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
همانطور که در تصویر بالا مشاهده میکنید دستور 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
توجه کنید در دستور بالا با پارامتر 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”
سلام وقتتون بخیر. اگر همین اموزشها رو بصورت فایل pdf درست میکردین خیلی بهتر بود.ممنون
سلام
تو نسخه اپلیکیشن نووا بلاگ همه مطالب رو میتونید به صورت PDF دریافت کنید ولی متاسفانه هنوز توسعه داده نشده
ممنون از صبر تون 🙂
با سلام
در قسمت مسدود کردن دسترسی به شبکه بسته به نوع کارت شبکه میخوام فقط یکی از دو تا کارت شبکه ام مسدود بشه
چه دستوری باید بهش اضافه کنم؟
سلام شایان
شما میتونید از پارامتر LocalIP استفاده کنید و آدرس کارت شبکه مد نظرت رو در جلوش مشخص کنی