지난번에 이어 다시 윈도우 방화벽에 대하여 살펴봅니다.

아시는 분은 아시겠지만, MS사는 시간이 흐를 수록(버전업이 될 수록) 보안에 대한 관심이 높아져가는 것을 반영하듯 윈도우 자체방화벽(물론, S/W방식의 방화벽)의 사용을 권고하고 있습니다.
바로, 기본값 설정으로

 

윈도우 방화벽을 사용하는 것이 좋을 수도 있지만, 어떤 의미에서는 H/W 방화벽에서 정책을 열어주었지만 서비스가 되지 않는다는 불만이 접수될 수 있고 원인을 찾아보니 윈도우방화벽이 문제더라... 라는 결론에 도달할 수도 있습니다.

특히나, 윈도우 2000이나 2003에 익숙해져있다면, 사용하지 않고, H/W 방화벽에서만 관리해주기를 바랄 수도 있을 것입니다.

그렇다면 신규 서버 구성작업을 할 때 필요한 표준 설정 중 다음의 명령어를 포함하여 윈도우방화벽은 처음부터 없던 것처럼 생각해봅시다.

모든 프로파일의 방화벽 OFF
netsh advfirewall set allprofiles state off

 
보기와 같이 명령 실행은 "관리자 권한"으로 실행하시기 바랍니다.

참고로 다들 아시겠지만, 방화벽 ON은 마지막 설정값만 바꿔주시면 됩니다.

netsh advfirewall set allprofiles state on

 

   

  

내가 작업하기는 귀찮더라도 다른 이가 작성한 소스의 가독성이 좋은 것이 좋겠죠?

다른 누군가를 위해서가 아니라, 훗날 다시 봐도 지저분하지 않기 위한 첫걸음으로 쿼리문 작성에 대한 표준을 정하면 어떻까요?

간단히, 몇 가지 규칙만 정한 다음 소개하는 Poor SQL을 통해 정형화된 쿼리문을 작성하실 수 있습니다.

http://poorsql.com/

사용하는 데 있어 몇 가지 방법이 있습니다.

  1. SSMS Add-In
  2. WinForms App
  3. Command-Line Bulk formatting utility
  4. WinMaerge Plugin
  5. Notepad++ plugin

이 중 가장 간단하다고 생각되는 SSMS Add-In 방법을 소개해드립니다.

http://architectshack.com/PoorMansTSqlFormatter.ashx#Download_8

클릭 후 다운받아 설치 -> SSMS를 실행 -> 도구(T)를 살펴보면, 다음 그림과 같이 두 가지 항목이 추가되어있습니다.

  • Format T-SQL Code Ctrl+K, Ctrl+F
  • T-SQL Formatting Optins…

 

쿼리문을 Block으로 선택 한 후 Ctrl+K, F 를 입력하면 아래와 같이 변환되는 것을 볼 수 있습니다.

[Formatting Before]

use [OperationsManager]

set ansi_nulls on

go

set quoted_identifier on

go

[Formatting After]

USE [OperationsManager]

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

Formatting 설정을 "T-SQL Formatting Options…"을 통해서 변경 가능하며, (중요한)부차적인 기능으로 쿼리문에 대한 적합성(문법적으로 맞느냐?)에 대한 검증까지 가능합니다.

그럼 일부만 선택하여 실행(Ctrl+K/F)해보도록 하겠습니다. 하기와 같이 Error가 검출되었다는 창이 뜹니다.

문법적으로 오류가 없다면, 정상적으로 완료가 될 것이고, 그렇지 않다면, Parsing Error가 발생하지는 않습니다.
(*물론 예(Y)를 하더라도 실행은 됩니다.)

자, 이제 여러명이 같이 작업하더라도, 표기법을 맞춰서 할 수 있습니다.

방화벽에서 원하는 Protocol / Port 를 명령어로 OPEN하기  

  • 명령창을 관리자 권한으로 실행  

ICMP Allow IPv4 Echo Request
netsh advfirewall firewall add rule name="[M]ICMP Allow Incoming v4 Echo Request" protocol=icmpv4:8,any dir=in action=allow

FTP Service : IN/TCP
netsh advfirewall firewall add rule name="[M]FTP Service(IN/TCP)" protocol=TCP dir=in action=allow localport=20,21
netsh advfirewall set global StatefulFtp enable

Dynamic Ports for RPC : IN/TCP
netsh advfirewall firewall add rule name=[M]"Dynamic Ports for RPC" protocol=TCP dir=in action=allow localport=49152-65535

 

[실행] 시작 -> cmd -> 관리자 권한 실행

   

[실행결과] 시작 -> wf.msc -> 인바운드 규칙

   

상기 명령어를 적당히 조합하여 사용하시면 됩니다.

 

[시나리오]

DB서버에 연결되어있는 외부서버에 대한 현황을 알고 싶을 때…

Cluster구성되어있는 서버에서 Fail-Over 후 AP에서 정상적으로 접속했는지 확인하고 싶을 때…

 

간단히 sysprocesses 에서 하기의 쿼리를 통해서 확인 할 수 있습니다.

 

SELECT HOSTNAME as 출발지, DB_NAME(dbid) as DB, COUNT(*) as 접속수

FROM master..sysprocesses

WITH (nolock)

-- WHERE HOSTNAME LIKE '----'

GROUP BY hostname, DB_NAME(dbid)

ORDER BY 1 DESC

 

[실행결과]

  • '출발지' 서버에서 쿼리를 실행한 SQL서버의 'DB명'으로 연결되어있는 접속수

SharePoint 2010 에서 사용하는 Database 목록 가져오기

SharePoint를 경험하면서 느꼈던 점 가운데 한가지로 생성되는 DB명을 문제점으로 생각한다.

관련 Config를 정리하고, 프로그램 정상 제거를 하더라도 DB는 그대로~ 남아있다.
또는 별도의 DB로 분리하기 위해서라도 DB목록을 추출해야 할 필요가 있다.
그렇다면, SharePoint를 위한 PowerShell를 사용해보자.

SharePoint 2010 관리 쉘 실행
     ( 시작 -> 프로그램 -> Microsoft SharePoint 2010 Products -> SharePoint 2010 관리 쉘 )




 

















 




Get-SPDatabase | Select Name

종이로 만드는 WiFi 증폭기

도면을 참고하여 안테나 접시(방향판)를 만들어 특정방향으로 신호의 세기를 올리는 방법입니다.

 

 

도면 소스: http://freeantennas.com/projects/template2/index.html

20120419_Windows Server NTP 설정 가이드.pdf

NTP란?

Network Time Protocol(네트워크 시간 프로토콜)의 약자로 네트워크 환경으로 구성된 장비(서버, PC, 통신장비, 방화벽 장비 등)의 시스템 시간을 동기화 하기 위한 규약이다.

윈도우에는

  • 모든 윈도우서버는 NTP서버가 될 수 있다.
  • 모든 서버의 방화벽에서 UDP 123 번이 열려있어야 한다.
  • NTP서버와의 시간차이가 많이 날 경우(기본값: 15시간) 동기화 되지 않는다.
    - 실제 시간과 근접한 시간으로 변경 후 동기화 할 수 있도록 한다.
  • 데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라, 조금씩 맞춰 간다.
    (예: Server#2 서버가 Server#1서버 보다 시간이 빠를 경우, Server#1번의 시간으로 Server#2의 시스템시간을 동기화 할 경우, 동일한 시간대의 데이터가 생성되므로, 데이터 정합성에 오류가 발생한다. 이에 시간 동기화는 즉시 반영되는 것이 아니라, 조금씩 그 차이를 줄여나가는 방식이다. – 표12 참조 )

───────────────────────────────────────────────────

시스템 환경

NTP 시간을 제공해주는 서버를 "NTP 서버",
NTP 서버로 시간 동기화를 요청하는 서버를 "Slave 서버"로 명명한다.

───────────────────────────────────────────────────

서버명 및 IP 주소

 서버명

IP Address 

기능/역활 

 Server#1

10.10.10.1 

NTP 서버 

 Server#2

10.10.10.2

Slave 서버

 Server#3

10.10.10.3

Slave 서버

 

 

 

 

 

 

 

 

 

 

───────────────────────────────────────────────────

내부 NTP 서버

외부 NTP 서버와 시간 동기화

     내부 NTP 서버 시스템 시간을 인터넷 표준시(예:time.windows.com)으로 설정한다.

 

실행서버

Server#1(IP:10.10.10.1)

 

시나리오

    내부 NTP 서버 역할로 운용할 서버의 시간 동기화 대상을 외부NTP(예:time.windows.com)으로 설정하고, 설정(레지스트리)값을 확인 후 동기화 작업을 수행한다.

 

작업

1. 외부 NTP서버를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd

-> w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

[예상결과]

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

명령이 성공적으로 완료되었습니다.

 

2. Windows Time 서비스 제공을 위한 설정값(레지스트리) 변경 (2016.10.05 추가 - Comment 반영)

* 시작 -> cmd -> regedit -> HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
                                  -> Enabled '1' 로 변경

 


3. Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

[예상결과]

C:\>w32tm /dumpreg /subkey:Parameters

값 이름 값 종류 값 데이터

-----------------------------------------------------------------------------

ServiceMain REG_SZ SvchostEntry_W32Time

ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll

NtpServer REG_SZ time.windows.com,0x1 <- 외부 NTP서버주소

Type REG_SZ NTP <- 외부 NTP서버 사용

[참고] regedit > HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters

 

4. Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

-> net start w32tm

표 3: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

 

5. 시간 동기화

* 시작 -> cmd -> w32tm /resync


[예상결과]

[정상]

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

[오류] : 방화벽에서 외부 UDP 123 포트가 막혀있을 경우 발생할 수 있다.

C:\>w32tm /resync

동기화 명령 전송 - local computer...

사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다.

───────────────────────────────────────────────────

NTP 서비스 제공을 위한 구성 확인

    내부 NTP 서버가 외부 NTP서버를 참조하는지 확인한다.

 

실행서버

Server#1(IP:10.10.10.1)

 

시나리오

    내부 NTP 서버 역할로 운용할 서버의 서비스를 확인하여 Slave 서버에서 연결 할 수 있도록 구성 값을 확인한다.

 

작업

1. Windows Time 서비스 구동 확인

* 시작 -> cmd -> sc query w32time

표 5: 예상 결과

C:\>sc query w32time

SERVICE_NAME: w32time

TYPE : 20 WIN32_SHARE_PROCESS

STATE : 4 RUNNING

(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)

WIN32_EXIT_CODE : 0 (0x0)

SERVICE_EXIT_CODE : 0 (0x0)

CHECKPOINT : 0x0

WAIT_HINT : 0x0

 

2. NTP 서비스 구동 확인

* 시작 -> cmd -> netstat –ano | findstr 123

표6: 예상 결과

C:\>netstat -ano | findstr 123

UDP 0.0.0.0:123 *:* 1128

UDP 0.0.0.0:62123 *:* 1428

UDP [::]:123 *:* 1128

 

 

───────────────────────────────────────────────────

Slave 서버

Slave 서버 환경 구성

     내부 NTP서버(IP:10.10.10.1)를 기준으로 Slave 서버의 시스템 시간을 설정한다. 시간차이가 너무 많을 경우 동기화가 되지 않으니, 수동으로 근접한 시간을 맞추고 동기화 할 수 있도록 한다.

 

실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

( 서버별로 수행)

 

시나리오

    시간 동기화 대상을 내부 NTP서버(IP:10.10.10.1)로 설정하고, 동기화 작업을 수행한다.

 

작업

1. 내부NTP서버(IP:10.10.10.1)를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd

-> w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

표 7: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

명령이 성공적으로 완료되었습니다.

 

2. Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

표 8: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters

 

값 이름 값 종류 값 데이터

-----------------------------------------------------------------------------

ServiceMain REG_SZ SvchostEntry_W32Time

ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll

NtpServer REG_SZ 10.10.10.1 <- 외부 NTP서버주소

Type REG_SZ NTP <- 외부 NTP서버 사용

 

3. Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

-> net start w32tm

표 9: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

 

4. 시간 동기화

* 시작 -> cmd -> w32tm /resync

표 10: 예상결과

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

───────────────────────────────────────────────────

NTP서버와 시간차 확인

     특정 서버(ex.NTP서버)와 실행한 서버와의 시간차이를 확인한다.

 

실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

( 서버별로 수행하여 확인 할 수 있다.)

시나리오

    특정서버(Master Server:10.10.10.1)와 Slave Server(10.10.10.2)시간 동기화 대상을 Master Server 설정하고, 동기화 작업을 수행한다.

 

작업

1. Master Server를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd -> w32tm /stripchart /dataonly /computer:10.10.10.1

비교대상 서버와 시간이 일치한다면, 하기와 유사한 결과값을 볼 수 있다.

표 11: 예상결과

C:\> w32tm /stripchart /dataonly /computer:10.10.10.1

Tracking 10.10.10.1 [10.10.10.1].

The current time is 2012-04-18 오후 19:17:13 (local time).

19:17:13, +00.2676328s -> 비교 대상 서버와 +00.2676328 초만큼 차이가 난다.

19:17:15, +00.2593851s

19:17:17, +00.2589499s

19:17:19, +00.2428931s

^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다.

+00.xxxxxxx(또는 -00.xxxxxxx)로 대상 NTP서버와 차이나는 시간만큼 표기된다.

예) +120.2428931s -> +120초 차이가 남

───────────────────────────────────────────────────

정리: NTP설정 후 동기화 요청 및 동기화 확인

표 12: Slave서버 동기화 설정

  • NTP서버(IP:10.10.10.1) 서버를 시스템 시간으로 설정한다.

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1/update

명령이 성공적으로 완료되었습니다.

 

  • Windows Time 서비스를 재기동한다.

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

 

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

 

  • NTP서버(IP:10.10.10.1)로 지정한 서버와 동기화를 요청한다.

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

 

  • NTP서버(IP:10.10.10.1)와 실행 중인 서버와의 시간차이를 확인한다.

C:\>w32tm /stripchart /dataonly /computer:10.10.10.1

10.10.10.1[10.10.10.1:123] 추적 중

현재 시간은 2012-04-19 오후 22:47:25입니다.

22:47:25, +23.2364090s

22:47:27, +22.7004942s -> 조금씩이지만 차이가 줄어드는 것을 볼 수 있다.

22:47:30, +22.1639462s

22:47:32, +21.6430236s

^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다.



───────────────────────────────────────────────────

참고

W32Time 서비스의 레지스트리 항목

SITE: http://support.microsoft.com/kb/223184/KO/

 

큰 시간 오프셋을 방지하도록 Windows 시간 서비스 구성

SITE: http://support.microsoft.com/kb/884776/ko

 

Windows Server 2008 방화벽 설정

NTP Sync Response(IN/UDP)

netsh advfirewall firewall add rule name="NTP Sync Response(IN/UDP)" protocol=UDP dir=in action=allow localport=123
( command 창이 관리자 권한으로 실행되어있어야 한다.)


1 000 000 000 000 000 000 000 000 = 10^24 요타 (yotta)
1 000 000 000 000 000 000 000 = 10^21 제타 (zetta)
1 000 000 000 000 000 000 = 10^18 엑사 (exa)
1 000 000 000 000 000 = 10^15 페타 (peta)
1 000 000 000 000 = 10^12 테라 (tera)
1 000 000 000 = 10^9 기가 (giga)
1 000 000 = 10^6 메가 (mega)
1 000 = 10^3 킬로 (kilo)
100 = 10^2 헥토 (hecto)
10 = 10^1 데카 (deka)
0.1 = 10^-1 데시 (deci)
0.01 = 10^-2 센티 (centi)
0.001 = 10^-3 밀리 (milli)
0.000 001 = 10^-6 마이크로 (micro)
0.000 000 001 = 10^-9 나노 (nano)
0.000 000 000 001 = 10^-12 피코 (pico)
0.000 000 000 000 001 = 10^-15 펨토 (femto)
0.000 000 000 000 000 001 = 10^-18 아토 (atto)
0.000 000 000 000 000 000 001 = 10^-21 젭토 (zepto)
0.000 000 000 000 000 000 000 001 = 10^-24 욕토 (yocto)

출처 : http://imarket.tistory.com/96

+ Recent posts