====== Nastavení Firewall a IPsec ======
{{page>[:cs:spravce: pripojovani: frag_certifikat]}}
===== 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áš [[https://gitlab.cesnet.cz/708/public/eduroam/-/blob/main/windows/eduroam_fw_ipsec.ps1|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 Policy'' -> ''Computer Configuration'' -> ''Windows Settings'' -> ''Security Settings'' -> ''Advanced Audit Policy'' -> ''System Audit Policies'' -> ''System'' -> ''Logon/Logoff'' a tam je potřeba zapnout logování:
* ''Audit IPSec Extended Mode''
* ''Audit IPSec Main Mode''
* ''Audit IPSec Quick Mode''
viz {{ :cs:spravce:pripojovani:ipsec:localgrouppolicyeditor2.png?linkonly|screenshot}}.
Případně je také možné zapnout auditování IPsec driveru, opět pomocí ''Local Group Policy Editor'' v ''Local Computer Policy'' -> ''Computer Configuration'' -> ''Windows Settings'' -> ''Security Settings'' -> ''Advanced Audit Policy'' -> ''System Audit Policies'' -> ''System'' -> ''Audit IPsec Driver''. Viz {{:cs:spravce:pripojovani:ipsec:localgrouppolicyeditor.png?linkonly|screenshot}}.
Logy samotné jsou pak k dispozici v ''Event Viewer'' v ''Windows Logs''->''Security'', viz {{ :cs:spravce:pripojovani:ipsec:eventviewer.png?linkonly|screenshot}}.
-----
Zpět na [[cs:spravce:pripojovani:radius:nps]]