2019년 8월 14일 수요일

2019년 8월 MS 취약점 패치 주요 사항

배포된 여러 취약점중에, 서버를 운영하는 경우 아래와 같은 취약점은 패치 적용을 꼭 진행하는 것이 좋습니다.

CVE-2019-0714 | Windows Hyper-V 서비스 거부 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-0714

CVE-2019-0720 | Hyper-V 원격 코드 실행 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-0720

CVE-2019-1181 | 원격 데스크톱 서비스 원격 코드 실행 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1181

CVE-2019-1206 | Windows DHCP 서버 서비스 거부 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1206

CVE-2019-1224 | 원격 데스크톱 프로토콜 서버 정보 유출 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1224

CVE-2019-9511 | HTTP/2 Server 서비스 거부 취약성
https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-9511



2019년 8월 13일 화요일

C# Google API Blogger 예제

주로 REST API 호출 예제가 많은데, 구글에서 제공되는 닷넷 API Lib 사용 예제. 인증 부분에서 한참을 헤메다가.. 그리고 API 통해서 포스트내 이미지 업로드 추가는 어떻게 하는건지 못찾음 (지원 안되는것 같음?)


using System.Net.Security;
using Google.Apis.Blogger.v3.Data;
using Google.Apis.Blogger.v3;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Util.Store;
using Google.Apis.Services;


// 인증

UserCredential credential;

using (var stream = new FileStream("client_secret_oauth.json", FileMode.Open, FileAccess.Read))
{
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { "https://www.googleapis.com/auth/blogger" },    // https://developers.google.com/apis-explorer/#p/blogger/v3/ 에서 허용 설정
        "abc", // 구분값
        CancellationToken.None,
        new FileDataStore("Auth.Blogger")).Result;
}

string blogUrl = "http://bitsyrup.blogspot.com";
BloggerService BloggerService = new BloggerService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "My Project 20108",
});

// 블로그 정보

var BlogResource = BloggerService.Blogs.GetByUrl(blogUrl);
Blog blog = BlogResource.Execute();
Console.WriteLine("Blog ID: " + blog.Id);

// 포스트 데이터

Post PostData = new Post();
PostData.Title = DateTime.Now.ToString() + " " + " - test";
PostData.Content = "xxx23232  <br /><br /> ";
// PostData.Images.Add(xxx);  // 이건 어떻게 작동? 활용 하는건지 못찾음. 예제 없음

// 포스트 올리기

PostsResource PostsResource = new PostsResource(BloggerService);
var post = PostsResource.Insert(PostData, blog.Id).Execute();
Console.WriteLine(post.Id);

// 포스트 목록

PostsResource.ListRequest _request = new PostsResource.ListRequest(_bloggerService, blog.Id);
_request.MaxResults = 50;
_request.FetchBodies = false;
_request.FetchImages = false;

foreach (var _item in _request.Execute().Items)
{
}

C# Google API PhotosLibrary 예제

C# 예제가 거의 전무 하다 시피해서... 한참을  이것 저것 테스트 헤매다가 어케 어케....


using Google.Apis.Auth.OAuth2;
using Google.Apis.Util.Store;
using Google.Apis.Services;
using Google.Apis.PhotosLibrary.v1;
using Google.Apis.PhotosLibrary.v1.Data;


// 인증

UserCredential credential;

using (var stream = new FileStream("client_secret_oauth.json", FileMode.Open, FileAccess.Read))
{
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { PhotosLibraryService.Scope.Photoslibrary, PhotosLibraryService.Scope.DrivePhotosReadonly },
        "abcApp",   // 구분값
        CancellationToken.None,
        null).Result;
}

// 앨범 목록

PhotosLibraryService PhotosService = new PhotosLibraryService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
});

var albumsList = PhotosService.Albums.List().Execute();
foreach (var item in albumsList.Albums)
{
    Console.WriteLine("Album title: " + item.Title);
    Console.WriteLine("Album ID: " + item.Id);
}

// 사진 목록

SearchMediaItemsRequest x = new SearchMediaItemsRequest();
x.AlbumId = "AMhW9mr-M9UF3Tpo2";

var mitems = PhotosService.MediaItems.Search(x).Execute();  // 특정 앨범
foreach(var i in mitems.MediaItems)
{
    Console.WriteLine("Id : " +i.Id);
    Console.WriteLine("Filename : " + i.Filename);
    Console.WriteLine("BaseUrl : " + i.BaseUrl);
    Console.WriteLine("ProductUrl : " + i.ProductUrl);
}


2019년 8월 12일 월요일

구글 API 인증 At least one client secrets (Installed or Web) should be set 에러


C#, Google.Apis.Blogger.v3 Auth

처리되지 않은 예외: System.InvalidOperationException: At least one client secrets (Installed or Web)
 should be set
   위치: Google.Apis.Auth.OAuth2.GoogleClientSecrets.get_Secrets()


json 인증값이, 구글 API 서비스 인증이 아닌 사용자 oAuth 인증으로 변경 적용해 볼 필요가 있음. (구글 여러 API 중에, 서비스 인증을 지원 안하는 API 인것 때문으로 보임)


2017년 11월 8일 수요일

Microsoft-Windows-CAPI2, 513, Error

- Windows Server 2016, Windows Backup

암호화 서비스에서 System Writer 개체의 OnIdentity() 호출을 처리하는 동안 오류가 발생했습니다. Details: AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol. System Error: 액세스가 거부되었습니다.

(패치 업데이트 버그로 추정됨)

 

\> accesschk.exe -c mslldp

mslldp
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R S-1-5-32-549
R NT SERVICE\NlaSvc
R NT AUTHORITY\SERVICE   <------  mslldp 서비스 레지스트리 보안 설명자에 추가되어 있어야 함

 

\> sc sdshow mslldp 를 통해서 현재 값 조회

D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)

 

\> sc sdset mslldp D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;CCLCSWLOCRRC;;;SU)

를 통해서 "NT AUTHORITY\SERVICE" 계정을 추가해줌

 

 


2017년 10월 20일 금요일

RMAN – 데이터베이스 복구/이전

# 재설치 복원
# 서버 이전 복원 (단순 복사 / RMAN)

동일 경로

  1. 기존 인스턴스 DB 의 DataFile/ControlFile/RedoLog 를 원래 경로에 복사(파티션 백업 복원)

다른 경로

  1. 기존 인스턴스 DB 의 DataFile/ControlFile/RedoLog 를 다른 경로에 복사(파티션 백업 복원)

 

[다른 경로(서버)의 백업 파일만 가져와서 복원]

RMAN> list backup;  -- 현재 카다로그의 백업셋 정보 확인
RMAN> crosscheck backup; -- 비교 검증
RMAN> delete expired backup; -- 기존 백업 'EXPIRED' 상태 제거

채널 ORA_DISK_1 사용 중

백업 조각 목록
BP 키  BS 키  Pc# Cp# 상태      장치 유형 조각 이름
------- ------- --- --- ----------- ----------- ----------
1       15      1   1   EXPIRED     DISK        D:\ORABACKUP\ORCL_01SEH05C_1_1_20170915

 

RMAN> catalog start with 'D:\orabackup2'; -- 백업 경로 변경

D:\orabackup2 패턴과 일치하는 모든 파일 검색 중

데이터베이스에서 알 수 없는 파일 목록
=====================================
파일 이름: D:\orabackup2\ORCL_01SEH05C_1_1_20170915

위의 파일을 분류하겠습니까? (YES 또는 NO 입력) y
파일 분류 중...
분류 작업 완료

 

RMAN> list backup;  -- 복사된 백업파일의 백업셋 정보 다시 확인

 

BS 키  유형 LV 크기       장치 유형 경과된 시간 완료 시간
------- ---- -- ---------- ----------- ------------ ---------
25      Full    9.42M      DISK        00:00:00     17/09/29
        BP 키: 25   상태: AVAILABLE  압축됨: NO  태그: TAG20170929T144247
        조각 이름: D:\ORABACKUP2\ORCL_0FSFM8OB_1_1_20170929
  포함된 SPFILE: 수정 시간: 17/09/29
  SPFILE db_unique_name: TESTDB
  포함된 제어 파일: Ckp SCN: 4648574      Ckp 시간: 17/09/29

 

RMAN>  list incarnation;  -- DB ID 확인
shutdown abort;
startup nomount;
restore controlfile from 'D:\ORABACKUP2\ORCL_0FSFM8OB_1_1_20170929';
alter database mount;

run {
restore database;
recover database noredo;
alter database open resetlogs;
}

 

 


2017년 9월 29일 금요일

RMAN – 파라미터파일(spfile) 복구

# 백업셋 조회

RMAN> list backup;
RMAN> list backupset; 

# 제어 파일 복구

RMAN> restore spfile;  -- 데이터베이스가 unmount 상태일 때
RMAN> restore spfile to 'D:\oradata2\spfile_temp.ora';  -- 데이터베이스가 운영중인 경우에는 다른 경로에 복원
RMAN> restore spfile to pfile 'D:\oradata2\init_temp.ora';  -- spfile 을 특정 위치 pfile 로 복원
RMAN> restore spfile from 'D:\ORABACKUP\ORCL_0FSFM8OB_1_1_20170929' -- 특정 백업 조각에서 복원

 

 


2019년 8월 MS 취약점 패치 주요 사항

배포된 여러 취약점중에, 서버를 운영하는 경우 아래와 같은 취약점은 패치 적용을 꼭 진행하는 것이 좋습니다. CVE-2019-0714 | Windows Hyper-V 서비스 거부 취약성 https://portal.msrc.microsoft.com...