Artikel ini membahas dasar-dasar mengelola pengaturan dan aturan Firewall Windows yang tertanam dari baris perintah PowerShell. Kami akan melihat cara mengaktifkan / menonaktifkan firewall untuk berbagai profil, membuat dan menghapus aturan firewall, dan mempertimbangkan skrip kecil yang memungkinkan Anda membuat tabel yang nyaman dengan serangkaian aturan firewall aktif saat ini.
Konten:
- Mengelola Profil Jaringan Firewall Windows dari PowerShell
- Buat, edit, dan hapus aturan Windows Firewall dari PowerShell
- Mendaftarkan Aturan Windows Firewall melalui PowerShell
Anda dapat mengelola pengaturan Windows Firewall dari Panel Kontrol konsol grafis -> Sistem dan Keamanan -> Windows Defender Firewall. Namun, mulai dari Windows 8.1 (Windows Server 2012R2), modul PowerShell bawaan ditambahkan ke sistem untuk mengontrol firewall bawaan Netsecurity.
Sebelumnya, perintah itu digunakan untuk mengelola aturan dan pengaturan Windows Firewallfirewall advfirewall netsh
. Ada 85 perintah yang tersedia di modul NetSecurity pada Windows 10. Anda dapat mencantumkannya:
Get-Command -Module NetSecurity
Mengelola Profil Jaringan Firewall Windows dari PowerShell
Ada tiga jenis profil jaringan di Windows Firewall:
- Domain - berlaku untuk komputer yang termasuk dalam domain Direktori Aktif;
- Pribadi (pribadi) - jaringan rumah atau kerja;
- Publik - jaringan publik.
Setiap profil mungkin berbeda dalam set aturan firewall yang digunakan. Secara default, semua antarmuka jaringan komputer dilindungi oleh firewall dan ketiga tipe profil diterapkan pada mereka..
Untuk mengaktifkan ketiga profil jaringan Domain, Publik dan Pribadi, gunakan perintah:
Set-NetFirewallProfile -All -Enabled Benar
Atau tentukan profil tertentu alih-alih Semua:
Set-NetFirewallProfile -Profile Publik -Enabled Benar
Untuk menonaktifkan firewall untuk ketiga profil jaringan, gunakan perintah:
Set-NetFirewallProfile -All -Enabled False
Menggunakan cmdlet Set-NetFirewallProfile
Anda dapat mengubah pengaturan profil (tindakan default, pencatatan, jalur dan ukuran file log, pengaturan peringatan, dll.).
Seperti yang mungkin Anda ketahui, secara default, Windows Firewall termasuk dalam sistem operasi modern untuk semua profil. Dalam pengaturan profil, semua koneksi keluar diizinkan dan koneksi masuk diblokir (kecuali untuk yang diizinkan).
Ubah tindakan default untuk profil Publik - blokir semua koneksi yang masuk.
Set-NetFirewallProfile -Nama Publik -DefaultInboundAction Blok
Pengaturan profil saat ini dapat ditampilkan sebagai berikut:
Dapatkan-NetFirewallProfile -Nama Publik
Jika Anda mengontrol pengaturan Windows Firewall melalui GPO, Anda dapat menampilkan pengaturan profil yang dihasilkan saat ini sebagai berikut:
Dapatkan-NetFirewallProfile -policystore activestore
Verifikasi bahwa semua pengaturan firewall berlaku untuk semua antarmuka jaringan komputer.
Dapatkan-NetFirewallProfile -Nama Publik | fl DisabledInterfaceAliases
Jika semua antarmuka dilindungi, perintah harus kembali:
DisabledInterfaceAliases: NotConfigured
Anda dapat menonaktifkan profil tertentu untuk suatu antarmuka (Anda dapat mencantumkan nama antarmuka menggunakan cmdlet Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Seperti yang Anda lihat, sekarang profil Publik tidak berlaku untuk Ethernet0:
DisabledInterfaceAliases: Ethernet0
Anda dapat mengonfigurasi pengaturan untuk mencatat koneksi jaringan pada level setiap profil. Secara default, log Windows Firewall disimpan di direktori% systemroot% \ system32 \ LogFiles \ Firewall, ukuran file adalah 4 MB. Anda dapat mengubah untuk mengaktifkan koneksi koneksi dan meningkatkan ukuran file maksimum:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName '% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log'
Buat, edit, dan hapus aturan Windows Firewall dari PowerShell
Ada 9 cmdlet untuk mengelola aturan firewall:
- New-NetFirewallRule
- Salin-NetFirewallRule
- Nonaktifkan-NetFirewallRule
- Aktifkan-NetFirewallRule
- Dapatkan-NetFirewallRule
- Hapus-NetFirewallRule
- Ganti nama-NetFirewallRule
- Set-NetFirewallRule
- Tampilkan-NetFirewallRule
Mari kita lihat beberapa contoh sederhana membuka port di Windows Firewall.
Misalnya, jika Anda ingin mengizinkan koneksi TCP yang masuk ke port 80 dan 443 untuk profil Domain dan Pribadi, gunakan perintah ini:
New-NetFirewallRule -DisplayName 'WEB-Inbound' -Profile @ ('Domain', 'Private') -Berbagi Arah -Action Allow -Protocol TCP -LocalPort @ ('80', '443')
Anda dapat mengizinkan atau memblokir lalu lintas untuk program tertentu. Misalnya, Anda ingin memblokir koneksi keluar untuk FireFox:
New-NetFirewallRule -Program "C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe" -Aksi Blok -Profil Domain, Pribadi -DisplayName "Block Firefox" -Keterangan "Block Firefox" -Description "Block Firefox" -Direction Outbound
Izinkan koneksi RDP masuk pada port 3389 dengan hanya satu alamat IP:
New-NetFirewallRule -DisplayName "AllowRDP" -RemoteAddress 192.168.1.55 -Pembayaran Arah -Protocol TCP -LocalPort 3389 -Action Allow
Untuk mengaktifkan ping untuk alamat dari subnet yang ditentukan, gunakan perintah:
$ ips = @ ("192.168.1.50-192.168.1.60", "192.165.2.22-192.168.2.200", "10.10.0.0/16")
New-NetFirewallRule -DisplayName "Izinkan ICMPv4 inbound" -Input Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Allow
New-NetFirewallRule -DisplayName "Izinkan ICMPv6 inbound" -Input Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Action Allow
Untuk mengedit aturan firewall yang ada, gunakan cmdlet Set-NetFirewallRule. Misalnya, Anda ingin mengizinkan koneksi masuk dari alamat IP yang ditentukan untuk aturan yang dibuat sebelumnya:
Get-NetFirewallrule -DisplayName 'WEB-Inbound' | Dapatkan-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.20
Jika Anda perlu menambahkan beberapa alamat IP ke aturan firewall, gunakan skrip berikut:
$ ips = @ ("192.168.1.50", "192.165.2.22", ”192.168.1.20”)
Get-NetFirewallrule -DisplayName 'WEB-Inbound' | Set-NetFirewallRule -RemoteAddress $ ips
Cetak semua alamat IP yang terkandung dalam aturan firewall:
Get-NetFirewallrule -DisplayName 'Izinkan ICMPv4 masuk' | Get-NetFirewallAddressFilter
Anda dapat mengaktifkan / menonaktifkan aturan firewall menggunakan cmdlet Disable-NetFirewallRule dan Enable-NetFirewallRule.
Disable-NetFirewallRule -DisplayName 'WEB-Inbound'
Untuk mengaktifkan ICMP (ping), jalankan perintah:
Aktifkan-NetFirewallRule -Nama FPS-ICMP4-ERQ-In
Untuk menghapus aturan firewall, gunakan cmdlet Remove-NetFirewallRule..
Mendaftarkan Aturan Windows Firewall melalui PowerShell
Daftar aturan aktif untuk lalu lintas masuk dapat ditampilkan sebagai berikut:
Get-NetFirewallRule | di mana ($ _. enabled -eq $ True) -and ($ _. Direction -eq "Inbound") | ft
Jika, misalnya, kita perlu mencantumkan aturan pemblokiran yang keluar:
Get-NetFirewallRule -Action Block -Enabled Benar -Direction Outbound
Jika Anda ingin menampilkan nama program dalam aturan:
Get-NetFirewallRule -Action Block -Enabled Benar -Direction Outbound | % $ _. Nama; $ _ | Dapatkan-NetFirewallApplicationFilter
Seperti yang Anda lihat, cmdlet Get-NetFirewallRule tidak mencantumkan port port jaringan dan alamat IP untuk aturan firewall. Untuk menampilkan semua informasi tentang koneksi masuk (keluar) yang diizinkan dalam bentuk yang lebih nyaman dengan nomor port yang ditampilkan, gunakan skrip berikut:
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Tabel -Nama Properti,
@ 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,
Diaktifkan, Profil, Arah, Tindakan
PowerShell menyediakan manajemen perintah-perintah Windows Firewall yang ekstensif. Anda dapat secara otomatis menjalankan skrip PowerShell untuk membuka / menutup port ketika peristiwa tertentu terjadi. Pada artikel berikutnya, kami akan mempertimbangkan sistem sederhana berdasarkan PowerShell dan Windows Firewall untuk secara otomatis memblokir alamat IP yang darinya kata sandi jarak jauh ditebak melalui RDP pada server Windows VDS.