Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Bài viết này cung cấp kiến ​​thức cơ bản về cách quản lý cài đặt và quy tắc của Tường lửa Bộ bảo vệ Windows tích hợp với Bảo mật nâng cao bằng PowerShell. Chúng tôi sẽ xem xét cách bật / tắt tường lửa cho các cấu hình mạng khác nhau, tạo hoặc xóa các quy tắc tường lửa và viết một tập lệnh PS nhỏ để có được một bảng thuận tiện hiển thị tập hợp các quy tắc tường lửa đang hoạt động hiện tại.

Bạn có thể quản lý cài đặt Tường lửa của Windows từ bảng điều khiển đồ họa:Bảng điều khiển -> Hệ thống và Bảo mật -> Tường lửa của Bộ bảo vệ Windows . Tuy nhiên, bắt đầu với Windows 8.1 (Windows Server 2012 R2), bạn có thể sử dụng NetSecurity tích hợp sẵn Mô-đun PowerShell để quản lý tường lửa.

Trước đây, lệnh sau được sử dụng để quản lý các quy tắc và cài đặt Tường lửa của Windows: netsh advfirewall tường lửa

Có 85 lệnh có sẵn trong mô-đun NetSecurity trên Windows 10. Bạn có thể hiển thị toàn bộ danh sách:

Get-Command -Module NetSecurity

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Cách Quản lý Cấu hình Mạng Tường lửa Windows từ PowerShell?

Có ba loại cấu hình mạng trong Tường lửa của Windows:

  • Tên miền - được áp dụng cho các máy tính trong miền Active Directory
  • Riêng tư - mạng gia đình hoặc mạng công ty
  • Công khai - mạng công cộng

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Nhận thức về vị trí mạng (NLA) giữ thông tin về các loại mạng trong cơ sở dữ liệu của nó. Bạn có thể thay đổi cấu hình mạng của mình (vị trí) nếu nó được phát hiện không chính xác.

Mỗi cấu hình mạng (vị trí) có thể khác nhau tùy theo bộ quy tắc tường lửa được sử dụng. Theo mặc định, tất cả các giao diện mạng của máy tính đều được bảo vệ bởi tường lửa và cả ba loại cấu hình đều được áp dụng cho chúng.

Để bật cả ba cấu hình mạng:Miền, Công khai và Riêng tư, hãy sử dụng lệnh sau:

Set-NetFirewallProfile -All -Enabled True

Hoặc đặt cấu hình cụ thể thay vì Tất cả :

Set-NetFirewallProfile -Profile Public -Enabled True

Để tắt tường lửa cho cả ba vị trí mạng, hãy sử dụng lệnh:

Set-NetFirewallProfile -All -Enabled False

Sử dụng lệnh ghép ngắn Set-NetFirewallProfile, bạn có thể thay đổi các tùy chọn cấu hình (hành động mặc định, ghi nhật ký, đường dẫn đến và kích thước của tệp nhật ký, cài đặt thông báo, v.v.).

Bạn có thể biết rằng trong các phiên bản hệ điều hành hiện đại, Tường lửa của Windows được bật cho tất cả các cấu hình. Tất cả các kết nối ra ngoài đều được phép và các kết nối đến bị chặn (trừ những kết nối được phép) trong cài đặt hồ sơ.

Hãy thay đổi hành động mặc định cho hồ sơ Công khai để chặn tất cả các kết nối đến.

Set-NetFirewallProfile –Name Public –DefaultInboundAction Block

Bạn có thể hiển thị cài đặt cấu hình hiện tại như sau:

Get-NetFirewallProfile -Tên Public

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Nếu bạn quản lý cài đặt Tường lửa của Windows bằng GPO, bạn có thể hiển thị cài đặt cấu hình kết quả hiện tại như sau:

Get-NetFirewallProfile -policystore activestore

Đảm bảo rằng tất cả cài đặt tường lửa được áp dụng cho tất cả các giao diện mạng của máy tính.

Get-NetFirewallProfile -Tên Public | fl DisabledInterfaceAliases

Nếu tất cả các giao diện được bảo vệ, lệnh sẽ trả về như sau:

DisabledInterfaceAliases : {NotConfigured}

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Bạn có thể tắt cấu hình giao diện cụ thể (để hiển thị danh sách tên giao diện, hãy sử dụng Get-NetIPInterface):

Set-NetFirewallProfile -Tên Public -DisabledInterfaceAliases "Ethernet0"

Như bạn có thể thấy, Hồ sơ công khai không còn được áp dụng cho Ethernet0 nữa:

DisabledInterfaceAliases : {Ethernet0}

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Bạn có thể đặt các tùy chọn ghi nhật ký kết nối mạng ở cấp cấu hình. Theo mặc định, nhật ký Tường lửa của Windows được lưu trữ trong% systemroot% \ system32 \ LogFiles \ Firewall và kích thước tệp là 4MB. Bạn có thể bật tất cả ghi nhật ký kết nối và thay đổi kích thước tệp tối đa:

Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log’

Cách tạo, chỉnh sửa hoặc xóa quy tắc tường lửa của Windows với PowerShell?

Có 9 lệnh ghép ngắn để quản lý các quy tắc tường lửa của bạn:

  • New-NetFirewallRule
  • Copy-NetFirewallRule
  • Disable-NetFirewallRule
  • Enable-NetFirewallRule
  • Get-NetFirewallRule
  • Remove-NetFirewallRule
  • Đổi tên-NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Hãy xem xét một số ví dụ đơn giản về cách mở các cổng trong Tường lửa của Windows.

Ví dụ:nếu bạn muốn cho phép các kết nối TCP gửi đến các cổng 80 và 443 cho các cấu hình Miền và Riêng tư, hãy sử dụng lệnh này:

New-NetFirewallRule -DisplayName 'HTTP-Inbound' -Profile @ ('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @ ('80', '443')

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Bạn có thể cho phép hoặc chặn quyền truy cập mạng cho một ứng dụng. Ví dụ:bạn muốn chặn các kết nối gửi đi cho Firefox:

New-NetFirewallRule -Phương trình “C:\ Program Files (x86) \ Mozilla Firefox \ firefox.exe” -Chặn hành động -Tên miền tệp, riêng tư -DisplayName “Chặn trình duyệt Firefox” -Mô tả “Chặn trình duyệt Firefox” -Direction Outbound

Để cho phép kết nối RDP đầu vào trên cổng 3389 chỉ từ một địa chỉ IP:

New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

Để cho phép ping (ICMP) cho các địa chỉ từ mạng con IP hoặc dải IP được chỉ định, hãy sử dụng các lệnh sau:

$ ips =@ ("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", "10.1.0.0/16")
New-NetFirewallRule -DisplayName "Cho phép ICMPv4 gửi đến" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Cho phép hành động

Trong bài viết trước, chúng tôi đã hướng dẫn cách chặn truy cập trang web bằng cả địa chỉ IP và tên miền / trang web DNS bằng PowerShell.

Để chỉnh sửa quy tắc tường lửa hiện có, lệnh ghép ngắn Set-NetFirewallRule được sử dụng. Ví dụ:để cho phép các kết nối đến từ địa chỉ IP được chỉ định cho quy tắc được tạo trước đó:

Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10

Nếu bạn muốn thêm nhiều địa chỉ IP vào quy tắc tường lửa, hãy sử dụng tập lệnh này:

$ ips =@ ("192.168.2.15", "192.168.2.17", "192.168.100.15")
Get-NetFirewallrule -DisplayName 'WEB-Inbound' | Set-NetFirewallRule -RemoteAddress $ ips

Để hiển thị tất cả các địa chỉ IP trong quy tắc tường lửa:

Get-NetFirewallrule -DisplayName 'Cho phép ICMPv4 đến' | Get-NetFirewallAddressFilter

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Bạn có thể bật / tắt các quy tắc tường lửa bằng cách sử dụng Disable-NetFirewallRule Enable-NetFirewallRule lệnh ghép ngắn.

Disable-NetFirewallRule –DisplayName 'WEB-Inbound'

Để cho phép ICMP (ping), hãy chạy lệnh sau:

Enable-NetFirewallRule -Tên FPS-ICMP4-ERQ-In

Để loại bỏ quy tắc tường lửa, lệnh ghép ngắn Remove-NetFirewallRule được sử dụng.

Liệt kê Quy tắc tường lửa của Windows với PowerShell

Bạn có thể hiển thị danh sách các quy tắc tường lửa đang hoạt động cho lưu lượng truy cập vào của mình như sau:

Get-NetFirewallRule | trong đó {($ _. đã bật -eq $ True) -and ($ _. Direction -eq "Inbound")} | ft

Nếu bạn muốn hiển thị danh sách các quy tắc chặn gửi đi:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound

Để hiển thị tên ứng dụng trong quy tắc:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | % {$ _. Tên; $ _ | Get-NetFirewallApplicationFilter}

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

Như bạn có thể thấy, lệnh ghép ngắn Get-NetFirewallRule không hiển thị các cổng mạng và địa chỉ IP cho các quy tắc tường lửa của bạn. Để hiển thị thông tin chi tiết về các kết nối đến (đi) được phép theo cách hiển thị số cổng thuận tiện hơn, hãy sử dụng tập lệnh PowerShell sau:

Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Tên thuộc tính,
@ {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}},
Đã bật, Hồ sơ, Hướng, Hành động

Định cấu hình Quy tắc tường lửa của Windows với PowerShell

PowerShell cung cấp nhiều cơ hội để quản lý các quy tắc Tường lửa của Windows từ dấu nhắc lệnh. Bạn có thể tự động chạy các tập lệnh PowerShell để mở / đóng các cổng nếu một số sự kiện nhất định xảy ra. Trong bài viết tiếp theo, chúng tôi sẽ xem xét một giải pháp đơn giản dựa trên PowerShell- và Windows Firewall để tự động chặn các địa chỉ IP đang cố gắng lấy mật khẩu brute-force từ xa qua RDP trên máy chủ Windows VDS của bạn.