microsoft, windows, windows server, deployment, sql server, firewall,

SQL Server: Jak nastavit síťovou komunikaci skrze Windows Firewall s pomocí PowerShellu

Michal ZOBEC Michal ZOBEC Sledovat May 16, 2020 · 2 minut čtení
SQL Server: Jak nastavit síťovou komunikaci skrze Windows Firewall s pomocí PowerShellu
Sdílet

V současné době vytvářím novou síť s novým vývojovým prostředím, kde již aplikuji důsledněji různá bezpečnostní pravidla, včetně povinně zapnutého firewallu. V síti provozujeme mimo jiné také SQL Server 2016 s pojmenovanou instancí. Poněkud mne překvapilo, Jaké bylo mé překvapení, když jsem zjistil, že zprovoznění po síti není již tak jednoduché jako kdysi u starších verzí SQL Serveru … Povolení obvyklých dvou portů pro SQL Server Browser a instanci nestačilo …

Na počátku, když jsem začal řešit jaké porty povolit, si všude na internetu přečtete, že stačí dva porty (i v dokumentaci Microsoftu - SQL Server - Configure a Windows Firewall for Database Engine Access), pro SQL Server Browser a následně pro instanci. V praxi jsem pak zjistil, že komunikace je blokována, tedy až poté, co jsem vyřešil jak zapnout protokolování ve Windows Firewall.

Ve skutečnosti SQL Server používá poměrně slušný počet portů a to i v případě, pokud použijete metodu portu pro výchozí instanci s jedním portem. Při tomto spojení je zajištěna komunikace skrze SQL Server Browser, který pak zjistí se kterou instanci chcete navázat komunikaci a komunikaci na ni přesměruje.

Seznam portů pro SQL Server

Seznam portů pro Named instance. Služba/účel, protokol, port.

  • SQL Server, TCP, 1433
  • SQL Admin Connection, TCP, 1434
  • SQL Database Management, UDP, 1434
  • SQL Service Broker, TCP, 4022
  • SQL Debugger/RPC, TCP, 135
  • SQL Analysis Services, TCP, 2383
  • SQL Browser, TCP, 2382

Automatická konfigurace Firewallu, jednotlivé porty

Pro automatickou konfiguraci lze použít následující skript v PowerShellu

New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Admin Connection" -Direction Inbound -Protocol TCP -LocalPort 1434 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Database Management" -Direction Inbound -Protocol UDP -LocalPort 1434 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Service Broker" -Direction Inbound -Protocol TCP -LocalPort 4022 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Debugger/RPC" -Direction Inbound -Protocol TCP -LocalPort 135 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Analysis Services" -Direction Inbound -Protocol TCP -LocalPort 2383 -Action allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Browser" -Direction Inbound -Protocol TCP -LocalPort 2382 -Action allow -Profile Domain -Group "SQL Server"

Povolení síťové komunikace pro službu

Výše uvedený postup se mi nelíbil v tom směru, že je třeba řešit jednotlivé porty a v případě více instancí bude komplikovanější celý proces plně automatizovat. Více se mi líbila možnost konfigurace na jednotlivé služby. Taková konfigurace mi připadne také bezpečnější.

Z hle­diska konfigurace s pomocí skriptů v PowerShellu se navíc jedná jen o dva řádky pro první instanci, následující instance vyžadují už jen přidání nové služby pro novou instanci (pokud používáte pouze základní konfiguraci SQL Serveru)

New-NetFirewallRule -DisplayName "SQL Server Browser" -Direction Inbound -Service "SQLBrowser" -RemoteAddress LocalSubnet -Action Allow -Profile Domain -Group "SQL Server"
New-NetFirewallRule -DisplayName "SQL Server Service DBDEV2 Instance" -Direction Inbound -Service "MSSQL`$DBDEV2" -RemoteAddress LocalSubnet -Action Allow -Profile Domain -Group "SQL Server"

Odkazy

Michal ZOBEC
Napsal Michal ZOBEC Sledovat
IT konzultant, projekt manažer.

Působím v IT oboru 16 let se zaměřením na produkty společnosti Microsoft, zejména Windows Server, Exchange Server, SQL Server a Hyper-V Server. V současné době se věnuji kromě konzultací, také vývoji software a řízením projektů, včetně vývoje řešení pro cloud Microsoft Azure.

Mám zkušenosti ve společnostech všech velikostí, od živnostníků po velké korporace. Své služby jsem poskytoval také některým školám. Mám také několikaleté zkušenosti se spoluprací s mezinárodními společnostmi, kde se členové týmu nachází v různých zemích.