ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

Windows Xp

Windows XP Service Pack 2 (SP2) SQL Server ile kullanılacak şekilde Scriptler ile nasıl yapılandırılır

How to use a script to programmatically open ports for SQL to use on systems that are running Windows XP Service Pack 2

 

 

 

 

 

Microsoft Windows XP Service Pack 2, Windows Firewall’ı içermektedir. Windows Firewall, ICF’nin (Internet Connection Firewall) güçlendilmiş bir sürümüdür. Windows XP Service Pack 2 yüklü bir bilgisayar üzerinde Windows Firewall standart olarak aktif gelmektedir. Windows Firewall açık olarak tutulduğu taktirde bazı network bağlantılarını bloklayacaktır, bu network bağlantıları TCP/IP, Named Pipes, Multiprotocol Remote Procedure Call (RPC) olarak sıralanabilir. Bu bloklama ile birlikte eğer bu işletim sistemi üzerinde yüklü olan bir SQL var ise bu durumdan olumsuz olarak etkilenecektir.

 

 

 

 

 

Microsoft Data Engine (MSDE), Microsoft SQL Server 2000 ve Microsoft SQL Server 2005  Windows Firewall dan olumsuz olarak etkilenecek olan SQL sürümleridir. Bu makalemizde Microsoft Windows XP SP2 işletim sistemine sahip ve Windows Firewall’ı aktif olan bir sistemin üzerinde SQL Server çalıştırılabilmesi için ne gibi düzenlemelerin yapılması gerektiğinden bahsedeceğiz.

 

 

 

 

 

Eğer elinizde SQL Server veya MSDE ye Named Pipes, TCP/IP veya RPC kullanarak ulaşmaya çalışan bir uygulama varsa ve siz Windows Firewall’un aktif olması nedeniyle bu erişime izin verememiş iseniz, Windows Firewall’ı devre dışı bırakmak yerine makalede anlatılan işlemleri uygulayarak hem güvenliğinizi sağlamaya devam etmiş olur, hem de uygulamanın çalışmasını sağlamış olursunuz.

 

 

 

 

 

Makalemizde iki script yer alacaktır;

 

 

İlk scriptte Windows Firewall, SQL Server’ın network üzerindeki tüm protokolleri dinleyebilmesi için konfigure edilmesidir.

 

 

İkinci scriptte ise Windows Firewall, SQL Server’ın sadece TCP/IP üzerinden akan paketleri dinleyebilmesi için konfigure edilmesidir.

 

 

 

 

 

Güvenlik nedeniyle bizler sadece esas olarak ihtiyaç duyacağımız portların açılmasını tercih etmeliyiz.

 

 

 

 

 

clip_image001

 

 

| Resim 1 |

 

 

 

 

 

clip_image002

 

 

| Resim 2 |

 

 

 

 

 

1. Script;

 

 

- Bu script, yanlızca Microsoft Windows Service Pack 2 yüklü bir sistem üzerinde çalıştırılmalıdır !

 

 

 

 

 

Script’i oluşturmak için şu adımları izleyin:

 

 

1-      Başlat-Çalıştır-Notepad

 

 

2-      Aşağıdaki kodu mavi olarak işaretleyin, üzerine sağ tıklayın ve Kopyala seçeneğini seçin, Notepad içerisine yapıştırın.

 

 

 

 

 

echo off

 

 

 

 

 

if "%1"=="-np" goto HandleNp

 

 

if "%1"=="-rpc" goto HandleRpc

 

 

if "%1"=="-tcp" goto HandleTcp

 

 

if "%1"=="-browser" goto HandleBrowser

 

 

 

 

 

rem Usage

 

 

:Usage

 

 

 

 

 

echo "Usage: setupSqlServerPortAll -[np | rpc | tcp | browser] -port [portnum] -[enable | disable]

 

 

echo "-np : Setup SQLServer to listen on Named Pipe connections for local subnet only"

 

 

echo "-rpc : Setup SQLServer to listen on RPC multiprotocol for local subnet only"

 

 

echo "-tcp : Setup SQLServer to listen on TCP connections for local subnet only"

 

 

echo "       Must specify a port if -tcp option is chosen."

 

 

echo "-browser :  Setup SQLServer to provide SSRP service to support named instances"

 

 

echo "-port : Applies only for tcp"

 

 

echo " One of the following options MUST be specified"

 

 

echo "-enable: Enables a port"

 

 

echo "-disable: Disables a port"

 

 

 

 

 

goto Exit

 

 

 

 

 

:HandleTcp

 

 

echo %2

 

 

if "%2"=="-port" goto cont

 

 

goto Usage

 

 

:cont

 

 

if "%3"=="" goto Usage

 

 

if "%4"=="-enable" goto EnableTcp

 

 

if "%4"=="-disable" goto DisableTcp

 

 

goto Usage

 

 

 

 

 

:EnableTcp

 

 

echo "Enabling SQLServer tcp access for port %3 local subnet only"

 

 

netsh firewall set portopening tcp %3 SQL%3 ENABLE subnet

 

 

goto Exit

 

 

 

 

 

:DisableTcp

 

 

echo Disabling SQLServer tcp access for port %3 local subnet only"

 

 

netsh firewall set portopening tcp %3 SQL%3 disable subnet

 

 

goto Exit

 

 

 

 

 

:HandleNp

 

 

if "%2"=="-enable" goto EnableNp

 

 

if "%2"=="-disable" goto DisableNp

 

 

goto Usage

 

 

 

 

 

:EnableNp

 

 

echo "Enabling SQLServer named pipe access for local subnet only"

 

 

netsh firewall set portopening tcp 445 SQLNP ENABLE subnet

 

 

goto Exit

 

 

 

 

 

:DisableNp

 

 

echo Disabling SQLServer named pipe access for local subnet only"

 

 

netsh firewall set portopening tcp 445 SQLNP DISABLE subnet

 

 

goto Exit

 

 

 

 

 

:HandleRpc

 

 

if "%2"=="-enable" goto EnableRpc

 

 

if "%2"=="-disable" goto DisableRpc

 

 

goto Usage

 

 

 

 

 

:EnableRpc

 

 

echo "Enabling SQLServer multiprotocol access for local subnet only"

 

 

netsh firewall set portopening tcp 445 SQLNP enable subnet

 

 

goto Exit

 

 

 

 

 

:DisableRpc

 

 

echo Disabling SQLServer multiprotocol access for local subnet only"

 

 

netsh firewall set portopening tcp 445 SQLNP disable subnet

 

 

goto Exit

 

 

 

 

 

:HandleBrowser

 

 

if "%2"=="-enable" goto EnableBrowser

 

 

if "%2"=="-disable" goto DisableBrowser

 

 

goto Usage

 

 

 

 

 

:EnableBrowser

 

 

echo "Enabling SQLServer SSRP service for local subnet only"

 

 

netsh firewall set portopening udp 1434 SQLBrowser enable subnet

 

 

goto Exit

 

 

 

 

 

:DisableBrowser

 

 

echo "Enabling SQLServer SSRP service for local subnet only"

 

 

netsh firewall set portopening udp 1434 SQLBrowser disable subnet

 

 

goto Exit

 

 

 

 

 

:Exit

 

 

endlocal

 

 

 

 

 

3-      Bu notepad dosyasını C:\ dizinine ConfigSQLPorts.txt ismi ile kaydedin, daha sonra dosya adını ConfigSQLPorts.bat olarak düzenleyin.

 

 

 

 

 

 

 

 

2.Script;

 

 

- Bu script, yanlızca Microsoft Windows Service Pack 2 yüklü bir sistem üzerinde çalıştırılmalıdır !

 

 

- Bu script SQL Server’ın sadece TCP/IP üzerinden akan paketleri dinleyebilmesini sağlar.

 

 

 

 

 

Script’i oluşturmak için şu adımları izleyin:

 

 

1-      Başlat-Çalıştır-Notepad

 

 

2-      Aşağıdaki kodu mavi olarak işaretleyin, üzerine sağ tıklayın ve Kopyala seçeneğini seçin, Notepad içerisine yapıştırın.

 

 

 

 

 

echo off

 

 

setlocal

 

 

 

 

 

if "%1"=="-port" goto HandleTcp

 

 

 

 

 

rem Usage

 

 

:Usage

 

 

 

 

 

echo "Usage: setupSqlServerPort -port [portnum] -[enable | disable] [ALL | SUBNET]"

 

 

echo -port : Specifies the port to be enabled or disabled. Port is not optional.

 

 

echo -enable: Enables a port

 

 

echo -enable ALL:  enables access for ALL

 

 

echo -enable SUBNET:  enables access for SUBNET

 

 

echo -disable: Disables a port

 

 

echo  one of -enable or -disable must be specified

 

 

echo  the default scope is SUBNET only

 

 

 

 

 

goto Exit

 

 

 

 

 

:HandleTcp

 

 

if "%2"=="" goto Usage

 

 

if "%3"=="-enable" goto EnableTcp

 

 

if "%3"=="-disable" goto DisableTcp

 

 

goto Usage

 

 

 

 

 

 

 

 

:EnableTcp

 

 

set SCOPE="%4"

 

 

if "%4"=="ALL" echo "Enabling SQLServer tcp access for port %2 ALL access"

 

 

if "%4"=="SUBNET" echo "Enabling SQLServer tcp access for port %2 subnet only access"

 

 

if "%4"=="" set SCOPE="SUBNET"

 

 

 

 

 

netsh firewall set portopening tcp %2 SQL_PORT_%2 ENABLE %SCOPE%

 

 

goto Exit

 

 

 

 

 

:DisableTcp

 

 

echo Disabling SQLServer tcp access for port %2"

 

 

netsh firewall set portopening tcp %2 SQL_PORT_%2 disable

 

 

goto Exit

 

 

 

 

 

:Exit

 

 

Endlocal

 

 

 

 

 

      Bu notepad dosyasını C:\ dizinine setupSqlServerPort.txt ismi ile kaydedin, daha sonra dosya adını setupSqlServerPort.bat. olarak düzenleyin.

 

 

 

 

 

Elimizdeki .bat file dosyalara kısaca bir bakalım;

 

 

 

 

 

clip_image003

 

 

| Resim 3 |

 

 

 

 

 

Başlat-Çalıştır-Cmd komutu ile Resim-1 deki gibi komut satırına düşülür.

 

 

 

 

 

clip_image004

 

 

| Resim 4 |

 

 

 

 

 

Cd\  komutu ile root a inilir.

 

 

Dir *.bat komutu ile C:\ dizinindeki .bat file ların listelenmesi sağlanır.

 

 

SetupSqlServerPort.bat komutu girilir ve aşağıdaki çıktı elde edilir.

 

 

 

 

 

clip_image005

 

 

| Resim 5 |

 

 

 

 

 

Bu çıktıda bizlere komut dizimi hakkında gerekli bilgilendirme yapılır, dilerseniz bir iki komut girelim;

 

 

 

 

 

clip_image006

 

 

| Resim 6 |

 

 

 

 

 

Setupsqlserver –port [portnumber] –[enable or disable] komutundan örnek olması maksadıyla istifade ettik.

 

 

Bu komut dizimi ile Firewall üzerinden belirlediğiniz port numarasını SQL için enable veya disable duruma getirebilirsiniz.

 

 

 

 

 

clip_image007

 

 

| Resim 7 |

 

 

 

 

 

Setupsqlserverport – port [portnumber] –[enable or disable] subnet [networkid] komut dizimi ile verdiğiniz port numarası üzerinden sadece belirlenen subnet’in izinli olmasını sağlayabilirsiniz.

 

 

 

 

 

Örnekleri bu şekilde çoğaltmak mümkündür. Aslına bakacak olursanız pratikte hiçbir sistem yöneticisi bu tip bir uygulamaya gitmeyecektir. Ama çok spesifik durumlarda bu scriptlerin yerini başka birşeyin tutması da mümkün değildir. Örnek vermek gerekirse;

 

 

 

 

 

Geçmişte yer aldığım bir projede SQL ile entegre çalışan bir mobile uygulama yazılımı geliştirilmişti ve bu uygulama yazılımı kurulduğu sistemler üzerinde Windows Firewall dan kaynaklanan engellere maruz kalıyordu, ben bir Sistem Uzmanı olarak programın kurulduğu noktalara giderek Firewall üzerinden sorunları manuel bir şekilde çözmek için efor ve zaman harcıyordum. Sonunda bu scriptleri keşfettim ve yazılımcı arkadaşımıza bu scriptleri yazılımın içine entegre eedbilmesi halinde Windows Firewalları da bu şekilde hizaya getirebileceğini anlattım. Başarılı bir çalışma sonucunda artık yazılım kurulan noktalarda windows firewall açıkta olsa bir sorun teşkil etmiyordu, hem yazılımcı arkadaşlar hem de biz destek elemanları rahatımıza bu şekilde kavuşmuştuk 

 

 

Umarım yararlı bir örnek ve makale olmuştır.

 

 

 

 

 

clip_image008

 

 

| Resim 8 |

 

 

 

 

 

Kaynak: Microsoft TechNet

 

 

 

 

 

 

 

Yorumlar

 

Sinan KAHRAMAN

Emeğinize sağlık

Mart 29, 2008 00:24
 

Ugur DEMIR

Teşekkürler.

Eylül 22, 2009 00:11
 

ozguryuksel

Emeğinize sağlık güzel paylasım tşkler.

Ağustos 5, 2010 00:02
Kimliksiz yorumlar seçilemez kılınmış durumdadır.

Bu Kategori

Hızlı aktarma

Etiketler