آموزش ایران اکسس کردن سرور ویندوز با Windows Firewall
مقدمه
در برخی سرورهای ویندوزی لازم است دسترسیهای ورودی سرور فقط به IPهای ایران محدود شود و IPهای خارج از ایران امکان دسترسی به سرویسهای سرور را نداشته باشند.
در این آموزش نحوه تنظیم Windows Firewall برای ایجاد ساختار Iran Access بررسی میشود.
ساختار موردنظر به شکل زیر است:
IP مدیریت → Allow → تمام پورتها
IPهای ایران → Allow → تمام پورتها
سایر IPها → Block → تمام پورتها
هدف این تنظیم این است که تمام پورتهای ورودی سرور برای IPهای ایران قابل دسترسی باشند، در حالی که IPهای خارج از ایران مسدود شوند. همچنین IP مدیریتی مورد استفاده برای RDP باید قبل از اعمال محدودیت، در لیست Allow قرار بگیرد تا دسترسی مدیریتی قطع نشود.
نکته مهم قبل از شروع
قبل از هرگونه تغییر در Windows Firewall، حتماً IP عمومی فعلی که از طریق آن به سرور RDP میکنید را مشخص کنید.
اگر IP مدیریتی شما در Ruleهای Allow قرار نگیرد، ممکن است بعد از اعمال تنظیمات Firewall، اتصال RDP قطع شود.
در صورت امکان، بهتر است این تغییرات از طریق KVM، Console یا سایر روشهای Out-of-Band انجام شود تا در صورت بروز مشکل همچنان دسترسی مدیریتی به سرور وجود داشته باشد.
1. ساختار پیشنهادی Iran Access
برای پیادهسازی این سناریو بهتر است به جای ایجاد یک Rule عمومی برای Block کردن تمام IPهای خارجی، از ساختار زیر استفاده شود:
-
IP مدیریتی سرور Allow شود.
-
رنجهای IP ایران Allow شوند.
-
Default Inbound Action روی Block قرار داشته باشد.
-
Ruleهای قبلی که دسترسی عمومی به سرویسها ایجاد میکنند بررسی شوند.
در این حالت هر IP که در Ruleهای Allow قرار نداشته باشد، توسط Policy پیشفرض Inbound مسدود خواهد شد.
2. مشخص کردن IP مدیریتی
ابتدا IP عمومی سیستمی که با آن به سرور RDP متصل میشوید را مشخص کنید.
برای مثال:
$ManagementIP = "203.0.113.10"
توجه داشته باشید که IP بالا فقط یک IP نمونه است و باید با IP واقعی مدیریتی خودتان جایگزین شود.
اگر IP مدیریتی شما Dynamic باشد، در صورت تغییر IP ممکن است دسترسی RDP قطع شود. بنابراین استفاده از IP ثابت مدیریتی توصیه میشود.
3. دریافت رنجهای IP ایران
برای اینکه IPهای ایران بهدرستی Allow شوند، باید از لیست CIDRهای بهروز ایران استفاده شود.
استفاده از لیستهای قدیمی توصیه نمیشود، زیرا ممکن است باعث شود برخی IPهای واقعی ایران در Firewall مجاز نباشند.
یکی از منابع قابل استفاده برای دریافت اطلاعات مربوط به منابع IP کشورها، RIPE NCC است.
در PowerShell میتوان اطلاعات IPv4 مربوط به ایران را دریافت کرد:
$data = Invoke-RestMethod "https://stat.ripe.net/data/country-resource-list/data.json?resource=ir&v4_format=prefix"
$IranCIDRs = $data.data.resources.ipv4
$IranCIDRs.Count
برای بررسی بخشی از لیست دریافتشده:
$IranCIDRs | Select-Object -First 10
قبل از ادامه کار، مطمئن شوید که لیست CIDRها با موفقیت دریافت شده و مقدار Count صفر نیست.
4. ساخت Rule برای IP مدیریتی
پس از مشخص کردن IP مدیریتی، یک Rule برای Allow کردن تمام پورتها و پروتکلها از این IP ایجاد میکنیم.
دستور زیر را در PowerShell با دسترسی Administrator اجرا کنید:
New-NetFirewallRule `
-DisplayName "IR-ACCESS - Management IP" `
-Direction Inbound `
-Action Allow `
-Protocol Any `
-LocalPort Any `
-RemoteAddress $ManagementIP `
-Profile Any
این Rule باعث میشود IP مدیریتی مشخصشده برای تمام پورتهای ورودی مجاز باشد.
5. ساخت Rule برای IPهای ایران
در مرحله بعد باید CIDRهای ایران را Allow کنیم.
دستور زیر تمام رنجهای دریافتشده برای ایران را در یک Rule قرار میدهد:
New-NetFirewallRule `
-DisplayName "IR-ACCESS - Iran CIDRs" `
-Direction Inbound `
-Action Allow `
-Protocol Any `
-LocalPort Any `
-RemoteAddress $IranCIDRs `
-Profile Any
با این Rule، ترافیک ورودی از رنجهای IP ایران برای تمام پورتها و پروتکلها مجاز خواهد بود.
6. بررسی Default Inbound Policy
در مرحله بعد باید وضعیت Default Inbound Action را بررسی کنیم.
دستور زیر را اجرا کنید:
Get-NetFirewallProfile | Select-Object Name, DefaultInboundAction, DefaultOutboundAction
در حالت موردنظر، مقدار DefaultInboundAction باید روی Block باشد.
اگر لازم بود Policy ورودی روی Block قرار گیرد، دستور زیر را اجرا کنید:
Set-NetFirewallProfile -Profile Domain,Private,Public -DefaultInboundAction Block
توجه داشته باشید که قبل از اجرای این دستور، حتماً Ruleهای ضروری مانند RDP و سایر سرویسهای مدیریتی را بررسی کنید.
7. بررسی Ruleهای قبلی Firewall
این مرحله بسیار مهم است.
ممکن است روی سرور از قبل Ruleهایی وجود داشته باشند که دسترسی Inbound را از تمام IPها Allow میکنند.
در چنین شرایطی، فقط ساختن Rule مربوط به IPهای ایران کافی نیست.
برای مشاهده Ruleهای Allow فعال، میتوانید از دستور زیر استفاده کنید:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Get-NetFirewallPortFilter |
Format-Table -AutoSize
Ruleهایی که برای سرویسهای مختلف دسترسی عمومی ایجاد کردهاند باید بررسی شوند.
برای مثال اگر یک سرویس دارای Rule زیر باشد:
RemoteAddress = Any
در این حالت ممکن است IPهای خارج از ایران نیز همچنان به آن سرویس دسترسی داشته باشند.
بنابراین Ruleهای عمومی موجود باید بررسی و در صورت نیاز اصلاح شوند.
8. بررسی Ruleهای Iran Access
برای بررسی Rule مربوط به IP مدیریت:
Get-NetFirewallRule -DisplayName "IR-ACCESS - Management IP" |
Format-List DisplayName,Enabled,Direction,Action,Profile
برای بررسی Rule مربوط به IPهای ایران:
Get-NetFirewallRule -DisplayName "IR-ACCESS - Iran CIDRs" |
Format-List DisplayName,Enabled,Direction,Action,Profile
برای مشاهده Remote Address مربوط به Rule ایران:
Get-NetFirewallRule -DisplayName "IR-ACCESS - Iran CIDRs" |
Get-NetFirewallAddressFilter |
Format-List RemoteAddress
9. تست دسترسی RDP
بعد از اعمال تنظیمات، ابتدا RDP را از همان IP مدیریتی تست کنید.
اگر اتصال RDP برقرار بود، یعنی IP مدیریتی در Firewall بهدرستی Allow شده است.
در صورتی که RDP قطع شده باشد، قبل از هرگونه تغییر بیشتر باید از طریق KVM، Console یا روش مدیریتی دیگری به سرور متصل شوید.
10. تست دسترسی از داخل ایران
برای بررسی عملکرد Iran Access، از یک IP داخل ایران یک سرویس یا پورت سرور را تست کنید.
در حالت صحیح:
IP ایران → دسترسی مجاز
به عنوان مثال اگر یک سرویس روی پورت مشخصی فعال باشد، اتصال از IP ایران باید برقرار شود.
11. تست دسترسی از خارج ایران
در مرحله بعد همان سرویس را از یک IP خارج از ایران تست کنید.
در حالت صحیح:
IP خارج از ایران → دسترسی مسدود
توجه داشته باشید که این تست باید از یک IP واقعاً خارج از محدوده ایران انجام شود.
12. بررسی IPv6
اگر روی سرور IPv6 فعال باشد، تنظیمات IPv4 بهتنهایی برای پیادهسازی کامل Iran Access کافی نیست.
ممکن است کاربر از طریق IPv6 به سرویس دسترسی پیدا کند، در حالی که محدودیت IPv4 بهدرستی اعمال شده است.
بنابراین در صورت فعال بودن IPv6، باید Ruleها و رنجهای IPv6 نیز بهصورت جداگانه بررسی و تنظیم شوند.
13. نکته مهم درباره پورتها
در این سناریو Rule مربوط به IP مدیریت و IPهای ایران با تنظیمات زیر ایجاد میشود:
Protocol = Any
Local Port = Any
بنابراین Rule برای تمام پورتها و پروتکلهای ورودی اعمال خواهد شد.
با این حال، دسترسی نهایی به هر سرویس همچنان به فعال بودن خود سرویس و سایر Ruleهای Windows Firewall وابسته است.
14. بازگردانی تنظیمات
در صورتی که نیاز به حذف Ruleهای ایجادشده داشته باشید، میتوانید از دستورات زیر استفاده کنید:
حذف Rule مربوط به IP مدیریت:
Remove-NetFirewallRule -DisplayName "IR-ACCESS - Management IP"
حذف Rule مربوط به IPهای ایران:
Remove-NetFirewallRule -DisplayName "IR-ACCESS - Iran CIDRs"
اگر Default Inbound Policy نیز تغییر کرده باشد، قبل از بازگردانی حتماً مقدار قبلی تنظیمات سرور را بررسی کنید.
جمعبندی
| مورد | تنظیم |
|---|---|
| IP مدیریت | Allow / Inbound / Any Port |
| IPهای ایران | Allow / Inbound / Any Port |
| IPهای خارج ایران | با Default Inbound = Block مسدود |
| RDP | قبل از اعمال Policy حتماً IP مدیریت Allow شود |
| IPv6 | در صورت فعال بودن، جداگانه بررسی شود |