독까의 이야기

이전에 리눅스 서버에 DNS 서비스를 구축 하였다. 

리눅스를 마스터 DNS 로 이용하는 윈도우 슬레이브 DNS 서비스를 구축하려고 한다. 


우선은 윈도우에 서버에 DNS 서비스를 설치를 한다.


역할 및 기능 추가에서 설치를 진행하면 된다. 



설치가 완료가 되었으면, DNS 관리자를 실행하여 정방향 조회 영역에서 새 영역을 만들어 준다. 

윈도우 DNS 는 슬레이브 이므로, 영역 형식은 반드시 "보조 영역" 으로 선택 후 진행을 한다.



영역 이름은 그냥 gunnm.xyz 로 한다. 



마스터 DNS 서버의 정보를 입력한다. 




마스터에서 정보를 갖고 오지 않았으므로, 영역 로드가 되지 않는다.



마스터에서 전송을 선택하여 영역을 로드 한다. 



정상적으로 로드가 완료 되면 마스터에서 생성 된 DNS 정보가 출력 된다. 




DNS 서버를 이중화하여 구축시, 마스터에서 장애가 발생하여도 슬레이브에서 처리를 하므로 웹사이트 호출에는 이상이 없다. 


IIS + node.js  환경을 구축하였다. 


진행하면서 확인 된 사항들에 대해 기록을 한다. 



node.js 프로그램은 공식 홈페이지에서 다운 받으면 된다. 


https://nodejs.org/ko/



iisnode 모듈은 github 에서 다운 받으면 된다.


https://github.com/tjanczuk/iisnode/wiki/iisnode-releases


두 개 다 default 로 설치를 진행 하면 된다. 



필수로 구축되어 있어야 하는 사항에 대해 확인 한다. 



1.  웹폴더가 등록 된 파티션에 Users 의 "읽기" 권한이 할당되어 있어야 한다. 없을시 아래와 같은 오류 출력 된다. 


Application has thrown an uncaught exception and is terminated:
Error: EPERM: operation not permitted, lstat 'd:\'
    at Object.realpathSync (fs.js:1617:13)
    at toRealPath (module.js:164:13)
    at Function.Module._findPath (module.js:213:22)
    at Function.Module._resolveFilename (module.js:545:25)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Program Files (x86)\iisnode\interceptor.js:210:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)






2.  해당 웹사이트의 web.config 에 구문 추가가 필요하다. 


        <handlers>
            <add name="iisnode" path="*.js" verb="*" modules="iisnode" resourceType="File" />
        </handlers>


만약 구문을 추가 했는데, 아래와 같은 오류가 출력 된다면 구문을 한 줄 더 추가 한다. (x64 버전 설치시에만)


The iisnode module is unable to start the node.exe process. Make sure the node.exe executable is available at the location specified in the system.webServer/iisnode/@nodeProcessCommandLine element of web.config. By default node.exe is expected in one of the directories listed in the PATH environment variable.


 <iisnode watchedFiles="*.js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="\program files\nodejs\node.exe"/>



3.  iisnode 폴더가 웹사이트 루트 디렉토리에 생성되어 있어야 한다. 폴더가 없거나 생성 할 수 있는 권한이 없을 시에는 아래와 같은 오류 출력 된다. 


iisnode encountered an error when processing the request.

HRESULT: 0x2
HTTP status: 500
HTTP subStatus: 1002
HTTP reason: Internal Server Error

You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is 'true'.
In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.
The node.exe process has not written any information to stderr or iisnode was unable to capture this information. Frequent reason is that the iisnode module is unable to create a log file to capture stdout and stderr output from node.exe. Please check that the identity of the IIS application pool running the node.js application has read and write access permissions to the directory on the server where the node.js application is located. Alternatively you can disable logging by setting system.webServer/iisnode/@loggingEnabled element of web.config to 'false'. 


루트 디렉토리에 응용프로그램풀 계정을 쓰기 및 삭제 권한 포함하여 할당하면, 자동으로 iisnode 폴더를 생성하고, 로그 기록 및 삭제 해준다.


또는 iisnode 폴더를 생성하고, 해당 폴더에 응용프로그램풀 계정을 쓰기 및 삭제 권한 포함하여 할당하면 로그 기록 및 삭제 가능하다. 




쓰기 권한이 할당 된 폴더는 반드시 처리기 매핑에서 스크립트 사용 권한을 제거해야 한다. 


보안 침해로 인해 웹쉘 업로드 및 스크립트 실행으로 인해 서버 권한 탈취 가능성을 방지해야 한다. 



2018.05월 MS 보안 업데이트 (KB 4093120)를 진행 한 일부 사용자들에게서 원격 접속 (RDP) 불가 관련 이슈가 발생하고 있다. 


MS 에서 2018.03월에 CredSSP 업데이트 공지를 한 바 있으며, 4월 패치 진행시 컴퓨터 구성 -> 관리 템플릿 -> 시스템 -> 자격 증명 위임 항목에 "Encryption Oracle Remediation" 이 추가 된 것을 확인 할 수 있다. 


5월 패치 진행시 "Encryption Oracle Remediation" 이 "암호화 Oracle 수정" 로 변경 됨을 확인 하였다. 


테스트를 위하여 Windows 2016 OS 가 설치 된 서버에서 5월 패치 진행 후, 5월 패치를 진행하지 않은 Win 8.1 PC 에서 접속시 정상 접속이 가능 했다. 


5월 패치 적용 된 서버에서 "암호화 Oracle 수정" 구성하지 않을 경우, 패치 여부와 상관 없이 클라이언트 접속이 가능한 것으로 확인 된다. 


만약 클라이언트에서 서버로 접근이 불가능 할 경우, "암호화 Oracle 수정" 을 사용 으로 변경 하고 보호 수준을 "취약" 으로 설정하면 접근이 가능하다. 


MS 기술 문서 링크를 확인하면 좋을 듯 하다. 


https://support.microsoft.com/ko-kr/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018


# 추가 

시스템 - 원격 설정 - 원격 데스크톱 설정 부분에서 "네트워크 수준 인증을 사용하여 원격 데스크톱을 실행하는 컴퓨터에서만 연결 허용(권장)" 을 체크 해제시에는 접속 오류 발생하지 않는 것으로 확인 되었다.