====== 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]]