INF: Per la comunicazione con un server SQL attraverso firewall sono necessarie porte TCP

Identificativo articolo: 287932
Espandi tutto | Chiudi tutto

Sommario

In questo articolo sono indicate le porte TCP/IP minime richieste per comunicare con un server SQL attraverso un firewall.

Informazioni

SQL Server è un'applicazione Winsock che comunica su TCP/IP utilizzando la libreria di rete dei socket. SQL Server rileva le connessioni in ingresso su una determinata porta, che per impostazione predefinita è la 1433. Questo non significa che sia assolutamente necessario utilizzare tale porta ma soltanto che 1433 è il numero di socket IANA (Internet Assigned Number Authority) ufficiale per SQL Server.

Le applicazioni client comunicano con SQL Server utilizzando la libreria di rete sul lato client Dbmssocn.dll o, per SQL Server 2000, Dbnetlib.dll e qualunque client con Microsoft Data Access Components (MDAC) 2.6.

Quando il client stabilisce una connessione TCP/IP, viene effettuato un handshake tridirezionale. Il client apre una porta di origine e invia il traffico a una porta di destinazione, che per impostazione predefinita corrisponde alla porta 1433. La porta di origine utilizzata dal client è casuale, ma solitamente è superiore alla 1024. Per impostazione predefinita, quando un'applicazione richiede un socket al sistema per una chiamata in uscita, viene allocata una porta compresa tra la 1024 e la 5000. Per ulteriori informazioni, consultare il white paper "Microsoft Windows 2000 TCP/IP Implementation Details" disponibile sul seguente sito Web Microsoft Developer Network (MSDN) (informazioni in lingua inglese):
http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx
Il server, in questo caso SQL Server, comunica quindi con il client reinviando il traffico dalla porta 1433 alla porta stabilita dal client.

Il modo migliore per osservare questo comportamento consiste nel tracciare una comunicazione client-server utilizzando Microsoft Network Monitor o uno sniffer di rete. Per configurare il firewall, è necessario abilitare il traffico da *QUALSIASI* a 1433 e viceversa, dove *QUALSIASI* è una porta superiore alla 1024.
*QUALSIASI* -> 1433
1433 -> *QUALSIASI*
Oltre a Microsoft Network Monitor, è possibile utilizzare anche l'utilità Netstat TCP/IP a questo scopo. Eseguendo il comando netstat -an da una finestra di comandi MS-DOS si ottengono i risultati riportati di seguito, che mostrano tre connessioni a SQL Server. In questo esempio, 157.54.178.42 è l'indirizzo IP di SQL Server e 157.54.178.31 è l'indirizzo IP del client. Le porte aperte dal client sono, rispettivamente, la 1746, la 1748 e la 1750.
 Proto  Indirizzo locale       Indirizzo remoto       Stato
 TCP    157.54.178.42:1433     0.0.0.0:0              LISTENING
 TCP    157.54.178.42:1433     157.54.178.31:1746     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1748     ESTABLISHED
 TCP    157.54.178.42:1433     157.54.178.31:1750     ESTABLISHED
					
Il software firewall dovrebbe consentire questa allocazione dinamica mediante l'utilizzo di regole. Se è così, è possibile configurare 1433 -> *QUALSIASI* ESTABLISHED. In questo modo, la porta di risposta viene aperta in modo dinamico dopo un syn seguito da un syn/ack con un'ispezione di pacchetti stateful.

Non è possibile limitare il numero di porte TCP di origine utilizzate per la connessione di un client SQL Server. Questo, infatti, vanificherebbe l'obiettivo di ottenere l'allocazione di una nuova porta dinamica da parte del client. Si tratta di uno standard TCP/IP definito per le applicazioni Winsock e non di una limitazione della comunicazione client di SQL Server.

Inoltre, l'impostazione predefinita prevede l'utilizzo di una porta di destinazione dinamica per un'istanza di SQL Server 2000 denominata. Questa porta dovrebbe essere impostata su una porta fissa prima della configurazione del firewall. La configurazione della porta di destinazione dovrebbe essere effettuata mediante l'utilità Configurazione di rete di SQL Server. Per informazioni sull'utilizzo di Configurazione di rete di SQL Server, fare riferimento alla documentazione in linea di SQL.

In caso contrario, il client dovrebbe aprire una porta UDP casuale e la porta UDP 1434 del server sarebbe utilizzata per inviare il nome dell'istanza, la versione dell'istanza di SQL (nel caso di un'istanza con cluster), il numero della porta TCP sulla quale l'istanza è in attesa, nonché la named pipe utilizzata dall'istanza. Se l'obiettivo è quello di ridurre il numero di porte aperte sul firewall, tuttavia, è opportuno scegliere un numero di porta statica per l'istanza predefinita e qualsiasi istanza denominata. Sarebbe necessario configurare i computer client per la connessione a un determinato NomeServer o istanza di NomeServer e a uno specifico numero di porta.

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito (il contenuto potrebbe essere in inglese):
216415 INF: Configurazione di SQL Server per l'accesso tramite Microsoft Proxy Server
148942 Acquisizione del traffico di rete con Network Monitor
169292 Nozioni fondamentali sulla lettura delle tracce TCP/IP
269882 HOWTO: Utilizzare ADO per connettersi a SQL Server dietro un firewall

Proprietà

Identificativo articolo: 287932 - Ultima modifica: martedì 15 febbraio 2011 - Revisione: 5.2
Chiavi: 
kbsqlmanagementtools kbinfo KB287932
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti