카테고리 보관물: info

윈도우 MP3 한글 태그 cp949에서 UTF-8 일괄 변환

위의 화면은 최초 실행 후 원하는 mp3 파일들을 불러들인 화면이다. 위의 스크린샷에서도 볼 수 있다시피 노래 제목들의 글자가 다 깨져서 읽을 수가 없는 상황이다. 한글 윈도우에서는 mp3 파일들의 태그들을 모두 cp-949 한글 인코딩으로 저장하기 때문에 영문 윈도우 혹은 다른 언어권 윈도우에서는 읽을 수가 없게 된다. 이럴 때 아래의 그림과 같이 Actions (Quick) 메뉴를 선택한다.

그렇게 하면 아래와 같이 액션 타입을 선택하는 옵션 화면이 나오게 되는데 여기서 Convert Codepage 옵션을 선택하도록 한다.

그다음에는 실제로 어느 필드를 변환할 것인지에 대해 아래와 같이 물어본다. 여기서는 Title 필드를 Koean - 한국어 (949)로 선택한다.

그 다음에는 선택한 모든 파일들이 원하는 인코딩으로 바뀌면서 한글을 읽을 수 있게 됐다.

하지만 여전히 mp3 파일에 방금 변환했던 결과가 반영되는 것은 아니다. 아래와 같은 추가적인 옵션을 세팅한다면 모든 깨진 한국어 제목들이 더이상 깨지지 않고 나타난다.

이렇게 옵션을 저장한 후 위의 맨 왼쪽에 있는 저장 버튼을 클릭하면 모든 작업은 끝이다. 이렇게 해서 변환시킨 mp3 파일들은 이제 멀쩡하게 보일 것이다. 참쉽죠?

Docker Toolbox 설치, 메모리 확장, 디스크 확장, timezone변경

Docker Toolbox 기본 설치 과정에서 Docker VM의

– 기본 설정 메모리 크기 확장

– 디스크 확장, 공유 폴더 추가 병행

– Timezone변경

정도로 진행한다.

 

** update :: 교차점 생성, MACHINE_STORAGE_PATH 설정은 

   Kitematic 사용하지 않을 경우에만 하자.

   docker vm ssh접속으로 동작에는 문제 없지만 (= vmware에 linux설치후 그 위에 동작하는 docker)

   host(windowns)에서 docker-machine 명령등에 직접 연결이 안된다.

   ex) 에러 메시지 종류

   Could not determine IP from docker-machine.

   command exit status 255
Error checking TLS connection: Host is not running

   등…

   windows의 OpenSSH와 docker-toolbox의 인증서 위치나 권한 뭐 그런 것들 때문같은데,

   괜히 시간 낭비하지 말자. 그냥 pc검증 환경일 뿐이니…

 

1. 설치 디렉토리 생성 & 링크 (optonal)

– D드라이브에 Docker 디렉토리 생성 (D:\Docker) <– 본인이 희망하는.

– 혹시 모를 일을 대비해서 /Users/MY_NAME/.docker를 D:\Docker로 교차점 생성

C:\Users\MY_NAME> mklink /J .docker "D:\Docker"
.docker <<===>> D:\Docker에 대한 교차점을 만들었습니다.

2. 환경변수 설정 (& 재시작) (optional)

  – Docker 저장소 위치 변경

 

3. Docker Toolbox 다운로드 & 설치

– 다운로드 : https://download.docker.com/win/stable/DockerToolbox.exe

– 설치 진행 : 진행 과정 중 기본 체크 박스 상태 그대로 진행, 설치 완료 후 재시작 불필요
https://docs.docker.com/toolbox/toolbox_install_windows/

 

– 3개의 바로가기 아이콘 생성됨

1) Oracle VM VirtualBox : “C:\Program Files\Oracle\VirtualBox\VirtualBox.exe” deafult VM이 생성되어 있는 상태

2) Kitematic (Alpha) : “C:\Program Files\Docker Toolbox\kitematic\Kitematic.exe”

3) Docker Quickstart Terminal : “C:\Program Files\Git\bin\bash.exe” –login -i “C:\Program Files\Docker Toolbox\start.sh”

 

4. Docker VM 실행 & 상태 확인

– Docker Quickstart Terminal 바로가기 실행

 

 

– IP 확인 (기본 설정대로 라면 NAT구성으로 192.168.99.100) : 위 그림 IP정보 참고

 

5. Oracle VM VirtualBox : Docker VM이미지 메모리 확장, 공유 폴더 추가

 5-0. VM중지 = ‘Docker Quickstart Terminal’에서 아래 명령 실행

$ docker-machine stop

 5-1. Oracle VM VirtualBox실행 & default 우측 클릭 > 닫기 전원 끄기

 5-2. default > 설정 : 기본메모리를 1024MB에서 4096MB로 변경 (컨테이너의 Out-Of-Memory를 덜 보려면…)

 

 

5-3. 공유폴더 추가

– D:\Docker\data 디렉토리 생성

– 이 폴더를 공유 폴더로 추가 & 자동마운트 설정

 

 

 5-4. 디스크 추가

– 저장소 > 새 디스크 만들기 > VMDK 선택 > 동적 할당 > data_disk이름 & 100GB 설정 > 만들기
(경로 : D:\Docker\machines\default\default\data_disk.vmdk)

 

 

– ‘Docker Quickstart Terminal’ 에서 docker-machine start

– Docker쉘 접속 후

1) fdisk /dev/sdb : 파티셔닝

2) mkfs.ext4 /dev/sdb1 : ext4 포맷

3) mount 해보기

docker@default:~$ sudo -i
root@default:~# fdisk -l <----------- 
  ....
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors <-----------
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes


root@default:~# fdisk /dev/sdb <---------
  ...
  Command (m for help): m <--------
  Command (m for help): g <-------- Linux FileSystem
  Command (m for help): n <-------- 파티션 생성
  Partition type
     p   primary (0 primary, 0 extended, 4 free)
     e   extended (container for logical partitions)
  Select (default p): p <-----------
  Partition number (1-4, default 1): 
  First sector (2048-209715199, default 2048): 
  Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): 

  Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.

  Command (m for help): p
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disklabel type: gpt
  Disk identifier: 54EDF7CB-5770-47D4-9DF6-0F4CE1F48054

  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem

  Command (m for help): w <--------------
  The partition table has been altered.
  Calling ioctl() to re-read partition table.
  Syncing disks.

root@default:~# fdisk -l <--------------
  ...
  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem  <--------------

root@default:~# mkfs.ext4 /dev/sdb1 <--------------
  ...
  Writing superblocks and filesystem accounting information: done   

root@default:~# mkdir -p /mnt/sdb1
root@default:~# mount /dev/sdb1 /mnt/sdb1 <----------- 
root@default:~# df -h
  Filesystem                Size      Used Available Use% Mounted on
  tmpfs                     3.5G    229.6M      3.2G   6% /
  tmpfs                     1.9G         0      1.9G   0% /dev/shm
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1
  cgroup                    1.9G         0      1.9G   0% /sys/fs/cgroup
  /c/Users                476.2G    189.5G    286.7G  40% /c/Users
  /data                     3.6T      1.4T      2.2T  39% /data
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1/var/lib/docker
  /dev/sdb1                97.9G     59.6M     92.9G   0% /mnt/sdb1 <----------

 

– 자동 마운트 설정 : 아래 경로에 bootlocal.sh 파일 생성(실행 권한부여) 후 mount명령 추가

(이 방법외에 다른 방법 찾기 귀찮아서, 혹시 아는 분은 댓글로…)

root@default:~# cd /var/lib/boot2docker
root@default:/var/lib/boot2docker# vi bootlocal.sh 
  #!/bin/sh
  mount /dev/sdb1 /mnt/sdb1
  :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

– ‘Docker Quickstart Terminal’ 에서 docker-machine restart

– docker vm에 쉘 접속 후 확인 : 메모리 크기 등

 

 

6. Timezone변경

– 현재 시간 확인 : PC의 현재 시간과 동일하면 끝, 아래와 같이 아니라면

docker@default:~$ date
Mon Jun 17 21:50:01 UTC 2019  <— 엉뚱한 시간이 나온다. (9시간 전?)

– 다음과 같이 진행 후 docker-machine restart

docker@default:~$ sudo -i
root@default:~# cd /var/lib/boot2docker

root@default:/var/lib/boot2docker# tce-fetch.sh tzdata.tcz
root@default:/var/lib/boot2docker# mkdir ext
root@default:/var/lib/boot2docker# mount tzdata.tcz ext -t squashfs -o loop,ro,bs=4096
root@default:/var/lib/boot2docker# cp ext/usr/local/share/zoneinfo/Asia/Seoul ./Asia-Seoul.tz

root@default:/var/lib/boot2docker# umount ext
root@default:/var/lib/boot2docker# rm -rf ext tzdata.tcz

root@default:/var/lib/boot2docker# vi bootlocal.sh
    #!/bin/sh
    mount /dev/sdb1 /mnt/sdb1
    cp /var/lib/boot2docker/Asia-Seoul.tz /etc/localtime
    :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

((((( 재시작 후 접속 )))))

docker@default:~$ date
Tue Jun 18 07:04:21 KST 2019 <-- PC시간과 동일

(참고 : https://github.com/boot2docker/boot2docker/issues/476)

 

 

[기타]

– container 이미지 저장 위치 :

$ docker info
  Containers: 3
  ...
  Docker Root Dir: /mnt/sda1/var/lib/docker <------------
  ...
  Product License: Community Engine

$ sudo i
# cd /mnt/sda1/var/lib/docker
# find . -name mysql | cut -f 1,2,3 -d "/" | uniq | xargs du -h -d 0
  40.0K   ./overlay2/331e15e384ea042923fbc7d933359fa89718cc38215d0056ab47bfbba2e445f2
  431.8M  ./overlay2/b7f24200745390db507cca92e2d6b32778d77a71f58d8d776dd04be46912b405
  313.6M  ./overlay2/00a4a9d710111c024838b47c3d1a1ce1457f2cd345e33748e21bac3c92364792

대충 /mnt/sd1/var/lib/docker/overlay쯤인가보네

참고 : https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine

To hide removable drives from file explorer in left tree view

To hide removable drives from the Navigation Pane in Windows 10, follow the instructions below.

  1. Open Registry Editor.
  2. Go to the following Registry key:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders\{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}

    Tip: See How to jump to the desired Registry key with one click.

  3. Rename the subkey {F5FB2C77-0E2F-4A16-A381-3E560C68BC83} by adding a hyphen ‘-‘ before it so its new name is -{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}. See the following screenshot:windows 10 hide remobable drives navigation pane
  4. If you are running 64-bit Windows 10, repeat the step above here:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders
  5. Close all Explorer windows for the change to take effect.

That’s it.
Before:

before
After:

after
To restore removable drives in the navigation pane, rename the mentioned subkey from -{F5FB2C77-0E2F-4A16-A381-3E560C68BC83} back to {F5FB2C77-0E2F-4A16-A381-3E560C68BC83}.

You can save your time and use Winaero Tweaker to hide or show Removable Drives in the navigation pane.

헐리우드랙 익스프레스! 가벼운 무게에 무거운 성능!

차량은 SUV에 장착하였고 해당 헐리우드랙 익스프레스 모델은

승용차와 SUV에 상관없이 장착가능합니다.

장착전 차량 트렁크 부분의 홈부분을 확인해주시고

스포일러가 플라스틱을 제작되어있는 차량은 먼저 스포일러가 흔들리는지 케리어 선에 간섭을

주는지 확인하시는것을 추천드립니다.

케리어의 상단과 하단부분은 갈고리로 되어있으며 트렁크 상단과 하단에 체결됩니다.

하단부분의 경우 간혹 차량에 마무리상태에 따라 갈고리가 걸릴수 없는 구조로 되어있는 모델이 있으며

이때에는 차량에 철골부분이 장착될만한 곳이 있는 차량이 설치가능합니다.

차량에 접촉하는 부분은 두꺼운 스폰지 재질로 되어있어 차량 손상을 최소화 합니다.

사용중 스폰지재질이 손상되면 압박붕대나 부드러운 재질의 커버로 미연에 감아주시는것이 좋습니다.

SUV 차량에 장착한 모습입니다.

차량에 중심부쪽을 설치해주시면 됩니다.

차량에 닿는 부분은 두군데이며

SUV차량은 트렁크 하단 부분만 닿게되며 상단부분은 유리창에 장착하게됩니다.

상단에 장착된 모습과 기본적으로 자전거 거치부분은 약간 상향되게 장착하시는것이 좋습니다.

자전거 거치부분은 플라스틱으로 되어있어 상단부분은 강한 고무스트랩으로 되어있습니다.

거치대의 조절은 안쪽의 둥근 플라스틱을 돌려서 위치조정을 하게됩니다.

거치대의 끈조절부위는 철재로 되어있어 체결강도와 안전성은 걱정안하셔도 됩니다!!

고무스트랩은 충분한 강도를 가지고 있으며 길이조절이 가능하여 탑튜브 두께에 따라 조절하시면 됩니다

두대가 장착가능한 부분이며 자전거 거치하는 부분은 앞뒤로 위치 조절이 가능합니다.

거치부분의 여분의 끈이 정리되는 부분이 없는것이 아쉽지만 일반 고무줄로 간단하게 해결하실수있습니다.

고정되는 스트랩부분은 손으로 누르지않는 이상 절대 풀리지 않습니다.

한대장착된 모습입니다.

탑튜브 위에 고무스트랩으로 고정을 해주시고 뒷부분도 사진처럼 고정시켜주시면 됩니다.

위 사진처럼 느슨하게 장차하시면 자전거가 고정되지않고 이동합니다.

두대 장착한 모습입니다.

자전거를 좌우로 겹치게 장착하면 간섭없이 거치하실수있습니다.

캐리어의 중앙부에는 하나의 여분의 끈이 장착되어있으며

용도는 자전거를 캐리어와 고정하기위한 끈입니다.

두대를 장착후 고정끈으로 고정한 모습입니다.

두대 장착한 모습.

두대 장착모습.

튼튼하게 고정된 캐리어 모습!!!!

간단한 장착과 가벼운 가격…

 

헐리우드랙 익스프레스!!!

이 글은 info 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.

SYSMON + ELK STACK을 이용하여 간단한 EDR 만들기

개요

현재 Microsofts에서 제공하는 도구 모음인 Sysinternalsuite에는 Sysmon이라는 도구가 있다. Sysmon은 윈도우 운영체제에서 높은 수준의 모니터링을 제공한다. 백그라운드에서 실행되며 모니터링 결과를 이벤트 로그에 기록한다. 이러한 유용한 기능을 제공하는 Sysmon은 많이 알려져 있으나 그 결과가 이벤트 로그에 저장되기 때문에 실시간으로 결과값을 보는 것이 기존 SIEM이나 다른 장비에 연동하기 어렵다면 모니터링이 불편하였다. 하지만, 오픈소스인 ELK Stack의 다양한 기능을 이용한다면 이점을 커버할 수 있다.

이번 포스팅에서는 Sysmon에 대하여 알아보고 생성블로그관리된 로그를 ELK Stack을 통해 모니터링 하는 방법에 대하여 알아보고자 한다.

Sysmon 설치

우선적으로 이번 프로젝트에 중심이 될 Sysmon을 설치한다. https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon에 설치한다.

다운 받은 Sysmon을 압축 해제하고 Command 창을 이용하여 설치한다. Sysmon 설치와 관련한 옵션은 “-h” 옵션을 통해 자세히 확인할 수 있다.

[그림 1] Sysmon64.exe -h

 

Sysmon을 더 유용하게 사용하기 위해서는 config 파일을 이용하여야 한다. 직접 설정하는 방법도 있으나 이미 github를 이용해 공개된 Sysmon config파일을 이용하는 방법을 추천한다. 부족한 부분은 제외하고 추가할 부분을 추가하여 설정이 가능하다.

설정 파일은 공개된 github(https://github.com/SwiftOnSecurity/sysmon-config)에서 다운로드 하였다.

설치 명령은 다음과 같다.

Sysmon64.exe -accepteula -i C:\Users\Administrator\Desktop\Sysmon\sysmonconfig-export.xml -l -n

[그림 2] Sysmon 설치

최초 설치에는 “-I” 옵션을 사용했으나 이후 설정파일에 변경이 있다면 “-c” 옵션으로 변경된 옵션을 적용할 수 있다.

설치가 끝나면 자동으로 Sysmon이 작동이 되는데 비스타 이후 버전은 Applications and Services Logs/Microsoft/Windows/Sysmon/Operational 경로에 Sysmon로그가 쌓이며 이전 버전은 System event 로그에 쌓이게 된다. 윈도우에서 기본으로 제공하는 이벤트 뷰어로 확인이 가능하다.

[그림 3] EventLog

Sysmon의 이벤트 로그는 다음과 같이 저장되며 의미를 가진다.

Event ID 설명
1 프로세스 생성
2 프로세스가 파일 생성시간을 변경
3 네트워크 연결
4 Sysmon 서비스 상태 변경
5 프로세스 종료
6 드라이버 로드
7 이미지 로드 (“-l” 옵션으로 활성화 필요)
8 다른 프로세스에서 스레드 생성
9 RawAccessRead 탐지 (프로세스가 “\\.\” 표기법 이용하여 드라이브 접근시)
10 특정 프로세스가 다른 프로세스 Access (ex. Mimikatz > lsass.exe)
11 파일 생성 (생성 및 덮어쓰기)
12 레지스트리 이벤트 (키 값 생성 및 삭제)
13 레지스트리 이벤트 (DWORD 및 QWORD 유형의 레지스트리 값 수정)
14 레지스트리 이벤트 (키 및 값 이름 변경)
15 FileCreateStreamHash (파일 다운로드와 관련된 Zone.identifier 확인)
17 PipeEvent (파이프 생성)
18 PipeEvent (파이프 연결)
19 WmiEventFilter 활동이 감지 됨 (악성코드 실행시 사용될 가능성 있음)
20 WmiEventConsumer 활동이 감지 됨
21 WmiEventConsumerToFilter 활동이 감지 됨
255 Sysmon 오류

[표 1] Sysmon Event ID

ELK + Beats

ELK란 Elasticsearch, Logstash, Kibana의 3가지 오픈소스를 부르는 말이다.

Elasticsarch : 분산 검색 엔진, 데이터 저장

Logstash : 입력 값 필터링

Kibana : 시각화 도구

Beats : 시스템 정보 및 파일 로그 전달 등의 기능

위에 4가지 도구를 이용하여 Sysmon 모니터링 도구를 만들고자 한다. 기본적으로 ELK를 설치하는 방법은 지난 포스팅에서 설명하였기 때문에 자세한 ELK 설치 방법에 대해서는 따로 언급하지 않고 설정과 관련된 부분을 다루려고 한다. 설치와 관련된 정보는 ELK 스택의 사이트(https://www.elastic.co)에서 얻을 수 있다.

전체적인 구성도는 Sysmon을 설치한 파일에 Winlogbeats를 설치하고 해당 데이터를 ELK가 설치된 서버로 전송하는 방식이다. 각각 Logstash는 5044포트로 데이터를 받아 Elasticsearch로 보내고 Kibana의 5601포트로 결과값을 확인 가능하다.

[그림 4] Sysmon + ELK 구성도

 Beats 설정

Beats는 경량 로그 수신기로 여러 종류가 있다. 이 중 Winlogbeats는 Eventlog를 전달해주는 역할을 한다. Sysmon을 전달하기 위해서 Sysmon이 설정된 시스템에 Winlogbeats를 설치하고 다음과 같이 설정 파일을 변경해준다. 설정 파일의 내용은 다음과 같다. (winlogbeat.yml)

[그림 5] Winlogbeat.yml

아래와 같은 명령어로 실행이 가능하며 ELK 사이트에서 서비스로 등록하는 방식을 참고하면 서비스로 등록하여 사용이 가능하다.

C:\Users\Administrator\Desktop\winlogbeat>.\winlogbeat.exe -c .\winlogbeat.yml -e

Logstash 설정

Beats로 전달 받은 데이터를 더욱 효율적으로 보기 위해 Logstash를 이용하여 각각의 값에 항목을 지정해 준다. Logstash의 필터링은 Logstash의 conf 파일을 수정하여 만들 수 있다.

Sysmon의 데이터 중에 의미있는 값을 선별하게 위해 conf 파일을 작성하였다. 하지만 이는 사용자의 설정에 따라 변경되어야하며 필터링으로 인해 더 다양한 이벤트를 탐지할 수 있다.

이벤트에 대한 conf파일을 만들기 위해서는 우선 입력되는 데이터에 대하여 확인하는 것이 중요하다.

입력되는 데이터는 다음과 같다.

[그림 6] Winlogbeat 입력값

입력되는 데이터 부분중 특히 message부분에서 의미있는 값을 찾아낼 수 있다. X-pack 설치후 활용이 가능한 Grok Debugger나 웹페이지 http://grokdebug.herokuapp.com/를 이용하여 Grok 표현식을 통해 message 부분에서 특정 부분을 추출해서 사용할 수 있다.

[그림 7] Grok Debugger – Xpack

input {

beats {

port => 5044

}

}

 

filter {

if ([event_data][hashes][altsha1]) {

mutate {

split => [“[event_data][hashes][altsha1]” , “=”]

add_field => { “[event_data][hashes][sha1]” => “%{[event_data][hashes][altsha1]][1]}” }

remove_field => [ “[event_data][hashes][altsha1]”]

}

}

if ([event_data][hashes][altmd5]) {

mutate {

split => [“[event_data][hashes][altmd5]” , “=”]

add_field => { “[event_data][hashes][md5]” => “%{[event_data][hashes][altmd5]][1]}” }

remove_field => [ “[event_data][hashes][altmd5]”]

}

}

if ([event_data][hashes][altsha256]) {

mutate {

split => [“[event_data][hashes][altsha256]” , “=”]

add_field => { “[event_data][hashes][sha256]” => “%{[event_data][hashes][altsha256]][1]}” }

remove_field => [ “[event_data][hashes][altsha256]”]

}

}

if ([event_data][hashes][altimphash]) {

mutate {

split => [“[event_data][hashes][altimphash]” , “=”]

add_field => { “[event_data][hashes][imphash]” => “%{[event_data][hashes][altimphash]][1]}” }

remove_field => [ “[event_data][hashes][altimphash]”]

}

}

if ([event_id] == 1) {

grok {

match => { “message” => “http://%{IP:[remote_ip]}/%{GREEDYDATA:[event_data][powershell_file]}'” }

}

}

}

 

output {

stdout { codec => rubydebug }

elasticsearch {

hosts => [“localhost:9200”]

index => “logstash-winlogs”

}

}

[그림 8] logstash – sysmon.conf (참조: http://www.ubersec.com/2017/12/14/sysmon-elk-monitoring-integration-and-apt34-tools/)

Kibana 설정

입력된 데이터를 시각화하는 Kibana에서는 Sysmon 로그를 이용하여 대시보드를 만들어 볼 수 있다. Kibana의 index-pattern은 Logstash에서 설정한 output의 index 부분으로 정의된다.

[그림 9] Kibana – Discover

이렇게 index된 데이터를 불러와서 Kibana Visualize 작업을 실시한 후 여러 개의 Visualize가 모여서 나만의 Dashboard를 만들 수 있다.

[그림 10] Kibana – Dashboard

X-pack에서 추가된 머신 러닝 기능과 담당자의 메일 등으로 Alert가 가능한 6.0 이상의 버전을 이용하면 더 효율적으로 사용이 가능하다.

[그림 11] Kibana -Xpack 이상 행위 탐지

결론

추가적으로 Windows의 감사정책 및 이벤트 로그를 변경하면 Sysmon에서 로깅하는 데이터 이외에도 의미 있는 데이터를 얻을 수가 있다. 이렇게 전달되는 데이터가 다양해지면 이를 ELK를 이용하여 더 많은 이상행위를 탐지할 수 있다.

이번 포스팅에서 소개한 Sysmon과 ELK가 백신이 함께 시스템을 방어한다면 탐지가 어려운 APT 공격에 충분한 대응 방안이 될 수 있다고 생각한다. 최소한의 비용으로 증가되는 위협에 대응해보자.

참조

https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon

https://github.com/SwiftOnSecurity/sysmon-config

https://cyberwardog.blogspot.kr/2017/03/building-sysmon-dashboard-with-elk-stack.html

http://www.ubersec.com/2017/12/14/sysmon-elk-monitoring-integration-and-apt34-tools/

DOS Batch Script 명령어 정리

주석

  • 주석 명령은 설명문으로 실행되지 않는다.
  • rem 으로 실행하고 뒤에 주석문(아무 스트링)을 입력하면 된다. 주석은 프로그래밍시에 간략한 설명을 위한 것이다.
  • @rem test message… : 앞에 @를 붙이면 배치파일 실행시 rem 커맨드 출력이 안되도록 한다. 물론 그 전에 @echo off을 해 두었다면 @을 붙일 필요없다.
  • 더 간단하게는 :: 으로 시작하면 주석이 된다. 이것은 커맨드 출력도 되지 않아 더 간편히 사용할 수 있다. rem과 다르게 아예 없는 것으로 취급된다.

변수와 출력

  • dos batch는 파일 확장자를 .bat 또는 .cmd로 하여 메모장으로 텍스트 파일로 작성하면 된다.
  • 기본 적인 출력은 “echo” 커맨드가 있다. 뒤에 출력할 내용을 적으면 된다.
  • 출력 내용에 변수명을 적어 변수값을 출력할 수 도 있다. 또한 변수중에는 미리 시스템에서 정의된 값들도 있어서 유용하다.
  • 변수 설정은 set으로 변수이름과 값을 =으로 할당한다.
  • 변수 사용시에는 변수 이름 앞뒤로 %를 붙인다. 변수 삭제는 빈 값을 할당한다. (빈 값이 있는 변수로 만드는 것이 아니라 변수 자체를 삭제한다는 의미!)

SET FOO=hello world
echo %FOO%
echo %FOO%xxx%FOO%
SET FOO=

  • for문의 변수 이름은 커맨드창에서 바로 실행할 때 영문자앞에 %를 붙인다. 그러나, Dos batch file(.bat)에서 for문의 변수 영문자 앞에 %% 이렇게 %를 두 개 붙인다!
c:\> copy con test1.bat
@echo off
@rem this is a test batch...
set aaa=hello
echo %aaa%
echo %1
^Z

c:\> test1 kim
hello
kim
  • @echo off는 이후에 echo 실행명령은 출력하지 않고, 결과만 출력하도록 한다.
  • batch 파일 실행시 뒤에 파라미터를 줄 수 있는데, 순서대로 %1, %2, … 이렇게 변수로 사용할 수 있다.
  • 줄바꿈. 엔터 입력. 빈 줄 출력

echo.

  • 공백으로 시작하는 문자열 출력

echo. aaa
echo aaa (이것도 이제는 가능함. 앞에 공백 두 개)

  • 특수 문자 출력시 앞에 ^를 사용

echo ^< 이것은 꺾은 괄호 ^>
echo ^| 파이프
echo ^^ 두 개 입력시 하나 출력

스트링 처리

  • 문자열 추출 mid / substr

FOO 변수의 값에서 인덱스 6부터 3글자를 추출. (인덱스는 0부터 시작) 뒤에 수를 생략하면 끝까지를 의미함. -1은 마지막 바로 한글자를 의미.
set BAR=%FOO:~6,3%
set BAR=%FOO:~5%
set BAR=%FOO:~-3% : FOO가 파일명일떄 마지막 세글자(확장자명)을 가져온다.

연산

  • 수 값을 할당하거나 연산하려면 SET /a를 사용한다.

set /a num=4*8+8/2+122
set /a num=1
set /a num+=2
if %num% GEQ 3 echo big

환경 변수

%CD% : 현재 작업 디렉터리
%DATE% : date 커맨드와 같은 포맷의 날짜
%TIME%
%RANDOM% : 0~32767 범위의 수
%ERRORLEVEL%
%CMDCMDLINE%

파라미터

  • 파라미터는 %1, %2, 등으로 받는다. (%0은 배치파일 이름 자체임. %9까지 가능)
  • %*은 모든 파라미터를 의미함.
  • 파리미터 내부에 공백이 있으면 커맨드상에서 파라미터를 “로 둘러싼다. 단, 스크립트에서 “를 제거하고 받으려면 %~1, %~2 로 받는다.
  • 파라미터가 없으면 종료

if “%1” == “” goto :eof
파라미터에 “를 추가해 주어야 한다.’

Redirect

  • stderr까지 파일로 기록

cmd /c “test.exe” > “output.txt” 2>&1

  • 실행만 하고 출력은 없앰 (no output)

dir > nul
nul 이라는 파일은 생성되지 않는다. (NUL 대소문자 상관없음. 주의! L이 한 개임.)

type nul > a
0바이트짜리 a라는 파일 생성

program 2 > output.txt
stderr 출력을 파일로 기록

배치내에서 배치 실행하기

call b.bat param1 param2

  • 동시 실행

start /d “directory…” /b program.exe
start /d “directory…” /b program.exe

디렉터리 경로명 이동

cd /d e:\temp

반복문 for

  • integer 증가

for /L %%n in (1,1,100) do net user %%n /add
1부터 100까지 증가하고, 숫자로 계정명으로 사용자를 추가한다.
(for의 변수는 커맨드로 실행시에는 %하나 batch file인 경우는 %% 두개를 사용한다.)

  • 1부터 5까지 출력

for /L %n in (1,1,5) do echo %n

  • 1부터 5까지 출력. 2씩 건너뜀.

for /L %n in (1,2,5) do echo %n
1,3,5 각각 한 줄로 출력됨.

goto

  • 종료시

goto :eof 또는 goto:eof
eof 레이블은 만들필요없이 미리정의된 거라 그대로 사용 가능
또는 exit /b 0

  • 레이블 지정과 goto

레이블 지정시에는 앞에 :을 붙이고 goto 시에는 :를 빼야 한다.
:loop
echo infinite…
goto loop

Sleep

@rem 3sec sleep
@ping 1.2.3.4 -n 1 -w 3000 > NUL

IF

  • 조건 판단
  • 같은지 확인 == 앞 뒤에 공백은 없어도 됨.

if %var% == 1 goto done
echo a
:done
echo b

  • if else : 괄호, 공백 주의

if %var% == 0 (
echo a
) else (
echo b
)

  • /i 옵션 : 대소문자 구분 없이 비교. (case-insensitive)

사용자 입력/텍스트파일변수

  • yn 선택지 (or 스트링 입력)

set /p result=message (Y/N)?
echo %result%
빈 값을 검사하려면 아래 코드를 참고

@echo off
:: init var for empty string.
set "result="
set /p result=are you ok(y/n)?
if "%result%" == "" (
echo no input
goto :eof
)
if /i "%result%"=="y" goto YES
if /i "%result%"=="n" goto NO

echo your input is %result%

  • 텍스트 파일을 첫 행을 읽어 변수에 할당

set /p var=<%temp%\filename.txt

> copy con lines.txt
hello1
hello2
hello3
^Z
> set /p var=<lines.txt
> echo %var% %var%
hello1 hello1

디렉터리

  • 중간 디렉터리까지 모두 생성. mkdir 대신 md를 사용

md “a\b\c”

  • 하위 파일/디렉터리 모두 삭제. /s 옵션

rmdir /s “dirname”

기타

  • 종료 : exit

exit /b 0 : /b는 cmd창은 남겨둔다는 의미. 뒤의 숫자는 프로그램 종료 리턴값. (다른 배치에서는 이 값을 errorlevel 변수로 받아 사용할 수 있다.)

  • 파일 병합 / 붙이기 concate
  • 파일 세 개를 붙여서 하나의 파일로 만든다.

copy 1.txt + 2.txt + 3.txt out.new /b

  • 배치 파일에서 다른 배치 파일 실행하기

call b.bat : call을 사용한다. 그냥 b.bat로 실행하면? b.bat가 종료시 나머지 스크립트로 돌아오지 않고 종료된다.

DB ERD 관계선(실선, 점선)과 기호 설명

 
DBA는 아니지만, 프로그램을 잘 만들기 위해서 완성된 ERD를 이해하고, 나아가 간단한 모델링은 직접 
 
만들줄 알야한다고 생각한다.
 
 
ERD를 이해하기 위한 첫 걸음이자 가장 중요하다 할 수있는 부분이 관계선과 관계선에 사용되는 기호라
 
고 할 수 있다.
 
 
들어가기 앞서 관계선과 기호의 종류에대해 알아보자
 
관계선의 종류
  • 실선(Identifying): 식별관계
    • 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우
    • 부모가 있어야 자식이 생기는 경우
  • 점선(Non-Identifying): 비식별관계
    • 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
    • 부모가 없어도 자식이 생기는 경우
 
 
기호의 종류(도형 혹은 식별자)
  • |: 1개 / 실선은(dash) ‘1’을 나타낸다.
  • ∈: 여러개 / 까마귀 발(crow’s foot or Many)은 ‘다수’ 혹은 ‘그 이상’을 나타낸다.
  • ○: 0개 / 고리(ring or Optional)은 ‘0’을 나타낸다.
위와 같은 기호들을 서로 조합하여 사용될 수 있으며, 다음과 같은 조합이 가능하다.
 

  • Type1(실선과 실선): 정확히 1 (하나의 A는 하나의 B로 이어져 있다.)
  • Type2(까마귀발): 여러개 (하나의 A는 여러개의 B로 구성되어 있다.)
  • Type3(실선과 까마귀발): 1개 이상 (하나의 A는 하나 이상의 B로 구성되어 있다.)
  • Type4(고리와 실선): 0 혹은 1 (하나의 A는 하나 이하의 B로 구성되어 있다.)
  • Type5(고리와 까마귀발): 0개 이상 (하나의 A는 0또는 하나 이상의 B로 구성되 있다.)
기호의 조합은 보통 그림 예제의 Type1, Type3, Type4, Type5를 자주사용하며, 사용하는 
 
ERD 프로그램에 따라 조합 방식이 다를 수 있다.
 
 
(상품 테이블과 상품의 옵션 테이블의 관계를 정의할때, 상품의 옵션은 없을 수 도 있고, 여러개가 있을 
 
수 있기 때문에. 그림 예제 Type5로 표현이 가능하다.)
 
 

삼성, 엘지, 대우 세탁기 에러코드 모음

​삼성전자
●점검에러
서비스센타에서 AS받으셔야합니다

에러코드
3E
모터회전이상에러
무거운이불등세탁기 과부하발생
9E
전기 저전압,과전압 or 메인회로판이상
HE
삶음기능시 세탁히터이상으로 온도안올라감
세탁히터쇼트,단선,히터센서불량
PE1,PE2
클러치모터이상,메인회로판이상
9E(아가사랑)
누수감지에러
수위감지센서호스이탈,세제과다상용거품에의한전면누수,pcb회로이상,물흡수력이좋은세탁물세탁시일시적
8E(MEMS)
진동감지센서에러
진동감지센서,pcb회로이상
AE(RE)
통신이상에러
메인pcb 와 서브pcb끼리신호감지못함
OF(5F,OE)
물수위감지못함에러
수위센서에러,수위센서호스결빙,세탁조수위감지안되과급수될수있음
TE
세탁조 세탁히터센서이상
온도센서불량,접촉불량

●기타에러
C5-세탁버튼쇼트에러
01-세탁조청소,통세턱버튼쇼트에러
DP-예약버튼쇼트에러
188-물높이버튼쇼트에러
T**-버튼쇼트에러

●주요에러
자가조치후 증상개선없으면 AS받으시면됩니다

​삼성일반세탁기 에러코드

1E
수위감지에러
4E(YE,E1)
급수에러
일정시간동안 급수변화,급수완료안됨
5E(SE,E2)
배수에러
UE,E4
언발란스에러
수평불량,세탁물한쪽치우침
dE,dE1
세탁기뚜껑열림
CE
배수물온도감지에러
세탁시30분이지나도내부온도55∘c이하로내려가지 않는증상
END,EN
통세척시기 알림증상
6E
세탁히터과열에러
히팅시작후1분동안 온도변화가30∘c이상일 경우(빨래감을 별도로 삶아서넣었을 경우)

​삼성드럼세탁기 에러코드

9E,9E1,9E2
저전압,과전압,회로기판이상
FE
건조팬이상 동작감지 안될때
팬모터단선,벨트이상,쿨링날개동작,베어링불량
HE,HE1
삶음기능시 헤탁히터이상
세탁히터쇼트,단선,세탁히터센서불량
bE1,12E
전원버튼 눌림
전원버튼12초이상 눌려져있을때,전면부컨트롤판넬변형으로버튼 불안정눌림
tE1
세탁히터센서이상
AE(RE,13E)
통신이상에러
메인,서브pcb간 신호감지못함
HE2
건조히터이상으로 온도감지에러
건조히터 온도센서불량
LE,11E
세탁조물 누수감지
물을많이먹는세탁물,실제누수,pcb회로이상
bE2,14E
버튼눌림현상
전원버튼제외한 버튼30초이상눌림현상
tE2
건조히터센서이상
6E
세제자동투입장치의 모터동작이상
자동세제함 금속접촉단자 청소후조립
COLD(CLD)
세탁동작전 세탁통 물감지,배수되면서CLD표기
배수필터,배수호스,배수드레인점검
Hot
내부온도 고온감지
건조,에어워시 도중 껐을때 내부온도가 뜨거워발생
4E1,4E2
냉온급수호스 죄우바뀜

엘지전자
LG일반세탁기 에러코드

LE,LE1,AE
모터구속에러
펄쉐이터와탈수조사이 동전이나 이물이낄경우
DE
도어에러(Door Error)
세탁기 뚜껑 열림
F
세탁물량 자동감지하는중
기다리면 시간표시 나타나고 정상작동됨
IE
급수에러(water inlet error)
급수불량 급수호스,수도꼭지,단수확인
OE
배수에러(water outer error)
배수불량,배수호스 동결 꺽임 막힘 확인
UE
불균형에러(unbalance error)
세탁기수평,빨래감 한쪽치우침확인

LG드럼세탁기 에러코드

FF,U51
배수동결에러
CF
건조행정도중 종료버튼을누른경우
건조덕트식히기위한과정 팬모터30초정도가동
건조행정 정상작동시 CF표시되지않음
PE
물조절센서 오작동,물조절이안될때
FE
급수밸브이상
급수밸브이상,배수동결,계속급수,급수+배수반복
CL
Child Lock 버튼잠금기능
어린이보호기능 ,해제후사용
tCL
세탁조청소시기 알림기능

●에러/버튼 > LED 가 깜빡이는 경우

– UE:배수대기/탈수안함 400/800/1000rpm 전체 점등
탈수 불균형 표시입니다.
– IE:헹굼추가/구김방지 전체 점등
급수가 안되는 경우입니다.
– OE:예비세탁/시간 절약 전체 점등
배수가 원활하지 못한 경우 입니다.
– DE:예비세탁/시간절약/ 헹굼추가/구김방지/물온도 전체 점등
문닫힘이나 문열림이 제대로 되지 못한 경우입니다.
– TE:물온도 전체 점등
온도감지 센서 이상입니다.
– PE:예비세탁/시간절약/물온도 전체 점등
수위감지 센서 이상입니다.
– FE:예비세탁/헹굼추가/시간절약/구김방지 전체 점등
급수 관련 부위 또는 배수 관련 부위가 얼은 경우 입니다

동부대우전자
대우일반세탁기에러코드

UE
불균형에러
수평확인, 빨래감 한쪽으로 치우침확인
OE
배수에러
배수호스확인(막힘,꺽임등)
IE
급수에러
급수호스확인(수도,호스접힘,급수필터)
LE
문열림
H5
수온이상 감지에러
울,란제리 코스사용시 수온감지(냉온호스바뀜확인

대우드럼세탁기 에러코드

IE
급수에러
급수호스확인,수도(단수)확인
OE
배수에러
배수호스확인
LE
문열림
세탁기 도어 확인
UE
불륜형에러
세탁기수평,빨래감 치우침확인
E5
세탁모터회전감지오류 (드럼미니)
a/s 문의
E9
수위조절안됨,수위센서에러
a/s 문의
E8
세탁모터회전감지오류
홀센서고장의심,이물질드럼통구속

산요드럼
U2-드럼세탁기 문열림
ER3-배수불량

이 글은 info 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.

무료 SSL 보안 인증서 발급받기 (Free SSL Certificate)

Let’s Encrypt 에서 시작된 무료 SSL 인증서 발급 서비스는

비싼 년간 갱신 비용을 지불하면서 유료로 SSL 인증서를 발급받아 유지하지 않아도 되는 획기적인 방향을 제시했습니다.

물론 3개월마다 인증서를 갱신해야 하는 번거로움은 있습니다.

이런 불편함에도 불구하고 와일드카드 인증서와 멀티도메인 인증서까지 무료로 발급할 수 있는 매력은 소규모 사이트에 SSL 보안 인증서를 적용하는 부담을 상당히 줄여줍니다.

또, 3개월마다 갱신해야하는 인증서를 자동으로 갱신처리를 해주는 프로그램들도 있기 때문에 생각보다 갱신으로 인한 불편함은 적은 편입니다.

무료 SSL 인증서를 발급할 때 좋은 점은 웹서버에서 미리 인증서 요청을 생성하지 않아도 되는 것입니다.

무료 SSL 인증서를 발급해봅니다.

무료 SSL 인증서 발급은 2단계로 진행됩니다.

첫번째 단계는 인증서를 발급.

두번째 단계는 발급받은 인증서를 바로 웹서버에 적용 가능한 SSL 인증서 백업 파일로 변환.( *.pfx파일 ) 하는 것입니다.

발급받은 인증서를 인증서 백업파일로 변환하는 것은, 최초 인증서 요청을 생성하지 않았기 때문에 발급 받은 인증서 만으로로는 웹서버에 적용할 수 없기 때문에 인증서를 백업했다 복원하는 방식으로 인증서를 설치할 수 있도록 하기 위해서 입니다.


무료 SSL 인증서 발급_

인증서를 발급받기전 준비사항

무료 SSL 인증서를 발급받으려면 도메인 소유권 증명을 해야하기 때문에 다음 2가지중 한가지가 가능해야 합니다.

A. 도메인 인증 파일을 업로드하는 방식 – 무료 SSL 인증서를 발급받는 도메인이 설정된 웹호스팅, 또는 단독 서버가 있어야 합니다.

해당 웹사이트에 폴더 생성 및 파일 업로드가 가능해야 합니다. 또는 FTP서비스가 웹사이트로 설정된 서버(호스팅) 폴더와 연결되어 있어야 합니다.

“http://도메인” 으로 해당 사이트에 접근 가능해야 합니다.

실제 웹사이트는 구성되어있지 않아도 됩니다. 특정 폴더 위치에 소유자 인증 파일에 접근만 가능하면 됩니다.

B. DNS를 이용해 도메인 인증 키값을 TXT 필드에 적용.

DNS 호스팅을 하고 있는 경우(웹호스팅, 또는 외부 네임서버 서비스 이용) DNS 관리 기능으로 TXT 필드를 생성할 수 있어야 합니다.

자체 네임서버(DNS 서버)를 사용하는 경우 네임서버에 TXT 필드를 추가하면 됩니다.

본인 소유 도메인이 아니면 SSL 인증서는 발급받을 수 없습니다.

https://www.sslforfree.com/

사이트에 접속합니다.

영어 몰라도 발급받는데는 별 어려움은 없지만, 어설픈 한글사이트라도 원한다면 우측 상단에 구글 번역기가 붙어있으므로 구글 번역기를 이용해도 됩니다.

영문으로 설명합니다.

맨 위에는 도메인 입력난이 있습니다.

여기에 무료 SSL 인증서를 발급받을 도메인 명을 입력하게 됩니다.

보통은 서브도메인 없이 1차 도메인명(mydomain.com)만을 입력하면 됩니다.

설명에서는 2차 도메인을 위한 무료 SSL 인증서를 하나 발급받아봅니다.

그 아래에는 간단한 사용 설명과 지원사항 등일 자세하게 나와있습니다.

도메인을 발급받기 전에 알아두면 좋은 내용입니다.

Let’s Encrypt 무료 SSL 인증서는 상용 인증서 발급 서비스와 동일한 수준의 다양한 인증서 발급 기능을 제공합니다.

Let’s Encrypt 무료 SSL 인증서 발급 지원 사항

Let;s Encrypt 기반 무료 인증서 발급은 아래와 같은 다양한 인증서 형태의 SSL 인증서 발급을 지원합니다.

1. 와일드카드 SSL 인증서 지원

1차 도메인 앞에 서브도메인으로 “*” 를 붙여 와일드카드 SSL 인증서를 지원합니다.

*.mydomain.com

으로 인증서를 발급받으면 mydomain.com 하위 도메인 모두에 대해서 SSL 적용이 가능합니다.

2. www 도메인 인증서 자동 생성

1차 도메인명으로 SSL 보안 인증서를 생성하면 자동으로 www 하위 도메인에 대한 인증서까지 생성 해줍니다.

한번에 SSL 인증서가 2개가 발급됩니다.(1차 도메인용, www 서브 도메인용)

3. 서브도메인 별로 개별 SSL 인증서 생성

개별 서브 도메인 단위로 SSL 인증서를 1개씩 생성

4. 멀티도메인 인증서 생서 지원

도메인 입력난에 공백으로 띄워 2개 이상의 도메인을 입력하면 입력한 도메인들 모두에 대한 인증서를 일괄 생성해줍니다.

1차 도메인을 입력하면 자동으로 www가 붙은 하위도메인까지 입력해줍니다.

도메인 소유권 인증을 하는 3가지 방법(가능한 방법으로 택1)

무료 SSL 인증서를 발급할 도메인 명을 입력하고 “Create Free SSL Certificate” 버튼을 누릅니다.

소유권 인증 방법을 선택하는 화면이 나옵니다.

소유권 인증 방법은 총 3가지가 가능합니다.

1. “Automatic FTP Verification” – FTP 를 이용한 자동 처리 방식

2. “Manual Verification” – 소유권 인증 파일을 다운로드받아 직업 업로드

3. “Manual Verification” – DNS에 TXT 레코드로 소유권 인증 키를 추가

1과 2번은 웹호스팅 공간, 또는 서버에 특정 폴더가 만들어지고, 그 안에 소유권 인증 파일을 업로드하면 sslforfree.com 서버가 해당 “http://도메인/소유권인증파일” URL로 접근해 소유권이 있는지 확인합니다.

http로 웹사이트에 접근이 가능해야 합니다.

1번은 웹사이트와 경로를 공유하는 FTP 가 있어야만 사용 가능합니다.

FTP 정보 입력 양식에 FTP 접속 정보를 입력하면 sslforfree.com 서버에서 자동으로 해당 FTP로 로그인 해 폴더를 생성하고, 소유권 인증용 파일 업로드까지 해줍니다.

3번은 DNS에 TXT 레코드를 추가할 수 있어야 합니다.

네임서버 호스팅을 이용하는 경우에도 대부분 DNS 관리 기능은 제공하므로 이 기능을 이용하면 됩니다.

http로 접근가능한 웹사이트가 아직 준비되어 있지 않은 경우, 또는 인터넷으로 접근할 수 없는 인트라넷, 개발용 서버, 방화벽 뒤에 있어서 80포트 접근이 제한된 경우 DNS 인증 방식을 사용하면 됩니다.

1. DNS 인증 방법부터 해봅니다.

“api.apost.kr” 이라는 서브 도메인을 위한 인증을 한다고 할 경우

1. “Manual Verification (DNS)” 를 클릭.

2. DNS 인증하는 방법에 대한 안내가 나옵니다. “Manually Verify Domain” 버튼을 클릭.

3. “Manually Verify Domain” 버튼 밑으로 DNS  “TXT” 레코드로 등록할 내용이 표시됩니다.

4. 도메인 관리 기능, 또는 네임서버의 해당 도메인에 TXT 레코드를 표시되는 내용대로 추가합니다.

일부 네임서버 호스팅 관리 도구에서는 “_”(언더바)와 같은 특수 문자 입력이 제한된 경우가 있습니다.

이런 경우에는 이 방법을 사용할 수 없습니다.

5. “Verify _acme-challenge.내도메인” 링크를 클릭해 TXT 레코드가 적용되었는지 확인합니다.

TXT 레코드가 적용되지 않았을 경우 “No TXT Record Found. Make to set the TTL to 1 second or if you cannot set the TTL then you must wait the TTL (in seconds) so it updates before verifying the domain. Contact your DNS provider if unsure.” 메시지가 표시됩니다.

이 경우 TXT 레코드가 잘못 적용된 것이므로 문제점을 찾아 수정해야 합니다.

6. TXT 레코드가 적용되었으면 “Download SSL Certificate” 버튼을 누르면 인증서 압축파일이 다운로드 됩니다.

“I Have My Own CSR”은 체크하지 않습니다. 이 항목은 인증서 요청을 생성한 경우에만 사용합니다.

2. 웹사이트 특정 폴더에 소유권 인증용 파일을 직접 업로드합니다.

1, 소유권 인증 방식으로 “Manual Verification” 을 선택합니다.

2. “Manually Verify Domain” 버튼을 클릭

3. 수동 인증을 위한 안내가 표시됩니다.

4. “Download File #1″을 클릭해 소유권 인증 파일을 다운로드 합니다.

도메인 명으로 1차 도메인을 입력했으면 다운로드 링크가 2개가 표시되며, 두개 모두 다운로드 및 업로드를 해야 합니다.

5. 웹사이트 루트에

.well-known

ㄴ acme-challenge

구조대로 폴더를 생성합니다.

“well-known” 앞에 마침표가 있는점을 주의해야 합니다.

6. 다운로드한 파일을 “acme-challenge” 폴더 안에 저장(업로드)합니다.

7. 5번의 링크를 클릭해 업로드한 파일이 접근이 가능한지 확인합니다.

http 로 접근이 가능한 경우 인증 파일 안의 키 값이 표시됩니다.

1차 도메인을 신청하는 경우 확인 링크가 2개가 표시됩니다. 두개 모두 클릭해 인증 키가 보이는지 확인해야 합니다.

8. “Download SSL Certificate” 버튼을 눌러 인증서 파일을 생성 합니다.

9. 인증서 생성이 완료되고 인증서 발급 정보가 표시되면 “Download All SSL Certificate Files” 버튼을 클릭합니다.

인증서 압축파일이 다운로드 됩니다.

3. FTP 자동인증. 

웹사이트에 FTP가 연동되는 경우, 인증서 발급 전 소유권 인증 페이지에서 FTP 정보만 입력하면 자동으로 인증 처리가 완료됩니다.

접속 FTP 계정은 반드시 폴더 생성 및 읽기/쓰기 권한이 있어야 합니다.

1. “Automatic FTP Verification” 클릭

2. 밑에 표시되는 FTP 접속 정보 폼에 연결 정보 입력

3. “Download Free SSL Certificate” 클릭해 인증서를 생성합니다.

4. 인증서 생성이 완료되고 인증서 발급 정보가 표시되면 “Download All SSL Certificate Files” 버튼을 클릭합니다.

인증서 압축파일이 다운로드 됩니다.


SSL 인증서 백업 파일로 변환하기_

발급받은 인증서는 인증요청 없이 발급받은 인증서이기 때문에 웹서버에 설치하려면 인증서 백업 파일 형태로 변환해야 합니다.

https://www.sslshopper.com/ssl-converter.html

사이트에 접속합니다.

1. sslforfree.com 에서 다운로드 받은 무료 SSL 인증서 zip 파일의 압축을 풉니다.

인증서 파일은 “ca_buldle.crt”, “certificate.crt”, “private.ke” 3개로 구성됩니다.

2. 폼의 “Type To Convert To” 목록에서 “PFX/PKCS#12” 를 선택합니다.

업로드할 인증서 파일을 선택하는 항목이 1개에서 4개로 늘어납니다.

4개의 업로드 파일 선택 필드중 상단의 2개만 사용합니다.

3, 맨위 “Cerfificate Files to Convert” 필드의 “파일 선택” 을 클릭해 압축을 풀어놓은 인증서 파일들 중 “certificate.crt” 파일을 선택합니다.

두번째 “Private Key File” 필드의 “파일 선택” 을 클릭해 “private.key” 파일을 선택합니다.

4. “Type of Current Certificate” 는 “Standard PEM” 을 선택합니다.

5. “Convert Certificate” 버튼을 클릭합니다.

“certificate.pfx” 파일이 다운로드 됩니다.

오픈SSL 을 사용하는 경우 커멘드라인으로 직접 인증서 백업 파일로 변환이 가능합니다.

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

이제 다운로드 받은 SSL 인증서 백업파일( certificate.pfx )을 웹서버에서 등록하면 됩니다.

Oracle TableSpace 관리 생성 및 삭제

  – 테이블스페이스는 하나 또는 여러개의 데이터 파일로 구성되어 있는 논리적인 데이터 저장 구조 입니다.

– 테이블스페이스는 크게 시스템(SYSTEM) 테이블 스페이스와 비시스템(NON-SYSTEM)  테이블 스페이스로 구분 됩니다.

– 테이블스페이스는 사용자에게 공간을 할당할 수 있으며, 테이블스페이스 안에 저장되어   있을 데이터의 가용성을 제어할 수 있습니다.

※ 참고 1

 임시 테이블스페이스를 지정해 주지 않으면 시스템 테이블스페이스가 기본으로 지정 되지만 시 스템 테이블스페이스에 단편화가 발생할 수 있으므로 사용자를 생성할때 임시테이블스페이스를 따로 지정해 주는 것이 좋습니다.

– 또한 DEFAULT TABLESPACE도 사용자를 생성할때 지정해 주지 않으면 기본적으로 시스템 테이블스페이스가 지정이 됩니다. 하지만 사용자를 생성할때 DEFAULT TABLESPACE를 지정을 해서 사용자가 소유한 데이터와 객체들의 저장 공간을 별도로 관리를 해야 합니다.

시스템 테이블스페이스는 본래의 목적(모든 데이터 사전 정보와, 저장 프로시저, 패키지, 데이터베이스 트리거등을 저장)을 위해서만 사용되어져야 하지 일반사용자의 데이터 저장용으로 사용 되어서는 안됩니다.

 

1. 시스템 테이블 스페이스

– 오라클 데이터 베이스를 생성할 때 자동으로 생기며 오라클 데이터 베이스의 기동을 위해
꼭 필요한 테이블 스페이스 입니다.

– 모든 데이터 사전(Data Dictionary) 정보와, 저장 프로시저, 패키지, 데이터베이스
트리거등을 저장 합니다

– 유저데이타가 포함될 수 있지만 관리 효율성 면에서 포함 시키지 않습니다

2. 비 시스템 테이블 스페이스

– 롤백세그먼트, 임시세그먼트, 응용프로그렘 데이타, 그리고 응용프로그렘 인덱스를 저장 할 수 있습니다

– 공간관리를 쉽게 하기 위해서 생성 합니다.

– 유저에게 할당되는 공간 입니다.

 


▣ 테이블스페이스의 생성


   – 옵션절을 생략할 경우 밑줄친 옵션이 디폴트 값입니다.
– tablespace_name : 생성할 테이블 스페이스 명
– DATAFILE : 새로 생성하는 테이블스페이스가 사용할 데이터 파일
– filespec : 디렉토리 경로명을 포함한 파일명
– size : 새로 생성되는 데이터 파일의 크기

– ONLINE/OFFLINE
ONLINE : 새로 생성되는 테이블 스페이스를 활성화 시키며, 생성 후 바로 사용할 수 있게 함
OFFLINE : 테이블 스페이스를 비활성화 시키며, 생성 후 바로 사용할 수 없음

– PERMANT/TEMPORARY : TEMPORARY 옵션을 사용하면 생성하는 테이블스페이스는
임시 테이블스페이스가 됩니다.

– DEFAULT STORAGE

* INITIAL : 테이블 스페이스의 맨 첫번째 Extents의 크기
* NEXT : 다음 Extents의 크기
* MINEXTENTS : 생성할 Extents의 최소 값
* MAXEXTENTS : 생성할 Extents의 최대 값
* PCTINCREASE : Extents의 증가율, Default값은 50 입니다

테이블 스페이스 생성 예제

— sysdba권한으로 접속을 합니다.
SQL> conn sys/manager as sysdba

— 테이블스페이스 생성
SQL>CREATE TABLESPACE storm
DATAFILE ’C:\ORACLE\ORADATA\app_data.dbf’ SIZE 100M
DEFAULT STORAGE
(INITIAL    10K
NEXT      10K
MINEXTENTS 2
MAXEXTENTS 50
PCTINCREASE 50)

아래 그림 설명은 잘 못되었습니다.
두번째 extent는 next의 원래 크기와 동일합니다.
다음부터의 NEXT는 (1+pctincrease/100)에 next의 이전크기를 곱한 크기로 설정 됩니다.
그러므로 16K는 세번째 extent의 크기가 됩니다.

10k, 10k, 16k, 24K, 36k.. 이렇게 되겠죠..

 


▣ 비 활성화(OFFLINE) 테이블 스페이스

– 오프라인 상태 테이블스페이스의 데이타에는 접근 할 수가 없습니다.
– SYSTEM 테이블스페이스와 활성화된 롤백세그먼트를 가진 모든 테이블스페이스는
오프라인 상태가 될 수 없습니다.

– 테이블스페이스를 오프라인으로 만들기

데이타베이스가 오픈되어 있다면 데이타베이스 관리자는 SYSTEM 테이블스페이스나
활성 롤백세그먼트나  임시세그먼트를 가진 테이블스페이스를 제외한
어떤 테이블 스페이스든지 오프라인 상태로 만들 수  있습니다.

테이블스페이스가 오프라인상태가 됐을때 오라클 서버는 모든 관련된 모든 데이터
파일을 오프라인 상태로 만듭니다.


테이블스페이스는 세가지 모드로 오프라인 상태가 될 수 있습니다.
* normal : 디폴드 값, 테이블스페이스의 모든 데이터 파일에 대해 체크 포인트를 수행
합니다.
* immediate : CheckPoint를 수행하지 않습니다.
temporary : 테이블스페이스의 ONLINE데이터 파일에 대해 체크 포인트를 수행 합니다.

예제)
SQL> ALTER TABLESPACE app_data OFFLINE;


▣ 데이터 파일의 이동(ALTER DATABASE)

1) 데이터베이스를 종료 합니다.
2) 운영체제 명령을 사용하여 데이터 파일을 이동 합니다.
3) 데이터베이스를 마운트 합니다.
4) ALTER DATABASCE RENAME FILE명령을 수행하여 이름을 변경합니다.
5) 인스턴스를 시작합니다.

1) 인스턴스의 종료

C:>SQLPLUS /nolog
SQL>conn sys/manager  as sysdba
SQL>shutdown immediate;

2) 운영체제 명령을 사용하여 데이터 파일을 이동

– 운영체제 명령을 이용해서 데이터 파일을 이동 시킵니다.
– UNIX에서는 mv명령을 이용해서 새로운 위치로 이동 시킵니다.

3) 데이터베이스 마운트

SQL>startup mount;

4) ALTER DATABASE명령의 수행

SQL>ALTER DATABASE RENAME FILE
’C:\oracle\oradata\storm.dbf’ to
’D:\oracle\oradata\oracle\storm.dbf’ ;

alter database명령을 실행하면 오라클은 파일이 존재하는가를 검사합니다.
만약 이단계에서 에러가 발생하면 파일이름이 정확한지 다시 확인 하시면 됩니다.

5) 인스턴스 시작

SQL>alter database open


▣ 읽기전용(Read Only) 테이블 스페이스

– 테이블스페이스는 온라인 상태 이어야 합니다.

– 활성화된 트랜잭션은 허용되지 않습니다.(DML 작업)

– 테이블 스페이스에 활성화된 롤백 세그먼트가 포함되어 있지 않아야 합니다.

– 테이블 스페이스는 현재 온라인 백업에 포함되어 있지 않아야 합니다.


SQL>ALTER TABLESPACE app_data  READ ONLY;

==>app_data 테이블 스페이스를 읽기 전용으로 변경 시킵니다.


▣ 테이블 스페이스의 삭제

◈ 데이타를 가지고 있는 테이블스페이스는 INCLUDING CONTENTS옵션 없이는 삭제할 수
없습니다.

◈ 컨트롤 파일 내에 있는 파일 포인터만 삭제됩니다. (데이터 파일은 존재)

◈ 데이타베이스 파일은 여전히 존재하므로 운영체제 레벨에서 명시적으로 삭제 되여야만 합니다.

◈ 데이터 딕셔너리의 내용이 변경 됩니다.

◈ TableSpace를 삭제 하기 전에 테이블스페이스를 오프라인 상태로 할 것을 권장 합니다.

◈ TableSpace가 일단 삭제되면 그 데이타는 데이타베이스에 더 이상 존재하지 않게 됩니다.


 INCLUDING CONTENTS: TableSpace에 Data가 이미들어있을 경우 들어있는 내용을
포함해서 모두 삭제 합니다.

– CASECADE CONSTRAINTS : Primary Key가 설정되어 있는 경우에 child 의 Foriegn Key를                                           삭제하고 Tablespace를 삭제 합니다.

SQL> DROP TABLESPACE app_data  INCLUDING CONTENTS ;

==>app_data테이블 스페이스를 삭제 합니다.

# 데이타 파일까지 삭제
SQL> drop tablespace 테이블스페이스명
including contents
and datafiles
cascade constraints;

DROP TABLESPACE만 하면 그 안에 만약 테이블들이 들어있다면 안지워짐.
INCLUDING CONTENTS : 안에 테이블이 있건 없건 관계없이 무조건 삭제.
AND DATAFILES : 데이터파일도 같이 삭제.
CASCADE CONSTRAINTS : 물려있던 제약조건까지 삭제됨.

DBA_TABBLESPACES 데이터 사전

SQL>conn sys/manager as sysdba
SQL>SELECT tablespace_name, initial_extent, max_extents,  min_extlen
FROM dba_tablespaces;

DBA_DATA_FILES 데이터 사전

SQL>conn sys/manager as sysdba
SQL> SELECT file_name, tablespace_name
FROM dba_data_files;

콘트롤파일의 데이타파일 정보와 테이블스페이스 정보

SQL>conn sys/manager as sysdba
SQL> SELECT status,enabled, t.name,d.name
FROM  v$datafile d, v$tablespace t
WHERE t.ts#=d.ts#;

STATUS    ENABLED       NAME            NAME
——-   ———-      ————   ————————————-
SYSTEM  READ WRITE SYSTEM       C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF
ONLINE    READ WRITE RBS             C:\ORACLE\ORADATA\ORACLE\RBS01.DBF
ONLINE    READ WRITE USERS         C:\ORACLE\ORADATA\ORACLE\USERS01.DBF
ONLINE    READ WRITE TEMP           C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF
ONLINE    READ WRITE TOOLS         C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF
ONLINE    READ WRITE INDX            C:\ORACLE\ORADATA\ORACLE\INDX01.DBF
ONLINE    READ WRITE DRSYS         C:\ORACLE\ORADATA\ORACLE\DR01.DBF
ONLINE    READ WRITE STORM        C:\ORACLE\ORADATA\ORACLE\STORM.DBF


테이블 스페이스의데이터 파일과 테이블 스페이스의 크기 확인

DBA_DATA_FILES 데이터 사전을 이용 하면 됩니다.

SQL> COL FILE_NAME FORMAT A40
SQL> COL TABLESPACE_NAME FORMAT A15

SQL>  SELECT file_name, tablespace_name, bytes, status FROM  DBA_DATA_FILES;

FILE_NAME                                                    T ABLESPACE_NAME      BYTES     STATUS
————————————-              —————    ————    ————
C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF   SYSTEM           248250368   AVAILABLE
C:\ORACLE\ORADATA\ORACLE\RBS01.DBF          RBS                545259520    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\USERS01.DBF      USERS            113246208    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF       TEMP               75497472     AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF     TOOLS             12582912     AVAILABLE
C:\ORACLE\ORADATA\ORACLE\INDX01.DBF         INDX                60817408     AVAILABLE
C:\ORACLE\ORADATA\ORACLE\DR01.DBF            DRSYS            92274688      AVAILABLE

 FILE_NAME : DATAFILE의 물리적인 위치와 파일명을 알 수 있습니다.
 TABLESPACE_NAME : 테이블 스페이스의 이름을 알 수 있습니다.
 BYTES : 테이블 스페이스의 크기를 알수 있습니다.
 STATUS : 테이블 스페이스의 이용 가능 여부를 알 수 있습니다.

테이블 스페이스별 사용 가능한 공간의 확인

DBA_FREE_SPACE 데이터 사전

SQL> SELECT tablespace_name, SUM(bytes), MAX(bytes)
FROM DBA_FREE_SPACE
GROUP BY tablespace_name

TABLESPACE_NAME SUM(BYTES) MAX(BYTES)
—————           ———-     ———-
DRSYS                     88268800           88268800
INDX                        60809216           60809216
RBS                       524279808          498589696
SYSTEM                      65536                 65536
TEMP                      75489280           74244096
TOOLS                     12574720           12574720
USERS                   113238016          113238016

◎ SUM을 사용한 이유는하나의 테이블 스페이스에 분산되어 있는 여유공간을 합한 것이며,
◎ MAX를 사용한 이유는 여유 공간중 가장 큰 공간의 SIZE를 의미 합니다.


 데이타 화일에 대한 총 크기와 남아있는 공간, 사용한 용량, 남은 %율

DBA_FREE_SPACE, DBA_DATA_FILES 데이터 사전

SQL> COL FILE_NAME FORMAT A40
SQL> COL TABLESPACE_NAME FORMAT A30
SQL> SET LINESIZE 150
SQL> SELECT  b.file_name “FILE_NAME”,                                         —  DataFile Name
b.tablespace_name “TABLESPACE_NAME”,                      — TableSpace Name
b.bytes / 1024 “TOTAL SIZE(KB)”,                                    — 총 Bytes
((b.bytes – sum(nvl(a.bytes,0)))) / 1024 “USED(KB)”,         — 사용한 용량
(sum(nvl(a.bytes,0))) / 1024 “FREE SIZE(KB)”,                  — 남은 용량
(sum(nvl(a.bytes,0)) / (b.bytes)) * 100 “FREE %”               — 남은 %
FROM   DBA_FREE_SPACE a, DBA_DATA_FILES b
WHERE a.file_id(+) = b.file_id
GROUP BY b.tablespace_name, b.file_name, b.bytes
ORDER BY b.tablespace_name

FILE_NAME                                                  TABLESPACE_NAME  TOTAL SIZE(KB)   USED(KB) FREE SIZE(KB)     FREE %
————————————-                —————     ————–   ————-    ————- ———-
C:\ORACLE\ORADATA\ORACLE\DR01.DBF            DRSYS                    90112            3912         86200            95.6587358
C:\ORACLE\ORADATA\ORACLE\INDX01.DBF         INDX                        59392                8         59384            99.9865302
C:\ORACLE\ORADATA\ORACLE\RBS01.DBF          RBS                       532480          20488        511992            96.1523438
C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF       TEMP                       73728               8         73720             99.9891493
C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF     TOOLS                      12288               8         12280            99.9348958
C:\ORACLE\ORADATA\ORACLE\USERS01.DBF      USERS                    110592               8        110584           99.9927662
# 사용자 정보 포함 출력

SELECT FILE_NAME,
TABLESPACE_NAME||'(‘||b.USERNAME||’)’ AS TABLESPACE_NAME,
TOTAL_SIZE AS “TOTAL_SIZE(KB)”,
USED AS “USED(KB)”,
FREE_SIZE AS “FREE_SIZE(KB)”,
FREE_P AS “FREE %”,
STATUS
FROM
(
SELECT  b.file_name “FILE_NAME”,                                         —  DataFile Name
b.tablespace_name “TABLESPACE_NAME”,               — TableSpace Name
b.bytes / 1024 “TOTAL_SIZE”,                                  — 총 Bytes
((b.bytes – sum(nvl(a.bytes,0)))) / 1024 “USED”,         — 사용한 용량
(sum(nvl(a.bytes,0))) / 1024 “FREE_SIZE”,                  — 남은 용량
(sum(nvl(a.bytes,0)) / (b.bytes)) * 100 “FREE_P”,           — 남은 %
b.STATUS                                                                 — 사용 여부
FROM   DBA_FREE_SPACE a, DBA_DATA_FILES b
WHERE a.file_id(+) = b.file_id
GROUP BY b.tablespace_name, b.file_name, b.bytes, b.status
ORDER BY b.tablespace_name
) a, DBA_USERS b
WHERE a.TABLESPACE_NAME = b.DEFAULT_TABLESPACE(+)
;

# TEMP 테이블 스페이스 용량 확인

COL NAME FORMAT A50
COL TOTAL FORMAT A15
COL USED FORMAT A15
COL FREE FORMAT A15
COL USAGE FORMAT A15
SET LINESIZE 130

SELECT B.NAME
, B.BYTES/1024/1024 || ‘ M’ TOTAL
, A.BYTES_USED/1024/1024 || ‘ M’ USED
, (B.BYTES-A.BYTES_USED)/1024/1024 || ‘ M’ “FREE”
, ROUND(A.BYTES_USED/B.BYTES * 100) || ‘% ‘ “USAGE”
FROM (SELECT BYTES_USED, FILE_ID FROM V$TEMP_EXTENT_POOL) A
, (SELECT BYTES, FILE#, NAME FROM V$TEMPFILE) B
WHERE A.FILE_ID = B.FILE#
;

▣ 수동으로 데이터 파일 크기 변경

– ALTER DATABASE명령으로 데이터 파일의 크기를 변경 할 수 있습니다.

예제)
SQL>ALTER DATABASE DATAFILE
’C:\ORACLE\ORADATA\app_data02.dbf’ RESIZE 300M

RESIZE명령으로 데이터 파일의 크기를 300M로 했습니다.
기존 데이터 파일의 크기가 300M가 넘을 경우에는 300M로 줄어들게되고,
300M가 되지 않았을 경우에는 300M로 늘어나게 됩니다.

– 무제한으로 변경
ALTER DATABASE DATAFILE
‘/app/oracle/oradata/TEST.dbf’
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
;

— TABLESPACE 생성

CREATE TABLESPACE SCOTT_DATA
DATAFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_DATA.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
— AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED — 크기 제한 없음
DEFAULT STORAGE
(INITIAL     4K
NEXT        128K
MINEXTENTS  1
PCTINCREASE 0);

# INDEX 테이블 스페이스의 사용은 인덱스를 사용시에 옵션으로 지정.

CREATE TABLESPACE SCOTT_INDEX
DATAFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_INDEX.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
DEFAULT STORAGE
(INITIAL     4K
NEXT        128K
MINEXTENTS  1
PCTINCREASE 0);

CREATE TEMPORARY TABLESPACE SCOTT_TEMP
TEMPFILE ‘/usr/local/ora9i/oradata/oracle/SCOTT_TEMP.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

— 사용자 계정 생성과 동시에 테이블 스페이스 지정.
CREATE USER 
scott   — 사용자 아이디
IDENTIFIED BY tiger    — 사용자 패스워드
DEFAULT TABLESPACE SCOTT_DATA   — 기본 사용 테이블 스페이스
TEMPORARY TABLESPACE SCOTT_TEMP — 템프(order by 등 정렬작업) 테이블 스페이스
QUOTA UNLIMITED ON SCOTT_DATA              — 할당량 지정(현재설정 무제한)
QUOTA 0M ON SYSTEM                                — system tablespace를 사용 못하게 설정
;

— 권한 설정
— 생성한 사용자에게 자신의 schema에서 테이블등을 만들 권한과 자원을 사용할 권한을 준다.
— GRANT RESOURCE, CONNECT TO MIDAN;
— DBA 권한을 준다.
GRANT DBA TO unicorn;