아파치 로그파일을 날짜별로 나누는 방법, 일주일 지난 파일 삭제하는 스크립트

2010/06/08 11:16

Apache에서 Log 파일을 자동으로 나누는 방법입니다.
기본으로  로그가 단일 파일로 쌓이게 되는데  서비스중인 경우 파일정리를 할 수 없으므로 
날짜별로 로그파일이 생성되도록  설정해주어야 합니다.

1. 설정 파일 확인하기
우선 아파치의 설정파일이 있는 경로에 들어가보세요 (시스템별로 다를 수있습니다)
C:\Apache2\conf\httpd.conf

2. 파일내의 아래 내역 수정하기 (없으면 추가하기)

#ErrorLog logs/error.log
ErrorLog "|bin/rotatelogs.exe logs/error.%Y%m%d.log 86400"

#CustomLog logs/access.log
customLog "|bin/rotatelogs.exe logs/access.%Y%m%d.log 86400"

3. Apache 서비스 재 시작.

자 그럼   이제부터 일정기간 지난 로그파일을 삭제하여  로그파일을 정리해보도록 하겠습니다.
아래의 스크립트 파일을  작업스케쥴러를 통해  매일 야간에 실행되도록 하면  됩니다




스크립트 내역은 아래와 같습니다.  그냥 실행하면  아마도 대부분 실행이 안될겁니다.
용도에 따라   폴더명 및  날짜를 수정해서 사용하세요
아래 스크립트는  협력사의 직원분으로부터  받은 것인데 유용해서 공유합니다.

Option Explicit

' 폴더명, 날짜 지정
Const strRootPath = "c:\Apache2\logs\"
Const nDays = 7

Dim oFSO
Set oFSO = CreateObject("scripting.FileSystemObject")

Dim oFolder, oSubFolder
Set oFolder = oFSO.GetFolder(strRootPath)

Dim oFile

'지정된 폴더 안의 파일 삭제
For Each oFile In oFolder.Files
If Int(Now() - oFile.DateLastModified) >= nDays Then
oFile.Delete
End If
Next

크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
자녀들아 우리가 말과 혀로만 사랑하지 말고 오직 행함과 진실함으로 하자
요한1서 3:18

우키 지식 (IT Knowledge)/Server

2010/06/08 11:16 2010/06/08 11:16

SMS 2003을 이용하여 프로그램을 배포하는 법

2008/11/19 14:49
 이 글에서는  SMS 2003을 사용하여  문서 보안 프로그램인 FSF를  배포하는 방법에 대해 설명합니다. 이 방법은 대부분의 상황에 적용할 수 있습니다. SMS 2003에 대한 자세한 내용은 다음 Microsoft TechNet 웹 사이트를 참조하십시오.
Systems Management Server 2003 Technical Library

   여기서는 조직에 SMS 2003 SP3이 이미 설치 및 구성되어 실행 중이라고 가정합니다.  사용중인 PC들에  SMS 2003 클라이언트 에이전트가 설치되어 있다고 가정합니다. 여기서부터  SMS를 이용하여 프로그램 배포를 하는 방법을 기술합니다.

1.  FSF설치 프로그램 파일 복사
FSF  설치 파일 및 폴더를  SMS 2003 서버에서 액세스할 수 있는 단일 네트워크 공유 폴더에 붙여 넣습니다.  SMS서버의  공유된 로컬폴더에 넣으셔도 됩니다.

2.  배포를 위한 컬렉션을 만듭니다.
 SMS 컬렉션에는 소프트웨어 배포에 필요한 리소스 집합이 포함되어 있으며, 여기서 리소스는 Outlook용 Microsoft Dynamics CRM을 설치할 클라이언트 컴퓨터입니다. 컬렉션을 만들려면 다음 단계를 수행합니다.|

 1) 먼저 쿼리를 작성합니다.
    a. SMS 2003 서버에 관리자로 로그온한 상태로 SMS Administrator Console을 시작합니다.
    b. Site Database(사이트 데이터베이스)를 확장하고 Queries(쿼리)를 마우스 오른쪽 단추로 클릭한 다음 New(새로 만들기)를 가리키고 Queries(쿼리)를 클릭합니다
    c. Queries  Properties(쿼리 속성) 대화 상자에서 [Deploy Client in KS with old FSF]과 같은 쿼리 이름을 입력 한 후 Edit Query Statement 버튼을 클릭합니다.
    d, General 탭 하단의 Show Query Language버튼을 클릭하면 Query Language 창이 열리는데 아래의 내역을 복사해서 붙여 넣습니다.   

select SMS_R_System.Name, SMS_R_System.IPAddresses, SMS_R_System.LastLogonUserName, SMS_G_System_UnknownFile.FileName, SMS_G_System_UnknownFile.FileVersion, SMS_R_System.OperatingSystemNameandVersion from  SMS_R_System inner join SMS_G_System_UnknownFile on SMS_G_System_UnknownFile.ResourceID = SMS_R_System.ResourceId where SMS_R_System.Client = 1 and SMS_R_System.IPAddresses like "192.168.%" and SMS_G_System_UnknownFile.FileName = "f_cmhver.dll" and SMS_G_System_UnknownFile.FileVersion != "1, 6, 34, 18" and SMS_R_System.OperatingSystemNameandVersion != "Microsoft Windows NT Workstation 6.0"

     e. Show Query Design버튼을 누르시면 쿼리의 내역을 확인할 수있습니다. General 탭에선 보여질 데이터가 리스트되어 있고  Criteria탭에선 조건을 보실수있습니다.  확인되었으면 OK 버튼 눌러서 나와주세요  
(위에서 만든 쿼리는 지점1에 있는 PC중  f_cmhver.dll1.6.34.18이 아닌 모든 PC를 리스트하라는 것입니다)
     f. ok버튼을 클릭하여 [Deploy Client in KS with old FSF] 쿼리 작성을 완료합니다.

2) 이제 만든 쿼리를 기반으로 콜렉션을 만들겠습니다.
a.  SMS 2003 서버에 관리자로 로그온한 상태로 SMS Administrator Console을 시작합니다.
b.   Site Database(사이트 데이터베이스)를 확장하고 Collections(컬렉션)를 마우스 오른쪽 단추로 클릭한 다음 New(새로 만들기)를 가리키고 Collection(컬렉션)을 클릭합니다.
c.   Collection Properties(컬렉션 속성) 대화 상자에서 [Deploy Client in KS with old FSF]과 같은 컬렉션 이름을 입력합니다.
d.   Membership Rules(구성원 자격 규칙) 탭을 클릭하고 New(새로 만들기)를 클릭한 후에 다음 정보를 사용하여 Create Direct Membership Rule Wizard(구성원 자격 규칙 직접 만들기 마법사)를 완료합니다.
e.   Query Rule Properties(쿼리 룰 속성) 페이지에서 Name[Deploy Client in KS with old FSF]를 입력하고 나서 Import Query Statement 를 클릭합니다.
f.   Browse Query창에서 앞서 만든 [Deploy Client in KS with old FSF] 쿼리를 선택해주고 OK를 클릭하여 나옵니다.
C.   OK를 눌러 Query Rule Properties(쿼리 룰 속성) 페이지에서 나옵니다..
D.   OK를 눌러 Collection Properties(컬렉션 속성)창 작업을 모두 마칩니다

3.    설치 프로그램을 배포합니다.
 .    SMS 2003 서버에 관리자로 로그온한 상태로 SMS Administrator Console을 시작합니다.
a.    Site Database(사이트 데이터베이스), Collections(컬렉션)를 차례로 확장한 다음 위의 절차에서 만든 [Deploy Client in KS with old FSF] 컬렉션을 마우스 오른쪽 단추로 클릭합니다. 
b.   All Tasks(모든 작업)를 가리킨 다음 Distribute Software(소프트웨어 배포)를 클릭합니다.
c.    Distribute Software to Collection Wizard(소프트웨어를 컬렉션에 배포 마법사)의 Welcome(시작) 페이지에서 Next(다음)를 클릭합니다.
d.    Package(패키지) 페이지에서 Create a new package and program(새 패키지 및 프로그램 만들기) 옵션을 클릭하고 Next(다음)를 클릭합니다.
e.    Package Identification(패키지 ID) 페이지에서 패키지 이름을 입력합니다. 다른 필드에 버전, 게시자, 언어 등을 설명하는 정보도 입력할 수 있습니다. Next(다음)를 클릭합니다.
f.   Sources Files(원본 파일) 페이지에서 Create a compressed version of the source(압축 버전의 원본 만들기)를 클릭한 후에 Next(다음)를 클릭합니다.
g.    Source File Compression(원본 파일 압축) 페이지에서 Local drive on site server(사이트 서버의 로컬 드라이버)를 클릭한 다음 위치를 입력하거나 Browse(찾아보기)를 클릭하여  설치 파일이 있는 폴더를 입력합니다. Example: D:\deploy\FSF\fsf1_ks\xp
 중요 : 지정하는 디렉터리에는 fclient(v1.6.34.18)_20081016_Silent_filefsf1.sfx.exe파일이 있어야 합니다.
h.    Distribution Points(배포 지점) 페이지에서 SMS 서버를 클릭하고 Next(다음)를 클릭합니다.
i.   Program Identification(프로그램 ID) 페이지에서 프로그램 설치를 실행하는 데 사용할 프로그램 이름과 명령줄을 입력합니다.
입력할 프로그램 이름 및 명령줄 정보를 결정할 때 다음 목록을 참고하십시오.
        Name(이름): 응용 프로그램이나 이 패키지 배포의 용도를 설명하는 이름을 입력합니다.
       Command line(명령줄): 설치 프로그램을 실행하는 데 사용할 명령을 입력합니다.   명령라인의 Browse 버튼을 클릭하여 실행파일을 선택하거나  직접 실행명령을 입력하면 되겠습니다. fclient(v1.6.34.18)_20081016_Silent_filefsf1.sfx.exe
j.    Program Properties(프로그램 속성) 페이지에서 다음 옵션을 선택합니다.
       Program can run(프로그램 실행 시기) 목록에서 Only when a user is logged on(사용자가 로그온한 경우에만)을 선택합니다.
        Run with administrative rights(관리자 권한으로 실행)를 선택합니다.
        After running(실행 후 필요한 작업) 목록에서 No action required(필요한 작업 없음)를 선택합니다.
k.   Advertise a Program(프로그램 광고) 페이지에서 Yes(예)를 선택하고 Next(다음)를 클릭합니다.
l.   Select a Program to Advertise(광고할 프로그램 선택) 페이지의 Comment(주석) 상자에 설명을 추가할 수 있습니다. 단, 다른 항목은 변경하지 마십시오. Next(다음)를 클릭합니다.
m.    Advertisement Name(광고 이름) 페이지에서 아무 항목도 변경하지 않고 Next(다음)를 클릭합니다.
n.    Advertise to Subcollections(하위 컬렉션에 광고) 페이지에서 아무 항목도 변경하지 않고 Next(다음)를 클릭합니다.
o.    Advertisement Schedule(광고 일정) 페이지에서 광고가 만료되지 않았는지 확인하고 Next(다음)를 클릭합니다.
p.    Assign Program(프로그램 할당) 페이지에서 Yes(예)를 클릭하고 Assign after(다음 날짜 이후에 할당) 목록에서 프로그램을 할당할 날짜를 선택한 후에 Next(다음)를 클릭합니다.
q.    Completing the Distribute Software to Collection Wizard(소프트웨어를 컬렉션에 배포 마법사 완료) 페이지에서 Finish(마침)를 클릭합니다.

4.    광고(Advertisements)의 속성을 조정하고 광고를 다시 실행합니다.
배포 지점에서 프로그램을 실행할 BITS를 광고에서 구성합니다. 네트워크에서 클라이언트 연결이 끊어지면 설치 프로그램이 실행되지 않습니다. 대부분의 배포에서는 SMS 서버가 광고 대상 프로그램을 실행하기 전에 BITS를 사용하여 패키지를 클라이언트 컴퓨터로 다운로드합니다. 클라이언트의 연결이 끊어지면 SMS 서버는 연결이 끊어진 지점부터 배포를 다시 시작합니다. BITS를 사용하지 않으면 광고 대상 프로그램은 클라이언트 캐시(c:\WINDOWS\System32\CCM\Cache)에 표시되지 않습니다. 위에서 설명한 단계를 완료하는 즉시 다음 단계를 수행하여 프로그램을 다운로드하는 데 BITS가 사용되도록 하십시오.
 .    SMS 2003 서버에 관리자로 로그온한 상태로 SMS Administrator Console을 시작합니다.
a.    Site Database(사이트 데이터베이스)를 확장하고 Advertisements(광고)를 클릭한 다음 이전 단계에서 만든 광고를 마우스 오른쪽 단추로 클릭하고 Properties(속성)를 클릭합니다.
b.    Advanced Client(고급 클라이언트) 탭을 클릭한 다음 Download program from distribution point(배포 지점에서 프로그램 다운로드)를 클릭합니다. 확인을 클릭합니다..
c.    광고에 뜬 객체를 마우스 오른쪽 단추로 클릭하고 All Tasks(모든 작업)를 가리킨 다음 Re-run Advertisement(광고 다시 실행)를 클릭합니다.  (FSF1 - KS FSF1 v18 to Deploy Client in KS with old FSF)
d.    Yes(예)를 클릭하여 작업을 확인합니다.

5.    배포 상태를 확인합니다.
   1) 클라이언트에서 확인하기
 패키지를 빌드 및 광고하고 나면 SMS는 사용자가 앞서 지정한 클라이언트 컴퓨터로 설치 파일을 업로드합니다.
o    32비트 컴퓨터에서 파일은 클라이언트의 c:\WINDOWS\System32\CCM\Cache 폴더로 업로드됩니다.
o    64비트 컴퓨터에서 파일은 클라이언트의 c:\WINDOWS\SysWOW64\CCM\Cache 폴더로 업로드됩니다.
   2) 서버에서 확인하기
패키지 배포 및 실행 상태는 다음 단계를 통해 SMS 서버에서 확인할 수 있습니다.
b.    SMS 2003 서버에 관리자로 로그온한 상태로 SMS Administrator Console을 시작합니다.
c.    Site Database(사이트 데이터베이스), System Status(시스템 상태), Advertisement Status(광고 상태)를 차례로 확장합니다.
d.    앞서 만든 광고를 마우스 오른쪽 단추로 클릭하고 Show Messages(메시지 표시)를 가리킨 다음 All(모두)을 클릭합니다.
e.    광고 상태 메시지가 SMS Status Message Viewer(SMS 상태 메시지 뷰어) 창에 표시됩니다. 목록을 업데이트하려면 View(보기) 메뉴에서 Refresh(새로 고침)를 클릭합니다.

Distribute Software to Collection Wizard(소프트웨어를 컬렉션에 배포 마법사)에서 지정한 클라이언트에서 설치가 실행됩니다. 설치 중에 클라이언트 컴퓨터에는 새 패키지를 사용할 수 있음을 알리는 알림 영역 아이콘이 표시됩니다. 자동 설치가 아닌 경우에는 사용자가 아이콘을 두 번 클릭하고 설치 패키지를 선택한 다음 Run(실행)을 클릭해야 합니다. 패키지를 아직 사용할 수 없다는 오류 메시지가 표시되는 경우 몇 분 기다린 후에 설치를 다시 실행해 보십시오. 이 동작은 모든 파일이 업로드되기 전에 SMS 2003이 SMS 클라이언트에 패키지를 표시하는 알려진 문제로 인해 발생합니다.

워드문서로 위의 내용을 다시 정리해 보았습니다.


크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
여호와께 감사하라 저는 선하시며 그 인자하심이 영원함이로다
시편 118:1

우키 지식 (IT Knowledge)/Server ,

2008/11/19 14:49 2008/11/19 14:49

비스타SP1에서 원격서버관리도구(RSAT)를 사용하자

2008/10/21 20:55

   XP SP2, 혹은 서버2003 sp1을 쓰시는 분들은 이글을 읽으실 필요가 없습니다. 이전에 포스팅한 글에 오류가 있어서 수정할 겸, 업데이트해서 다시 올려봅니다.

  서버관리자는 자신이 사용하는  XP나 비스타에  윈도우서버2003용 adminpak을  설치함으써  편리하게 서버관리를 할수있었습니다.   ...  그런데 얼마전부터 매우  불편하게 느껴졌던 것이 있었습니다.   서버2003용 원격 Desktops 가 콘솔모드를 지원하지 않는다는 것이었습니다.   콘솔모드를 체크해도 일반 터미널 모드로 들어가게 된다는 거죠... 이것때문에 한동안 혼란스러웠답니다.  xp sp3와 vista sp1에 이르러서 mstsc /console 옵션이 없어지고 mstsc /admin 옵션으로 교체된 것이 그 원인이랍니다

   인터넷을 찾아보았더니  비스타SP1에서  RSAT를 설치하면  예전처럼  서버관리도구를 사용할수있다는 것을 알게되었습니다.   RSAT (원격 서버 관리도구)는 원래 VIsta SP1이상에서 Windows Server 2008을 관리할수있게 할  목적으로 제공된 관리툴입니다.

▶  비스타 SP1에  RSAT (원격서버 관리도구) 설치하는 법

1. 먼저 RSAT를 사용하기위해서는  비스타용 업데이트 파일을 설치하셔야 합니다.
       Download: Remote Server Administration Tools (x86)
       Download:
Remote Server Administration Tools (x64) 
    ** 업데이트 (msu)파일이 잘 설치되지않고 에러가 나는 경우가 있는데  이럴땐 아래 포스팅을 참고해주세요
                        << msu 파일 설치시 에러 해결하기 >>

2. 제어판에서 RSAT를 사용하도록 설정해야 합니다
    1) 제어판의 [프로그램 및 기능] 아이콘을 클릭합니다.
    2) [Windows 기능 사용/ 사용 안함]을 클릭합니다.
    3) 원격서버관리도구항목을 체크해주고 확인을 누릅니다.

사용자 삽입 이미지

  이렇게 해서 설치한 모습니다.  뭐 예전 서버2003에 있던 관리도구와 크게 다른 점은 없긴합니다만 그래도 조금 업그레이드된 MMC 버전이 설치된 것이라고 할수있겠습니다.

3. 시작메뉴에 원격서버관리도구가 표시되도록 설정을 해줍니다.
     1)  아래쪽 Task바의 속성에서  설정이 가능합니다.
     2) 시작메뉴의 Customize 버튼을 눌러서  시스템관리도구가 표시되도록 설정합니다.
       (최초 포스팅할땐 한글Vista에 설치했는데 오늘은 영문Vista에 설치하여  영문,한글화면이 공존합니다. ^^)

사용자 삽입 이미지

사용자 삽입 이미지

자 그럼 원격데스크톱 (Remote Desktops)을 실행해보도록 하겠습니다.
연결창에서 새로와진 모습을 볼수있습니다.  이 연결인터페이스는 좀더 비쥬얼한 (?) 듯 보입니다.
제가 접속하고자 하는 서버는 참고로 서버2003 였답니다.
사용자 삽입 이미지

원격데스크탑의 속성창을 하나 본것입니다.  변화된 점이 보이시죠?  /admin옵션이 그것입니다.
사용자 삽입 이미지

 ▶  비스타 혹은 XP sp3용 서버관리도구
    (비스타 SP1이상에서만 RSAT가 제공된답니다. 설치가능한 adminpak을 설치하시면 되겠습니다)
        MS site에서 다운로드 << 서버 2003 sp2 관리도구 다운로드 (32bit용) >>  
        MS site에서 다운로드 << 서버 2003 sp2 관리도구 다운로드 (64bit용) >> 

  - 서버 2003 sp2에 포함된 관리도구를 다운로드하시면 비스타에서 아무 에러없이 관리도구가 잘 실행됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
나를 능하게 하신 그리스도 예수 우리 주께 내가 감사함은 나를 충성되이 여겨 내게 직분을 맡기심이니
디모데전서 1:12

우키 지식 (IT Knowledge)/Server ,

2008/10/21 20:55 2008/10/21 20:55
  1. Blog Icon
    붐잭

    감사합니다. 항상 여러가지 도움을 받습니다.
    혹시.... 이거 설치해서 사용해 보니 알트+콘트롤+델 같은 명령어는 어떻게 입력하는지요..
    혹시 일반적인 원격데스크탑 처럼 단일창으로 변환시키는 키 같은게 있을까요..

  2. Ctr+Alt+End 키를 누르시면 창이 듭니다.
    풀화면으로는 열리지않습니다.
    도움이 되셨길.. ^^

롱혼서버 베타3 public download 개시

2007/05/02 19:06

MS사이트에선 며칠전부터 롱혼 서버 베타3의 다운로드를 제공하고있습니다.
public beta라서  누구나 다운로드 할수있답니다.
지금 다운로드 중이랍니다.
다운로드를 위해선 MS사이트에 몇가지 사항들을 등록해주어야하구요
등록이 끝나면 Beta key가 발급됩니다...  

bata3니깐...조금은 안정화되었겠군여..  
RC버전이 나올때가 가까웠다는 말이 되기도 하구요...
롱혼서버에서 제공한다는 NAP와 RMS에 기대를 조금은 하고있습니다.

http://www.microsoft.com/technet/prodtechnol/beta/lhs/default.mspx

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
그러므로 우리가 긍휼하심을 받고 때를 따라 돕는 은혜를 얻기 위하여 은혜의 보좌 앞에 담대히 나아갈 것이니라.
히브리서 4:16

우키 지식 (IT Knowledge)/Server

2007/05/02 19:06 2007/05/02 19:06

fedora core6에서 vmware tool사용

2007/03/09 17:32
제 노트북 환경은 아래와 같습니다.
가상서버툴: vmware server 1.0.1 build 29996
VMware에 설치한 Fedora버전: Fedora core 6
근데 800*600 이상은 설정되지않고 vmware tools도 제대로 돌아가지않더군요..
자료를 찾던 끝에 아래의  링크에 있는 문서를 보고 성공했습니다.
http://www.thoughtpolice.co.uk/vmware/howto/fedora-core-6-vmware-tools-install.html

여러가지 문서를 찾아봤지만.. 오류를 겪었는데 위 문서가 가장심플하면서도 좋더군요..
영문이란 단점은 있지만요..^^
여러번 에러들을 만났지만 미리 떠두었던 snapshot으로 돌아가면서 반복 테스트했답니다. ^^
vmware의  snapshot기능 넘 좋아요.. ^^

아래 화면은 View의 Quickswitch기능과 FitGuest Now기능을 사용한것입니다. Wide라서...^^
듀얼모니터환경에 네트웍을 브릿지모드로 사용하니 여러컴터를 동시에 사용하는 효과가 있습니다.
사용자 삽입 이미지


제가 실행한것을 다시 정리해보겠습니다.
1. yum으로 GCC와  kernel업데이트하기
yum install gcc kernel-devel
2. 커널업데이트하기
uname -r             # running kernel
rpm -q kernel-devel  # installed kernel headers
yum -y upgrade kernel kernel-devel   # if the two version do not match
reboot
3. 커널헤더 확인해두기 (제 경우엔 쓸필요가 없었습니다.)
ls -d /usr/src/kernels/$(uname -r)*/include
4. VMware tools설치하기
vmware의 vm메뉴에서 설치하면.. CDrom에 vmware tools가 마운트됩니다.
압축을 풀고서 해당디렉토리로 이동해서 다음의 명령을 실행하여 설치합니다.
cd vmware-tools-distrib
./vmware-install.pl

근데 여기서 이상하게도 vmware-config-tools.pl돌렸는데 제대로 세팅되지않더군요
5. 리부팅하기
여기서 에러가 발생하더군요.. 정상적으로 화면을 띄울수없다면서요.. ㅠㅠ
발생한 에러내역은 Undefined Monitor "vmware"..라는것이었죠..
6.  Xconfig 파일수정하기
위 에러를 픽스하는것입니다.
vi /etc/X11/xorg.conf
이 파일에 아래의 내역을 추가했습니다
Section "Monitor"
        Identifier   "vmware"
EndSection

7. 리부팅하기 (800*600모드로 부팅되더군요)
8. vmware tools컨피그하기

cd /usr/bin
vmware-config-tools.pl
1024*768로 세팅했더랬죠...
./vmware-toolbox를 시작프로그램에 넣음..
9. 리부팅하기
10. 1024*768 모드로 부팅됨

크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
이 율법책을 네 입에서 떠나지 말게 하며 주야로 그것을 묵상하여 그 가운데 기록한대로 다 지켜행하라 그리하면 네 길이 평탄하게 될 것이라 네가 형통하리라
여호수아 1:8

우키 지식 (IT Knowledge)/Server

2007/03/09 17:32 2007/03/09 17:32

[freebsd] ntpd이용해서 자동으로 표준시각맞추기

2006/08/11 23:06
ISC DHCPD를 사용하다보니  failover하는 두대의 시스템의 시간이 항상 잘 맞아야하더군요
시간대가 너무 차이난다고 에러를 내길래 
BSD에 내장된 NTPD를 이용해서 자동으로 시간을 맞추게 하고싶었습니다.

1. 먼저 시간을 맞출수있게 ntpd를 실행하면 되겠구요...
#ntpd
2. 타임서버의 시간과 비교하여 시간을 맞추게하면 되겠습니다.
#ntpdate -s time.bora.net

이것을 시스템이 시작할때마다 자동으로 돌아가게하면 되는것이죠
/usr/local/etc/rc.d 디렉토리밑에  ntpd.sh 라는 스크립트 파일을 작성해서 넣었답니다.
이 디렉토리는 시스템이 부팅되고나서 자동으로 실행하고픈 스크립트파일들이 위치하게됩니다.
이젠 시스템이 리부팅되면 자동으로 시간이 맞춰진답니다.

#####ntpd.sh######
/usr/sbin/ntpd
ntpdate -s time.bora.net
####################
크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
너희의 믿음의 역사와 사랑의 수고와 우리 주 예수 그리스도에 대한 소망의 인내를 우리 하나님 아버지 앞에서 쉬지 않고 기억함이니 하나님의 사랑하심을 받은 형제들아 너희를 택하심을 아노라
데살로니가전서 1:3~4

우키 지식 (IT Knowledge)/Server

2006/08/11 23:06 2006/08/11 23:06

[dhcp failover] isc dhcpd의 failover

2006/08/05 11:14

드디어 dhcp failover에 성공했습니다.
윈도우dhcp가 못하는것이 있는데  dhcp failover가 불가능하다는것이죠
하지만 isc의 dhcpd는 failover로 동작이 가능하답니다.

dhcp서버는 정말 기본적이고 필수적인 네트웍서비스인데....
다운되었을시엔 사용자들에게  큰 혼란을 가져오기도합니다.
dhcp도 failover가 필요한것이죠...
active - stanby 로 동작하는데... 두개의 dhcpd가 잘 통신이 되어야 잘 작동하더군여
같은 dhcp pool을 공유할수있다는것이 큰 장점입니다.
아래의 config파일은 제가 실제로 사용한 파일인데...
아이피주소는 임의의 다른것으로 바꾸어서 올렸답니다.

환경:
primary: P3 1G , 256M, FreeBSD 6.1 , dhcpd 3.0.4
secondary:  VirtualServer- P3 1G, 196M, FreeBSD 6.1 dhcpd 3.0.4


▶ primary dhcpd 서버의 config

# /etc/dhcpd.conf for primary DHCP server
authoritative;
one-lease-per-client on;
ddns-update-style none;
option domain-name "domain.com";
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1,192.168.1.2;
default-lease-time 6000;
max-lease-time 72000;


failover peer "dhcp-failover" {
  primary; # declare this to be the primary server
  address 192.168.1.25;
  port 520;
  peer address 192.168.1.26;
  peer port 520;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
  mclt 1800;
  split 128;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers 192.168.1.254;
  option broadcast-address 192.168.1.255;
  pool  {
       failover peer "dhcp-failover";
       range 192.168.1.100 192.168.1.149;
       deny dynamic bootp clients;
       }
}


▶ secondary dhcpd 서버의 config
#/etc/dhcpd.conf for secondary DHCP server
authoritative;
one-lease-per-client on;
ddns-update-style none;
option domain-name "domain.com";
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1,192.168.1.2;
default-lease-time 6000;
max-lease-time 72000;


failover peer "dhcp-failover" {
  secondary; # declare this to be the secondary server
  address 192.168.1.26;
  port 520;
  peer address 192.168.1.25;
  peer port 520;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers 192.168.1.254;
  option broadcast-address 192.168.1.255;
  pool  {
       failover peer "dhcp-failover";
       range 192.168.1.100 192.168.1.149;
       deny dynamic bootp clients;
       }
}

실제로 기존에 사용하던 네트웍 장비의 dhcp기능을 내리고 failover dhcp 를 가동시켜보았구요
primary가 잘 동작하던 것을 확인하고 primary를 다운시키고 나서도
secondary가 그 기능을 완벽하게 대치하는지 (primary가 관리하던 dhcp pool을 그대로 이어받기)
테스트해보았습니다.  아래와 같이...

라우터 (Gateway, dhcp) 192.168.168.254
freeBSD isc primary dhcpd 192.168.168.25
freeBSD isc primary dhcpd 192.168.168.26


1. 최초 상태 (네트웍장비에서 제공하는 dhpd서버동작)
Ethernet adapter 무선 네트워크 연결:
       IP Address. . . . . . . . . . . . : 192.168.1.225
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.1.254
       DHCP Server . . . . . . . . . . . : 192.168.1.254
       DNS Servers . . . . . . . . . . . : 192.168.1.1
                                           192.168.1.2
       Lease Obtained. . . . . . . . . . : 2006년 8월 5일 토요일 오후 7:12:33
       Lease Expires . . . . . . . . . . : 2006년 8월 6일 일요일 오후 7:12:33

2.ip내려놓기
C:\Documents and Settings\wookie.DK-2DC5E418988E>ipconfig /release
Ethernet adapter 무선 네트워크 연결:
       Connection-specific DNS Suffix  . :
       IP Address. . . . . . . . . . . . : 0.0.0.0
       Subnet Mask . . . . . . . . . . . : 0.0.0.0
       Default Gateway . . . . . . . . . :

3. isc dhpcd(failover primary,secondary모두)가동시킨다.
** ip받기 (예상 primary dhcpd로 부터 새로운 ip를 받아올것이다)
C:\Documents and Settings\wookie.DK-2DC5E418988E>ipconfig /renew
Ethernet adapter 무선 네트워크 연결:
       IP Address. . . . . . . . . . . . : 192.168.1.124
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.1.254
       DHCP Server . . . . . . . . . . . : 192.168.1.25
       DNS Servers . . . . . . . . . . . : 192.168.1.1
                                           192.168.1.2
       Lease Obtained. . . . . . . . . . : 2006년 8월 5일 토요일 오후 7:15:04
       Lease Expires . . . . . . . . . . : 2006년 8월 5일 토요일 오후 7:45:04


4.isc dhpcd(failover secondary만)동작시킨다. -> primary다운시킴
** ip받기 (예상 secondary dhcpd로 부터 동일한 ip를 받아올것이다)
C:\Documents and Settings\wookie.DK-2DC5E418988E>ipconfig /renew
       IP Address. . . . . . . . . . . . :192.168.1.124
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.1.254
       DHCP Server . . . . . . . . . . . : 192.168.1.26
       DNS Servers . . . . . . . . . . . : 192.168.1.1
                                           192.168.1.2
       Lease Obtained. . . . . . . . . . : 2006년 8월 5일 토요일 오후 7:19:35
       Lease Expires . . . . . . . . . . : 2006년 8월 5일 토요일 오후 8:59:35

5.isc dhpcd(failover primary,secondary모두)동작시킨다. -> primary다시 작동시킴
** ip받기 (예상: primary dhcpd로 부터 동일한 ip를 받아올것이다)
C:\Documents and Settings\wookie.DK-2DC5E418988E>ipconfig /renew
Ethernet adapter 무선 네트워크 연결:
       IP Address. . . . . . . . . . . . : 192.168.1.124
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.1.254
       DHCP Server . . . . . . . . . . . : 192.168.1.25
       DNS Servers . . . . . . . . . . . : 192.168.1.1
                                           192.168.1.2
       Lease Obtained. . . . . . . . . . : 2006년 8월 5일 토요일 오후 7:22:16
       Lease Expires . . . . . . . . . . : 2006년 8월 5일 토요일 오후 9:02:16

추천링크: https://unzane.com/cgi-bin/man/man2html?5+dhcpd.conf 
영문이긴한데 엄청 잘나왔습니다.
참고한 링크: http://www.madboa.com/geek/dhcp-failover/
google의 bsd(unix) 검색도 활용했습니다.
유즈넷에 올라온 bsd관련된 질문,답변이 실제로 많은 도움이 되었습니다.
국내엔 검색된 페이지가 하나도 없어서  영문사이트를 헤매야했답니다. ㅠㅠ



single로 동작하는 DHCP서버의 컨피그



failover로 동작하는  DHCP서버1, 2의 컨피그

크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
우리를 구원하시되 우리의 행한바 의로운 행위로 말미암비 아니하고 오직 그의 긍휼하심을 좇아 중생의 씻음과 성령의 새롭게 하심으로 하셨나니
디도서 3:5

우키 지식 (IT Knowledge)/Server ,

2006/08/05 11:14 2006/08/05 11:14
  1. Blog Icon
    이충훈

    서브넷 항목의 "deny dynamic bootp clients;"가 무엇을 의미하는지요?

    일단 대충 감은 오는데... 인터넷에서 찾아봤었던 자료에선 없던거라 너무 궁금하네요...

    그리고 서브넷 항목의 "failover peer "dhcp-failover";"는 매 서브넷 항몽마다 꼭 들어가야

    하나요?

  2. failover네트웍에서는 dynamic bootp clients옵션을 거부해야 제대로 failover가 동작합니다.
    bootp는 네트웍상에서 host간 통신하기위한 것으로 dhcp의 모태가 된것입니다. 지금도 네트웍으로 OS를 설치할때 쓰곤하죠..
    failover peer 옵션은 매 서브넷마다 써줘야합니다.
    참고로 이 글에다가 dhcp서버가 하나있을때와 dhcp failover시의 dhcpd1 dhcpd2의 컨피그를 모두
    첨부해보았습니다. 참고하세요

  3. 유용한 정보. 좋은 디자인.

[isc dhcpd] freebsd를 dhcp서버로 사용하기

2006/07/30 15:28

안정적이라고 소문난 freebsd를 dhcp서버로 사용하기위해 작전을 시작했습니다.
dhcp는 freebsd의 기본구성에 들어있지않아서 isc의 dhcpd를 사용하기로 했습니다. ^^
구축하고자하는 dhcp의 기본구성은 아래와 같습니다.
▶ 기본구성
dhcp서버: 192.168.1.5  (Freebsd 6.1버전/ isc dhcp 3.0.4)
dns서버: 192.168.1.10, 192.168.1.11  (윈도우dns)
wins서버: 192.168.1.12
network: 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24
gateway: 각 네트웍의 1번 (192.168.1.1,192.168.2.1,192.168.3.1 ->백본스위치의 각 네트웍gw)
예약: websrv1: 192.168.1.15,  websrv2: 192.168.1.16  (웹서버)

▶ isc에서 dhcpd 최신버전 다운받기
ftp로 isc에 접속해서 dhcpd최신버전을 /bin디렉토리로 다운받습니다.
#ftp ftp.isc.org
connected to ftp.isc.org
User (ftp.isc.org:(none)): anonymous
Password: 1234
230 Login successful.
ftp> cd /isc/dhcp
ftp> lcd /bin
ftp> get dhcp-3.0.4.tar.gz
ftp> quit


▶ 다운받은 dhcpd  압축풀고 설치하기
#cd /bin
#tar zxvf dhcp-3.0.4.tar.gz
#cd  dhcp-3.0.4
#./configure
#make
#make install


설치후 제일먼저 할 일이 /etc 에 dhcpd.conf를 만들어주는 일입니다.
▶ dhcpd.conf 설정하기
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
authoritative;
Allow bootp;
ddns-update-style none;  #ddns-update-style 지정은 필수입니다.
ping-check true;
option subnet-mask 255.255.255.0;
option domain-name "domain.com";
option domain-name-servers 192.168.1.10,192.168.168.11;
option tftp-server-ip-address code 150 = ip-address;
option netbios-name-servers 192.168.168.12;
default-lease-time 10800;
max-lease-time 32400;
# default-lease-time 43200;
# max-lease-time 129600;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.100 192.168.1.200;
       option routers 192.168.1.1;
       ddns-updates off;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
       range 192.168.2.100 192.168.2.200;
       option routers 192.168.2.1;
       ddns-updates off;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
       range 192.168.3.100 192.168.3.200;
       option routers 192.168.1.1;
       ddns-updates off;
}
# ip예약하기##############
host websrv1 {
       hardware ethernet 00:ab:dc:c5:85:d3;
       fixed-address 192.168.1.100;
}
host websrv2 {
       hardware ethernet 00:dc:dd:c6:84:d4;
       fixed-address 192.168.1.101;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

▶ dhcpd.leases 파일 만들기
dhcp가 정상작동하기위해서는 releases파일을 작성해야합니다.
# touch /var/db/dhcpd.leases

▶ dhcpd 실행하기
dhcp서버에 network interface가 하나라면...
#dhcpd
dhcp서버에 network interface가 두개라면.. 뒤에 인터페이스명을 지정해야합니다.
인터페이스명은 ifconfig라고 쳐보면 알수있답니다.
#dhcpd xl0

▶ dhcpd 에러 확인하기
저두 첨에 에러가 나는 이유를 잘 몰랐습니다. 계속 같은 에러가 나는데 자세히 안나오더군여..
로그를 보라고 해서..  /var/log/messages 파일을 보니 다 나오더군요...^^
이렇게 초보티를 내다니...ㅋㅋ    이파일을 제일아랫부분에 가시면.. 에러내용을 보실수있습니다.
시스템에서 발생하는 에러정보들을 보실수있답니다.

▶ 시스템시작시 dhcpd 자동으로 시작하게 하기
FreeBSD는 /usr/local/etc/rc.d/*.sh 파일을 부팅시 작동으로 실행시킵니다.
때문에 dhcpd.sh 이라는 파일을 해당 디렉토리에 위치시키면 됩니다.
시스템을 설치한지 얼마 안되었다면 rc.d 디렉토리는 아무 파일도 없을겁니다.
하나 만듭시다.
#vi /usr/local/etc/rc.d/dhcpd.sh
dhcpd.sh++++++++++++++++++++++++++
/usr/sbin/dhcpd
+++++++++++++++++++++++++++++++++++

dhcpd가 어디있는지 모르겠다구요? 
#whereis dhcpd 라고 치시면 알려줍니다. ^^
그리고   스크립트파일에도 퍼미션을 줘야겠죠?
chmod 755 /usr/local/etc/rc.d/dhcpd.sh

공부할때 사용한 링크:
http://database.sarang.net/study/dhcp/dhcp.html
http://wpram.com/log/2005/04/08/installing_dhcp/
http://centos.pe.kr/owiki/data/centos/docs/redhat9/rhl-cg-ko-9/s1-dhcp-configuring-server.html
http://www.daniweb.com/tutorials/tutorial2949.html
http://yungs.net/WikiDocs/index.php?12%2Cdisplay=FreeBSD

크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
내가 주의 법을 어찌 그리 사랑하는지요 내가 그것을 종일 묵상하나이다
시편 119:97

우키 지식 (IT Knowledge)/Server

2006/07/30 15:28 2006/07/30 15:28
  1. Blog Icon
    skies

    좋은 내용 감사합니다.

Exchange2003 메일필터링하기

2006/05/25 00:18
Exchange2003 서버에서 메일필터링하기 작전입니다. 
스팸메일을 줄이는것은 메일서버의 성능을 보장하기위해서도 매우 필수적입니다.
물론 사용자들의 불편을 많이 줄일수도 있구요...^^

이 글은 마이크로소프트웨어지에 소개되었던 글을 zdnet에서 다시 올린것인데
제가 다시 조금 정리해서 올렸습니다. 


1.보낸 사람 필터링(Sender Filtering)=(exchange2000시절부터)

필요에 따라 도메인이나 특정 메일 주소를 등록할 수 있으며 여러 가지 옵션을 설정할 수도 있다. 먼저 [보낸 사람]은 필터링을 하고 싶은 도메인 앞에 @표시를 해서 입력하고, 주소 형태는 그대로 타이핑해 막을 수 있다. 약 850개까지 등록할 수 있으며 그 이상 입력하면 ‘LDAP Provider의 80072024’ 오류와 함께 먼저 입력한 것이 삭제된다. 이것은 [보낸 사람] 목록도 액티브 디렉토리(active directory) 데이터베이스 내에서 하나의 개체를 차지하게 되고 이것은 AD의 데이터베이스 단위인 8KB를 차지하는데, 이론적으로는 910개 정도(8*1024/9=910)가 들어가는 것이 정상이지만 이미 데이터베이스 내에 고정된 필드들이 존재하므로 이 50여개를 제외한 850여개로 제한되기 때문이다. [필터링한 메시지 보관]을 선택하게 되면 필터링한 것이 익스체인지가 설치된 하부 디렉토리의 Mailroot\vis 1\filter 폴더에 저장된다.

90년대 말과 2000년 초에는 스팸 메일을 보내는 기술도 그리 발달하지 못해 보낸 사람을 공란으로 해서 보내는 경우가 많았다. 그래서 나온 것이 [보낸 사람]이 비어 있는 메시지 필터링 기능이다. 하지만 요즘은 보내는 사람 란에 비어 있는 스팸 메시지는 거의 찾아볼 수 없다(일부 보이스 메일에서 보내는 메일의 경우 [보낸 사람] 란이 비어 있는 경우가 있다).

[주소와 필터가 일치하면 연결 끊기] 옵션을 선택하면 해당 주소가 보낸 메시지는 Mail From 명령 후에 곧바로 ‘554 5.1.0 Sender Denied’가 나타나고 연결이 종료된다. 이 옵션은 아예 연결 자체를 막아버리기 때문에 받는 서버의 부하에 전혀 영향을 미치지 않는다는 장점이 있지만, 보내는 사람이 필터링된 것을 알게 되므로 보낸 사람 란에 다른 주소를 입력하는 방식으로 악용될 가능성이 있다.

[보낸 사람에게 필터링한 것을 알리지 않고 수락] 옵션은 [주소와 필터가 일치하면 연결 끊기] 옵션을 선택하지 않았을 때 사용할 수 있다. 즉 보낸 사람에게는 정상적으로 메일을 보낸 것처럼 처리하지만 실제로는 필터링하도록 하는 것이다. 보내는 사람에게 메시지 필터링의 여부를 알지 못하게 하는 장점이 있지만 큰 메시지를 보내올 때 서버가 일단 받아들이기 때문에 대용량 부하가 발생할 수 있다.


2. 받는 사람 필터링-메일 주소 수집을 피해라

받는 사람 필터링은 디렉토리에 존재하지 않는 주소 또는 차단 목록에 기록된 특정 주소로 들어오는 메시지에 대해서 SMTP 세션에서 막아버리는 방법이다.

게이트웨이 역할을 하는 익스체인지 서버는 RCPT TO 명령을 받으면 받은 메일 주소가 유효한지를 알아보기 위해서 글로벌 카탈로그 서버에 질의를 한다. 이때 [디렉토리에 없는 사람 필터링] 옵션을 선택하면 메일 주소가 있는 경우에만 이후 명령을 수행해 메시지 전체 내용을 받고, 주소가 없으면 ‘501 5.5.4 Invalid Address’ 오류 메시지를 내보낸다. 이 옵션은 익스체인지 2003의 큐를 말끔하게 정리할 수 있는 팁이다.

2000 버전에서 큐 안에 그렇게 많이 쌓여서 괴롭히던 메일 찌꺼기들이 2003이 되면서부터 자취를 감추게 된 것도 모두 이 기능 덕분이다(사실 이것은 익스체인지 5.5나 익스체인지 2000에서도 특정 메일이 도착하면 디렉토리에 LDAP(Lightweight Directory Access Protocol)으로 질의하도록 하는 스크립트를 작성해 SMTP 이벤트 싱크(Event Sink)에 추가해도 충분히 방비할 수 있었다).

익스체인지 2000에서는 공용 폴더에서 익명의 사용자에게 기고자 권한이 주어졌었다. 또 회의실과 같이 리소스 사서함을 가진 서버에서는 외부의 사용자도 해당 사서함에 메일을 보낼 수가 있었다. 회사 내에 있던 배포 그룹이 메일 주소를 가질 수도 있었다.

스팸 메일 발송자들은 해당 메일 주소가 공용폴더 주소인지 아니면 리소스 사서함인지를 모르며, 설사 알고 있더라도 상관하지 않고 메일을 보낼 것이다. 만일 [받는 사람]란에 이런 리소스 주소들을 등록해 놓는다면 공용 폴더를 아주 깨끗하게 유지할 수 있을 것이다. [받는 사람]란에 특정 주소를 입력하고 나서 해당 주소로 접속하면 ‘550 5.7.1 Requested Action not taken: mailbox not available’ 오류를 나타낸다.

메일을 사용할 수 있도록 한 그룹의 경우 여기서 메일 주소를 입력해도 되며 <화면 3>과 같이 해당 메일 그룹의 속성 대화상에 있는 익스체인지 일반정보 탭에 있는 메시지 제한에서 설정해도 된다.

주의해야 할 것은 기본적으로 그룹에게는 모든 사람으로부터 메일을 받을 수 있도록 설정돼 있다는 사실이다. 따라서 가능하면 그룹에 대해서는 [인증된 사람으로부터만] 옵션을 선택하고 그 외 세부 옵션을 선택하는 것이 좋다. 그래야만 외부에 있는 사용자가 함부로 내부에 있는 메일 그룹으로 메시지를 보낼 수 없도록 막을 수 있다. 이렇게 설정한 상태에서 외부에 있는 사용자가 내부에 있는 그룹으로 메일을 보내면 ‘550 5.1.1 User unknown’ 오류가 나타난다.

받는 사람 필터링을 구성하면 서버의 부하를 줄일 수 있지만 DHA(Directory Harvest Attack)의 가능성이 여전히 존재한다. DHA란 스팸 메일 발송자들이 메일 주소를 얻는 방법 가운데 하나로, DNS 내에서 메일 서버의 위치를 파악해 해당 메일 서버에 사전식으로 조합된 메일 주소를 보내서 NDR을 보내지 않는 메일에 대해서 메일 주소의 유효성을 확인하는 방법이다. 이밖에도 스팸 메일 발송자들은 성인사이트나 메일링 서비스 업체의 데이터베이스를 해킹하거나 다른 사람들에게 돈을 주고 메일 주소를 사기도 한다.

그림은 DNS 내에 포함된 MX 레코드와 호스트 주소로 메일 서버의 주소를 알아내 사전식으로 조합된 메일 주소 목록을 이용, 해당 서버에 있는 유효한 메일 주소를 검색하는 DHA를 그림으로 나타낸 것이다.

이는 메일 주소를 수집하는 데 널리 사용되지만 사실 이렇게 해서 알아낸 메일 주소는 해킹을 통해서 얻은 주소 목록보다는 훨씬 가치가 떨어진다. 왜냐하면 특정 서버에 포함된 메일 주소는 해당 서버의 목적에 관심을 가진 사용자들의 주소지만 사전식으로 공격해서 얻은 메일 주소들은 해당 주소가 그것에 대해 관심이 있을지 여부를 알 수 없기 때문이다.

예를 들면 비아그라를 판매하려는 스팸 메일 발송자의 경우 일반 회사의 메일 서버에 사전식으로 공격하기 보다는 성인사이트를 운영하는 서버의 데이터베이스에 저장되어 있는 전자메일 주소 목록을 얻는 것이 비아그라를 훨씬 많이 판매할 수 있는 기회가 될 것이다.

아무리 메일 주소의 값어치가 떨어지더라도 잠재적인 고객확보 차원에서, 그리고 메일 주소를 다른 사람들에게 판매하기 위해서는 DHA를 수행하는데 이것을 방지하기 위해 널리 사용되는 기능이 타르피팅(Tarpiting) 기능(tar+pit의 합성어로 쥐를 잡을 때 사용하는 것처럼 타르로 된 끈끈이 덫을 의미한다)이다. SMTP 서버가 RCPT TO 명령을 통해 보낸 메일 주소가 디렉토리를 검색한 뒤 없다고 하면 늦게 응답하도록 해 스팸 발송자들이 해당 주소가 유효한지 여부를 알 수 없도록 하는 것이다.

타르피팅 기능은 윈도우 2003 환경에 SMTP 서비스의 버전(확인은 Windows\System32\inetsrv 디렉토리 안의 smtpsvc.dll이다)이 6.0.3790.175 이상 되어야 한다. 꾸준하게 보안 업데이트를 해 왔다면 문제가 없을 것이다. 지원 환경이 된다면 레지스트리를 변경해 줘야 한다. 레지스트리 HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet\Services\SMTPSVC\ Parameters에서 새로 만들기 → DWORD → TarpitTime을 입력한 후 시간을 초단위로 입력하고 재부팅하면 된다. 만일 값을 5라고 설정하면 RCPT TO 명령은 5초 뒤에 응답하게 될 것이다. 보통 스팸 메일 발송자들은 RCPT TO에 대한 응답이 늦어지면 재시도를 하지 않는 것이 특징이다.

3. RBL 필터링스팸 (발송 서버를 막는 ‘연결 필터링’)
RBL이란 특정 단체나 회사에서 스팸 메일을 보내는 서버나, 전화 접속자(일반적으로 동적 IP를 사용하는 전화 접속자들이 자신도 모르게 스팸을 발송하게 되는 경우가 많다), 오픈 릴레이로 맞추어진 서버들의 IP 목록들을 말하며 우리가 일반적으로 알고 있는 ORDB(Open Relay DataBase, www.ordb.net), Spamhause(www.spamhaus.org), Mail-abuse(www.mail-abuse.org), SpmaCop(www.spamcop.net) 등이 바로 이 RBL을 제공해 주는 회사들이다.

연결 필터링이란 메시지가 들어오면 메시지를 보낸 서버의 IP 주소를 추출해 RBL 제공자에게 질의를 하고 해당 IP 주소가 목록에 있는지 여부를 확인, 해당 주소가 없다면 메시지를 받아들이고 주소가 존재한다면 거부하는 방법이다. 이 방법을 사용하면 약 40~50%의 스팸들을 걸러낼 수 있다고 한다.

RBL들은 보통 DNS 쿼리를 이용해 질의를 한다. 즉 SMTP 가상 서버가 메시지를 받으면 <화면 4>와 같이 연결 필터링 탭의 [차단 목록 서비스]에 설정돼 있는 목록 중 가장 위쪽 서버에 질의를 한다. RBL에 질의를 하는 방법은 역방향 조회와 비슷한 모양을 가지고 있다.


역방향 조회 시에는 in-addr.arpa를 사용하지만 RBL의 경우 bl.spamcop.net이 같이 RBL 제공자의 도메인 이름을 사용한다는 것이 차이점이다. 예를 들면 123.12.12.3이라는 서버가 메시지를 보내 왔다면 3.12.12.123.bl.spamcop.net으로 질의를 한다. 그러면 해당 서버에서는 IP 주소가 있는지 확인해 이름이 있는지 여부를 결과로 보내 준다. nslookup 명령을 통해서 알아보면 어떻게 확인하는지 간단하게 확인할 수 있다.

>nslookup -q=a 3.12.12.123.bl.spamcop.net

server:ns.techmentor.co.kr

address:211.114.57.123

Name: 3.12.12.123.bl.spamcop.net

Address: 127.0.0.2

이를 네트워크 모니터를 이용해서 보면 다음과 같다.

DNS: 0x6c:Std Qry for 3.12.12.123.bl.spamcop.net of type Host Addr on Class INET addr

이때 해당 주소가 자신의 데이터베이스에 없으면 다음과 같은 메시지를 보여 준다.

DNS: 0x6c:Std Resp. Auth. Ns is spamcop.net. of type SOA on Class INET addr.: Name does not exist

데이터베이스에 존재한다면 다음과 같이 처리를 한다.

DNS: Answer section: 3.12.12.123.bl.spamcop.net of type SOA on class INET addr.
DNS: Resource Name: 3.12.12.123.bl.spamcop.net.
DNS: Resource Type= Host Address
DNS: Resource Class= Internet address class
DNS: Time To Live=2048(0x800)
DNS: Resource Data Length =4(0x4)
DNS: IP address=127.0.0.2

이렇게 되면 클라이언트에게는 기본적으로 550 5.7.1 123.12.12.3 has been blocked by Spamcop RBL list라는 응답을 보내 준다. 여기서 중요한 것이 바로 127.0.0.2라는 IP 주소다. 이것은 보통 반환상태 코드라고 부르는데, 해당 주소가 어떤 RBL에 포함돼 있는지를 나타내는 코드로 각 RBL 업체에 따라 약간의 차이가 있다. 그러므로 자신이 사용하는 RBL의 제공자 홈페이지에서 상태 반환 코드를 확인한 후 <화면 5>와 같이 필요한 코드만 적용할 수 있다. email-policy.com 웹사이트(www.email-policy.com/spam-black.lists.html)에 보면 각 RBL 제공회사별 반환 상태코드를 확인할 수 있다.


메시지를 보낸 사용자에게 반환할 메시지의 내용도 지정할 수 있다. 기본적으로 [IP 주소 has been blocked by 규칙의 표시이름]으로 나타나는데 이것을 필요에 따라 바꿀 수 있다. 한글은 사용할 수 없으며, 다음과 같은 변수를 사용하면 적당하게 수정할 수 있다.

◆ %0: 보낸 메일 서버의 IP 주소
◆ %1: 연결 필터링의 규칙 표시 이름
◆ %2: RBL 서비스 제공회사 이름

예를 들어 ‘The IP address %0 was rejected by the Realtime Block List provider %2’라고 [반환할 사용자 지정 오류 메시지]에 입력하면 ‘The IP address 123.12.12.3 was rejected by the Realtime Block List provider bl.Spamcop.net’이라는 메시지를 받게 된다. 이때 특정 메일 주소에 대해 연결 필터링에 예외를 두기 원한다면 [예외]를 선택하고 SMTP 주소를 입력하면 해당 주소에 대해서는 연결 필터링의 결과에 상관없이 메시지를 받아 들인다.

만약 특정 주소가 아니라 특정 서버가 된다면 상황은 달라진다. 이때는 사용자가 원하는 작업이 무엇인지 먼저 결정해야 한다. 즉 특정 IP 주소에 대해서 거부할지 아니면 허용할지를 결정해야 한다. 특정 IP 주소에 대해서 거부한다는 말은 연결 필터링 결과에 상관없이 특정 IP 주소나 그 대역에 있는 컴퓨터 그룹들을 모두 거부한다는 의미이며, 반대로 허용한다는 것은 RBL의 질의 결과에 상관없이 해당 IP 주소에 대해서는 모두 허용한다는 뜻이다. 익스체인지 5.5의 경우 허용 목록에 해당 IP 주소를 입력해 바로 연결을 허용할 수 있다(이것을 보통 블랙 리스트의 반대 개념으로 화이트 리스트라고 한다).

4. IMF(지능형 메시지필터)이용하기
우리나라 사람들이 싫어하고 고통스러워하는 이야기가 바로 IMF이다. 처음 Intelligent Message Filter라고 했을 때는 좀 있어 보이더니 이것을 줄여서 IMF라고 하니 바로 인상이 구겨지는 것이 우리나라 사람들의 인지상정이다.

어쨌든 IMF가 첫선을 보인 것이 2004년 5월 미국에서 열린 TechED 2004이다. 이전까지만 해도 MS 익스체인지 컨퍼런스(MEC)가 따로 개최될 정도로 활기가 있었으나 2003년부터는 TechED에 통합돼 세션의 숫자도 줄어 들었다. 메시징의 중요성은 점점 강조되고 있지만 MS는 오히려 뒷걸음질치는 인상이다.

본래 IMF 개념이 처음 제기된 것이 지난 2003년 가을 컴덱스다. 빌 게이츠 회장이 자신도 하루에 수천통의 스팸을 받는다는 고백과 함께 앞으로 MS가 스팸과의 전쟁을 선포하고 그것을 위해 엄청난 돈을 투자하겠다고 밝혔다. 익스체인지 서버에 기계 학습(Machine Learning) 기술을 접목시킨 새로운 필터링 도구를 선보이겠다는 것이었다. 그리고 이 가운데 가장 먼저 제품화한 것이 바로 IMF였다.

익스체인지 2003이 출시될 때 이미 IMF에 대한 윤곽이 있었다. 왜냐하면 이전 버전에서 받는 사람 필터링, 연결 필터링 기능까지 구현했기 때문에 고객들의 컨텐츠 필터링에 대한 요구가 더욱 높아질 것으로 예상했기 때문이다. 실제로 익스체인지 2003이 출시될 당시 아웃룩 2003에 스팸 방지 기술을 추가했고, 이때 이미 SCL(Spam Confidence Level) 이야기도 함께 제기됐다. 이제 IMF의 내면 속으로 들어가 보자.

IFM의 기술 기반 ‘스마트스크린’
스마트스크린(SmartScreen) 기술은 MS에서 특허를 낸 기술로, 특정 메시지가 들어오면 이 메시지가 스팸인지 아닌지를 통계학으로 판단하는 기술이다. 이 기술의 근간에는 베이지언(Bayesian) 정리가 있다. 베이지언 정리는 우리가 고등학교 때 배운 조건부 확률을 기초로 하고 있는데 이 조건부 확률을 이해하는 것이 스마트스크린을 이해하는데 도움을 줄 것이다(박스 기사 참조).

스마트스크린은 이와 같은 통계학적 방법에 의해 미래의 정보에 점수를 매겨 스팸인지 아닌지를 평가한다. 그러므로 스마트스크린에 사용되는 확률 정보가 얼마나 정확한지에 따라 메시지 분류의 정확도가 결정된다. 필자는 여기서 변인을 하나만 두었다. 즉 특정 낱말이 들어간 경우에 스팸인지 여부를 결정하지만 스마트스크린에 적용되는 변인은 여러 가지이며 각 변인에 대한 가중치도 다르다. 그렇기 때문에 MS는 스마트스크린 전체 기술에 대해서 특허가 있으며 이 기술은 MSN, Hotmail, 아웃룩에서 사용되고 있다.

이 기술은 베이지언 정리를 스팸 부분에 적용하는데 권위자인 David Hekermann이 MS 연구소의 MLAS(Machine Learning and Applied Stastistics)와 ASI(Adaptive Systems annd Interactions) 그리고 시그널 프로세싱(Signal Processing) 그룹을 이끌고 완성시킨 것이다. MS는 스마트스크린 기술을 개발한 후 스팸 분류의 정확도를 높이기 위해 피드백 루프 프로그램을 이용, 고객들로부터 50만개 이상의 스팸 메일들을 받아 각각의 특징을 분석했다.

현재에는 MS의 스마트스크린 뿐만 아니라 스팸 어세신(Spam Assassin)이라는 스팸방지 공개 소프트웨어에도 베이지언 정리가 이용되고 있다. 미국의 대다수 컨텐츠 필터링을 이용한 스팸방지 솔루션도 마찬가지다. 이렇게 스마트스크린 기술을 통해서 얻어진 결과가 각 메시지별로 SCL로 표시된다. SCL 값은 모두 11단계의 값으로 구성돼 있으며 상세한 내용은 <표 1>과 같다.


SCL 값설명-1익스체인지 서버 2003 내부에서 이동하는 메시지에 부여하는 값이다. 내부적으로 배달되는 메시지에 대해 위양성(False Positive: 스팸 메일이 아닌데 스팸 메일로 분류되는 경우)일 가능성은 전혀 없으므로 따로 구분하며 덮어쓰기도 불가능하다. 인증 받은 사용자로부터 받는 메일은 기본적으로 -1이 된다.0전혀 스팸이 아닐 때 쓰여진다.1~9스팸일 가능성을 나타내는데 1은 스팸이 아닐 가능성이 높고 숫자가 높아짐에 따라 스팸일 가능성이 높아진다. 9가 되면 스팸일 가능성이 99% 이상이 된다.

이렇게 각 메시지 별로 SCL이 정해지는데 IMF는 스팸 여부를 판단하는 임계값을 정한다. 임계값을 5로 정하면 5이상의 SCL 값을 부여받은 메일을 스팸으로 인식한다. 임계값을 낮게 설정하면 스팸 메일로 분류되는 메일이 많은 반면 위양성 메일도 증가하고, 임계점을 높게 설정하면 위양성 메일을 줄일 수 있지만 스팸 메일들의 덜 걸러질 가능성이 있다.


실전! 지능형 메시지 필터 사용하기
지능형 메시지 필터 기능을 사용하려면 SMTP 게이트웨이 역할을 하거나 브리지헤더 역할을 하는 서버에 설치해야 한다. IMF를 설치하면 전역 설정의 메시지 배달 특성에 <화면 6>과 같이 지능형 메시지 필터 탭이 추가된다. 이 값을 정하기 전에 [메시지 차단하는 경우]에서 기본으로 선택되어 있는 [작업없음]을 그대로 두고 성능 모니터에서 [Total Messages Assigned an SCL Rating of X] 카운터들을 이용해서 전체적인 메시지의 SCL 단계를 모니터링한 뒤 메시지 차단 임계점을 정해야 한다.


지능형 메시지 필터에는 게이트웨이에서의 차단을 구성하거나 정보 저장소 단계에서 정크메일로 분류하도록 구성할 수 있는데 그 내용을 살펴보면 다음과 같다.

◆ 게이트웨이 차단 구성 : 메시지가 들어오게 되면 SCL을 부여 받고 이 SCL은 게이트웨이 차단 구성의 [SCL 등급이 다음보다 크거나 같은 메시지 차단]에서 설정한 임계값 보다 높은지 낮은지를 판단해, 낮으면 게이트웨이를 통과해 사서함이 위치해 있는 서버의 정보 저장소로 전달되고, 높으면 [메시지를 차단하는 경우]에서 설정한 옵션대로 처리한다.

① 거부 : 게이트웨이에서 메시지를 거부한다. 익스체인지는 SMTP 세션 동안 메시지를 거부하므로 연결하는 SMTP 서버가 보낸 사람에게 NDR을 발송해야 한다.

② 보관 : 등급이 지정한 임계값 이상인 UCE로 표시된 모든 메시지를 보관한다. 보관된 메시지는 보관 디렉토리에 저장된다. 이 디렉토리는 SMTP 가상 서버 속성의 메시지 탭에서 지정한 큐 디렉토리의 루트 디렉토리에 있다. 기본적으로 보관 디렉토리는 Exchsrvr\Mailroot\vsi n\UCEArchive이며 여기서 n은 SMTP 가상 서버 인스턴스 번호이다. 메모장으로 열거나 MS 아웃룩 익스프레스를 이용해 보관 디렉토리에 있는 메시지를 검토할 수 있다. 합법적인 전자 메일 메시지가 보관돼 있는 것을 발견하면 해당 메시지를 Exchsrvr\Mailroot\vsi n\pickup 디렉토리로 이동해 다시 전송할 수도 있다. 그러면 SMTP 서비스가 전자 메일 메시지를 해당 사서함으로 배달한다. HKEY_LOCAL_MACHINE\Software\Microsoft\Exchange\ContentFilter 레지스트리 밑에 새로 만들기, 문자열 값 그리고 ArchiveDir를 입력한 다음 보관할 위치를 D:\ArchiveDir 등과 같이 변경할 수 있다.

③ 삭제 : 등급이 지정한 임계값 이상인 UCE로 표시된 모든 메시지를 삭제한다. 해당 메시지는 익스체인지에서 받아 삭제한다. 보낸 사람과 받는 사람 모두 해당 메시지가 삭제됐는지 여부를 알 수 없다.

④ 작업 없음: 작업 없음을 선택하면 등급이 지정한 임계값 이상인 UCE로 표시된 메시지에 대해 어떤 작업도 수행하지 않는다. 이 UCE 등급은 다른 메시지 속성과 함께 저장되며 이러한 속성은 해당 메시지와 함께 다른 익스체인지 서버에 전송된다. 익스체인지 사서함 서버는 UCE 등급과 정보 저장소 정크 메일 구성에서 지정한 설정을 사용해 메시지를 사용자의 받은 편지함으로 배달할 것인지 정크 메일 폴더로 배달할 것인지 결정한다.

◆ 정보 저장소 정크 메일 구성 : 게이트웨이 차단 구성을 통과한 메일들은 실제 자신의 사서함이 있는 저장소에 저장될 때 각 사서함에 존재하는 정크 메일 폴더에 저장될지, 아니면 받은 편지함으로 이동할지 여부를 결정해야 하는데, 이때 [정보 저장소 정크 메일 구성]의 [SCL 등급보다 크거나 같은 메시지 이동]에서 설정한 SCL 값에 따르게 된다. 즉 여기서 설정한 SCL 값보다 크거나 같으면 해당 사서함 내의 정크 메일 폴더로 이동하고 작으면 받은 편지함으로 간다. 기억해 둘 것은 SCL 값은 정수가 아니라 소수점까지 포함된 유리수라는 것이다. 이 값은 당연히 게이트웨이에서 설정한 차단 구성의 SCL 값보다 같거나 작아야 한다.

IMF를 통과한 메시지들은 x-sender, x-receiver 속성이 추가되며 기본적으로 X-SCL 속성은 확장되지 않는다. 이를 확장하기 위해서는 HKEY_LOCAL_MACHINE\Software\Microsoft\Exchange\ContentFilter에서 새로 만들기 → DWORD → ArchiveSCL라고 입력하고 DWORD 편집에서 1이라 입력한다. 만일 0이나 이 값이 없으면 헤더 정보에 X-SCL이 남지 않는다. 다음은 IMF에서 확장된 헤더 특성에 대한 예이다.

x-sender: bkuk@korea.com
x-receiver: administrator@numi.ne.kr
X-SCL: 6 90.64%


필터링 동작 순서각 필터링이 어떤 순서를 거쳐서 분류되는지에 대해서는 <그림 2>에 나와 있다.

① SMTP 서버가 익스체인지에 연결해 SMTP 세션을 시작한다.

② SMTP 세션 중 익스체인지는 다음 기준에 따라 [연결 필터링]을 적용한다.
◆ 연결 필터링이 전체 수락 목록을 확인한다. IP 주소가 전체 수락 목록에 있으면 다른 연결, 받는 사람 또는 보낸 사람 필터링은 적용하지 않고 메시지를 수락한다.
◆ 연결 필터링이 전체 거부 목록을 확인한다. 보내는 서버의 IP 주소가 전체 거부 목록에 있으면 메시지를 자동으로 거부하고 다른 필터는 적용하지 않는다.
◆ 연결 필터링이 구성된 공급자의 실시간 차단 목록을 확인한다. 보내는 서버의 IP 주소가 차단 목록에 있으면 메시지는 거부하고 다른 필터는 적용하지 않는다.

③ 익스체인지는 [받는 사람 필터링]에 등록한 목록에 받는 사람이 있는지 확인한다. 받는 사람이 필터링하는 전자 메일 주소와 일치하면 익스체인지는 해당 메시지를 거부하고 다른 필터는 적용하지 않는다.

④ 받는 사람 필터링이 적용되면 익스체인지는 [보낸 사람 필터링]으로 구성된 보낸 사람 목록에서 확인된 보낸 사람 주소를 확인한다. 보낸 사람이 보낸 사람 목록에 있는 주소와 일치하면 구성된 옵션에 따라 필터링하고 다른 필터는 적용하지 않는다.

⑤ 메시지가 연결, 받는 사람 또는 보낸 사람 필터링 별로 필터링하지 않으면 지능형 메시지 필터가 적용되고 게이트웨이에서 다음 둘 중 하나가 발생한다.

◆ 지능형 메시지 필터가 메시지에 게이트웨이 임계값보다 높은 SCL 등급을 매기면 지능형 메시지 필터는 적절한 게이트웨이 작업을 수행한다.
◆ 지능형 메시지 필터가 메시지에 게이트웨이 임계값보다 낮거나 같은 SCL 등급을 매기면 메시지는 사용자의 사서함 저장소를 사용해 익스체인지 서버로 전달된다.

⑥ 사용자가 아웃룩 2003 또는 익스체인지 2003용 OWA를 사용하고 있는 경우, 사용자의 사서함 저장소가 메시지 SCL 등급과 사용자가 구성한 저장소 임계값을 비교하면 다음 중 하나가 실행된다.
◆ 메시지 등급이 저장소 임계값보다 낮거나 같으면 사서함 저장소는 아웃룩 또는 OWA에서 구성한 사용자의 차단할 보낸 사람 목록을 확인하고 다음 중 하나가 발생한다.
◆ 메시지를 보낸 사람이 아웃룩 또는 OWA에서 구성된 차단할 보낸 사람 목록에 없거나 차단할 보낸 사람 목록이 사용 가능하지 않거나 정의돼 있지 않으면 메시지는 받는 사람의 받은 편지함으로 배달된다.
◆ 보낸 사람이 아웃룩 또는 OWA에서 구성된 차단할 보낸 사람 목록에 있으면 메시지는 사용자의 정크 메일 폴더로 배달된다.

⑦ 메시지 등급이 저장소 임계값보다 높으면 사서함 저장소는 아웃룩 또는 OWA에서 구성된 사용자의 수신 허용-보낸 사람 목록을 확인하고 다음 중 하나가 발생한다.
◆ 보낸 사람이 수신 허용-보낸 사람 목록에 있으면 메시지는 받는 사람의 받은 편지함으로 배달된다.
◆ 보낸 사람이 수신 허용-보낸 사람 목록에 없거나 수신 허용-보낸 사람 목록을 사용할 수 없거나 정의돼 있지 않으면 메시지는 받는 사람의 정크 메일 폴더에 저장된다.



크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
네가 네 하나님 여호와의 말씀을 삼가 듣고 내가 오늘날 네게 명하는 그 모든 명령을 지켜 행하면 네 하나님 여호와께서 너를 세계 모든 민족 위에 뛰어나게 하실 것이라.
신명기 28:1

우키 지식 (IT Knowledge)/Server ,

2006/05/25 00:18 2006/05/25 00:18
  1. 정보를 위한 감사합니다.

[Exchange] OWA에서 폼기반인증 사용하기

2006/04/13 11:47
익스체인지서버에서 OWA를 이용하여 웹메일을 구현할때
기본 인증창은 네트웍로그인창의 형태입니다.
폴더공유에 접근할때나 또는... 네트웍장비에 접속할때 뜨는 그런 재미없는 창이죠
우리나라의 대다수의 웹메일사이트는 폼기반 인증을 사용하는 관계로
사용자들이 매우 불편해하게되는거죠..
그래서 폼기반의 인증을 사용할수있게 바꾸는 것이 좋답니다.

▶ 폼기반 인증 사용하도록 설정하기

1. Exchange System Manager 실행
2. 콘솔프로그램에서 서버 / 프로토콜/ HTTP 트리로 이동
3. Exchange 가상서버 속성을 오픈
4. 설정탭의 Outook Web Access창에서 폼기반인증 사용을 선택
5. 적용후 확인
크리에이티브 커먼즈 라이센스
Creative Commons License
요절 한말씀
너 낳은 아비에게 청종하고 네 늙은 어미를 경히 여기지 말지니라
잠언 23:22

우키 지식 (IT Knowledge)/Server

2006/04/13 11:47 2006/04/13 11:47
  1. Blog Icon
    이상철

    폼기반 인증을 사용하고 있었습니다.
    USER명 PASSWORD만 입력하면 가능했었는데, SP1와 SP2를
    설치하니 도메인\USER명으로 바뀌어 있더라고요,
    USER명만입력하는 방법이 없을까요?

  2. 저는 sp2를 설치하고나서 폼기반인증으로 바꾸어서리...^^
    첨에 쓰시던 방버을 다시 쓰시면 될듯한데요..
    아마도 덮어쓰기되지않았나싶은데요.. 전에 해보셨을것 같은데 아래 페이지를 참조해보세요.. 아마도 아시겠지만...^^
    http://jaewook.net/entry/Exchange-폼기반로그인에서-기본도메인사용하기