cs:spravce:pripojovani:radius:nps:firewall_ipsec

Nastavení Firewall a IPsec

Nová generace národního RADIUSu uznává pro RadSec/IPsec spojení pouze certifikáty vydané autoritami eduroam CA 2 a eduPKI CA G 01!

Certifikáty od TCS a eduroam CA neobsahují požadované OID politiky, proto v nové generaci národního RADIUSu nejsou podporovány.

Servery nové generace národního RADIUSu používají certifikáty od eduPKI CA G 01, proto je třeba jí důvěřovat.

Obecné

Obecně je třeba povolit následující příchozí komunikaci:

Protokol/Místní port Odkud Popis Kdy
ICMP národní RADIUS, monitoring ověření dostupnosti Vždy
UDP/500 národní RADIUS IPsec, IKE Vždy
ESP národní RADIUS IPsec, ESP bez použití NAT-T
UDP/4500 národní RADIUS IPsec, ESP zapouzdřené v UDP při použití NAT-T
UDP/1812 národní RADIUS příchozí Access-Request pakety RADIUS má roli IdP nebo IdPSP
UDP/1812 monitoring, APčka příchozí Access-Request pakety RADIUS má roli SP nebo IdPSP
UDP/1813 APčka příchozí Accounting-Request pakety APčka posílají accounting

Pokud filtrujete i odchozí komunikaci, tak je třeba povolit i tu:

Protokol/Vzdálený port Kam Popis Kdy
ICMP národní RADIUS, monitoring ověření dostupnosti Vždy
UDP/500 národní RADIUS IPsec, IKE Vždy
ESP národní RADIUS IPsec, ESP bez použití NAT-T
UDP/4500 národní RADIUS IPsec, ESP zapouzdřené v UDP při použití NAT-T
UDP/1812 národní RADIUS odchozí Access-Request pakety RADIUS má roli SP nebo IdPSP

Dále je třeba nastavit, aby komunikace na národní RADIUS a z národního RADIUSU byla uznávána pouze v IPsec transportním módu.

Pro zjednodušení byla pravidla ve scriptu i návodu níže mírně zobecněna. Pokud přesně víte co děláte, můžete si Firewall nastavit přímo podle tabulek nahoře.

PowerShell script

Nejjednodušší cesta, jak nastavit Firewall a IPsec pravidla, je stáhnout si náš PowerShell script, otevřít ho v PowerShell ISE a upravit proměnné mezi řádky BEGIN OF CONFIGURATION a END OF CONFIGURATION. Pak ho přímo v PowerShell ISE spustit. Script vytvoří pravidla pro Firewall, včetně těch IPsecových, s prefixem _eduroam. Umí je po sobě i odstranit.

Společná nastavení

Vše provádíme v PowerShellu s administrátorskými právy. Nejprve si nadefinujeme základní proměnné.

Při použití IP protokolu verze 4 vypadají definice takto:

# tyto je třeba upravit:
$local_fqdn = "radius.instituce.cz"
$local_ip   = "78.77.76.75"
$ap_ips     = "10.1.1.2", "10.1.1.3", "192.168.215.0/24"
 
# tyto neupravujte:
$monitoring_ips = "78.128.248.234"
$flr_ips        = "78.128.248.10", "78.128.248.11", "78.128.248.12"
$icmp_version   = "ICMPv4"

Při použití IP protokolu verze 6 vypadají definice takto:

# tyto je třeba upravit:
$local_fqdn = "radius.instituce.cz"
$local_ip   = "2001:78:77:76::75"
$ap_ips     = "2001:78:77:76::1:2", "2001:78:77:76::1:3", "2001:78:77:76::2:0/112"
 
# tyto neupravujte:
$monitoring_ips = "2001:718:ff05:10b::234"
$flr_ips        = "2001:718:ff05:aca::1:10", "2001:718:ff05:aca::1:11", "2001:718:ff05:aca::1:12"
$icmp_version   = "ICMPv6"

V případě, že budete chtít použít NAT-T, musíte ho ve Firewallu povolit:

Set-NetFirewallSetting -AllowIPsecThroughNAT Both

Příchozí pravidla pro Firewall

Vytvoříme Firewall pravidlo pro příchozí ICMP pakety z národních RADIUSů a monitoringu:

New-NetFirewallRule `
    -DisplayName "_eduroam ICMP (IN)" `
    -Direction Inbound `
    -Protocol $icmp_version `
    -LocalAddress $local_ip `
    -RemoteAddress $($flr_ips + $monitoring_ips) `
    -Action Allow

Vytvoříme Firewall pravidlo pro příchozí RADIUS pakety z národních RADIUSů, monitoringu a APček (pokud APčka nechcete zde řešit, odeberte je z argumentu -RemoteAddress):

New-NetFirewallRule `
    -DisplayName "_eduroam RADIUS (IN)" `
    -Direction Inbound `
    -Protocol UDP `
    -LocalPort 1812,1813 `
    -LocalAddress $local_ip `
    -RemoteAddress $($flr_ips + $monitoring_ips + $ap_ips) `
    -Action Allow

Vytvoříme Firewall pravidlo pro příchozí IPsec UDP:

New-NetFirewallRule `
    -DisplayName "_eduroam IPsec UDP (IN)" `
    -Direction Inbound `
    -Protocol UDP `
    -LocalPort 500,4500 `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Action Allow

Vytvoříme Firewall pravidlo pro příchozí IPsec ESP:

New-NetFirewallRule `
    -DisplayName "_eduroam IPsec ESP (IN)" `
    -Direction Inbound `
    -Protocol 50 `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Action Allow

Odchozí pravidla pro Firewall

Pokud filtrujete odchozí komunikaci, je třeba ještě přidat odchozí pravidla.

Vytvoříme Firewall pravidlo pro odchozí ICMP pakety na národní RADIUSy a monitoring:

New-NetFirewallRule `
    -DisplayName "_eduroam ICMP (OUT)" `
    -Direction Outbound `
    -Protocol $icmp_version `
    -LocalAddress $local_ip `
    -RemoteAddress $($flr_ips + $monitoring_ips) `
    -Action Allow

Vytvoříme Firewall pravidlo pro odchozí RADIUS pakety na národní RADIUSy:

New-NetFirewallRule `
    -DisplayName "_eduroam RADIUS (OUT)" `
    -Direction Outbound `
    -Protocol UDP `
    -LocalPort 1812 `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Action Allow

Vytvoříme Firewall pravidlo pro odchozí IPsec UDP:

New-NetFirewallRule `
    -DisplayName "_eduroam IPsec UDP (OUT)" `
    -Direction Outbound `
    -Protocol UDP `
    -LocalPort 500,4500 `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Action Allow

Vytvoříme Firewall pravidlo pro odchozí IPsec ESP:

New-NetFirewallRule `
    -DisplayName "_eduroam IPsec ESP (OUT)" `
    -Direction Outbound `
    -Protocol 50 `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Action Allow

Nastavení IPsec

Vytvoříme pravidlo pro výběr a ověření lokálního certifikátu:

$selection_proposal = New-NetIPsecAuthProposal `
                          -Machine `
                          -Cert `
                          -Authority "DC=cz, DC=cesnet-ca, O=CESNET CA, CN=eduroam CA 2" `
                          -AuthorityType Root `
                          -SubjectName $local_fqdn `
                          -SubjectNameType DomainName `
                          -SelectionCriteria

Vytvoříme pravidlo pro výběr a ověření vzdáleného certifikátu:

$validation_proposal = New-NetIPsecAuthProposal `
                           -Machine `
                           -Cert `
                           -Authority "DC=org, DC=edupki, CN=eduPKI CA G 01" `
                           -AuthorityType Root `
                           -SubjectName "flr.eduroam.cz" `
                           -SubjectNameType DomainName `
                           -ValidationCriteria

Z pravidel pro výběr a ověření certifikátů vytvoříme autentizační sadu:

$auth_set = New-NetIPsecPhase1AuthSet `
                -DisplayName "_eduroam AS" `
                -Proposal $selection_proposal, $validation_proposal

Nadefinujeme šifrovací parametry pro MainMode pravidlo:

$main_mode_proposal = New-NetIPsecMainModeCryptoProposal `
                          -Encryption AES256 `
                          -Hash SHA256 `
                          -KeyExchange DH20

Za použití šifrovacích parametrů nadefinujeme šifrovací sadu pro MainMode pravidlo:

$main_mode_crypto_set = New-NetIPsecMainModeCryptoSet `
                            -DisplayName "_eduroam MMCS" `
                            -MaxMinutes 1440 `
                            -Proposal $main_mode_proposal

Nadefinujeme šifrovací parametry pro QuickMode pravidlo:

$quick_mode_proposal = New-NetIPsecQuickModeCryptoProposal `
                           -Encapsulation ESP `
                           -Encryption AES256 `
                           -ESPHash SHA256 `
                           -MaxKiloBytes 102400 `
                           -MaxMinutes 240

Za použití šifrovacích parametrů nadefinujeme šifrovací sadu pro QuickMode pravidlo:

$quick_mode_crypto_set = New-NetIPsecQuickModeCryptoSet `
                             -DisplayName "_eduroam QMCS" `
                             -Proposal $quick_mode_proposal

Sestavíme MainMode pravidlo:

New-NetIPsecMainModeRule `
    -DisplayName "_eduroam MainMode" `
    -LocalAddress $local_ip `
    -RemoteAddress $flr_ips `
    -Phase1AuthSet $auth_set.Name `
    -MainModeCryptoSet $main_mode_crypto_set.Name

Sestavíme ConSec pravidlo:

New-NetIPSecRule `
    -DisplayName "_eduroam ConSec" `
    -Mode Transport `
    -KeyModule IKEv1 `
    -InboundSecurity Require `
    -OutboundSecurity Require `
    -Protocol Any `
    -LocalAddress $local_ip `
    -LocalPort Any `
    -RemoteAddress $flr_ips `
    -RemotePort Any `
    -Phase1AuthSet $auth_set.Name `
    -QuickModeCryptoSet $quick_mode_crypto_set.Name

Vypsání pravidel

Vypsání Firewall pravidel - MainMode:

Netsh AdvFirewall MainMode Show Rule All

Vypsání Firewall pravidel - ConSec:

Netsh AdvFirewall ConSec Show Rule All

Smazání pravidel

Smazání Firewall pravidel:

Remove-NetFirewallRule -DisplayName "_eduroam*"

Smazání IPsec pravidel a sad:

Remove-NetIPsecMainModeRule -DisplayName "_eduroam*"
Remove-NetIPSecRule -DisplayName "_eduroam*"
Remove-NetIPsecMainModeCryptoSet -DisplayName "_eduroam*"
Remove-NetIPsecPhase1AuthSet -DisplayName "_eduroam*"

Ladění

Nejprve je třeba zapnout auditování sestavování IPSec spojení, to se dělá pomocí Local Group Policy Editor v Local Computer PolicyComputer ConfigurationWindows SettingsSecurity SettingsAdvanced Audit PolicySystem Audit PoliciesSystemLogon/Logoff a tam je potřeba zapnout logování:

  • Audit IPSec Extended Mode
  • Audit IPSec Main Mode
  • Audit IPSec Quick Mode

viz screenshot.

Případně je také možné zapnout auditování IPsec driveru, opět pomocí Local Group Policy Editor v Local Computer PolicyComputer ConfigurationWindows SettingsSecurity SettingsAdvanced Audit PolicySystem Audit PoliciesSystemAudit IPsec Driver. Viz screenshot.

Logy samotné jsou pak k dispozici v Event Viewer v Windows LogsSecurity, viz screenshot.


Zpět na Microsoft Network Policy Server pro eduroam

Poslední úprava:: 2024/08/01 15:17