Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 520건
  특정 OU의 사용자 리스트를 파일로 추출하는 스크립트 
작성일시 : 2008. 2. 21. 16:55 | 분류 : Windows Server/Active Directory

특정 OU의 사용자 (User) 의 리스트를 저장하는 스크립트 입니다. DN 으로 저장됩니다.

StrOU = InputBox("Please Enter in the name of the OU that you wish to query, this needs to be in the format OU=")
Set objRootDSE = GetObject("LDAP://rootDSE")
strADsPath = "LDAP://" & strOU & "," & objRootDSE.Get("defaultNamingContext")
Set objDomain = GetObject(strADsPath)
objOutputFile = InputBox("c:\abc.txt")
Dim objConn, objRecordSet

Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set objOutputFile = objFileSystem.CreateTextFile(objOutputFile, TRUE)
Set objCommand =   CreateObject("ADODB.Command")

Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=ADsDSOObject;"

Set objCommand.ActiveConnection = objConn

objCommand.CommandText = "SELECT distinguishedName FROM " + "'" + strADsPath + "'" + " WHERE objectCategory = 'CN=Person,CN=Schema,CN=Configuration,DC=xxx,DC=xxx,DC=xxx'"
-- 사용자만 추출하기 위한 부분
objCommand.Properties("searchscope") = 2
objCommand.Properties("Page Size") = 1000
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
objOutputFile.Write(objRecordSet.Fields("distinguishedName") & VBCRLF)
objRecordSet.MoveNext
WEnd

objOutputFile.Close

Set objFileSystem = Nothing
objConn.Close
WScript.Echo("Script Has Completed?")

이번에는 바로 소스코드에 파일 등을 박아 넣어서 돌리도록 변경하였습니다.

Set objRootDSE = GetObject("LDAP://rootDSE")
strADsPath = "LDAP://ou=개인, "& objRootDSE.Get("defaultNamingContext")
Set objDomain = GetObject(strADsPath)
Dim objConn, objRecordSet

Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set objOutputFile = objFileSystem.CreateTextFile("c:\userlist.txt", TRUE)
Set objCommand =   CreateObject("ADODB.Command")

Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=ADsDSOObject;"

Set objCommand.ActiveConnection = objConn

objCommand.CommandText = "SELECT distinguishedName FROM " + "'" + strADsPath + "'" + " WHERE

objectCategory = 'CN=Person,CN=Schema,CN=Configuration,DC=xxx,DC=xxxDC=xx"
objCommand.Properties("searchscope") = 2
objCommand.Properties("Page Size") = 1000
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
objOutputFile.Write(objRecordSet.Fields("distinguishedName") & VBCRLF)
objRecordSet.MoveNext
WEnd

objOutputFile.Close

Set objFileSystem = Nothing
objConn.Close
WScript.Echo("Script Has Completed?")

|
  메일 포워딩 스크립트로 한방에 끝내기 1 (Overview) 
작성일시 : 2008. 2. 20. 18:04 | 분류 : Exchange Server

목차
1. Overview
2. Contacts 만들기
3. 개정 별 Forwarding 걸기

일반적인 메일 포워딩 요청은 Ads.msc 에서 외부 메일에 대한 contact를 만든 후 계정으로 들어온 메일을 이 contact로 포워딩 하게 함으로써 간단하게 설정이 가능합니다. 물론 꽁수를 쓰는 방법도 있다고 합니다. 그냥 ProxyAdderss 하나 더 만들고 이 주소를 TargetAddress 로 만드는 방법인데... 아직 Test는 않해봤습니다. (http://marcusoh.blogspot.com/2006/05/ds-how-to-setup-mail-forwarding.html)

방법은 다음과 같습니다.

1. gather these fields. take down this information. step 2 will blow it away

  • mail
  • mailNickname
  • proxyAddresses primary)

2. disconnect [his/her] mailbox.

3. put these fields back in for the user object.

  • mail
  • mailNickname
  • proxyAddresses (primary from step 1)
  • proxyAddresses (secondary - the email address to forward to)
  • targetAddress (the email address to forward to)

하지만 Test도 않해밨음을 알려드립니다.
그래도 그냥 ldifde 가지고 쉽게 할 수 있지 않을까 싶습니다.
다만 이벤트 로그에 ID 9514가 찍히지 않을까 싶습니다. (예상입니다.)
(관련 Article : http://support.microsoft.com/kb/318774)

자 우리는 그냥 원론적으로 해결 하도록 하겠습니다.
정석대로 contact 만들고 이 contact에 메일을 포워딩 하는 형식으로요...^^
우리의 스크립트는 다음 Article,의 내용을 따라 갑니다.
(http://support.microsoft.com/kb/281926)
그림책 같은 내용도 있습니다.
(http://www.msexchange.org/tutorials/MF015.html)

혹시나 하는 마음에 해당 Article의 내용을 한번 적어 드립니다.

연락처를 만드는 방법
1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 서버를 확장한 다음 Users를 마우스 오른쪽 단추로 누릅니다.
3. 새로 만들기를 누른 다음 연락처를 누릅니다.
4. 이름을 입력하고 다음을 누릅니다.
5. 수정을 누르고, SMTP를 누른 다음 확인을 눌러 사용자 지정 SMTP 메일 주소를 만듭니다.
6. SMTP 전자 메일 주소를 입력하고, 확인을 누르고, 다음을 누른 후 마침을 누릅니다.

메일 사용 가능 연락처로 만드는 방법
1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 해당 연락처를 마우스 오른쪽 단추로 누른 다음 Exchange 작업을 누릅니다.
3. 다음을 누르고 그룹의 전자 메일 주소 설정을 선택한 후 다음을 누릅니다.
4. 연락처에 별칭이 없으면 연락처의 별칭을 입력합니다. 
5. 적절한 전자 메일 주소 형식을 누른 다음 전자 메일 주소를 입력합니다.

참고 메시지 형식 설정을 구성하려면 고급 탭을 누릅니다.
6. 확인, 다음을 차례로 누른 후 마침을 누릅니다.

메일 전달을 구성하는 방법
참고 메일 사용 가능 개체는 전달 주소가 될 수 있습니다. 메일 사용 가능 개체를 예로 들면 메일 그룹, 보안 그룹, 공용 폴더 및 기타 관련 항목이 있습니다.1. Active Directory 사용자 및 컴퓨터 스냅인을 시작합니다.
2. 해당 메일 사용 가능 사용자를 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
3. Exchange 일반 정보 탭을 누릅니다.
4. 배달 옵션을 누릅니다.
5. 전달 주소 섹션에서 전달 대상을 누른 다음 수정을 누릅니다.
6. 메일 사용 가능 사용자나 메일 사용 가능 연락처를 누르고 확인을 누릅니다.

참고 전자 메일을 원본 사서함과 전달 주소로 배달하려면 메시지를 전달 주소와 사서함 모두에 배달 확인란을 선택합니다. 
7. 확인을 차례로 두 번 눌러 배달 옵션과 속성을 닫습니다.

자 우리는 위의 내용은 100번 아니 1000번을 해야 할 지도 모릅니다.
그래서 우리 이거 그냥 스크립트로 한방에 한번 끝내 봅시다.
그럼 contact 만드는 내용은 내일 쓰도록 하겠습니다.

|
  내부 클럭와 Windows Time 동기화 방법 
작성일시 : 2008. 2. 20. 17:17 | 분류 : Windows Server/Kernel

방송과 관련된 장비 혹은 시간과 아주 critical한 관계가 있는 서버의 경우 별도로 ntp 서버와 시간을 동기화 하는 H/W가 있나봅니다.
뭐 제가 잘알지는 못하지만... 아무튼 그래서 내부 클럭에 Windows Time을 동기화 하는 방법을 알려드립니다.
(갑자기 기억난... IRQL에 3번째로 높은 레벨이 CPU 클럭 동기화 였죠... 그렇다면 H/W에서 지원하는 NTP 서버와 시간 동기화가 충분히 빛을 발할 것 같다는...)

Time 서버 설정은 이전 포스트(http://maystyle.tistory.com/271)를 참조하세요.

레지스트리 수정에는 신중을 기해야 합니다.

1. 시작, 실행을 차례로 누르고 regedit를 입력한 다음 확인을 누릅니다.

2. 다음 레지스트리 하위 키를 찾아 누릅니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags

3. 오른쪽 창에서 AnnounceFlags를 마우스 오른쪽 단추로 누른 다음 수정을 누릅니다.

4. DWORD 값 편집에서 값 데이터 상자에 A를 입력한 다음 확인을 누릅니다.

5. 레지스트리 편집기를 종료합니다.

6. 명령 프롬프트에서 Windows 시간 서비스를 다시 시작하도록 다음 명령을 입력한 다음 Enter 키를 누릅니다.

net stop w32time && net start w32time

출처 : http://support.microsoft.com/kb/816042

|
  Windows Time 
작성일시 : 2008. 2. 20. 17:12 | 분류 : Windows Server/Kernel

Windows Time 서버 설정 방법

Action Item
1. 시작, 실행을 차례로 누른 다음 cmd를 입력하고 Enter 키를 누릅니다.
2. 명령 프롬프트에서 다음 명령을 순서대로 입력합니다. 이때 각 명령을 입력한 후에는 Enrer 키를 누릅니다.
- w32tm /config /manualpeerlist:NTP_server_IP_Address
- net stop w32time
- net start w32time
- w32tm /resync

http://support.microsoft.com/kb/816042
http://support.microsoft.com/kb/816042
http://technet2.microsoft.com/windowsserver/en/library/b43a025f-cce2-4c82-b3ea-3b95d482db3a1033.mspx?mfr=true

|
  Exchange proxyAddresses 추가 
작성일시 : 2008. 2. 20. 14:29 | 분류 : Exchange Server

1. CVS 파일을 만든다.
[형식]
primarysmtp@domain1.com (원래 메일 주소), proxyaddress@domain2.com (추가 메일 주소)

2. 다음 스크립트를 실행한다.

Option Explicit

Const CSV_FILE = "file.txt"
Const FILE_DELIMITER = ", "
Const ADS_SCOPE_SUBTREE = 2

Dim objFileSystem, objFile, objStream, objUsers, objConnection, objCommand, objRootDSE, objRecordSet, objUser
Dim strPrimarySMTP, strNewSMTP, strAddresses
Dim arrLine, arrAddresses

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(CSV_FILE)
Set objStream = objFile.OpenAsTextStream(1, 0)

Set objUsers = CreateObject("Scripting.Dictionary")

Do While Not objStream.AtEndOfStream
      arrLine = Split(objStream.ReadLine, FILE_DELIMITER)

      If UBound(arrLine) = 1 Then
            strPrimarySMTP = LCase(arrLine(0))
            strNewSMTP = LCase(arrLine(1))

            If Not objUsers.Exists(strPrimarySMTP) Then
                  objUsers.Add strPrimarySMTP, strNewSMTP
            End If
      End If
Loop

Set objStream = Nothing
Set objFile = Nothing

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

Set objRootDSE = GetObject("LDAP://RootDSE")
objCommand.CommandText = "SELECT aDSPath, mail " &_
      "FROM 'LDAP://" & objRootDSE.Get("defaultNamingContext") & "' WHERE objectClass='user'"
Set objRootDSE = Nothing

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 600
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute

Set objFile = objFileSystem.OpenTextFile("logfile.txt", 2, True, 0)

While Not objRecordSet.EOF
      If Not IsNull(objRecordSet.Fields("mail")) Then
            strPrimarySMTP = LCase(objRecordSet.Fields("mail"))

            If objUsers.Exists(strPrimarySMTP) Then
                  Set objUser = GetObject(objRecordSet.Fields("aDSPath"))

                  arrAddresses = objUser.Get("proxyAddresses")

                  ' Check the Address isn't already there

                  strAddresses = Join(arrAddresses, ",")
                  If InStr(1, strAddresses, ",smtp:" & objUsers(strPrimarySMTP) & ",", VbTextCompare) = 0 Then
                        ReDim Preserve arrAddresses(UBound(arrAddresses) + 1)
                        arrAddresses(UBound(arrAddresses)) = "smtp:" & objUsers(strPrimarySMTP)

                        objFile.WriteLine strPrimarySMTP & ": Matched to " & objUser.Get("name") &_
                              ": " & objUsers(strPrimarySMTP) & " Address Added"

                        ' objUser.Put "proxyAddresses", arrAddresses
                        ' objUser.SetInfo
                  Else
                        objFile.WriteLine strPrimarySMTP & ": Matched to " & objUser.Get("name") &_
                              ": " & objUsers(strPrimarySMTP) & " Address Exists"
                  End If
                  Set objUser = Nothing
            End If
      End If

      objRecordSet.MoveNext
Wend
objConnection.Close

Set objFile = Nothing
Set objFileSystem = Nothing

Set objRecordSet = Nothing
Set objCommand = Nothing
Set objConnection = Nothing

Set objUsers = Nothing

출처 :
http://www.experts-exchange.com/Software/Server_Software/Email_Servers/Exchange/Q_22090180.html

참고 :
원치 않는 프록시 주소 삭제 : http://support.microsoft.com/kb/318774

|
  Active Directory 방화벽 설정 하기 
작성일시 : 2008. 2. 18. 10:30 | 분류 : Windows Server/Active Directory

Active Directory 의 Domain Contorller 간에는 보통 모든 포트를 다 열어달라고 요청을 하는 경우가 대부분입니다.
솔직히 엔지니어 입장에서도 편하기도 하구요...^^v

하지만 위의 상황이 여의치 않을때는 Active Directory에서 사용하는 포트를 지정해서 열어줘도 됩니다. 하지만 RPC 포트 및 SMB 포트를 개방해야 하므로 ( 135 / 445 / 1024 ~ 65534 ) 개별 포트로 오픈한다는 것 자체가 무의미해 보입니다.

로컬 보안 기관

DFS (정책 SYSVOL 공유를 위해 사용합니다.)

DNS

커버로스 키 인증 센터 (Windows 2003 부터는 인증을 Kerberos 인증을 사용합니다.

Netlogon

|
  데이터 형식 이해하기 (일반 데이터 형식 생략) 
작성일시 : 2008. 2. 18. 09:38 | 분류 : SQL Server/Development

내용을 쓰다보니 너우 어렵게 쓰는거 같습니다.
일단 제가 공부하는 내용 위주로 업데이트를 한 이후에 설치 부분 및 각 Feature 소개 같은 부분은 업데이트 하도록 하겠습니다.

목차
Database 기본기 다지기
1. 선언적 데이터 무결성(Declarative Data Integrity)
2. 트랜잭션 프로세싱

트랜잭션 로그와 데이터 복원
1. 데이터 파일 쓰기
2. 로그 파일 쓰기
3. 트랜잭션 로그를 통한 데이터 복구

트랜잭션 로그 파일과 데이터 파일
1. 트랜잭션 로그 파일
2. 데이터 파일

내부 저장소
1. 데이터 형식 이해하기 (일반 데이터 형식 생략)

데이터 형식 이해하기 (일반 데이터 형식은 생략)

• 날짜/시간 데이터 형식
– 형식

• 문자 데이터 형식
– 종류 :
가변 길이 단일 바이트 문자 스트링 (char, varchar)
고정 길이 유니코드 문자 스트링 (nchar, nvchar)

– 가변 길이 데이터 코드의 허와 실
장점 :
1. 데이터 공간 절약이 가능
2. I/O 동작에 따른 효율 증가 (한번의 I/O로 대량의 데이터 확보)
단점 :
1. 오프셋 연산 필요 (성능 영향 미비)
2. 행 크기 증가로 인한 Page 확보 시 로드 증가
(클러스터 인덱스 적용 시 동일 레벨로 새로운 페이지 이동으로 인한 로드)

• NULL
– NOT NULL 칼럼만 사용 하도록 한다. (NULL 조건은 어플리케이션 버그의 원인이 된다.)
– NULL 대신 Default 값 정의를 사용한다.
– ANSI null default (ANSI_NULL_DFLT_ON, ANSI_NULL_DFLT_OFF)
  SQL Server는 기본적으로 ANSI_NULL_DFLT_ON 이다.
ON 을 설정하면 반대 옵션으로 OFF가 설정되나, OFF 를 설정하면 ON 설정 없이 현재 ON 설정을 중지 시킨다.

|
  MSBA 보안에 대한 가이드를 주세요. 라는 질문을 들을 때 마다... 
작성일시 : 2008. 2. 15. 10:54 | 분류 : Windows Server/ETC

제가 현업에서 간간히 듣는 질문 중 하나가 "보안에 대한 가이드를 주세요."

이 보안에 대한 가이드라는 것이 "그때 그때 달라요." 입니다.
종종 보안 강화 한답시고 MSCS가 구성된 서버에서 $ 공유를 삭제합니다.

이윽고 시간이 흘려갑니다.~~~
아주 잘~~~ 새로운 서비스 팩이 나왔습니다.
우리의 똑똑한 김모 엔지니어는 SP2 업그래이드에 대한 확인을 받은 후 작업을 진행 합니다.

"허걱 않된다" 젠장 꼴딱 밤을 세고 MS 엔지니어를 불렸습니다.
역시 삽질 합니다...
이제... 변경 사항 체크하고, 패치 점검 하고, 눈은 퉁퉁 붓는데... 미치겠습니다.
이윽고 월요일 아침 해가 뜰 무렵... 보안 가이드에 맞춰 작년에 $공유 삭제한 내역을 찾아 냅니다.

왜! 왜! 왜! 보안 가이드에는 $ 공유를 빼라고 했는데... MSCS에서는 그러면 문제 생기는 거야!!!
왜냐면 SQL 는 2개의 노드에 모두 SP를 설치하기 위해서 $공유를 이용하기 때문입니다.
내 그렇습니다. 그래서 않됐던 겁니다.

암튼 원인은 접니다...
제가 귀찮아서 보안 가이드 라인을 만들지 못했습니다.
BUT뚜~~~ MS에서 약간이나마 보안을 위한 툴을 지원합니다.

뚜둥~~~
그의 이름은 MSBA (Microsoft Baseline Security Analyzer) 뚜둥~~~
관련 문서 : http://www.microsoft.com/technet/security/tools/mbsahome.mspx

자 이제 이 결과를 공유 폴더 같은데로 한곳에 모아서 리스크 업 합시다.
정기적으로 레포팅하는 스크립트도 한번 돌려봅시다.
결과물을 꼭 MSBA로 볼 필요도 없습니다.
결과물 XML 입니다... 원껏 변경해서 사용합시다~~~ 뚜둥~~~ ^^

|
 Prev   1   ···   34   35   36   37   38   39   40   ···   65   Next