Windows2012. 11. 20. 14:58

http://social.technet.microsoft.com/Forums/ko-KR/isaserverko/thread/58a02324-fb88-4c33-a678-460827c7ae5e

 

질문

 

Vista이상의 상위 버전 윈도우에서는 netsh firewall 대신에 netsh advfirewall firewall 명령어를 사용을 추천 합니다.

 

대답

 

1.     프로그램 허용

 

a.     netsh advfirewall firewall add rule name=”My Application” dir=in action=allow program=”C:\MyApp\MyApp.exe” enable=yes

 

b.     netsh advfirewall firewall add rule name=”My Application” dir=in action=allow program=”C:\MyApp\Myapp.exe” enable=yes remoteip=157.60.0.1, 172.16.0.0/16,LocalSubnet profile=domain

 

2.     포트 허용

 

a.     netsh advfirewall firewall add rule name=”Open Port 80” dir=in action=allow protocol=TCP localport=80

 

3.     허용된 프로그램과 포트 룰 제거 하기

 

a.     netsh advfirewall firewall delete rule name=”rulename” program=”C:\MyApp\MyApp.exe”

 

b.     netsh advfirewall firewall delete rule name=”rulename” protocol=udp localport=500

 

4.     ICMP 설정 하기

 

a.     netsh advfirewall  firewall add rule name=”ICMP Allow incoming V4 echo request” protocol=icmpv4:8,any dir=in action=allow

 

b.     netsh advfirewall firewall add rule name=”All  ICMP V4” protocol=icmpv4:any,any dir=in action=allow

 

 

5.     로깅 설정

 

a.     netsh advfirewall set currentprofile logging filename %systemroot%\system32\LogFiles\Filewall\pfirewall.log

 

b.     netsh advfirewall set currentprofile logging maxfilesize 4096

 

c.     netsh advfirewall set currentprofile logging droppedconnections enable

 

d.     netsh advfirewall set currentprofile logging allowedconnections enable

 

 

 

6.     방화벽 On/Off

 

a.     netsh advfirewall set currentprofile state on

 

b.     netsh advfirewall set currentprofile state on
netsh advfirewall set currentprofile firewallpolicy blockinboundalways,allowoutbound

 

c.     netsh advfirewall set domainprofile state on
netsh advfirewall set domainprofile firewallpolicy blockinbound,allowoutbound

 

d.     netsh advfirewall set domainprofile state on
netsh advfirewall set private profile state on

 

 

7.     방화벽 설정 초기화

 

a.     Netsh advfirewall reset

 

 

8.     특정 서비스 허용

 

a.     netsh  advfirewall firewall set rule group=”File and Printer Sharing” new enable=yes

 

b.     netsh  advfirewall firewall set rule group=”remote desktop” new enable=yes

 

c.     netsh  advfirewall firewall set rule group=”remote desktop” new enable=yes profile=domain

 

d.     netsh advfirewall firewall set rule group=”remote desktop” new enable=yes profile=private



적용 대상

 

Windows Vista

Windows 7

Windows 2008

Windows 2008 R2

Posted by 배움나눔
Windows2012. 6. 1. 14:54

출처 : http://www.sqler.com/457632

 

 

WindowServer 2008R2 서버에 Active directory를 설치 하는 중에 오류가 발생하여 원인 분석을 해달라는 요청을 받았습니다.
첨부로 받은 파일이 app.evtx, setuplog.evetx와 msinfo.nfo 그리고 C:\windows\debugs 폴더의 에러 로그 였습니다.
시스템 이벤트 로그가 없어서 조금 아쉬웠습니다만....

우선 원인 분석을 위해 우선 err 유틸을 통해 C:\windows\debugs 의 dcpromoui.001 파일에서 확인 된 80070BC9오류코드를 확인하였지만 별 내용이 없어서 해당 서버에서 실행 중인 서비스들을 확인하였습니다.


Remote registry 서비스가 disable 되어 있는 것이 눈에 띄더군요.......ㅋㅋ

[환 경]
Windows server 2008 R2 EE

[증 상]
admin 권한이 있는 사용자로 로그온 후 Active direcotry 설치를 위해 dcpromo 명령어 실행 하면 아래와 같은 오류 메시지와 함께 설치가 실패 됨

C:\windows\debugs\폴더 아래 dcpromoui.001 로그 확인결과 아래와 같은 에러가 발생 함

dcpromoui 748.6C4 001F 13:09:32.478 Failed to get install state
dcpromoui 748.6C4 0020 13:09:32.478 HRESULT = 0x80070BC9
dcpromoui 748.6C4 0021 13:09:32.493 HRESULT = 0x80070BC9
dcpromoui 748.304 0022 13:09:32.493 HRESULT = 0x80070BC9
dcpromoui 748.304 0023 13:09:32.493 Enter GetErrorMessage 80070BC9
dcpromoui 748.304 0024 13:09:32.493 MessageBox: Active Directory 도메인 서비스 설치 관리자 : Active Directory 도메인 서비스 파일이 설치되었는지 확인하지 못했습니다. 오류: 요청한 작업이 실패했습니다. 변경 내용을 롤백하려면 시스템을 다시 부팅해야 합니다.
dcpromoui 748.304 0025 13:09:33.258 Exit code is 64

1926E6354ECB897A22221C

[원 인]

Remote Registry 서비스가 Disable 되어있기 때문입니다.

20358B344ECB8A2E1CF812

 

[조치 방법]

Remote Registry 서비스를 자동 시작으로 변경 후 시스템을 다시 시작 합니다.

그런데 왜 Remote Registry가 Disable 되어 있으면 Active Direcotry 가 설치 되지 않는지 궁금하지 않을 수 없습니다. 궁금한 부분을 해결하기 위해서 googling을 하다가 아래 블로그를 통해서 그 이유를 알게 되었습니다.

Dependence of DCPROMO on Remote Registry Service
https://atherbeg.wordpress.com/tag/remote-registry-service/

 

참고로 실제 제 머신(windows server 2008R2)에서 remote registry 서비스를 disable 한 후 dcpromo를 실행하니 위와 동일하게 오류가 발생 하였습니다.

그리고 시스템 이벤트에서 아래의 오류도 확인이 되었구요..ㅋㅋ

Log Name: System
Source: Service Control Manager
Date: 11/22/2011 8:53:35 PM
Event ID: 7001
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: MyLaptopV2
Description:
The DFS Namespace service depends on the Remote Registry service which failed to start because of the following error:
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
Event Xml:
< Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">

<Data Name="param1">DFS Namespace</Data>
<Data Name="param2">Remote Registry</Data>
<Data Name="param3">%%1058</Data>
</EventData>
< /Event>


dcpromo 실행 후 DFS Name space 서비스가 시작 되어야 하는데 Remote registry 서비스에 종속성이 있어서 해당 서비스가 정상적으로 실행되지 않았기 때문인 것 이었네요....^^

14456C494ECBA165071AB3




[참고 자료]
Best Practice Guide for Securing Active Directory Installations and Day-to-Day Operations: Part

http://technet.microsoft.com/en-us/library/bb727065.aspx

Known Issues for Installing and Removing AD DS
http://technet.microsoft.com/en-us/library/cc754463(WS.10).aspx

Failed to install active directory domain services binaries. The error was : The requested operation failed. A system reboot is required to roll back changes made.
http://social.technet.microsoft.com/Forums/en-US/winserverPN/thread/cbc865b8-930a-4e40-8900-4b0904b45a6d/

감사합니다.^^

Posted by 배움나눔
Windows2012. 5. 8. 16:05

출처 : http://cafe.naver.com/hostingfaq/1011

 

Windows 2008 R2 서버 이벤트로그 메일 보내기

 

윈도우2008R2 서버의 이벤트로그 전달 기능을 이용한 특정한 이벤트로그 발생시 관리자가 알람을 메일로 받아 보는 방법입니다.

이를 실행하기 위한 방법으로 아래 같이 명령 프롬프트에서 작업 합니다.

1. wecutil.exe qc             

2. winrm.exe quickconfig  

 

이벤트 뷰어에서 특정이벤트에서 대해서 포워드 기능을 설정 합니다.

 

위의 그림과 같이 이벤트 18456 (EventID=18456) 에 대하여 이벤트 발생시 관리자 메일로 메일 발송을 하도록 이 이벤트에 작업 연결을 합니다.

 

 

위와 같이 EventID 18456 이벤트 아이디로 작업 스케줄러가 생성 된 것을 확인 할 수 있습니다.

 

메일 보내는 것에 대해서 작업이 생성 되었는데 이제 첨부 파일로 이벤트 로그 내용을 첨부하는 스크립트를 추가 합니다.

Windows Events Command Line Utility를 이용하여 아래의 명령어를 실행 합니다.

1. wevtutil qe Application "/q:*[System [(EventID=18456)]]" /rd:true /f:text /c:1

위의 명령을 이용하여 이벤트로그에 내용을 쿼리하여 출력 된 모습입니다.

위의 내용을 메일에 첨부 하기 위하여 배치 파일로 만든 후 생성된 작업 스케줄러 - 이벤트 로그 뷰어 작업에 추가 합니다.

아래와 같이 배치 파일을 생성 합니다.

파일명: event_forward.cmd

위치: C:\event_forward\

배치 파일 소스:

@ECHOOFF                                                                                                                                                      

del C:\event_forward\eventforward.txt                                                                                                        

wevtutil qe Application "/q:*[System [(EventID=18456)]]" /rd:true /f:text /c:1  > C:\event_foreard\eventforward.txt .txt     

배치 파일 생성후 정상 작동을 위해 배치 파일을 실행 합니다.

실행후 정상적으로 출력 파일로 eventforward.txt 파일을 확인 할 수 있습니다.

위의 그림과 같이 작업 스케줄러 - 이벤트 뷰어 작업 - 생성된 작업 항목의 속성을 클릭

동작 탭에 새로만들기 클릭후 생성된 배치파일을 추가 합니다. (작업 추가시 : 프로그램 시작 선택)

추가후 순서가 제일 첫순위로 오게 설정 합니다

전자 메일 보내기 작업을 수정 합니다. 첨부 파일 위치를 [찾아보기] 클릭 후 배치파일 디렉토리의 eventforward.txt 파일을 선택

모든 설정 완료후 새로 생성한 작업 스케줄러를 재실행 합니다.

 

이벤트 ID 18456 발생시 아래와 같이 메일로 확인 하실수 있습니다.

 

참고:

http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event-log-trigger.aspx

Posted by 배움나눔
Windows2012. 5. 3. 21:30

출처 : http://lovemind.tistory.com/107

NTP란?

Network Time Protocol(네트워크 시간 프로토콜)의 약자로 네트워크 환경으로 구성된 장비(서버, PC, 통신장비, 방화벽 장비 등)의 시스템 시간을 동기화 하기 위한 규약이다.

윈도우에는

  • 모든 윈도우서버는 NTP서버가 될 수 있다.
  • 모든 서버의 방화벽에서 UDP 123 번이 열려있어야 한다.
  • NTP서버와의 시간차이가 많이 날 경우(기본값: 15시간) 동기화 되지 않는다.
    실제 시간과 근접한 시간으로 변경 후 동기화 할 수 있도록 한다.
  • 데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라, 조금씩 맞춰 간다.
    (예: Server#2 서버가 Server#1서버 보다 시간이 빠를 경우, Server#1번의 시간으로 Server#2의 시스템시간을 동기화 할 경우, 동일한 시간대의 데이터가 생성되므로, 데이터 정합성에 오류가 발생한다. 이에 시간 동기화는 즉시 반영되는 것이 아니라, 조금씩 그 차이를 줄여나가는 방식이다. – 표12 참조 )

시스템 환경

NTP 시간을 제공해주는 서버를 "NTP 서버", NTP 서버로 시간 동기화를 요청하는 서버를 "Slave 서버"로 명명한다.

서버명 및 IP 주소

서버명

IP 주소

역할

Server#1

10.10.10.1

NTP 서버

Server#2

10.10.10.2

Slave 서버

Server#3

10.10.10.3

Slave 서버

내부 NTP 서버

외부 NTP 서버와 시간 동기화

내부 NTP 서버 시스템 시간을 인터넷 표준시(예:time.windows.com)으로 설정한다.

실행서버

Server#1(IP:10.10.10.1)

시나리오

내부 NTP 서버 역할로 운용할 서버의 시간 동기화 대상을 외부NTP(예:time.windows.com)으로 설정하고, 설정(레지스트리)값을 확인 후 동기화 작업을 수행한다.

작업

1. 외부 NTP서버를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd

-> w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

표 1: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update

명령이 성공적으로 완료되었습니다.

2. Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

표 2: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters

값 이름 값 종류 값 데이터

-----------------------------------------------------------------------------

ServiceMain REG_SZ SvchostEntry_W32Time

ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll

NtpServer REG_SZ time.windows.com,0x1 <- 외부 NTP서버주소

Type REG_SZ NTP <- 외부 NTP서버 사용

3. Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

-> net start w32tm

표 3: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

4. 시간 동기화

* 시작 -> cmd -> w32tm /resync

표 4: 예상결과

[정상]

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

[오류] : 방화벽에서 외부 UDP 123 포트가 막혀있을 경우 발생할 수 있다.

C:\>w32tm /resync

동기화 명령 전송 - local computer...

사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다.

NTP 서비스 제공을 위한 구성 확인

내부 NTP 서버가 외부 NTP서버를 참조하는지 확인한다.

실행서버

Server#1(IP:10.10.10.1)

시나리오

내부 NTP 서버 역할로 운용할 서버의 서비스를 확인하여 Slave 서버에서 연결 할 수 있도록 구성 값을 확인한다.

작업

1. Windows Time 서비스 구동 확인

* 시작 -> cmd -> sc query w32time

표 5: 예상 결과

C:\>sc query w32time

SERVICE_NAME: w32time

TYPE : 20 WIN32_SHARE_PROCESS

STATE : 4 RUNNING

(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)

WIN32_EXIT_CODE : 0 (0x0)

SERVICE_EXIT_CODE : 0 (0x0)

CHECKPOINT : 0x0

WAIT_HINT : 0x0

2. NTP 서비스 구동 확인

* 시작 -> cmd -> netstat –ano | findstr 123

표6: 예상 결과

C:\>netstat -ano | findstr 123

UDP 0.0.0.0:123 *:* 1128

UDP 0.0.0.0:62123 *:* 1428

UDP [::]:123 *:* 1128

 

Windows Server 2008 R2 REG 수정

Here's how to do it:

  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate and then click the following registry entry:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\

  3. In the right pane, right-click AnnounceFlags, and then click Modify.
  4. In the Edit DWORD Value dialog box, under Value data, type 5, and then click OK.
  5. Enable NTPServer.
    1. Locate and then click the following registry subkey:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
                                                      Services\W32Time\TimeProviders\NtpServer\

    2. In the right pane, right-click Enabled, and then click Modify.
    3. In the Edit DWORD Value dialog box, type 1 under Value data, and then click OK.
  6. Exit Registry Editor.
  7. At the command prompt, type the following command to restart the Windows Time service, and then press ENTER:

    net stop w32time && net start w32time

* 네트워크 장비와 NTP 통신 오류시

a. HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config 에서 LocalClockDispersion 항목의 값을 10에서 0으로 변경합니다.

 

Slave 서버

Slave 서버 환경 구성

내부 NTP서버(IP:10.10.10.1)를 기준으로 Slave 서버의 시스템 시간을 설정한다. 시간차이가 너무 많을 경우 동기화가 되지 않으니, 수동으로 근접한 시간을 맞추고 동기화 할 수 있도록 한다.

실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

( 서버별로 수행)

시나리오

시간 동기화 대상을 내부 NTP서버(IP:10.10.10.1)로 설정하고, 동기화 작업을 수행한다.

작업

1. 내부NTP서버(IP:10.10.10.1)를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd

-> w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

표 7: 예상결과

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update

명령이 성공적으로 완료되었습니다.

2. Windows Time 서비스의 설정값(레지스트리) 확인

* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters

표 8: 예상 결과

C:\>w32tm /dumpreg /subkey:Parameters

값 이름 값 종류 값 데이터

-----------------------------------------------------------------------------

ServiceMain REG_SZ SvchostEntry_W32Time

ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll

NtpServer REG_SZ 10.10.10.1 <- 외부 NTP서버주소

Type REG_SZ NTP <- 외부 NTP서버 사용

3. Windows Time 서비스 재시작

* 시작 -> cmd -> net stop w32tm

-> net start w32tm

표 9: 예상결과

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

3. 시간 동기화

* 시작 -> cmd -> w32tm /resync

표 10: 예상결과

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

NTP서버와 시간차 확인

특정 서버(ex.NTP서버)와 실행한 서버와의 시간차이를 확인한다.

실행서버

Server#2(IP:10.10.10.2)

Server#3(IP:10.10.10.3)

( 서버별로 수행하여 확인 할 수 있다.)

시나리오

특정서버(Master Server:10.10.10.1)와 Slave Server(10.10.10.2)시간 동기화 대상을 Master Server 설정하고, 동기화 작업을 수행한다.

작업

1. Master Server를 기준으로 시간동기화 설정을 한다.

* 시작 -> cmd -> w32tm /stripchart /dataonly /computer:10.10.10.1

비교대상 서버와 시간이 일치한다면, 하기와 유사한 결과값을 볼 수 있다.

표 11: 예상결과

C:\> w32tm /stripchart /dataonly /computer:10.10.10.1

Tracking 10.10.10.1 [10.10.10.1].

The current time is 2012-04-18 오후 19:17:13 (local time).

19:17:13, +00.2676328s -> 비교 대상 서버와 +00.2676328 초만큼 차이가 난다.

19:17:15, +00.2593851s

19:17:17, +00.2589499s

19:17:19, +00.2428931s

^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다.

+00.xxxxxxx(또는 -00.xxxxxxx)로 대상 NTP서버와 차이나는 시간만큼 표기된다.

예) +120.2428931s -> +120초 차이가 남

정리: NTP설정 후 동기화 요청 및 동기화 확인

표 12: Slave서버 동기화 설정

  • NTP서버(IP:10.10.10.1) 서버를 시스템 시간으로 설정한다.

C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1/update

명령이 성공적으로 완료되었습니다.

  • Windows Time 서비스를 재기동한다.

C:\>net stop w32time

Windows Time 서비스를 멈춥니다..

Windows Time 서비스를 잘 멈추었습니다.

C:\>net start w32time

Windows Time 서비스를 시작합니다..

Windows Time 서비스가 잘 시작되었습니다.

  • NTP서버(IP:10.10.10.1)로 지정한 서버와 동기화를 요청한다.

C:\>w32tm /resync

로컬 컴퓨터에 다시 동기화 명령을 보내는 중

명령이 성공적으로 완료되었습니다.

  • NTP서버(IP:10.10.10.1)와 실행 중인 서버와의 시간차이를 확인한다.

C:\>w32tm /stripchart /dataonly /computer:10.10.10.1

10.10.10.1[10.10.10.1:123] 추적 중

현재 시간은 2012-04-19 오후 22:47:25입니다.

22:47:25, +23.2364090s

22:47:27, +22.7004942s -> 조금씩이지만 차이가 줄어드는 것을 볼 수 있다.

22:47:30, +22.1639462s

22:47:32, +21.6430236s

^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다.

참고

W32Time 서비스의 레지스트리 항목

SITE: http://support.microsoft.com/kb/223184/KO/

큰 시간 오프셋을 방지하도록 Windows 시간 서비스 구성

SITE: http://support.microsoft.com/kb/884776/ko

Windows Server 2008 방화벽 설정

NTP Sync Response(IN/UDP)

netsh advfirewall firewall add rule name="NTP Sync Response(IN/UDP)" protocol=UDP dir=in action=allow localport=123
( command 창이 관리자 권한으로 실행되어있어야 한다.)

20120419_Windows_Server_NTP_설정_가이드.pdf

Posted by 배움나눔
Windows2012. 5. 3. 13:26

출처 : http://ss64.com/nt/at.html

AT.exe

Schedule a command or batch file to run on a computer at a specific date and time.

This command is available for backwards compatibility with NT 4 but has been superseded by SCHTASKS.

Syntax
      Create an AT job:
      AT [\\computername] hh:mm [/INTERACTIVE] [ /EVERY:day(s) | /NEXT:day(s) ] "command"

      Delete an AT job:
      AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]] 

Key
\\computername : Execute the AT command on a remote computer. id : An id number AT assigns to each scheduled job. /delete : Cancel a scheduled job. If id is omitted, all jobs are deleted. /yes : Use with /delete to supress the confirmation message. hh:mm : The time to run the command. /interactive : Allow the job to interact with the desktop of the current user when the job runs. /every:day(s) : Run the command every day(s) of the week or month. (default: dd=today) /next:day(s) : Run the command on the next occurrence of the day. (default: dd=today) "command" : The batch program or command to run. If the path to this includes spaces, put double quotation marks around the path. "C:\Program Files\My Batch.cmd"

Day(s) are in this format: (English Locale EN)

Monday = m
Tuesday = t
Wednesday = w
Thursday = th
Friday = f
Saturday = s
Sunday = su

or a specific day of the month:
e.g. 5th of every month = 5

In other locales the day(s) may be different letters:
Italian: L,MA,ME,g,v,s,d
German: M, T, W, Th, F, S, Su
French: L, M, Me, J, V, S, D

Examples:

Run a command every day

AT 23:30 /EVERY:m,t,w,th,f,s,su c:\backups\every_day.cmd

Run a command every Friday

AT 23:30 /EVERY:f c:\backups\weekly.cmd

Remove all scheduled AT jobs

AT /delete /yes

Run a command this evening (once only)

AT 23:30 /NEXT: c:\backups\today.cmd

Rights needed to issue an AT command

By default only a Local Administrator can issue an AT command, a Domain Admin can direct the command at any machine.

To configure an AT job as part of a users login script - the user must be a member of the local Administrators group.

Other requirements

The "Task Scheduler" service must be running to use the AT command.

The "Schedule" service (ATSVC) rather than the "Task Scheduler" service must be running to use SOON with a delay of less than 60 seconds. - see Q237840

You can use the Scheduled Tasks folder to view or modify the settings of a task that was created by using the AT command. When you schedule a task using the at command, the task is listed in the Scheduled Tasks folder, with a name such as:At3478. However, if you modify an AT task through the Scheduled Tasks folder, it is upgraded to a normal scheduled task. The task is no longer visible to the at command, and the at account setting no longer applies to it. You must explicitly enter a user account and password for the task. For most purposes the SchTasks command is a better choice than AT.

Commands to Process

At does not automatically load Cmd.exe, the command interpreter. If you are not running an executable (.exe) file, you must explicitly load Cmd.exe at the beginning of the command e.g. cmd /c dir

Don’t try to pass more than one command into AT, put multiple commands into a batch file and then call the batch file from AT.

User Rights needed for the AT command to perform it's task

The User Account under which the Schedule service runs may require specific file access permissions, user permissions and drive mappings.

The User Account is selected under MyComputer, ScheduledTasks, Advanced (Menu), AT Service Account. You also need to stop and restart the service before the change in UserAccount will take effect.

Here's how to check if a user account has sufficent rights for a particular task:

C:\> AT 14:32 /interactive %comspec% /k

Setting hh:mm for one minute from now will open a cmd window at the specified time. In this window you can check the following settings:

  • The PATH
  • Environment variables (particularly TEMP).
  • Drive mappings - you can add these by putting appropriate NET USE... commands at the beginning of your batch file.

Next, go ahead and run your batch file in this console window, note the errors, and fix them. Once the errors have been fixed, you can remove the /interactive switch and schedule the batch file with some confidence that it will work as intended.

Bugs

If you change the system time after scheduling a command with AT, synchronize the scheduler with the revised system time by typing AT without any command-line options.

By default, AT jobs will stop running after 72 hours.
You can modify this in the registry.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule
Add Value:
AtTaskMaxHours Data type: REG_DWORD
Decimal Value Data: 0.
A value of 0 indicates no limit, does not stop.
Values from 1 through 99 indicate the number of hours.

Other Task Scheduler options are stored in the registry

HKLM\SOFTWARE\Microsoft\SchedulingAgent\

“We don’t wake up for less than $10,000 a day” - Linda Evangelista

Related:

SOON - Schedule a command to run in the near future
CALL - Call one batch program from another.
Powershell: To schedule a PS task call Powershell.exe
JT.exe (Microsoft FTP) - Manage the Task Scheduler from the command line
SchTasks - Task Scheduler
WMIC JOB - WMI access to scheduled tasks.
Equivalent bash command (Linux): crontab - Schedule a command to run at a later time

Posted by 배움나눔
Windows2012. 4. 13. 11:16

출처 : http://www.snoopybox.co.kr/1627

 

방화벽에서 특정 포트를 오픈해야 하는 경우 물론 firewall.cpl 이나 wf.msc 등의 GUI 환경에서 설정할 수도 있지만, 대량으로 처리해야 하는 경우라면 커맨드로 작업하는게 훨씬 편리합니다.

간단히 예제를 보여드리겠습니다.

TCP 7777 포트를 오픈하고 싶다면

윈도우 2008 이상

netsh advfirewall firewall add rule name="test" dir=in action=allow protocol=tcp localport=7777


윈도우 2003

netsh firewall add portopening tcp 7777 "test"


위 예제는 가장 일반적인 TCP 포트 인바운트 허용 규칙을 추가하는 것이었고, 좀 더 상세한 작업을 원하신다면 도움말 참고해서 작업하시면 되겠습니다.

윈도우 2008 이상에서는 아래 명령어를 입력해보세요.

netsh advfirewall firewall add rule

아래는 도움말에 나오는 예제입니다.

messenger.exe에 대해 캡슐화 보안이 적용되지 않은 인바운드 규칙을 추가합니다.
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\programfiles\messenger\msmsgs.exe"
security=authnoencap action=allow
포트 80에 대한 아웃바운드 규칙을 추가합니다.
netsh advfirewall firewall add rule name="allow80"
protocol=TCP dir=out localport=80 action=block
TCP 포트 80 트래픽에 대해 보안 및 암호화를 요구하는
인바운드 규칙을 추가합니다.
netsh advfirewall firewall add rule
name="Require Encryption for Inbound TCP/80"
protocol=TCP dir=in localport=80 security=authdynenc
action=allow
messenger.exe에 대해 인바운드 규칙을 추가하고 보안을 요청합니다.
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\program files\messenger\msmsgs.exe"
security=authenticate action= allow
SDDL 문자열로 식별된 그룹 acmedomain\nscanners에 대해
인증된 방화벽 통과 규칙을 추가합니다.
netsh advfirewall firewall add rule name="allow scanners"
dir=in rmtcomputergrp=<SDDL 문자열> action=bypass
security=authenticate
UDP 연결에 사용되는 로컬 포트 5000-5010에 대해 아웃바운드 허용 규칙을 추가합니다.
Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allow


윈도우 2003 에서는 아래 명령어를 입력해보세요.

netsh firewall add portopening

아래는 도움말에 나오는 예제입니다.

add portopening TCP 80 MyWebPort
add portopening UDP 500 IKE ENABLE ALL
add portopening ALL 53 DNS ENABLE CUSTOM
157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet
add portopening protocol = TCP port = 80 name = MyWebPort
add portopening protocol = UDP port = 500 name = IKE mode = ENABLE scope = ALL
add portopening protocol = ALL port = 53 name = DNS mode = ENABLE
scope = CUSTOM addresses =
157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet


어차피 모든 명령어의 사용법을 외울 수는 없습니다. 그리고 외울 필요도 없습니다. 그냥 윈도우에 이런 명령어가 있다는 사실만 알아두시면 되겠습니다. 나중에 필요할 때가 찾아오면 그 때 다시 검색해서 사용하면 되니까요.

※ 동우님 질문에 답변

2008 기준으로 예제 보여드리겠습니다.

O 2000-3000 포트 차단하는 방법
netsh advfirewall firewall add rule name="동우" dir=in action=block protocol=tcp localport=2000-3000

O 적용된 규칙 보기
netsh advfirewall firewall show rule name="동우"

O 삭제하는 방법
netsh advfirewall firewall delete rule name="동우"

적용된 규칙 보기나 삭제하는 방법에 name=all 값을 주면 모든 규칙을 불러오거나 삭제합니다. 자세한 사용법을 확인하려면 아래 명령어를 각각 입력해보세요.

netsh advfirewall firewall add rule
netsh advfirewall firewall delete rule
netsh advfirewall firewall show rule
netsh advfirewall firewall set rule

Posted by 배움나눔
Windows2012. 4. 13. 11:09

출처 : http://www.snoopybox.co.kr/1629

 

Active 모드 - 클라이언트가 서버에 접속하면서 DataChannel로 사용할 포트를 서버에 알려주면, 서버가 클라이언트의 해당 포트로 접속하는 방식

Passive 모드 - 클라이언트가 서버에 접속하면, 서버가 DataChannel로 사용할 포트를 클라이언트에 알려주고, 클라이언트는 다시 서버의 해당 포트로 접속하는 방식

설명이 허접해서 이해가 잘 안 되실 수도 있는데, 어쨌든 Active 모드는 서버가 클라이언트로 접속하는 조금 어색한 구조로 되어 있어서 여러가지 문제가 많으므로(특히 방화벽), 일반적으로 Passive 모드를 많이들 사용하실 것입니다.

그런데 이 Passive 모드에도 문제가 있습니다. 바로 NAT 환경일 때 문제가 발생합니다.(Active도 마찬가지) 그러니까 서버가 내부에서 사용하는 사설 IP와 실제로 외부에서 접속하는 공인 IP가 따로 존재하는 경우 문제가 발생합니다. 예를 들어 공유기를 사용하는 환경이라면 그렇고, 회사에서도(특히 클라우드 환경이라면) 비슷한 상황이 많이 발생할 것입니다.

무슨 말인지 잘 이해가 안 되실 수도 있으니, 실제 제 환경을 가지고 설명드리겠습니다.

회사에서 집에 있는 파일 서버로 FTP Passive 모드 접속을 시도한 경우

1. 회사 노트북에서 윈도우 탐색기 주소창에 ftp://175.197.xxx.xxx 를 입력했다.
2. 그랬더니 집에 있는 파일 서버가 반응을 하고 계정 정보를 묻는 창을 띄웠다.
3. 계정 정보를 입력했다.
4. 집에 있는 파일 서버가 192.168.0.3 IP의 55246 포트로 접속하라는 정보를 보냈다.
5. 하지만 회사 노트북은 192.168.0.3 IP의 55246 포트로 접속할 수 없다. 그래서 아무것도 안 보인다.

문제의 원인이 어디에 있는지 아시겠죠? 문제는 두가지입니다.

첫째는 집에 있는 파일 서버가 192.168.0.3 이라는 사설 IP를 알려줬다는 점이고
둘째는 55246 포트로 접속하라고 알려줬다는 점입니다.

첫번째 문제는 파일 서버가 회사 노트북한테 공인 IP를 알려주도록 설정해주면 해결될 것이고
두번째 문제는 공유기에서 55246 포트를 파일 서버로 포트포워딩 해주면 해결될 것입니다.

그런데 55246 포트는 1024 - 65535 사이에서 랜덤하게 생성된 포트입니다. 그러니까 Passive 모드로 접속시 서버는 DataChannel로 사용할 포트를 랜덤하게 정해서 알려줍니다. 따라서 공유기에서 파일 서버에 DMZ 설정을 걸어주든지, 아니면 Passive 모드에서 사용할 DataChannel의 특정 포트 범위를 한정해주고, 해당 범위를 공유기에서 포트포워딩 해주시면 되겠습니다.

이제 실전에 들어가겠습니다.

IIS에서 FTP 방화벽 지원 설정으로 들어가보시면


데이터 채널 포트 범위와 방화벽의 외부 IP 주소 설정하는 부분이 있습니다. 데이터 채널 포트 범위는 기본값 0-0으로 그냥 두신다면 1024 - 65535 범위를 사용하게 되므로, 공유기에서 DMZ 설정을 하시거나 또는 1024 - 65535 포트를 전부 포트포워딩 시켜줘야 합니다. 보안상 별로 안 좋으니 특정 범위를 지정해봅시다. 저는 예로 나온 5000-6000 범위를 지정하겠습니다.

그리고 방화벽의 외부 IP 주소 부분에 공인 IP 주소를 넣어주세요. 가장 중요한 부분이라 할 수 있습니다. Passive 모드에서 사설 IP를 알려주면 클라이언트가 접속을 못 하니까요.

값을 넣으셨다면 오른쪽에 있는 적용 버튼 눌러주시면 되구요.


그런데 이놈의 FTP 방화벽 지원 설정이 좀 거시기합니다. 방화벽의 외부 IP 주소 부분은 바로 적용이 되는데, 데이터 채널 포트 범위는 바로 적용되지 않습니다. FTP 서비스를 한번 재시작 해줘야 적용이 됩니다.

services.msc 들어가서 Microsoft FTP Service를 재시작 한번 해주시거나 아니면 관리자 권한으로 커맨드 창을 띄워서 아래 명령어로 서비스를 재기동 해주시면 되겠습니다.

net stop ftpsvc
net start ftpsvc



다음은 공유기의 포트포워딩 설정 부분인데 이 부분은 각자 사용하는 기종이 다르니 제가 설명하기 좀 그렇겠죠? 아무튼 저는 파일 서버에 5000-6000 포트를 포워딩 시켜주겠습니다. (21번 포트는 당연히 포워딩 해주셨겠죠 ^^;;)


마지막으로 윈도우 방화벽 부분을 생각해볼 필요가 있는데, 그냥 FTP 자체를 예외처리 해주시면 됩니다.


명령어로 하시려면 아래와 같이 하시면 됩니다.

netsh advfirewall firewall add rule name="FTP" service=ftpsvc action=allow protocol=TCP dir=in



이상입니다. 다시 과정을 정리하자면

1. IIS에서 FTP 방화벽 지원 설정
2. FTP 서비스 재기동하기
3. 공유기에서 포트포워딩 설정
4. 윈도우 방화벽 예외 처리

이렇게 작업해주시면 FTP Passive 모드 문제는 해결될 것입니다.

Posted by 배움나눔
Windows2012. 4. 13. 11:02

출처 : http://www.snoopybox.co.kr/1634

 

댓글로 알려주신 분이 계셔서 소개해드립니다. 좋은 프로그램 소개해주셔서 감사드립니다.

그동안 상용 프로그램인 Active@ Password Changer를 제외하곤 전부 Brute Force 방식인줄 알고 있었는데, 이 프로그램도 Active@ Password Changer와 마찬가지로 C:\Windows\System32\config\SAM 레지스트리 하이브의 바이너리 값을 수정하는 방식이더군요. 게다가 GPL 기반의 무료 프로그램이기 때문에 회사에서도 부담없이 사용할 수 있습니다.

Offline NT Password & Registry Editor
http://pogostick.net/~pnh/ntpasswd/

다운로드


 



위에 있는 ISO 버전은 CD로 이미지레코딩 하셔서 사용하시면 되고, 아래에 있는 USB 버전은 USB에 심어서 사용하시면 됩니다. USB에 심는 방법은 안에 설명서가 영어로 들어있는데, USB에 압축파일을 풀어서 넣고 커맨드 창을 열어서 아래와 같이 입력하시면 된다고 합니다. (USB 드라이브가 J 드라이브인 경우 예제)

j:\syslinux.exe -ma j:

사용법은 리눅스랑 영어의 기초 정도만 알고 계시면 전혀 어렵지 않습니다. 대부분의 단계는 그냥 엔터만 쳐도 잘 진행됩니다. 저는 부가적인 옵션에 대한 설명은 생략하고 패스워드 복구에 중점을 두고 설명을 드리겠습니다.

일단 테스트를 위해 snoopy 계정의 패스워드를 1234로 설정하였습니다. 이상태로 CD를 넣고 재부팅 하겠습니다.


위 화면에서는 그냥 엔터를 입력하시면 됩니다. 리눅스 커널에 부팅 옵션을 선택해서 줄 수 있는데 특별한 경우가 아니라면 기본 부팅으로도 문제가 없을 것입니다.


윈도우가 설치된 파티션을 선택하는 화면인데요, 저는 sda1 파티션에 윈도우가 설치되어 있기 때문에 1번을 선택했습니다. sda1에서 sd는 스카시, 사타 하드 등을 의미하고 a는 첫번째 하드 1은 첫번째 파티션을 의미합니다. 그리고 IDE 방식의 하드는 hda1 이런 식으로 나올 겁니다.

참고로 Select 뒤에 [1] 이렇게 되어 있는데, 이 말은 그냥 엔터만 치면 1번이 기본값으로 입력된다는 의미입니다. 리눅스 사용해보신 분들은 잘 아시겠죠.


레지스트리 하이브 위치를 선택하는 화면인데요, SAM 파일은 당연히 Windows\System32\config 폴더에 존재할 것이기 때문에 그냥 엔터 치시면 됩니다.


패스워드 리셋 작업을 할 것이니 1번을 선택하시거나 그냥 엔터 치시면 됩니다.


여기서도 1번을 선택하시거나 그냥 엔터 치시면 됩니다.


패스워드를 리셋시킬 계정을 선택하는 화면입니다. 그냥 엔터 치시면 Administrator 계정의 패스워드를 편집합니다. 저는 snoopy 계정의 패스워드를 리셋시킬 것이기 때문에 snoopy를 입력하겠습니다. 참고로 RID 값을 입력해도 됩니다. 저는 snoopy 계정의 RID 값인 03e9를 입력해도 되는데, 그냥 계정 이름을 입력하는게 더 편리하겠죠?


1번을 입력하면 패스워드를 리셋 시켜버립니다. (패스워드를 없앤다는 의미)
2번을 입력하면 패스워드를 재설정 할 수 있는데 별로 추천하고 싶지는 않네요.
3번을 입력하면 선택했던 계정을 Administrators 그룹에 등록시킵니다.
4번을 입력하면 계정이 잠겨있거나 비활성화 된 경우 풀어줍니다.
저는 1번을 눌러서 패스워드를 없애버렸습니다.


Password cleared! 라고 나왔네요. 작업이 잘 되었습니다.
더 변경할 계정이 있다면 다시 계정 이름을 입력하시면 되고, 작업이 끝났다면 느낌표를 입력해주세요.


q를 입력해서 빠져나가주시구요


y를 입력해서 변경 사항을 적용시켜 주세요.


n을 입력해서 밖으로 빠져나가겠습니다.


밖으로 빠져나온 모습입니다. CD나 USB를 뽑으시고 reboot 입력하시면 재부팅 됩니다.


어떤가요? 이제 패스워드를 분실해도 걱정할 필요가 없겠죠? 용량이 4.48MB 밖에 안되서 CD에 굽기 아까울 수도 있는데, 이정도 훌륭한 무료 프로그램이라면 DVD 한장에 구워놔도 아깝지 않을 것 같습니다. ^^

Posted by 배움나눔
Windows2012. 4. 13. 10:56

출처 : http://snoopybox.co.kr/trackback/1635

 

 


 


윈도우 서버 64비트 계열에서 메모리 사용률이 비정상적으로 높게 나타난다면, 시스템 파일 캐시를 의심해보시기 바랍니다. 이 시스템 파일 캐시는 작업 관리자나 리소스 모니터에서 확인할 수 없기 때문에 처음 겪어보시는 분들은 도무지 원인을 찾아내기 힘들 것입니다.

일단 이 내용과 관련해서 관심있는 분은 아래 글을 한번 읽어보세요.

Microsoft Windows Dynamic Cache Service
http://blogs.msdn.com/b/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx

요지는 이렇습니다.

1. 윈도우 64비트는 커널의 가상 주소 공간이 매우 크기 때문에 (제가 알기로는 8TB)
2. 파일 갯수가 엄청 많으면서 지속적으로 엄청난 읽기 I/O를 일으킨다면 (주로 파일 서버)
3. 시스템 파일 캐시 크기가 지속적으로 증가해 결국 물리 메모리 전체를 점유해버림

이 문제를 해결하려면 시스템 파일 캐시의 작업 공간 크기를 제한해야 합니다.

일단 비정상적으로 메모리 사용률이 높은 서버에서 시스템 파일 캐시가 그 원인인지 확인해보고 싶다면 아래 RAMMap 툴을 사용해보시기 바랍니다.

RAMMap
http://technet.microsoft.com/en-us/sysinternals/ff700229


아래 그림과 같이 분홍색 Metafile의 Active 크기가 엄청 크다면 시스템 파일 캐시가 범인이 맞습니다. NTFS의 Metadata를 캐시하고 있는 것입니다.


우선 당장 메모리 사용률을 떨어뜨리고 싶다면 (리부팅 없이) 아래 CacheSet 툴을 사용해보시기 바랍니다.

CacheSet
http://technet.microsoft.com/en-us/sysinternals/bb897561


 


위 툴로도 시스템 파일 캐시의 작업 공간을 제한할 수 있는데, 제가 윈도우 서버 2008 R2에서 테스트 했을 때는 제한을 해도 최대치를 넘어 계속해서 캐시가 증가하였습니다. 따라서 저는 이 툴을 제한하는 용도로는 사용하지 않습니다. 단지 급하게 메모리 사용률을 떨어뜨리기 위해서만 사용합니다. Clear 버튼을 누르시면 캐시된 메모리 영역을 날려버립니다. 그런데 정확히 표현하자면 날리는 것은 아니고 다른 프로그램이 사용할 수 있는 상태로 되돌리는 것입니다.

Clearing the Cache's Working Set
You can force the Cache to release all of it's pages by pressing the Clear button. Note that the Cache can grow again as necessary, and that this is not the same as flush
ing the Cache - pages that were assigned to it are simply made available to other programs and can be reclaimed by the Cache.


Clear 버튼을 누르니 아래와 같이 효과가 바로 나타났습니다.


하지만 위 CacheSet은 어디까지나 응급조치용일 뿐이고, 근본적인(?) 조치는 아래 Windows Dynamic Cache Service를 활용하시기 바랍니다.

Microsoft Windows Dynamic Cache Service
http://www.microsoft.com/download/en/details.aspx?id=9258


그런데 위 툴은 윈도우 서버 2008 R2를 지원하지 않습니다. 따라서 윈도우 서버 2008 R2 사용자는 아래 파일을 따로 받으시기 바랍니다.


이상입니다.

Posted by 배움나눔
Windows2012. 4. 13. 10:53

출처 : http://snoopybox.co.kr/trackback/1637

서버 2008에서 명령어로 역할/기능을 추가하는 방법에 대해 간단히 알아보겠습니다.

아... 이게 왜 필요한가 하면... 서버 한대만 작업한다면 마우스로 클릭해서 구성요소를 설치하는게 나을 수도 있겠지만, 수십대의 서버에 동일한 작업을 해야 한다면 커맨드를 복사해서 붙여넣는게 좋겠죠?

여기서는 Windows Server 백업 기능을 예제로 설명하겠습니다.


 

ServerManagerCmd.exe


가장 기본적인 명령어입니다. 2008/R2 모두 사용 가능한데 추후에는 사라질 명령어라고 하네요.

ServerManagerCmd.exe -install Backup


설치할 구성 요소의 이름이 궁금하시죠? 그리고 뭐가 설치되어 있는지 확인해볼 필요도 있겠습니다. 이 경우 뒤에 -query 옵션을 붙여주시면 됩니다.

ServerManagerCmd.exe -query


뒤에 [] 안에 들어있는 이름을 -install이나 -remove 할 때 적어주시면 되구요, 하위 구성요소를 전부 설치하고 싶다면 -install 옵션과 함께 -allSubFeatures를 적어주시면 됩니다. 예를 들어 IIS 웹서버 기능 전체를 설치하고 싶다면

ServerManagerCmd.exe -install Web-Server -allSubFeatures


 

ocsetup.exe


요거는 제가 별로 관심이 없어서... 2008/R2 모두 지원합니다. 원래 서버 Core 버전에 사용하라고 존재하는 명령어 같은데... 자세한 내용은 아래 글을 참조하세요.

http://technet.microsoft.com/ko-kr/library/cc766272(v=ws.10).aspx

여기서는 Windows Server 백업 기능 설치만 보여드리겠습니다.

start /w ocsetup.exe WindowsServerBackup


굳이 앞에 start /wait 옵션을 붙이는 이유는... 안 붙이면 끝났는지 안 끝났는지 표시가 안 되기 때문입니다. 앞에 저렇게 붙여 놓아야 작업이 끝날 때 까지 기다린 다음 프롬프트가 반환됩니다.

DISM.exe


제가 윈도우 7에서 즐겨쓰는 명령어입니다. 2008에는 존재하지 않고 2008 R2에서만 사용 가능합니다.

DISM.exe /Online /Enable-Feature /FeatureName:WindowsServerBackup


마찬가지로 뒤에 붙일 FeatureName에 뭘 적어넣어야 할지 궁금하실 텐데, 이렇게 하시면 리스트가 보기 좋게 쭈욱 나옵니다. (너무 많아서 천천히 보려면 뒤에 | more 붙여주시면 되겠죠)

DISM.exe /Online /Get-Features /Format:Table


 

PowerShell


파워쉘은 제가 아직 잘 모르기 때문에... (서버관리자가 파워쉘을 모른다니!! 라고 욕하지 말아주세요 ㅠㅠ)

아래와 같이 ServerManager 모듈을 Import 하신 다음 사용하시면 됩니다.

import-module ServerManager
Add-WindowsFeature Backup



이상으로 서버 2008 명령어로 역할/기능 추가하는 방법 글을 마치도록 하겠습니다

 

Posted by 배움나눔