ამ სტატიაში ვისაუბრებ PowerShell-ით Windows Defender Firewall -ის მართვაზე. ჩვენ განვიხილავთ, თუ როგორ უნდა ჩავრთოთ და გამოვრთოთ firewall, შევქმნათ, დავარედაქტიროთ ან წავშალოთ, დავაბექაფოთ და აღვადგინოთ Firewall წესები.
როგორც წესი, Windows Firewall-ის პარამეტრები იმართება გრაფიკული ინტერფეისით Control Panel -> System and Security -> Windows Defender Firewall -> Advanced settings (ან Run-დან wf.msc). Windows Firewall-ის კონფიგურაციის და მართვის უმეტესი ოპერაცია შეიძლება შესრულდეს ასევე Powershell-ის NetSecurity მოდულის მეშვეობითაც (მოდული ხელმისაწვდომია Windows PowerShell 5.1-დან). cmd-ის შემთხვევაში გამოიყენება ბრძანება netsh advfirewall firewall, თუმცა PowerShell უფრო მოქნილ და თანამედროვე გადაწყვეტილებად მიიჩნევა.
Windows PowerShell-ის მეშვეობით თქვენ შეგიძლიათ მართოთ არა მარტო ლოკალური, არამედ დაშორებული კომპიუტერის Firewall-ც.
გაითვალისწინეთ, რომ Firewall-თან დაკავშირებული ბრძანებების უმეტესი წილის შესასრულებლად საჭიროა PowerShell ადმინის უფლებებით იყოს გაშვებული.
NetSecurity მოდულის cmdlet-ების (ბრძანებების) ნახვა შეგიძლიათ ბრძანებით:
Get-Command -Module NetSecurity
Firewall-ის ჩართვა/გამორთვა
სტანდარტულად Windows Firewall ჩართულია. ამაში შეგვიძლია დავრწმუნდეთ ბრძანებით:
Get-NetFirewallProfile | Format-Table Name, Enabled
Windows Firewall-ი მუშაობს სამი ტიპის ქსელთან:
- Domain – Active Directory Domain-ში გაწევრიანებული კომპიუტერები
- Private – სახლის, ოფისის ქსელები
- Public – საჯარო სივრცეებში არსებული ქსელები (კაფეების, რესტორნების და ა.შ.)
ნაგულისხმევად, Windows Firewall ატარებს ყველა სტანდარტულ (ხოლო მისთვის უცნობ კავშირის მოთხოვნაზე მომხმარებელს ეკითხება) გამავალ და ბლოკავს ყველა შემომავალ კავშირს (გარდა მომხმარებლის მიერ ნებადართულისა) ქსელის თითოეული პროფილისთვის.
თითოეულ ქსელის პროფილს (ადგილმდებარეობას) შეიძლება ჰქონდეს Firewall-ის rule (წესი). როგორც წესი, კომპიუტერის ყველა ქსელური ინტერფეისი დაცულია firewall-ით.
Firewall-ის სრულად გასათიშად გამოიყენეთ ბრძანება:
Set-NetFirewallProfile -All -Enabled False
კონკრეტული პროფილისთვის Firewall-ის გასათიშად გამოიყენეთ ბრძანება:
Set-NetFirewallProfile -Profile Public -Enabled False
Firewall-ის ჩასართავად გამოიყენეთ ბრძანება
Set-NetFirewallProfile -All -Enabled True
ქსელის მიმდინარე პროფილის საჩვენებლად გამოიყენეთ ბრძანება:
Get-NetConnectionProfile
Firewall წესების მართვა
არსებობს 9 Powershell сmdlet, რომელიც დაგეხმარებათ Windows-ზე Firewall წესების (rules) მართვაში
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
сmdlet სახელები პირდაპირ მიგვანიშნებენ მათ შესაძლებლობებზე, ამიტომ პირდაპირ გადავიდეთ მაგალითების გარჩევაზე
წესების დამატება Firewall-ში
წესების დასამატებლად გამოიყენება ბრძანება:
New-NetFirewallRule
მაგალითისთვის სისტემაში არსებობს რაიმე Web სერვისი და შესაბამისად თქვენ გინდათ დაუშვათ შემომავალი 80 (HTTP) და 443 (HTTPS) პორტები:
New-NetFirewallRule -DisplayName ‘HTTP-Inbound’ -Profile @(‘Domain’, ‘Private’) -Direction Inbound -Action Allow -Protocol TCP -LocalPort @(’80’, ‘443’)
თუ გინდათ გახსნათ შემომავალი RDP წვდომა მხოლოდ 192.168.1.100 მისამართისთვის სტანდარტულ პორტზე:
New-NetFirewallRule -DisplayName “AllowRDP” –RemoteAddress 192.168.1.100 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
ICMP პინგის IP მისამართების და ქვექსელების (subnet) კონკრეტული დიაპაზონიდან დასაშვებად, შექმენით შემდეგი წესი:
$ipebi = @(“192.168.1.1-192.168.1.100”, ”10.1.0.0/16”)
New-NetFirewallRule -DisplayName “Allow inbound Ping” -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ipebi -Action Allow
პირველ რიგში ჩვენ შევქმენით ცვლადი $ipebi, რომელშიც მივუთითეთ ჩვენთვის ყველა სასურველი IP მისამართი და საბნეტი, შემდეგ უკვე ეს ცვლადი მივუთითეთ ჩვენ ახალ წესში.
კონკრეტული აიპის სრულად დასაშვებად (whitelist), გამოიყენეთ წესი:
$IP = ‘192.168.1.20’
New-NetFirewallRule -DisplayName “Allow $IP” -Direction Inbound -Action Allow -RemoteAddress $IP3
არსებული წესის მოდიფიცირება
თუ გსურთ შეცვალოთ firewall-ის არსებული წესი, გამოიყენეთ Set-NetFirewallRule cmdlet. ზემოთ ჩვენ დავუშვით Firewall-ში Web პორტები. ასეთი სახით ეს წესი ყველა შემომავალ კავშირის მოთხოვნას დააკმაყოფილებს. თუ ჩვენ გვინდა ვებ სერვისებზე წვდომა მხოლოდ ერთ IP-ს ქონდეს, წესი უნდა დავარედაქტიროთ:
Get-NetFirewallrule -DisplayName ‘HTTP-Inbound’ | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
არსებული წესების ჩართვა/გამორთვა და წაშლა
წესების გამორთვა/ჩართვისთვის გამოიყენეთ შესაბამისად Disable-NetFirewallRule და Enable-NetFirewallRule
ასე მაგალითად, ჩვენთვის უკვე ნაცნობი ვებ სერვისების რულის გასათიშად:
Disable-NetFirewallRule –DisplayName ‘HTTP-Inbound’
გათიშული რულის ჩასართავად:
Enable-NetFirewallRule -DisplayName ‘HTTP-Inbound’
წესის სრულად წაშლისთვის
Remove-NetFirewallRule -DisplayName ‘HTTP-Inbound’
Firewall-ის აქტიური წესების ჩვენება
გამავალი წესების სანახავად აკრიფეთ
Get-NetFirewallRule -Enabled True -Direction Outbound
და ჩასქროლეთ ბოლომდე
თქვენ შეგიძლიათ ნახოთ მაგალითად ამკრძალავი წესების სიაც:
Get-NetFirewallRule -Enabled True -Action Block
როგორც ხედავთ, Get-NetFirewallRule cmdlet არ აჩვენებს ქსელის პორტებს და IP მისამართებს. პორტის ნომრებით დაშვებული შემომავალი (გამავალი) კავშირების შესახებ დეტალური ინფორმაციის საჩვენებლად, გამოიყენეთ შემდეგი PowerShell სკრიპტი:
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name,
@{Name=’Protocol’;Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name=’LocalPort’;Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name=’RemotePort’;Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name=’RemoteAddress’;Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled,Profile,Direction,Action
Firewall-ის წესების დარესეტება, დაბექაფება, აღდგენა
netsh advfirewall reset ბრძანებით თქვენ შეგიძლიათ დაარესეტოთ Firewall-ი
დარესეტების წინ თუ გინდათ წესების ბექაფის აღება გამოიყენეთ netsh advfirewall export
netsh advfirewall export “D:\firewall-backup.wfw”
ბექაფის აღდგენა შეგიძლიათ netsh advfirewall import
netsh advfirewall import “D:\firewall-backup.wfw”
Leave A Comment