웹서버 성능을 측정하는 방법으로, 마이크로소프트에서 제공하는

웹 성능 분석 도구(Web Capacity Analysis Tool)와,
웹 응용 프로그램 스트레스 도구(Web Application Stress Tool)
를 사용할 수 있습니다.



웹 응용 프로그램 스트레스 도구는


이러한 도구를 사용하여 웹 서버의 스트레스를 테스트함으로써 수백명의 사용자가 한꺼번에 응용 프로그램에 액세스할 때 웹 서버의 반응을 확인할 수 있습니다. 이러한 도구는 서버쪽 구성 요소의 성능, 잠금 및 기타 확장성 문제를 테스트하는 데도 사용할 수 있습니다. 데이터베이스에 의존하는 웹 응용 프로그램의 경우에는 동시성, 트랜잭션, 사용자 수, 잠금, 풀링 등의 매개 변수를 적용하여 테스트할 수 있습니다.
Posted by jjblaid

1. 널 세션(익명사용자 접속 차단)을 시킵니다.

HKEY_Local_Machine -> System -> CurrentControlSet -> Control -> LSA 이동 후,
RestrictAnonymous 값을 REG_DWORD 형식으로 하여 0 에서 "1" 로 변경

2. 널 세션으로 공유 자원에 접근 할 수 없도록 윈도우 관리목적의 기본 공유 폴더 제거
HKEY_Local_Machine -> System -> CurrentControlSet -> Services -> LanmanServer -> Parameters 항목에
AutoShareServer (win2k의 경우 AutoShareWks) 항목을 REG_DWORD 형식으로 값 추가 후 1에서 "0" 으로 변경 설정

3. 관리목적의 공유폴더를 통해 외부에서 악의적 사용자나 악성코드 차단하기 (2번과 동일)
HKEY_Local_Machine -> System -> CurrentControlSet -> Services -> LanmanServer -> Parameters 항목에
AutoShareServer (win2k의 경우 AutoShareWks) 항목을 값 데이터를 1에서 " 0 "으로 변경

*REG_DWORD 형식으로 값 추가 후 관리자를 위한 숨겨진 공유가 필요없다면 disable 하는 기능


4. 공유 폴더 암호 설정 및 권한을 “읽기” 속성으로 변경 (필수)
외부 접근자는 내용을 읽을 수만 있도록 설정된다면, 바이러스 조차도 이 폴더에 "기록이나 쓰기"가 되지 않기 때문에
바이러스 감염을 막을 수 있습니다.
Posted by jjblaid
윈도우 서버 시스템에서 기본 지원하는
스케줄러 + tsshutdn.exe 을 이용하시면 원하는 시간에
재부팅을 할 수 있습니다.

제어판 > 예약된 작업 > 예약 작업 추가 > 속성 > 작업창 실행에

C:\WINNT\system32\tsshutdn.exe /reboot

일정탭을 통해서 일시와 시간을 선택하시면
원하시는 시간에 무인에서 재부팅 작업을 하실 수 있습니다.
사용자 삽입 이미지

Posted by jjblaid

터미널 서비스 세션이 제대로 로그오프 되지 않아 더이상 터미널 서비스 접속이 불가능 할 경우

원격에서 터미널 서비스 세션을 끊을 수 있습니다.

기본적으로 터미널서비스 세션은 최대 2개 까지 입니다.


1. NETBIOS 연결.

C:\>net use \\190.190.157.240 /u:administrator

2. 원격 서버의 연결된 터미널서비스 세션 확인

C:\>query session /server:190.190.157.240

3. 연결된 해당 세션 끊기

C:\>tsdiscon 2 /server:190.190.157.240 

4. 새로운 세션 3으로 연결됨(rdp-tcp#3 )

5. 연결되어 있는 계정 강제 로그오프 시키기
logoff /server:서버아이피 세션ID

예) logoff /server:192.168.0.1 2

세션 ID 2인 사용자를 강제 로그 오프 시킨다

이렇게 하면 새롭게 로그인이 가능하다.. 


Posted by jjblaid
아래 정보는 http://megawave.pe.kr/318 (새 창으로 열기) 발췌하였습니다.

가장 많이 쓰는 서버의 OS는 Linux서버와 Windows서버일겁니다. Linux서버의 프로그램들은 거의 다 자신만의 파일로 저장합니다. 프로그램마다 독립적으로 파일을 생성해 놓기 때문에 사용자 입장에서는 그만큼 더 어렵게 보일 수도 있겠습니다만, 관리자 입장에서는 오히려 관리가 손쉬워집니다.

저는 몇 개의 서버를 운영하고 있는데 주 단위로 각 서버들을 백업하고 있습니다. Linux서버에서는 대부분 cron과 tar를 이용하여 일정 주기마다 특정 위치로 묶어서 넣고 있습니다. Windows서버에서도 역시 비슷한 방법으로 백업을 하고 있는데, Windows서버에서 DNS정보들을 백업하기는 여간 귀찮은게 아닙니다. 특정 폴더의 파일들 이외에도 레지스트리에 있는 정보도 백업해야 하기 때문입니다.

혹시 Windows서버의 DNS정보들을 백업/복구 해주는 유용한 툴이 있지는 않을까 싶어서 검색을 해봤습니다만, 찾을 수가 없더군요. ㅡ.ㅜ Windows서버도 엄청 많이 사용중일텐데 왜 이런 툴이 하나도 없을까 생각하며, 그냥 만들어 쓰기로 했습니다.

간단히 파일들과 레지스트리 정보를 포함, 압축하여 백업하고 복구하는 기능 외에 Windows의 예약작업 관리자를 이용하여 일정 주기마다 자동적으로 백업할 수 있도록 Command Line 명령을 지원하도록 할 것, 파일이름은 사용자가 임의의 규칙을 정하여 백업할 수 있도록 할 것, 이 두 가지를 유념하여 만들었습니다.

사용자 삽입 이미지
백업은 DNS 백업파일을 저장할 위치를 선택해주고 저장할 파일이름 형식(디폴트:DNSBACKUP-$YY$MM$DD, 확장자는 .dns)을 정해준 다음 백업 버튼만 누르면 되는 간단한 프로세스입니다. 버튼을 누르기 전에 미리보기로 만들어질 파일명을 확인할 수 있습니다.

복구는 더욱 간단하게 백업해놓은 DNS백업파일(.dns)를 선택해 주기만 하면 됩니다. 단 DNS서버가 작동중일 때는 동작하지 않습니다.

Windows서버의 예약작업 관리자를 통하여 일 단위, 주 단위등으로 백업을 편리하게 하기 위해서 Command Line 명령어들을 지원합니다. (프로그램에는 따로 설명이 없습니다)

형식 : dnsbackup [backup/restore] [파일명]

백업 예)  c:\> dnsbackup backup g:\backup\dnsbackup-$YY$DD$MM.dns
복구 예) c:\> dnsbackup restore g:\backup\dnsbackup-20080113.dns

제가 혼자 쓰려고 만들었지만, 혹시 필요하신 분이 계시면 가져다 쓰시기 바랍니다.
다만, 사용중 어떠한 문제가 발생되더라도 책임지지 않습니다. ^^;


Posted by jjblaid
로그 파일 위치
기본적으로 IIS는 %WINDIR\System32\Logfiles에 해당 로그 파일을 저장합니다. 이 디렉터리에는 각 WWW(World Wide Web) 및 FTP 사이트에 대한 별도의 디렉터리가 포함됩니다. 기본적으로 로그는 디렉터리에서 매일 만들어지고 날짜를 포함하는 이름(예: exYYMMDD.log)으로 지정됩니다.

FTP

1xx - 긍정적인 예비 회신
이 상태 코드는 동작이 시작되었지만 클라이언트가 새 명령을 계속 수행하기 전에 다른 회신을 기대한다는 것을 나타냅니다.
• 110 마커 회신을 다시 시작합니다.
• 120 nnn 분 내에 서비스 준비
• 125 데이터 연결이 이미 열려 있고 전송을 다시 시작합니다.
• 150 파일 상태에 문제가 없으며 지금 데이터 연결을 열려고 합니다.

2xx - 긍정적인 완료 회신
동작이 완료되었습니다. 클라이언트가 새 명령을 실행할 수 있습니다.
• 200 명령에 문제가 없습니다.
• 202 명령이 구현되지 않으며 이 사이트에 불필요합니다.
• 211 시스템 상태 또는 시스템 도움말 회신
• 212 디렉터리 상태
• 213 파일 상태
• 214 도움말 메시지
• 215 NAME 시스템 형식. 여기서 NAME은 지정된 번호(Assigned Numbers) 문서 목록의 공식 시스템 이름입니다.
• 220 새 사용자에게 서비스가 준비되었습니다.
• 221 서비스가 컨트롤 연결을 닫습니다. 필요한 경우 로그아웃됩니다.
• 225 데이터 연결을 열지만 전송하지 않습니다.
• 226 데이터 연결을 닫습니다. 요청된 파일 동작에 성공했습니다(예: 파일 전송 또는 파일 중단).
• 227 Passive 모드 입력(h1,h2,h3,h4,p1,p2)
• 230 사용자가 로그인하여 진행합니다.
• 250 요청된 파일 동작이 문제 없이 완료되었습니다.
• 257 "PATHNAME"이 만들어졌습니다.

3xx - 긍정적인 중간 회신
명령이 성공했지만 서버에는 요청을 처리하는 데 클라이언트의 추가 정보가 필요합니다.
• 331 사용자 이름에 문제가 없으며 암호가 필요합니다.
• 332 로그인을 위해 계정이 필요합니다.
• 350 좀더 자세한 정보를 보류 중인 요청된 파일 동작입니다.

4xx - 일시적인 부정적 완료 회신
명령이 성공하지 못했지만 오류는 일시적입니다. 클라이언트가 명령을 다시 시도하면 성공할 수도 있습니다.
• 421 서비스를 사용할 수 없으며 컨트롤 연결을 닫습니다. 이것은 서비스가 프로그램을 종료해야 함을 아는 경우 명령에 대한 응답이 될 수 있습니다.
• 425 데이터 연결을 열 수 없습니다.
• 426 연결이 닫히고 전송이 중단됩니다.
• 450 요청된 파일 동작이 수행되지 않았습니다. 파일을 사용할 수 없습니다(예: 파일 사용 중).
• 451 요청된 동작이 중단되었습니다. 처리 중 로컬 오류가 발생했습니다.
• 452 요청된 동작이 수행되지 않았습니다. 시스템의 저장 공간이 부족합니다.

5xx - 영구적인 부정적 완료 회신
명령이 성공하지 못했으며 오류는 영구적입니다. 클라이언트가 명령을 다시 시도하면 같은 오류가 나타납니다.
• 500 구문 오류, 명령을 인식할 수 없습니다. 여기에는 명령줄이 너무 긴 경우와 같은 오류가 포함됩니다.
• 501 매개 변수 또는 인수의 구문 오류입니다.
• 502 명령이 구현되지 않았습니다.
• 503 명령 순서가 잘못되었습니다.
• 504 해당 매개 변수에 대해 명령이 구현되지 않았습니다.
• 530 로그인되지 않았습니다.
• 532 파일을 저장하는 데 계정이 필요합니다.
• 550 요청된 동작이 수행되지 않았습니다. 파일을 사용할 수 없습니다(예: 파일 없음. 액세스 못함).
• 551 요청된 동작이 중단되었습니다. 페이지 형식을 알 수 없습니다.
• 552 요청된 파일 동작이 중단되었습니다. 현재 디렉터리 또는 데이터 집합에 대해 저장소 할당이 초과되었습니다.
• 553 요청된 동작이 수행되지 않았습니다. 파일 이름을 허용할 수 없습니다.

일반 FTP 상태 코드와 그 원인
• 150 - FTP는 두 가지 포트를 사용합니다. 즉, 명령을 보내는 경우에는 21을 사용하고 데이터를 보내는 경우에는 20을 사용합니다. 상태 코드 150은 서버가 포트 20에서 새 연결을 열어 데이터를 보내려고 한다는 것을 나타냅니다.
• 226 - 이 명령은 포트 20에서 데이터 연결을 열어 파일 전송과 같은 동작을 수행합니다. 이 동작이 완료되고 데이터 연결이 닫힙니다.
• 230 - 이 상태 코드는 클라이언트가 올바른 암호를 보낸 후에 나타납니다. 사용자가 로그온되었음을 나타냅니다.
• 331 - 클라이언트가 사용자 이름을 보낸 후에 이 상태 코드가 나타납니다. 이 동일한 상태 코드는 제공된 사용자 이름이 시스템의 올바른 계정인지 여부에 관계없이 나타납니다.
• 426 - 이 명령은 데이터 연결을 열어 동작을 수행하지만 이 동작이 취소되고 데이터 연결이 닫힙니다.
• 530 - 이 상태 코드는 사용자 이름과 암호 조합이 유효하지 않으므로 사용자가 로그온할 수 없음을 나타냅니다. 사용자 계정을 사용하여 로그온하는 경우 사용자 이름 또는 암호를 잘못 입력했거나 익명 액세스만 허용하도록 선택했을 수 있습니다. 익명 계정으로 로그온하는 경우 IIS가 익명 액세스를 거부하도록 구성되었을 수도 있습니다.
• 550 - 이 명령은 지정된 파일을 사용할 수 없으므로 실행되지 않습니다. 예를 들어, 이 상태 코드는 존재하지 않는 파일을 가져오려고(GET) 하거나 쓰기 액세스 권한이 없는 디렉터리에 파일을 두려고(PUT) 하는 경우에 발생합니다.

Posted by jjblaid
로그 파일 위치
기본적으로 IIS는 %WINDIR\System32\Logfiles에 해당 로그 파일을 저장합니다. 이 디렉터리에는 각 WWW(World Wide Web) 및 FTP 사이트에 대한 별도의 디렉터리가 포함됩니다. 기본적으로 로그는 디렉터리에서 매일 만들어지고 날짜를 포함하는 이름(예: exYYMMDD.log)으로 지정됩니다.

HTTP

1xx - 정보 전달용
이 상태 코드는 임시 응답을 나타냅니다. 클라이언트가 정식 응답을 받으려면 하나 이상의 1xx 응답을 받을 준비가 되어 있어야 합니다.
• 100 - 계속 작업합니다.
• 101 - 프로토콜을 전환합니다.

2xx - 완료
상태 코드의 이 클래스는 서버가 클라이언트 요청을 받아들였음을 나타냅니다.
• 200 - 클라이언트 요청이 성공했습니다.
• 201 - 만들어졌습니다.
• 202 - 받아들여졌습니다.
• 203 - 권한이 없는 정보입니다.
• 204 - 내용이 없습니다.
• 205 - 내용을 다시 설정합니다.
• 206 - 일부 내용

3xx - 리디렉션
클라이언트 브라우저는 요청을 처리하기 위해 좀더 조치를 취해야 합니다. 예를 들어, 브라우저는 서버에서 다른 페이지를 요청해야 하거나 프록시 서버를 사용하여 요청을 반복해야 할 수 있습니다.
• 302 - 개체 이동
• 304 - 수정되지 않았습니다.
• 307 - 임시 리디렉션

4xx - 클라이언트 오류
오류가 발생하고 클라이언트에 문제가 있는 것으로 나타납니다. 예를 들어, 클라이언트가 존재하지 않는 페이지를 요청하거나 올바른 인증 정보를 제공하지 않을 수도 있습니다.
• 400 - 요청이 잘못되었습니다.
• 401 - 액세스가 거부되었습니다. IIS는 오류의 원인을 보다 구체적으로 나타내는 여러 다른 401 오류를 정의합니다. 이러한 특정 오류 코드는 브라우저에 표시되지만 IIS 로그에는 표시되지 않습니다.
• 401.1 - 로그온하지 못했습니다.
• 401.2 - 서버 구성으로 인해 로그온하지 못했습니다.
• 401.3 - 리소스의 ACL에 의해 액세스가 거부되었습니다.
• 401.4 - 필터에 의해 권한을 부여하지 못했습니다.
• 401.5 - ISAPI/CGI 응용 프로그램에 의해 권한을 부여하지 못했습니다.
• 401.7 - 웹 서버의 URL 인증 정책에 의해 액세스가 거부되었습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 403 - 금지. IIS는 오류의 원인을 보다 구체적으로 나타내는 여러 다른 403 오류를 정의합니다.
• 403.1 - 실행 액세스 금지
• 403.2 - 읽기 액세스 금지
• 403.3 - 쓰기 액세스 금지
• 403.4 - SSL이 필요합니다.
• 403.5 - SSL 128이 필요합니다.
• 403.6 - IP 주소가 거부되었습니다.
• 403.7 - 클라이언트 인증서가 필요합니다.
• 403.8 - 사이트 액세스가 거부되었습니다.
• 403.9 - 사용자가 너무 많습니다.
• 403.10 - 구성이 올바르지 않습니다.
• 403.11 - 암호 변경
• 403.12 - 매퍼가 액세스를 거부했습니다.
• 403.13 - 클라이언트 인증서를 취소했습니다.
• 403.14 - 디렉터리 목록이 거부되었습니다.
• 403.15 - 클라이언트 액세스 라이센스가 초과되었습니다.
• 403.16 - 클라이언트 인증서가 신뢰되지 않거나 잘못되었습니다.
• 403.17 - 클라이언트 인증서가 만료되었거나 아직 유효하지 않습니다.
• 403.18 - 현재 응용 프로그램 풀에서 요청된 URL을 실행할 수 없습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 403.19 - 이 응용 프로그램 풀에서 클라이언트에 대한 CGI를 실행할 수 없습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 403.20 - Passport 로그온에 실패했습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.

• 404 - 찾을 수 없습니다.
• 404.0 - (없음) - 파일 또는 디렉터리를 찾을 수 없습니다.
• 404.1 - 요청된 포트에서 웹 사이트에 액세스할 수 없습니다.
• 404.2 - 웹 서비스 확장 잠금 정책으로 인해 이 요청이 방지됩니다.
• 404.3 - MIME 맵 정책으로 인해 이 요청이 방지됩니다.

• 405 - 이 페이지에 액세스하는 데 사용되는 HTTP 동사를 허용할 수 없습니다(메서드를 허용할 수 없음).
• 406 - 클라이언트 브라우저가 요청된 페이지의 MIME 형식을 받아들이지 않습니다.
• 407 - 프록시 인증이 필요합니다.
• 412 - 전제 조건이 실패했습니다.
• 413 - 요청 엔터티가 너무 큽니다.
• 414 - 요청 URI가 너무 깁니다.
• 415 - 지원되지 않는 미디어 유형입니다.
• 416 - 요청된 범위를 충족시킬 수 없습니다.
• 417 - 실행하지 못했습니다.
• 423 - 잠금 오류

5xx - 서버 오류
서버에 오류가 발생하여 요청을 완료할 수 없습니다.
• 500 - 내부 서버 오류
• 500.12 - 응용 프로그램이 웹 서버에서 다시 시작되는 중입니다.
• 500.13 - 웹 서버 사용량이 많습니다.
• 500.15 - Global.asa의 직접 요청을 허용할 수 없습니다.
• 500.16 - UNC 인증 자격 증명이 잘못되었습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 500.18 - URL 인증 저장소를 열 수 없습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 500.100 - 내부 ASP 오류
• 501 - 헤더 값이 구현되지 않은 구성을 지정합니다.
• 502 - 웹 서버가 게이트웨이나 프록시 역할을 하는 동안 잘못된 응답을 받았습니다.
• 502.1 - CGI 응용 프로그램이 시간을 초과했습니다.
• 502.2 - CGI 응용 프로그램에서 오류가 발생했습니다.

• 503 - 서비스를 사용할 수 없습니다. 이 오류 코드는 IIS 6.0에만 해당됩니다.
• 504 - 게이트웨이가 시간을 초과했습니다.
• 505 - HTTP 버전이 지원되지 않습니다


Posted by jjblaid
Logparser는 MS에서 만든 강력한 IIS, W3C, 이벤트 로그 분석툴로서 SQL 쿼리타입으로 조건별 검색할 수 있는 강력한 툴입니다.

1) 가장 최근에 생성된 시간을 기준으로 ASP 스크립트를 변조한 Trojan Files 여부를 진단
 
C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, CreationTime FROM C:\inetpub\wwwroot\*.* ORDER BY CreationTime DESC" -rtp:-1 


2). 가장 최근에 수정된 Files 로그 찾기

C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, LastWriteTime FROM C:\inetpub\wwwroot\*.* ORDER BY LastWriteTime DESC" -rtp:-1   
  
3). 해커가 Trojan Files을 삭제한 경우에 HTTP 200 서버코드 흔적 로그를 찾는다.
 
C:\logparser "SELECT DISTINCT TO_LOWERCASE(cs-uri-stem) AS URL, Count(*) AS Hits FROM ex*.log WHERE sc-status=200 GROUP BY URL ORDER BY URL"    -rtp:-1   
  
* nc.exe, tini.exe, root.exe, cmd.exe, upload.asp, aspexec.asp, cmd.asp 같은 파일 이름이 있으면 의심

4) Script Abuse 분석(가장 많은 Request 요청을 받은 Executable 파일의 확장자 확인)

C:\logparser -i:FS "SELECT TO_LOWERCASE(SUBSTR(Name, LAST_INDEX_OF(Name, '.'),  STRLEN(Name))) AS Extenstion, Count(*) AS Files FROM C:\inetpub \wwwroot\*.*, C:\inetpub\scripts\*.* WHERE Attribute NOT LIKE 'D%' GROUP BY Extenstion ORDER BY Files DESC" -rtp:-1 

* 특히, .ASP, .DLL 파일 요청을 유심히 봐야함

5) HTTP 서버 500 에러코드 검사

C:\logparser "SELECT [cs-uri-stem], [cs-uri-query], Count(*) AS [Hits] FROM c:\logs\web\ex*.log WHERE sc-status = 500 GROUP BY [cs-uri-stem], [cs-uri-query] ORDER BY [hits], [cs-uri-stem] DESC" -rtp:-1 -i:iisw3c
 

6) 가장 많은 Request Hit 수를 높음 ASP, DLL 파일 확인

C:\logparser "SELECT TO_STRING(TO_TIMESTAMP(date, time), 'yyyy-MM-dd') AS Day, cs-uri-stem, Count(*) AS Total ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe') GROUP BY Day, cs-uri-stem ORDER BY cs-uri-stem, Day" -rtp:-1 

7) 시간당 에러수가 가장 많이 발생한 날짜 확인
  
C:\logparser "SELECT date, QUANTIZE(time, 3600) AS hour, sc-status, Count(*) AS Errors FROM ex03*.log WHERE sc-status>=400 GROUP BY date, hour, sc-status HAVING Errors>25 ORDER BY Error DESC" -rtp:-1 

* 25개 이상의 에러코드(404코드)를 발생한 날짜와 시간 결과를 출력

8) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
  
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1 

9) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
 
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1 

10)  모든 ASP 에러 기록 확인
  
C:\logparser "SELECT cs-uri-query, Count(*) AS Total FROM ex*.log WHERE sc-status>=500 GROUP BY cs-uri-query ORDER BY Total DESC" -rtp:-1 

* 특히, ODBC와 ADO 에러는 SQL Injection 가능성이 있으므로 주의깊게 살펴봐야 함

11) 스크립트 및 Executable 파일의 HTTP 서버 코드 기록 확인
  
C:\logparser "SELECT cs-uri-stem, sc-status, Count(*) AS Total FROM ex*.log WHERE TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%' GROUP BY cs-uri-stem, sc-status ORDER BY cs-uri-stem, sc-status" -rtp:-1 

12) Win32 Status Code 분석을 통한 Attack 확인
  
C:\logparser "SELECT cs-uri-stem, WIN32_ERROR_DESCRIPTION(sc-win32-status) AS Error, Count(*) AS Total FROM ex*.log WHERE sc-win32-status>0 AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, Error ORDER BY cs-uri-stem, Error" -rtp:-1
 

13) HTTP Method 통계 분석
  
C:\logparser "SELECT cs-uri-stem, cs-method, Count(*) AS Total FROM ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, cs-method ORDER BY cs-uri-stem, cs-method" -rtp:-1


Posted by jjblaid

이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오.

AWE(Address Windowing Extensions)를 사용하면 32비트 운영 체제에서 대량의 메모리에 액세스할 수 있습니다. AWE는 운영 체제에서 사용되며 구현 방식이 Microsoft Windows 2000 Server와 Windows Server 2003에서 약간의 차이가 있습니다. AWE는 awe enabled 옵션을 사용하여 설정됩니다.

Windows 2000에서 실행하는 Microsoft SQL Server 인스턴스는 SQL Server 시작 중에 다음 조건에 따라 메모리를 할당합니다.

  • 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 작은 경우 AWE를 활성화할 수 없습니다. 이 경우 SQL Server는 awe enabled 옵션 설정과 관계없이 AWE가 아닌 모드로 실행됩니다.
  • 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 크면 AWE를 활성화할 수 있습니다.
    • 사용 가능한 실제 메모리가 max server memory 옵션의 값보다 클 경우 SQL Server 인스턴스는 max server memory에 지정된 만큼 메모리 양을 잠급니다.
    • 사용 가능한 실제 메모리가 max server memory 옵션의 값보다 작거나 max server memory 옵션이 설정되지 않은 경우 SQL Server 인스턴스는 256MB를 제외한 모든 사용 가능 메모리를 잠급니다.
  • 할당된 후에는 SQL Server를 종료하기 전까지 AWE로 매핑된 메모리를 해제할 수 없습니다.

메모리 옵션 구성

AWE를 활성화할 때마다 max server memory 값을 설정하는 것이 좋습니다. awe enabled가 1로 설정되고 사용 가능한 실제 메모리가 사용자 모드 프로세스 공간보다 큰 경우, Windows 2000에서 실행되는 SQL Server 인스턴스는 서버를 시작할 때 사용 가능한 거의 모든 메모리(또는 max server memory 옵션이 설정된 경우 해당 값)를 잠급니다. max server memory가 설정되지 않은 경우 다른 응용 프로그램이나 SQL Server 인스턴스의 사용 가능한 실제 메모리는 128MB보다 작아집니다.

AWE로 매핑된 메모리 풀은 페이징 시스템 파일로 스와핑할 수 없습니다. 사용할 수 있는 실제 메모리가 더 필요한 경우 Windows는 다른 응용 프로그램을 스와핑해야 하며 이 때 이러한 응용 프로그램의 성능이 저하될 수 있습니다.

다른 응용 프로그램의 성능 저하를 방지하려면 추가 메모리 여유 공간을 남기도록 max server memory를 구성하여 다른 응용 프로그램 및 운영 체제의 다양한 요구에 부응할 수 있도록 하십시오. 컴퓨터에서 사용할 다른 응용 프로그램들을 모두 시작한 후에 사용할 수 있는 메모리 양을 파악하여 SQL Server 인스턴스에 안전하게 할당할 수 있는 메모리 양을 결정할 수 있습니다.

ms190673.note(ko-kr,SQL.105).gif참고:
Windows 2000 Server의 경우 SQL Server AWE의 min server memory 설정이 무시됩니다.

SQL Server 성능 모니터의 Total Server Memory (KB) 카운터를 사용하여 AWE 모드로 실행되는 SQL Server 인스턴스에서 할당할 메모리 크기를 결정하거나 sysperfinfo에서 메모리 사용량을 선택하십시오.

자세한 내용은 메모리 사용 모니터링을 참조하십시오.

AWE를 사용하는 여러 개의 SQL Server 인스턴스 실행

Windows 2000에서 서버를 실행 중인 경우 각 인스턴스에 max server memory 설정이 필요합니다. Windows 2000 운영 체제에서 실행하는 SQL Server는 AWE로 매핑된 메모리의 동적 할당을 지원하지 않으므로 각 인스턴스에 대해 max server memory 옵션을 설정하는 것이 좋습니다.

모든 인스턴스에 대한 max server memory 값의 합계가 컴퓨터의 총 실제 메모리보다 작아야 합니다. 합계가 총 실제 메모리보다 큰 경우 일부 인스턴스가 시작되지 않거나 max server memory 설정에 지정한 것보다 작은 메모리에 액세스하게 됩니다. 예를 들어 컴퓨터의 실제 메모리가 16GB이고 설치된 SQL Server 인스턴스가 3개라고 가정합니다. 또한 max server memory가 각 인스턴스에 대해 8GB로 설정되어 있습니다. 세 인스턴스를 모두 중지하고 다시 시작할 경우 메모리 할당은 다음과 같습니다.

  1. 첫 번째 인스턴스는 8GB의 실제 메모리에 액세스합니다.
  2. 두 번째 인스턴스는 8GB보다 약간(최대 128MB까지) 작은 실제 메모리에 액세스하여 시작됩니다.
  3. 세 번째 인스턴스는 동적 메모리 모드에서 시작되며 256MB 이하의 실제 메모리에 액세스합니다.

자세한 내용은 큰 데이터베이스의 메모리 관리를 참조하십시오.


SQL Server는 Windows Server 2003에서 AWE 메모리의 동적 할당을 지원합니다. SQL Server는 시작 과정에서 AWE로 매핑된 메모리의 일부만 예약합니다. AWE로 매핑된 추가 메모리가 필요한 경우 운영 체제에서 동적으로 메모리를 SQL Server에 할당합니다. 마찬가지로 적은 리소스만 필요한 경우 SQL Server에서는 다른 프로세스나 응용 프로그램에서 사용할 수 있도록 AWE 매핑된 메모리를 운영 체제로 반환합니다. awe enabled 구성 옵션에 대한 자세한 내용은 awe enabled 옵션을 참조하십시오.

Windows Server 2003 제품군부터 지원하는 실제 메모리 양이 증가했습니다. 따라서 AWE에서 액세스할 수 있는 실제 메모리 양은 사용 중인 운영 체제에 따라 달라집니다. 다음 목록에서는 작성 시점을 기준으로 각각의 Windows Server 2003 운영 체제가 액세스할 수 있는 최대 실제 메모리를 보여 줍니다.

  • Windows Server 2003 Standard Edition에서는 실제 메모리를 4GB까지 지원합니다.
  • Windows Server 2003 Enterprise Edition에서는 실제 메모리를 32GB까지 지원합니다.
  • Windows Server 2003 Datacenter Edition에서는 실제 메모리를 64GB까지 지원합니다.

메모리 옵션 구성

SQL Server는 Windows Server 2003 운영 체제의 모든 버전에서 실행할 때 AWE로 매핑된 메모리를 동적으로 할당합니다. 따라서 버퍼 풀이 AWE로 매핑된 메모리를 동적으로 관리하여(min server memory 및 max server memory 옵션의 제약을 받음) 전체 시스템 요구 사항에 따라 SQL Server 메모리 사용량을 조절할 수 있습니다.

AWE가 설정되면 SQL Server는 항상 AWE로 매핑된 메모리를 사용하려고 시도합니다. 이는 응용 프로그램에 3GB 미만의 사용자 모드 주소 공간을 제공하도록 구성된 컴퓨터를 포함하여 모든 메모리 구성에 적용됩니다.

  • Windows Server 2003에서 실행하는 SQL Server의 기본 메모리 모드로 AWE를 설정하는 것이 좋습니다. Hot Add 메모리 기능을 사용하려면 SQL Server 시작 과정에서 AWE를 설정해야 합니다. 자세한 내용은 Hot Add 메모리을 참조하십시오.
ms190673.note(ko-kr,SQL.105).gif참고:
AWE는 필요하지 않으며 64비트 운영 체제에서 구성할 수 없습니다.

  • AWE로 매핑된 메모리는 3GB 미만까지만 지원되므로 min server memory 및 max server memory 값을 실제 메모리 범위 내에서 정의하거나 두 옵션의 기본값을 사용하십시오.
  • 컴퓨터에서 실행되는 다른 응용 프로그램에 대한 추가 메모리를 보장하기 위해 SQL Server에 대한 max server memory를 설정할 수도 있습니다. SQL Server는 AWE로 매핑된 메모리를 동적으로 해제할 수 있지만 현재 할당된 AWE로 매핑된 메모리 양을 페이징 파일로 스와핑할 수는 없습니다.

SQL Server 인스턴스에서 AWE를 사용하려면 sp_configure를 사용하여 awe enabled 옵션을 1로 설정한 다음 SQL Server를 다시 시작하십시오.

min server memory와 max server memory에 대한 자세한 내용은 서버 메모리 옵션을 참조하십시오.

AWE를 설정하기 전에 Lock Pages in Memory 정책을 구성해야 합니다. 자세한 내용은 방법: Lock Pages in Memory 옵션 설정(Windows)을 참조하십시오.

다음 예에서는 AWE를 활성화하고 min server memory 제한을 1GB로, max server memory 제한을 6GB로 구성하는 방법을 보여 줍니다.

먼저 AWE를 구성합니다.

sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'awe enabled', 1
RECONFIGURE
GO

SQL Server를 다시 시작한 후 SQL Server 오류 로그에 다음 메시지가 기록됩니다. "Address Windowing Extensions이 설정되어 있습니다."

다음으로 메모리를 구성합니다.

sp_configure 'min server memory', 1024
RECONFIGURE
GO

sp_configure 'max server memory', 6144
RECONFIGURE
GO

이 예에서는 버퍼 풀이 AWE로 매핑된 메모리를 1GB에서 6GB 사이에서 동적으로 할당하도록 메모리를 설정합니다. 다른 응용 프로그램에 추가 메모리가 필요한 경우 SQL Server에서 필요하지 않은 AWE로 매핑된 할당 메모리를 해제할 수 있습니다. 이 예에서는 AWE로 매핑된 메모리를 최대 1GB까지만 해제할 수 있습니다.

Hot Add 메모리를 지원하는 컴퓨터에 메모리가 추가된 경우 SQL Server에서 동적 AWE 메모리를 통해 메모리를 늘릴 수도 있습니다. Windows Server 2003 3, Enterprise 및 Datacenter Edition에서 사용 가능한 Hot Add 메모리를 통해 컴퓨터를 실행하는 동안 메모리를 추가할 수 있습니다. 예를 들어 Windows Server 2003 Enterprise Edition에서 실행되는 SQL Server를 실제 메모리가 16GB인 컴퓨터에서 시작한다고 가정합니다. 운영 체제는 응용 프로그램의 가상 메모리 주소 공간을 2GB로 제한하도록 구성되고 SQL Server에서 AWE가 활성화됩니다. 이후 시스템 관리자가 컴퓨터를 실행하는 동안 16GB의 메모리를 추가하면 SQL Server는 즉시 추가 메모리를 인식하고 필요한 경우 이를 활용합니다.

AWE를 사용하는 방법은 Windows Server 2003 설명서를 참조하십시오.

AWE를 사용하는 여러 개의 SQL Server 인스턴스 실행

같은 컴퓨터에서 여러 개의 SQL Server 인스턴스를 실행 중이며 각 인스턴스가 AWE로 매핑된 메모리를 사용하는 경우 인스턴스가 예상대로 작동하는지 확인해야 합니다.

서버에서 Windows Server 2003을 실행하는 경우 각 인스턴스에 min server memory 설정이 필요합니다. Windows Server 2003에서 실행하는 SQL Server는 AWE로 매핑된 메모리의 동적 관리를 지원하므로 각 인스턴스에 대해 min server memory옵션을 설정하는 것이 좋습니다. AWE로 매핑된 메모리는 페이징 파일로 스와핑할 수 없으므로 모든 인스턴스에 대한 min server memory 값의 합계가 컴퓨터의 총 실제 메모리보다 작아야 합니다.

min server memory 옵션을 설정해도 SQL Server가 시작 시 최소 메모리를 확보하지는 않습니다. 메모리는 데이터베이스 작업을 기준으로 필요에 따라 할당됩니다. 그러나 min server memory 임계값에 도달한 후에는 SQL Server의 메모리 크기가 이보다 작은 경우 SQL Server가 메모리를 해제하지 않습니다. 각 인스턴스에 최소한 min server memory 값과 같은 메모리를 할당하기 위해 시작 직후 데이터베이스 서버 로드를 실행하는 것이 좋습니다. 일상적인 서버 작업 중에는 인스턴스별로 사용 가능한 메모리가 달라지지만 각 인스턴스에 설정된 min server memory 값보다 작아지지는 않습니다.

max server memory를 설정하거나 이 옵션의 기본 설정을 유지할 수 있습니다. max server memory를 기본값으로 유지하면 SQL Server 인스턴스 간 메모리 확보 경쟁이 생길 수 있습니다.


SQL Server 장애 조치 클러스터링 및 AWE 메모리를 사용할 경우 모든 인스턴스에 대한 max server memory 설정의 합계가 장애 조치 클러스터의 서버에서 사용 가능한 최소 실제 메모리보다 작은지 확인해야 합니다. 원본 노드보다 장애 조치 노드의 실제 메모리가 작으면 SQL Server 인스턴스를 시작할 수 없거나 원본 노드에서 가졌던 메모리보다 작은 메모리를 가지고 시작하게 됩니다.


AWE 사용

이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오.

SQL Server에서는 많은 양의 실제 메모리를 지원하기 위해 Microsoft Windows AWE(Address Windowing Extensions) API를 사용합니다. SQL Server에서는 Microsoft Windows 2000 Server 및 Microsoft Windows Server 2003의 메모리를 최대 64GB까지 액세스할 수 있습니다.

ms175581.note(ko-kr,SQL.105).gif참고:
AWE는 SQL Server Enterprise, Standard 및 Developer Edition에서만 지원되며 32비트 버전의 SQL Server에만 적용됩니다. Analysis Services에서는 AWE로 매핑된 메모리를 이용할 수 없습니다. 사용할 수 있는 실제 메모리가 사용자 모드 가상 주소 공간보다 적으면 AWE를 사용할 수 없습니다.

표준 32비트 주소는 최대 4GB의 메모리를 매핑할 수 있습니다. 따라서 32비트 프로세스의 표준 주소 공간은 4GB로 제한됩니다. 기본적으로 32비트 Microsoft Windows 운영 체제에서 2GB는 운영 체제용으로 예약되고 2GB를 응용 프로그램에서 사용할 수 있습니다. Windows 2000 Advanced Server의 Boot.ini 파일에서 /3gb 매개 변수를 지정하면 운영 체제에서 주소 공간으로 1GB만 예약되므로 응용 프로그램은 최대 3GB까지 액세스할 수 있습니다. /3gb 매개 변수에 대한 자세한 내용은 프로세스 주소 공간을 참조하십시오.

AWE는 응용 프로그램에서 표준 32비트 주소 지정을 통해 사용할 수 있는 2-3GB보다 많은 메모리의 주소를 지정할 수 있도록 하는 Windows의 메모리 관리 기능에 대한 확장 집합입니다. AWE를 사용하면 응용 프로그램이 실제 메모리를 확보한 다음 페이지되지 않은 메모리의 뷰를 32비트 주소 공간에 동적으로 매핑할 수 있습니다. 32비트 주소 공간은 4GB로 제한되지만 비페이징 메모리는 훨씬 더 커질 수 있습니다. 이를 통해 대형 데이터베이스 시스템과 같이 메모리를 많이 사용하는 응용 프로그램은 32비트 주소 공간에서 지원될 수 있는 것보다 많은 메모리의 주소를 지정할 수 있습니다.

AWE를 사용하도록 운영 체제를 구성하기 전에 다음 사항을 고려하십시오.

  • AWE를 사용하면 32비트 아키텍처에 4GB 이상의 실제 메모리를 할당할 수 있습니다. AWE는 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 큰 경우에만 사용해야 합니다.
  • 32비트 운영 체제에서 4GB 이상의 실제 메모리를 지원하려면 /pae 매개 변수를 Boot.ini 파일에 추가하고 컴퓨터를 다시 부팅해야 합니다. 자세한 내용은 Windows 설명서를 참조하십시오.
    ms175581.note(ko-kr,SQL.105).gif참고:
    Windows Server 2003에서 PAE는 서버가 Hot Add 메모리 장치를 사용하는 경우에만 자동으로 설정됩니다. 이 경우 Hot Add 메모리 장치를 사용하도록 구성된 시스템에서 /pae 매개 변수를 사용하지 않아도 됩니다. 다른 모든 경우에서 4GB가 넘는 메모리를 이용하려면 Boot.ini 파일의 /pae 매개 변수를 사용해야 합니다.

  • 컴퓨터에서 16GB 이상의 실제 메모리를 사용할 수 있으면 운영 체제에 시스템용으로 2GB의 가상 주소 공간이 필요하므로 2GB의 사용자 모드 가상 주소 공간만 지원할 수 있습니다. 운영 체제에서 16GB를 초과하는 메모리 범위를 사용할 수 있도록 하려면 Boot.ini 파일에 /3gb 매개 변수가 포함되지 않아야 합니다. 이 매개 변수가 지정되어 있으면 운영 체제에서 16GB를 초과하는 실제 메모리를 사용할 수 없습니다.
ms175581.note(ko-kr,SQL.105).gif참고:
SQL Server 버퍼 풀에서는 AWE로 매핑된 메모리를 모두 활용할 수 있지만 데이터베이스 페이지만 SQL Server의 가상 주소 공간에 동적으로 매핑하거나 매핑을 해제할 수 있으며 AWE를 통해 할당된 메모리를 완전히 활용할 수 있습니다. AWE는 가상 주소 공간에 영구적으로 존재하는 다른 개체, 추가 사용자, 스레드, 데이터베이스 및 쿼리를 직접 지원하지 않습니다.

최대 서버 메모리 값 목록은 메모리 아키텍처의 표를 참조하십시오.


큰 데이터베이스의 메모리 관리

SQL Server는 큰 크기의 물리적 메모리를 지원하기 위해 AWE(Address Windowing Extensions) API를 사용합니다. SQL Server는 32비트 Microsoft Windows 운영 체제인 Microsoft Windows XP Professional; Windows 2000 Standard Edition; Windows 2000 Advanced Server; Windows 2000 Datacenter Server; Windows Server 2003, Enterprise Edition 또는 Windows Server 2003, Datacenter Edition에서 최대 64GB의 물리적 메모리를 지원합니다.

SQL Server는 Windows Server 2003 운영 체제의 모든 버전에서 실행할 때 AWE로 매핑된 메모리를 동적으로 할당합니다. 다시 말해 버퍼 풀이 AWE로 매핑된 메모리를 동적으로 관리하여 전체 시스템 요구 사항에 맞추어 SQL Server 메모리 사용을 조절할 수 있습니다.

AWE는 액세스 가능한 프로세스 주소 공간이 4GB로 제한되는 32비트 응용 프로그램의 한계를 해결합니다. 32비트 포인터는 4GB를 초과하는 메모리 주소를 가리킬 수 없습니다.

AWE를 사용하면 응용 프로그램은 비페이지 메모리로 운영 체제가 허용하는 최대 물리적 메모리를 직접 예약할 수 있습니다. 또한 SQL Server는 디스크의 시스템 페이징 파일에서 정보를 읽는 대신 더 많은 정보를 캐싱할 수 있습니다. 이로 인해 데이터 액세스가 더 빨라지고 디스크 액세스 빈도가 감소되어 성능이 점차 향상됩니다.

ms191481.note(ko-kr,SQL.105).gif참고:
64비트 응용 프로그램은 메모리 액세스가 4GB로 제한되지 않기 때문에 AWE를 필요로 하지 않습니다.

AWE API에 대한 자세한 내용을 보려면 MSDN 웹 사이트를 방문하여 "Address Windowing Extensions" 용어를 검색하십시오.

SQL Server에서 NUMA(Non-Uniform Memory Access)를 사용하는 방법은 NUMA(Non-Uniform Memory Access) 이해를 참조하십시오.

Posted by jjblaid

현재까지 어떻게 하는 것이 제일 좋은지 확인 되지 않았지만 아래 정보 정도는 확인해야 하지 않나 생각 됩니다.

Log Bytes Sent/sec => LogBytesSent

초당 보낸 로그 바이트 수입니다.

 

Log Harden Time (ms) => LogHardenTime

마지막 1초 동안 로그 블록이 디스크에 확정될 때까지 기다린 시간(밀리초)입니다.

 

Log Send Queue KB => LogSendQueue

미러 서버로 아직 보내지 않은 로그의 총 KB 수입니다.

 

Log Send Flow Control Time (ms) => LogSendControlTime

마지막 1초 동안 로그 스트림 메시지가 전송 흐름 제어를 기다린 시간(밀리초)입니다.

로그 데이터와 메타데이터를 미러링 파트너로 보내는 것은 데이터베이스 미러링에서 가장 데이터를 많이 사용하는 작업이며 데이터베이스 미러링 및 Service Broker 송신 버퍼를 독점할 수 있습니다. 이 카운터를 사용하여 데이터베이스 미러링 세션별로 이 버퍼의 사용을 모니터링할 수 있습니다.

 

Mirrored Write Transactions/sec => MirroredWriteTransactions

마지막 1초 동안 미러된 데이터베이스에 썼으며 커밋을 위해 로그가 미러로 전송될 때까지 기다린 트랜잭션 수입니다.

이 카운터는 주 서버가 로그 레코드를 미러 서버로 보내는 경우에만 증가됩니다.

 

Pages Sent/sec => PagesSent

초당 보낸 페이지 수입니다.

 

Send/Receive Ack Time => ReceiveAckTime

마지막 1초 동안 메시지가 파트너의 승인을 기다린 시간(밀리초)입니다.

이 카운터는 설명이 없는 장애 조치, Send Queue 또는 긴 트랜잭션 대기 시간과 같이 네트워크 병목 상태로 인해 발생할 수 있는 문제를 해결하는 데 도움이 됩니다. 이러한 경우 이 카운터의 값을 분석하여 네트워크에서 문제를 일으키는지 여부를 확인할 수 있습니다.

 

Sends/sec => MessageSends

초당 보낸 미러링 메시지 수입니다.

 

Transaction Delay => TransactionDelay

종료되지 않은 커밋 승인을 기다리는 지연 시간입니다.

Posted by jjblaid
이전버튼 1 2 3 4 5 6 이전버튼

블로그 이미지
jjblaid

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함