SQL Server: Jak nastavit síťovou komunikaci skrze Windows Firewall s pomocí PowerShell (ProTIP)

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

0 Responses to “SQL Server: Jak nastavit síťovou komunikaci skrze Windows Firewall s pomocí PowerShell (ProTIP)”


  • No Comments

Leave a Reply


%d blogerům se to líbí: