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

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

  • x

    Mükemmel Anlatım Emege Saygı ➡

X

Pin It on Pinterest

X