Mengelola Aturan Windows Firewall dengan PowerShell

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 Firewall firewall 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.

Informasi jenis jaringan disimpan oleh layanan Network Location Awareness (NLA) dalam database. Anda dapat mengubah profil jaringan jika tidak didefinisikan dengan benar.

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

Pada artikel sebelumnya, kami menunjukkan bagaimana menggunakan PowerShell Anda dapat memblokir akses ke situs tidak hanya dengan alamat IP, tetapi juga dengan domain DNS / nama situs.

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.