2004/09/11

윈도우탐색기 폴더창 에러 IE 복구를 통한 해결

에러내용을 다음 이미지와 같은 현상입니다.

주로 Windows 2000에서 SP4를 설치하고난후 또는 윈도우업데이트를 한후에 윈도우탐색기의 폴더 탐색창에서 해당 컴포넌트를 호출하지 못하는 에러입니다.
또한 제어판의 프로그램 추가/삭제 창이 안뜨는 문제도 동일합니다.






윈도우 탐색기는 IE와 통합되어 있습니다. 그래서 이를 해결코자 IE재설치를 고려해 보지만 재설치나 제거하는 메뉴나 기능이 없습니다.
물론, SP4를 재설치하는 것도 하나의 방법이긴 합니다만 그것보다 IE 설치상 에러이기 때문에 IE만 재설치하면 됩니다.

다음과 같은 명령어를 실행하면 IE 재설치 및 복구항목이 나옵니다.

복구를 선택하시고 프로세스가 진행된후 재부팅을 하고나면 정상적으로 보입니다.

rundll32 setupwbv.dll,IE5Maintenance "C:\Program Files\Internet Explorer\Setup\SETUP.EXE" /g "C:\WINDOWS\IE Uninstall Log.Txt"

IE6이 설치되어 있으면 위 내용중 IE5 --> IE6을 바꿔서 실행해 주세요.


*참고사항

그런데, rundll32 이란건 뭔가?. rundll32는 32bit DLL 라이브러리 내에 작성된 함수를 명시적으로 호출하는 기능을 가지고 있습니다.

모든 dll 파일내의 함수호출이 가능한것은 아니고, dll 작성시 명시적으로 호출이 가능하도록 작성된 dll이 가능합니다.

DLL명령줄은 다음과 같은 형식입니다.
RUNDLL32.EXE <dllname>,<entrypoint> <optional arguments>

rundll32 를 통한 dll내 함수호출시 다음과 같은 순서로 작동됩니다.

1.명령줄 구문을 분석합니다.
2.LoadLibrary()를 통해 지정된 DLL을 로드합니다.
3.GetProcAddress()를 통해 <entrypoint> 함수의 주소를 얻습니다.
4.<entrypoint> 함수를 호출하고 명령줄 끝 정보인 <optional arguments>를 
   전달합니다.
5.<entrypoint> 함수가 결과를 반환하면 Rundll.exe는 DLL을 언로드하고 종료됩니다.

이렇게 할려면, DLL작성시 위의 프로세스가 가능하도록 DLL을 만들어야 합니다.



11-err_explorer.jpg
11-TechNetB_masthead_ltr.gif

2004/09/01

DNS 백업 및 복원하기

1. Windows2000 Server ----> Windows2000 Server

백업 방법은 간단하다.... 일단, %systemroot%\system32\dns 폴더에 있는 각 도메인 DB파일을 복사하여 백업한다음에,

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS]과
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Zones]

둘중에 한곳에서 등록된 도메인의 하위 키값을 레지스트리 내보내기로 해서 파일로 저장합니다.

복원은 반대로, 일단, DNS서비스를 중지한다음에, DB파일을 원래 위치에 복사해 넣은다음에, 앞서 백업했던 레지스트리값을 병합하면 됩니다.

그런다음에, DNS시작후 데이터파일 업데이트 한후 다시 서비스 재시작해 주심됩니다.

2. Windows2000 Server --> Windows Server 2003

백업방법은 앞서방법과 같고,  복원이 약간다릅니다. Windows Server 2003의 경우
DNS 레지스트리 값 위치가 약간 다릅니다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\DNSServer\Zones]


기존의 2000 것을 위것으로 메모장등으로 편집해서 바꿔야 합니다. 어크로에디트 같은 편집툴로 확 한번에 바꾸시면 됩니다.

3. Windows Server 2003 ---> Windows Server 2003

이건, 2000에서 하던 방법과 동일하게 하시면 됩니다.


*추가팁:

위의 경우는 DNS에 등록한 도메인 리스트 정보를 레지스트리에서 관리하는 것으로 해당 DNS서버에서 파일로 저장하기를 하면 system32\dns 에 boot 파일이 생성됩니다.
그러면, 이 boot 파일과, 각 도메인 DB파일을 다른 서버에 이동한후 DNS를 restart 하시면 됩니다. 복사전에 대상서버의 DNS 데이터 저장을 파일로 해놓아야 합니다.


Windows 2000 Server 기본 보안 검사 목록

1. 모든 디스크 파티션이 NTFS로 포맷되었는지 확인

2. Administrator 계정에 강력한 암호를 사용하고 있는지 확인

3. 불필요한 서비스를 사용 안함으로 설정
-> 2000에서는 필요없는 서비스가 실행되는게 많음.

4. 불필요한 계정을 사용 안함으로 설정하거나 삭제

5. 파일 및 디렉토리 보호
->특히 웹서버 주의..

6. Guest 계정을 사용하지 않는지 확인

7. 익명 액세스로부터 레지스트리 보호

8. 적절한 레지스트리 ACL을 적용

9. 공개 로컬 보안 인증(LSA)의 정보에 대한 액세스 제한

10. 강력한 암호 정책 설정
-> 최소 8자이상, 복잡성만족..

11. 계정 잠금 정책 설정
-> 웹서버일경우 주의하세요.

12. Administrator 계정 구성
-> 계정이름을 변경하거나 권한변경..

13. 모든 불필요한 파일 공유 제거
-> 당근.

14. 모든 필수적인 파일 공유에 대해 적절한 ACL 설정

15. 바이러스 백신 소프트웨어와 업데이트 설치
-> 백신소프트웨어 설치는 서버성능에 미치는 영향에 대해서 의견분분...

16. 최신 서비스 팩 설치

17. 적절한 post-Service Pack 보안 핫픽스 설치


이 정도만 해놓아도 상당한 효과가 있습니다.



31-TechNetB_masthead_ltr.gif

서비스 거부 공격에 대비한 TCP/IP 스택 강화 레지스트리 값

Windows 2000 기반 워크스테이션과 서버에서 TCP/IP(Transmission Control Protocol/Internet Protocol) 프로토콜 스택을 강화합니다.

기본 TCP/IP 스택 구성은 정상적인 인트라넷 트래픽을 처리하도록 조정되어 있으나, 컴퓨터를 인터넷에 직접 연결한 경우 서비스 거부 공격에 대비하여 TCP/IP 스택을 강화하는 것이 좋습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

  • 값 이름: SynAttackProtect
    키: Tcpip\Parameters
    값 종류: REG_DWORD
    유효 범위: 0,1,2
    기본값: 0

    이 레지스트리 값은 전송 제어 프로토콜(TCP)이 SYN-ACKS의 재전송을 조정하도록 합니다. 이 값을 구성하면 SYN 공격(서비스 거부 공격의 한 종류)이 발생한 경우 연결 응답이 더 빨리 시간 초과됩니다.

    다음은 이 레지스트리 값과 함께 사용할 수 있는 매개 변수입니다.
    • 0(기본값): SYN 공격에 대한 일반적인 보호를 하려면 SynAttackProtect0으로 설정합니다.
    • 1 : SYN 공격에 대하여 보다 높은 수준의 보호를 하려면 SynAttackProtect1로 설정합니다. 이 매개 변수는 TCP가 SYN-ACKS의 재전송을 조정하도록 합니다. SynAttackProtect1로 설정하면 SYN 공격이 이루어지고 있는 경우 연결 응답이 더 빨리 시간 초과됩니다. Windows는 공격이 진행 중인지 확인하기 위하여 다음 값을 사용합니다.
      • TcpMaxPortsExhausted
      • TCPMaxHalfOpen
      • TCPMaxHalfOpenRetried

    • 2 : SYN 공격에 대하여 최상의 보호를 하려면 SynAttackProtect2로 설정합니다. 이 값은 연결 표시가 더 지연되도록 하며, SYN 공격이 진행 중일 때는 TCP 연결 요청이 더 빨리 시간 초과됩니다. 이 값은 권장 설정입니다.

      참고: 다음 소켓 옵션은 SynAttackProtect 값을 2로 설정하면 더 이상 작동하지 않습니다.
      • 확장 가능한 창
      • 각 어댑터에 구성된 TCP 매개 변수(초기 RTT 및 창 크기 포함)

  • 값 이름: EnableDeadGWDetect
    키: Tcpip\Parameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 1(True)

    다음은 이 레지스트리 값과 함께 사용할 수 있는 매개 변수입니다.
    • 1 : EnableDeadGWDetect1로 설정하면 TCP는 더 이상 작동하지 않는 게이트웨이를 검색할 수 있습니다. 더 이상 작동하지 않는 게이트웨이 감지가 사용되면 TCP는 여러 연결에 문제가 발생하는 경우 인터넷 프로토콜(IP)에 백업 게이트웨이를 변경하도록 요청할 수 있습니다. 백업 게이트웨이는 네트워크 제어판에 있는 TCP/IP 구성 대화 상자의 고급 섹션에서 정의됩니다.
    • 0 : EnableDeadGWDetect0으로 설정하는 것이 좋습니다. 0으로 설정하지 않으면 공격으로 인하여 서버가 강제로 원하지 않는 게이트웨이로 전환될 수 있습니다.
  • 값 이름: EnablePMTUDiscovery
    키: Tcpip\Parameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 1(True)

    다음은 이 레지스트리 값과 함께 사용할 수 있는 매개 변수입니다.
    • 1 : EnablePMTUDiscovery1로 설정하면 TCP는 최대 전송 단위(MTU)나 원격 호스트 경로에 대한 최대 패킷 크기의 검색을 시도합니다. TCP는 경로의 MTU를 검색하고 TCP 세그먼트를 이 크기로 제한하여 경로에 있는 각자 다른 MTU로 네트워크에 연결하는 라우터에서 조각을 제거할 수 있습니다. 조각이 있으면 TCP 처리량에 좋지 않은 영향을 줍니다.
    • 0 : EnablePMTUDiscovery0으로 설정하는 것이 좋습니다. 이렇게 하면 로컬 서브넷에서 호스트하지 않는 모든 연결에 576바이트의 MTU가 사용됩니다. 이 값을 0으로 설정하지 않으면 공격자가 강제로 MTU를 아주 작은 값으로 설정하여 스택의 부하가 커집니다.
  • 값 이름: KeepAliveTime
    키: Tcpip\Parameters
    값 종류: REG_DWORD-밀리초 단위 시간
    유효 범위: 1-0xFFFFFFFF
    기본값: 7,200,000(두 시간)

    이 값은 TCP가 연결 유지(Keep-alive) 패킷을 보내어 유휴 연결이 열려 있는지 확인하는 횟수를 결정합니다. 연결이 유지되어 있다면 원격 컴퓨터가 Keep-Alive 패킷을 인식합니다. Keep-Alive 패킷은 기본적으로 보내지지 않습니다. 연결에서 이 값을 구성하기 위한 프로그램을 사용할 수 있습니다. 권장값은 300,000(5분)입니다.
  • 값 이름: NoNameReleaseOnDemand
    키: Netbt\Parameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 0(False)

    이 값은 컴퓨터가 이름 해제 요청을 받을 때 NetBIOS 이름을 해제할지 여부를 결정합니다. 이 값은 관리자가 악의적인 이름 해제 공격으로부터 컴퓨터를 보호할 수 있도록 추가되었습니다. NoNameReleaseOnDemand 값을 1(기본값)로 설정하는 것이 좋습니다.

    참고: NoNameReleaseOnDemand 값을 사용하려면 Windows 2000 서비스 팩 2(SP2) 이상을 사용해야 합니다.

..
다음 부분을 Syn.reg 파일을 만들어 클릭해서 넣어시면 됩니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"SynAttackProtect"=dword:00000002
"TcpMaxHalfOpen"=dword:00000100
"TcpMaxHalfOpenRetried"=dword:00000080
"EnableICMPRedirect"=dword:00000001
"NoNameReleaseOnDemand"=dword:00000001
"EnableDeadGWDetect"=dword:00000000
"KeepAliveTime"=dword:00300000
"PerformRouterDiscovery"=dword:00000000
"EnableICMPRedirects"=dword:00000000





31-TechNetB_masthead_ltr.gif

가장 많이 본 글