2016년 7월 28일 목요일

네트워크 장비 이해 - 랜카드, 허브, 스위치 및 브릿지 기능

ㅇ ㅂㅇ

랜카드, 허브, 스위치 및 브릿지 기능

> 랜카드(NIC ; Network Interface Card)
 - Point-to-Point 토폴로지 형태
 - 신호 전송 방식
  -- Full Duplex : 송수신 동시에 양방향 데이터 전송 방식(전 이중 통신방식)
  -- Half Duplex : 동시에 양방향 전송은 불가능(반이중 통신방식)

> Hub
 - 1 계층 장비
 - 노드 간 연결 집중화 장비
 - (Dummy)Hub 등이 있음
 - 신호 전송 방식
  -- CD(Collision Domain)을 확장시키만 CSMA/CD 기법을 사용하여 예방과 해결 가능

> Switch
 - 2 계층 장비(Frame 뜯어 보기가 가능)
 - 포트별로 대역폭을 할당함
 - 신호 전송 방식
  -- Half Duplex / Full Duplex(CD가 분리됨)
  -- Port 마다 다르게 설정 가능
 - Bridge와 달리 H/W 방식으로 Switching을 함(ASIC ; )
 - Switching 하는 방식
  -- Stored and Forwarding : 전체 Frame을 모두 받고 오류 검출 후 전달
  -- Cut-Through : Frame에서 목적지 주소만 보고 바로 전달
  -- Fragment-Free : Frame의 64Byte 까지만 받고 검사 후 바로 전달
 - Flooding
  -- 목적지 MAC 주소가 자신의 MAC Table에 없거나 MAC Table이 가득 차면 Hub처럼 동작
  -- Switch Jamming
   --- MAC Table을 가득 차게 만들어 Hub 처럼 동작하게 만들어 Sniffing 하는 방법
 - MAC Table
  -- Learning : 출발지 MAC 주소 확인 후 MAC Table에 없으면 저장
  -- Aging : MAC 주소를 기억 하는 시간

> Bridge
 - 2 계층 장비
 - MAC주소가 저장된 Routing Table 관리
 - Switch와 달리 S/W 로 구현
 - Switching 방식
  -- Store and Forward

> Switch의 동작 방식에 따른 구분
 - Cut-Through 방식 : 지연 없이 Frame을 바로 Forwarding 하는 방식
 - Stop & Forward 방식 : 출력전 일시적 버퍼링, 전체 프레임 오류 검사 실시

> 스위치 종류별 기능
 - L2 스위치 : MAC 주소 기반 스위칭, 일반적인 스위치 장비
 - L3 스위치 : IP Address 기반의 트래픽 조절 가능, 라우팅 기능 지원
 - L4 스위치 : Port 정보 기반으로 서비스 종류별 패킷 경로, 변환, 필터링 지원
 - L7 스위치 : 트래픽의 내용 패턴까지 분석하여 처리하는 기능 지원

> 스위치 Port Mirroring
 - 스위치 특정 포트의 트래픽을 다른 포트로 복사하는 것, 즉 스위치 특정 포트의 트래픽 데이터 분석을 위해 Analyzer가 설치된 다른 포트와 Mirroring 시킴




IP Routing - IP Routing의 종류 및 프로토콜

ㅇ ㅂㅇ

IP Routing의 종류 및 프로토콜

> IP Routing
 - 주어진 IP Packet을 목적지 주소까지 전달하는 것으로 전달 경로의 설정이 핵심
 - IP 헤더에 있는 목적지 주소까지 IP Packet을 전달
 - 네트워크 계층에서 동작, 라우터, L3스위치 등이 대표적인 Routing 지원 장비
> Routing Protocol
 - 정적라우팅(관리자가 경로설정) vs 동적라우팅(RIP 등 Routing Protocol 사용)
 - 내부라우팅(IGP, 동일 AS내) vs 외부라우팅(EGP, 다른 AS간)
 - 거리벡터(Distance Vector)방식 라우팅 vs 링크 상태(Link State)방식 라우팅
> Routing Table
 - 목적지 네트워크로 데이터를 전달하기 위한 경로 정보를 담은 Database
 -- Routing Table을 채우는 방법
  --- Connected : 직접 Interface에 연결된 장비의 정보를 학습
  --- Static Route : 고나리자가 수동으로 목적지 네트워크에 대한 경로 정보를 입력하여 학습
  --- Dynamic Route : Routing Protocol을 이용하여 장비 간 경로를 주고 받아서 정보를 학습
  --- Redistributed : 다른 Router와 정보 교환(Routing Protocol 간의 정보 교환)
> Static Routing
 - Route(Config) # ip route
> Default Routing
 - Routing Table에 없는 목적지의 경우 보내는 경로
 - Router(Config) # ip route 0000 0000
> Dynamic Routing
 - Routing 경로가 Router와 Routing Protocol에 의해 설정이 되는 형태
 - Unicast Routing Protocol
  -- IGP(Interior Gateway Protocol) ; AS 내부
   --- Distance Vector 방식 (목적지 네트워크까지 갈 수 있는 경로 중 최적의 경로를 선택)
    ---- RIP
   --- Link-State 방식(LSA를 통해 전체 토폴로지 구성 후에 리크마다 값을 매겨 최적의 경로를 선택)
    ---- OSPF
  -- EGP(Exterior Gateway Protocol) ; AS 간의
   --- Advanced Distance Vector 방식
    ---- BGP
     ----- iBGP : 외부 AS의 경로를 내부에서 Routing
     ----- eBGP : AS 와 AS 사이에서 경로를 Routing

 - Multicast Routing Protocol
  -- DVMRP
  -- MOSPF
  -- PIM
  -- Dense&Spares
> Routing Protocol의 우선 순위
 - Connected > ICMP redirect > Static > OSPF > RIP





Unix/Windows 네트워크 서비스 - 인터넷 공유 및 NAT 원리, 활용

ㅇ ㅂㅇ

인터넷 공유 및 NAT 원리, 활용

> 인터넷 공유(ICS ; Internet Connection Service)
 - 한 시스템에 네트워크 인터페이스가 2개 이상 존재 할 때 인터넷에 연결된 하나의 네트워크 인터페이스를 통해 인터넷에 접속하는 방법
 - ICS 를 제공하는 시스템에서 DHCP 를 통해 나머지 시스템에게 IP를 할당하고 NAT으로 외부와의 연결이 가능하게함
  -- 즉, Windows 시스템을 하나의 Router로 이용하는 기술

> NAT(Network Address Translation)
 - 사설 IP를 공인IP와 Mapping하여 변환하는 프로토콜
  -- IP 주소의 고갈 / 셜계의 효율성 / 보안 강화 등의 이유로 사용
 - IP주소, TCP/UDP 포트번호를 사용하여 IP주소(또는 포트번호) 변환
 - 종류
  -- Static NAT
   --- 사설 IP와 공인IP를 1:1로 할당
  -- Dynamic NAT
   --- 공인IP와 범위가 정해져 있는 Pool에서 자동으로 공인IP를 선택해서 사설IP에 Mapping
  -- NAT-PAT(NAT-Port Address Translation)
   --- NAT에서 Port 주소를 Mapping 해서 변환시키는 방법(Port Forwarding)


Unix/Windows 네트워크 서비스 - 각종 원격관리 서비스

ㅇ ㅂㅇ

각종 원격관리 서비스

> Telnet
 - 텍스트 기반 원격 접속 프로그램
 - TCP 23 Port 사용
 - 주로 유닉스, 리눅스 계열 원격지 호스트 접속 시 사용

> SSH(Secure SHell)
 - 암호화된 원격 접속 프로그램
 - 안전하지 않은 네트워크를 통해 원격 로그인하거나 기타 안전한 네트워크를 이용하는 데 안전한 쉘 프로토콜

> 윈도우즈 원격 터미널 서비스(Windows Terminal Service)
 - 터미널 에뮬레이터 소프트웨어를 통해 원격지 호스트에 접속, 윈도우즈 환경에서 사용 가능
 - mstsc(기본 값으로 TCP 3389 Port 를 사용)
  -- 보안을 위해 Port를 변경하는 것이 좋음
  -- GUI로 작업이 가능한 것이 특징(화면 동기화는 지원되지 않음)
  -- 동시 접근 가능한 계정의 수가 존재함(많이 동시 접속하게 되면 느림 현상이 있음)


Unix/Windows 네트워크 서비스 - Workgroup과 Domain

ㅇ ㅂㅇ

Workgroup과 Domain

- Microsoft에서 제공하는 효율적인 디렉토리 관리를 위한 네트워크 모델

> Workgroup
 - 개별적인 관리모델로 Workgroup 내의 시스템에 접근하려면 해당 시스템에 생성되어 있는 계정으로 인증을 받아야 함(Client-to-Client)
 - 자원 관리 분산된 모델, 서버별 사용자 정보 별도 관리
 - 전체적인 관리가 어려우며 비 효율적

> Domain
 - 통합적인 관리모델로 Workgroup의 크기가 커지면서 각 시스템마다 계정을 생성해야 하는 문제점을 개선함
 - Domain 내 모든 시스템 통합 관리 모델
 - Domain 내의 한 Server(DC ; Domain Controller)로 Domain 내의 모든 시스템의 사용자 권한 및 보안의 제어가 가능
  -- DC에서 계정을 관리하기 때문에 각 시스템마다 동일한 계정으로 접근이 가능함
 - Domain의 각 시스템들은 다른 로컬 네트워크에 있을 수 있음



2016년 7월 27일 수요일

Unix/Windows 네트워크 서비스 - 각종 서비스의 원리 및 이해

ㅇ ㅂㅇ

각종 서비스의 원리 및 이해

> DNS(Domain Name Service)
 - Domain Name 과 IP Address 를 Mapping 시켜주는 거대한 분산 시스템
 - 다수의 네임서버들의 원활한 동작을 위해 계층적(트리)인 구조
 - 53/UDP(사용자 질의), 53/TCP(DNS 서버 Zone-Transfer) 사용
 - Server - Client 기반으로 동작
  -- Server : Primary Name Server / Secondary Name Server
  -- Client : Resolver
 - DNS Query 종류
  -- Recursive Query : 요청 받은 DNS Server에서만 Query 처리
  -- Iterative Query : 요청 받은 DNS Server에 정보가 없으면 다른 DNS Server에 반복적으로 Query 해서 처리
   -> DNS Server들 끼리 하는 Query
 - DNS 동작 순서
  -- Client : DNS Cache 확인 -> Hosts 파일 확인 -> Server로 Query
  -- Server : DNS Cache 확인 -> Zone File 확인 -> Iteractive Query / 해석 실패
 - 취약점을 이용한 공격
  -- DNS Cache Poisoning
  -- DNS Spoofing

> DHCP(Dynamic Host Configuration Protocol)
 - 네트워크 상의 IP 주소를 중앙에서 관리하고 할당해주도록 해 주는 프로토콜
 - BOOTP (BOOTstrap Protocol)을 대체하는 프로토콜
 - UDP 67,68번 포트를 사용
 - DHCP 동작과정
  -- 1) Discover : Client가 DHCP Server를 찾음(Broadcast)
  -- 2) Offer : DHCP Server가 Client에게 제공 할 수 있는 정보를 줌(Broadcast, 시스템에 따라 Unicast 인 경우도 있음)
  -- 3) Request : Offer 받은 Client가 제공받은 정보를 사용하겠다고 DHCP Server에게로 알림
  -- 4) Ack : DHCP Server가 확인 신호를 보냄
 - 공격 유형
  -- DHCP Starvation : 공격자가 DHCP Server의 모든 IP를 할당 받아서 공격
  -- DHCP Spoofing : 공격자가 가짜 DHCP Server를 만들어 잘못된 네트워크 정보를 할당하는 공격
   --- DHCP Server를 인증 할 수 없기 때문에 가능한 공격
   --- 공격에 성공하면 Gateway 주소를 속여 Sniffing 하거나 Pharming 공격을 할 수 있음

> SNMP (Simple Network Management Protocol)
 - OSI 7 Layer에 속하며 TCP/IP 기반의 네트워크에서 네트워크 상의 각 Host에게서 정기적으로 여러 정보를 수집해 네트워크를 관리하기 위한 프로토콜
 - Master 와 Agent로 구성됨
  -- Master : 관리 영역의 네트워크 상의 정보가 집중되는 장비(정보의 요청이 시작됨)
  -- Agent : 관리 영역의 네트워크 상에서 관리되는 장비
 - MIB(Management Information Base) : 각 Agent 들이 가지고 있으며, Agent의 정보의 집합
 - SMI(Structure of Management Information) : MIB 내의 변수들이 어떤 것인지 정의 한 것
 - 메시지 전달 방식
  -- Polling(UDP 161) : Manager to Agent
  -- Trap(UDP 162) : Agent to Manager
 - 종류
  -- SNMPv1
  -- SNMPv2 : 현재 많이 사용(SNMPv1에다 보안 기능을 추가(DES/MD5))
  -- SNMPv3 : 구현의 복잡성 때문에 잘 사용되지 않음
 - SNMP 통신이 가능하려면 다음과 같은 조건을 만족해야 함
  -- SNMP의 Version이 일치해야 함
  -- 서로 간의 Community 값이 일치해야 함(기본 값은 public ; 이걸 바꿔 주어야 안전(외부로 네트워크 정보가 새어 나갈 수 있음)
  -- PDU type 이 동일해야 함(값의 평균 범위는 0~4)

>Telnet
 - 원격 접속 프로토콜로 데이터가 평문으로 전달되기에 보안성이 떨어짐(TCP 23 Port)
 - 보안성을 위해 SSH(Secure Shell ; TCP 22 Port)을 이용

> FTP(File Transfer Protocol)
 - 원격 파일 전송 프로토콜(TCP 20/21 Port)
 - 연결 방식
  -- Active 방식 / Passive 방식

> SMTP(Simple Mail Transfer Protocol)
 - 메일 전송 프로토콜(TCP 25 Port)
 - 다른 형식의 데이터를 전달하기 위해 MIME를 이용함(HTTP와 구성이 비슷)





2016년 7월 25일 월요일

TCP/IP 일반 - Broadcast 및 Multicast 이해

ㅇ ㅂㅇ

Broadcast 및 Multicast 이해

> 캐스트 모드
 - 유니캐스트(Unicast)
  -- 한 호스트에서 다른 호스트로 1:1 전송하는 방식
  -- 정보 전송을 위해 Frame에 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식
  -- 가장 많이 사용되는 방식으로 Broadcast와 달리 CPU 성능에 문제를 주지 않음
 - 브로드캐스트(Broadcast)
  -- 네트워크 내 모든 호스트로 전송하는 방식(IPv4에서만 지원)
  -- Broadcast Domain(=Subnet)범위 이내에 모든 시스템에 Frame을 보냄
   --- 외부로 나가게 되면 Router 단에서 Drop 됨
  -- Broadcast를 받은 시스템은 CPU가 Packet을 처리하게 함(때문에 Broadcast가 많아지면 네트워크 트래픽도 증가하고 CPU 성능은 감소함)
 - 멀티캐스트(Multicast)
  -- 특정 그룹의 호스트들에게만 전송하는 방식
  -- 네트워크에 연결되어 있는 시스템 중 일부분에게만 정보를 전송 할 수 있는 것
  -- Router가 Multicast를 지원해야만 사용 가능
  -- Multicast Group에 가입, 탈퇴시 IGMP를 사용
 - 애니캐스트(Anycast)
  -- 그룹 내 인접한 호스트로 전송, 이후 전송받은 노드가 서버 역할을 수행하는 전송방식(IPv6에서만 지원)
  -- IPv4의 Broadcast가 사라지고 IPv6에서는 Anycast로 대체됨
 

TCP/IP 일반 - 프로토콜의 원리 및 이해

ㅇ ㅂㅇ

> 프로토콜의 원리 및 이해
 - 프로토콜 계층도

 - IP(Internet Protocol)
  -- 노드 간 데이터 전송 경로를 확립하며 IPv4에서 IPv6로 전환 중
  -- TCP/IP 네트워크에서 출발지, 목적지 IP 주소를 지정하게 되는 프로토콜
  -- Packet의 목적지 주소를 보고 최적의 경로를 찾아 패킷을 전송해주는 것이 주된 역할
  -- 비 신뢰성, 비 연결 지향적(신뢰성보다 효율성에 중점을 둠)


  -- IHL(HELN)
   --- (Header의 길이 / 4) Option이 없으면 20byte 이므로 5라는 값을 가짐
  -- Flags(3Bits)
   --- Reserved(Must be zero)
   --- DF(Don't Flagement)
    ---- Datagram의 분할 방지
   --- MF(More Flagment)
    ---- Datagram이 분할 될 때 마지막 조각이면 0, 아니면 1(0,1을 통해 마지막 조각을 판단하여 데이터의 끝을 판단)

 - ARP(Address Resolution Protocol)
  -- IP 주소를 MAC 주소로 변환하는 표준 프로토콜(IP 주소(32bit) -> MAC주소(48bit))
   --- 해당 IP 주소가 동일 네트워크에 있을 때 해당 목적지의 MAC 주소를 찾게 됨
   --- 해당 IP 주소가 외부 네트워크에 있을 때 Router의 MAC 주소를 찾게 됨
  -- ARP Request는 Broadcast, ARP Reply는 Unicast
  -- ARP는 한 번 찾은 MAC 주소를 ARP-Cache에 일정 기간 IP주소-MAC주소 형태로 보관함
   --- ARP-Cache 확인 : arp -a
   --- ARP-Cache 생성 : arp -s [IP주소] [MAC주소]
   --- ARP-Cache 삭제 : arp -d [IP 주소]
  -- 취약점 : 무조건 응답 수용함(요청하지 않은 응답에도 수용함)
   --- 이런 취약점을 노린 공격을 ARP Cache Posisoning 이라고 함

 - RARP(Reverse ARP)
  -- MAC 주소를 IP주소로 변환해주는 프로토콜(MAC 주소(48bit) -> IP 주소(32bit))

 - ICMP(Internet Control Message Protocol)
  -- IP의 특징인 비신뢰성과 비연결성의 한계를 보완하기 위해, 노드 간의 에러사항이나 통신 제어를 위한 메시지를 보고 할 목적으로 만들어진 프로토콜
  -- 에러를 Report 할 뿐, 해결하는 기능은 없으며 대표적으로 Ping이 있음
  -- ICMP는 TCP/UDP Header가 필요 없고 IP Header와 IP Data 부분에 ICMP 메시지를 포함해서 보냄
  -- ICMP 메시지의 종류
   --- Type 8 : Echo Request
   --- Type 0 : Echo Reply
   --- Type 3 : Destination Unreachable(CODE 영역에 원인 셜명)
   --- Type 4 : Source Quench(Flow Control 할 때, 전송속도 줄이라는 의미)
   --- Type 5 : Redirect ; Route 를 변경하라는 메시지
   --- Type 11 : Time Exceeded ; 시간 초과

 - IGMP(Internet Group Management Protocol)
  -- 멀티캐스트 그룹을 관리하기 위한 프로토콜(멀티 캐스트 멤버 가입, 수정, 탈퇴)
  -- 멀티캐스트 호스트와 라우터 사이에서 동작(같은 네트워크에서만 동작 / TTL 1)

 - TCP(Transmission Control Protocol)
  -- Transport Layer의 프로토콜로 신뢰성과 연결지향적 특징
  -- 혼잡제어와 흐름제어 기능 제공(Sliding Window) / 에러 제어도 가능(Checksum)
  -- 클라이언트와 서버의 데이터 교환을 위해 TCP 3-WayHandShake를 통해 TCP Session을 확립해야 함

  -- TCP Header Flag
   --- URG : Urgent Pointer 가 유효함
   --- ACK : Ack Number가 유효함
   --- PSH : 수신자에게 빨리 응용프로그램으로 전달 할 것을 지시
   --- RST : 연결을 Reset 할 것을 지시
   --- SYN : 연결 시작
   --- FIN : 연결 종료

 - UDP (User Datagram Protocol)
  -- Transport Layer의 프로토콜로 TCP와 달리 비신뢰성과 비연결지향적인 특징을 가짐
  -- Sequence Number와 Ack Number가 없어 순서제어와 흐름제어가 불가능
  -- 연결하는 과정이 없어 빠른 처리와 실시간성을 요구하는 서비스에 적합

 - TCP / UDP 비교






2016년 7월 20일 수요일

TCP/IP 일반 - 포트주소 의미와 할당 원칙

ㅇ ㅂㅇ

> 포트주소 의미와 할당 원칙
 - IP주소로 서버를 찾듯, 포트 번호는 서버 내의 프로그램(데몬)을 찾을 때 사용함
 - 포트 주소는 16bit의 정수 형태(0~65535)
 - 특권 포트 : 서버 측에서 적용되는 포트(0~1023, Well-known Port)
  -- 잘 알려진 서비스 특권 포트들(Well-Known Port)
   --- FTP(TCP 20 / TCP 21)
   --- SSH(TCP 22)
   --- Telnet(TCP 23)
   --- SMTP(TCP 25)
   --- DNS(TCP 53 / UDP 53)
   --- HTTP(TCP 80)
   --- POP3(TCP 110)
   --- NetBIOS(TCP 137 / TCP 138 / TCP 139)
   --- HTTPS(TCP 443)
 - 비 특권 포트 : 클라이언트가 접속시 운영체계에서 부여(1024~65535)
 - Registered Port(1024~49151)
  -- 특정 프로그램에서 등록한 포트 주소
 - Dynamic Port(49152~65535)
  -- 임의로 사용하는 포트 주소

TCP/IP 일반 - 데이터의 캡슐화

ㅇ ㅂㅇ

> 데이터의 캡슐화
 - 캡슐화(Encapsulation) [송신시 Encapsulation / 수신시 Decapsulation]
  -- SDU(Service Data Unit)에 Header나 Footer를 붙이는 행위 -> PDU가 됨
  -- 데이터에 각 레이어별 프로토콜 정보를 송신 시 추가하여 전송하는 동작
  -- 4계층 : TCP 헤더, 3계층 : IP 헤더, 2계층 : Frame 헤더/Tail
   --- 4계층의 패킷이 3계층을 통과하기 위해서 4계층 정보와 데이터를 3계층 정보로 싸고, 이를 다시 2계층 정보로 쌈, 캡슐화된 패킷이 스위치나 라우터 같은 네트워크 장비를 지나면, 쌌던 정보를 다시 풀어내기도 함



TCP/IP 일반 - CIDR, LSM

ㅇ ㅂㅇ

CIDR, LSM

> CIDR(Classless Inter-network Domain Routing)
 - Subnet Mask 값을 십진수로 변환해 '/24'같이 IP 주소 뒤에 붙여 표현

>LSM
 - VLSM(Variable Length Subnet Mask)
  -- 네트워크에서 다양한 길이의 Subnet Mask를 사용하는 것
  -- 이를 통해 좀 더 효율적인 네트워크 사용이 가능
  -- 예는 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10803&docId=145778798&qb=TGVuZ3RoIFN1Ym5ldCBNYXNr&enc=utf8&section=kin&rank=3&search_sort=0&spq=0&pid=SGIQ7dpySDlssZ/yefssssssssG-203975&sid=byCsTsyTwl0xrwI9TehZVg%3D%3D 에 담긴 글을 모두 읽어 보면 이해가 쉽게 될 듯 합니다.





TCP/IP 일반 - 서브네팅

ㅇ ㅂㅇ

> 서브네팅 설계 및 활용
 - Subnet Mask
  -- IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 구별자 역할
  -- 비트열이 1이면 네트워크 주소, 0이면 호스트 주소 부분
  -- CIDR(Classless Inter-network Domain Routing)
   --- Subnet Mask 값을 십진수로 변환하여 '/24' 같이 IP 주소 뒤에 붙여서 표현
  -- VLSM(Variable Length Subnet Mask)
   --- 어떤 네트워크에서 다양한 길이의 Subnet Mask를 사용하는 것
 - Supernetting
  -- 여러 개의 네트워크를 하나의 네트워크의 주소로 묶는 것
 - Subnetting
  -- 하나의 네트워크 주소를 여러 개의 하위 네트워크 영역으로 분할 하는 것
  -- 하위 네트워크를 Subnet 이라고 함

> 서브네팅(C클래스)
 - Default Subnetmask
  -- /24(CIDR 표시), 255.255.255.0 (10진표시)
 - Supernetting
  -- /22(255.255.252.0) => 4개 대역이 1개 슈퍼넷으로 사용
 - Subnetting
  -- /26(255.255.255.192) => 1개 대역이 4개 서브넷으로 사용


TCP/IP 일반 - IPv4, IPv6 Addressing

ㅇ ㅂㅇ

IPv4, IPv6 Addressing

> IPv4
 - 네트워크 주소와 호스트 주소로 이루어진 32bit 주소 체계
  -- 네트워크를 ABCD class로 나누어서 구분
 - IP 주소의 고갈로 기형적인 기술인 NAT 와 DHCP, Subnet 같은 기술이 생김
  -- NAT(Network Address Translation) : 사설 IP 들을 외부 IP(공인IP)로 매핑하는 방식
  -- Subnet : 네트워크를 Class로 나누는 체계가 아닌, 임의대로 Classless 하게 네트워크를 나누는 기술
  -- DHCP : 동적으로 IP를 할당하고 필요 없는 IP는 회수하는 기술
  -- CIDR : 서브네팅, 슈퍼네팅 등을 위한 주소 표기 및 지정 방법
 - 사설 IP(다음과 같이 권고 되고 있음 / 대부분의 네트워크 장비도 이렇게 셋팅)
  -- Class A : 10.0.0.0 to 10.255.255.255
  -- Class B : 172.16.0.0 to 172.31.255.255
  -- Class C : 192.168.0.0 to 192.168.255.255
 - Classful : Subnet 개념이 없는 것으로 대표적인 라우팅 프로토콜로 RIPv1, IGRP
 - Classless : Subnet 개념이 없는 것으로 대표적인 라우팅 프로콜로 RIPv2, EIGRP, OSPF, BGP 등

>IPv6
 - IPv4의 주소 고갈의 대응책으로 128bit의 주소 체계
 - Header 의 간소화롸 라우팅 속도가 빨라짐(IPv4와 IPv6의 Header가 다름)
 - 데이터 전달 방법 : Unicast / Anycast / Multicast


> IPv4 / IPv6 전환 기술
 - 듀얼스택 방식 : 하나의 시스템에서 IPv4, IPv6 모두 처리하는 방식
 - 변환기 방식 : IPv4와 IPv6 사이에 주소 변환기를 사용하는 방식
 - 터널링 : 종단간 가상 터널을 형성하여 통신하는 방식



2016년 7월 19일 화요일

네트워크 보안 - OSI 7 Layer

ㅇ ㅂㅇ

OSI 7 Layer 각 레이어의 기능 및 역할

> OSI(Open System Interconnection)
 - 통신절차를 기능 별로 구별해 놓은 국제 표준

> SDU(Service Data Unit)
 - 해당하는 각 레이어에서 프로토콜을 이용하는 사용자의 데이터

> PDU(Protocol Data Unit)
 - SDU의 앞 뒤에 Header 나 Footer를 덧 붙이는 데이터 캡슐화(Encapsulation) 과정의 결과물
 - 데이터 전송 시 주고 받게 되는 전송 단위
 - PDU = Header + SDU + (Footer)

> OSI 7 Layer
 - 국제표준화기구(ISO)가 1977년에 정의한 국제 통신 표준 규약으로 통신의 접속에서부터 완료까지의 과정을 7단계로 구분하였으며, 정의한 통신 규약으로 현재 다른 모든 통신 규약의 지침이 되고 있음
 - 7계층의 통신 규약군에 대해 각 계층별로 설명, 정의 한 것이 OSI 기본 참조 모델

 - 1 Layer(물리 계층 ; Physical Layer)
  -- PDU : Bit Stream(0과 1의 연속 / 전기적 신호)
  -- Protocol : None
  -- Equipment : Repeater / Hub
 - 2 Layer(데이터 링크 계층 ; Data-Link Layer)
  -- PDU : Frame
  -- Protocol : Ethernet / HDLC / PPP / ....
  -- Equipment : Bridge / L2 Switch
 - 3 Layer (네트워크 계층 ; Network Layer)
  -- PDU : Packet
  -- Protocol : IP / ARP / RARP / ICMP / ...
  -- Equipment : Router / L3 Switch
 - 4 Layer (전송 계층 / Transport Layer)
  -- PDU : Segment
  -- Protocol : TCP /UDP
  -- Equipment : L4 Switch
 - 5 Layer (세션 계층 ; Session Layer)
  -- Protocol : SSH / NetBIOS / ....
 - 6 Layer (표현 계층 ; Presentation Layer)
  -- Protocol : JPEG / MPEG / ...
 - 7 Layer (응용 계층 ; Application Layer)
  -- PDU : Data or Message (Text)
  -- Protocol : Telnet / HTTP / FTP / ...
  -- Equipment : PC / Server / IDS / IPS / L7 Switch


> 계층 별 네트워크 장비
 - 물리 계층(Physical Layer)
  -- Reapeater : 전기 신호 증폭
  -- Hub : Reapeater의 기능에 Hub에 붙은 모든 장비로 신호 전달(이로 인해 Hub에 붙은 모든 장비는 하나의 Collision Domain)
 - 데이터 링크 계층(Data-Link Layer)
  -- Bridge : Frame 의 MAC 주소와 MAC Table을 참조하여 어떤 포트로 Frame을 재조립해 내 보낼 지 결장 할 수 있는 장비
   --- Frame 을 S/W 로 처리되게 하는 방식이기 때문에 Switch 보다는 느림
   --- 모든 포트가 동일 속도
   --- Store-And-Forward 방식만을 사용
  -- Switch : Bridge 기반
   --- Frame 처리 절차를 칩에 구워 H/W 적으로 구현(ASIC ; Application Specific Integrated Circuit) 비교적 Bridge 보다 빠름
   --- 포트 별로 속도를 다르게 처리가 가능(각각의 포트가 하나의 Collision Domain 이기에 가능한 건지도)
   --- Store-And-Forward / Cut-Through 방식 사용
 - 네트워크 계층(Network Layer)
  -- Router : Packet의 목적지 IP를 보고 목적지와 연결된 인터페이스로 전송(경로 결정) / 네트워크 보안 / QoS
  -- L3 Switch
 - 전송 계층(Transport Layer)
  -- L4 Switch : 부하 분산(트래픽 분산)




서버 보안 - 서버 보안용 S/W 설치 운영

ㅇ ㅂㅇ

서버 보안용 S/W 설치 운영

> 시스템 취약점 점검 도구
 - NESSUS : 서버 - 클라이언트 구조로 작동하는 취약점 점검 도구
 - SARA(SATAN 기반) : 서버, IDS, 라우터 등의 보안 분석 도구
 - nikto2 : 웹 서버를 스캔하여 취약점 점검(오픈 소스)

> 시스템 침입 탐지 시스템 (IDS ; Intrusion Detection System)
 - Windows NT
  -- System log
  -- Applcaction log
  -- Security log

 - Unix
  -- pacct : 사용자 수행 명령어와 자원 사용량
  -- loginlog : 실패 로그인 내역
  -- sulog : su 명령어 사용 내역
  -- utmp : 현재 로그인 사용자 리스트 내역
  -- vtmp : 로그인 / 아웃 , 시스템 시작 / 종료 시간 기록

> 호스트 기반 점검 도구
 - COPS, Tiger, ttywatcher, nesus, SARA, nkito, Crack, Npasswd

>네트워크 기반 점검 도구
 - SATAN, COURTNEY, Nmap, etheral, ISS, Netlog, NFSwatch, TCPdump, CPM

> 무결성 점검 도구
 - trpwire : 가장 대표적인 무결성 점검도구로 시스템의 모든 파일에 대해 DB를 만들어서 추후 변동사항을 점검
 - Fcheck : tripwire 보다 조금 더 간편한 설치와 설정

> 접근 통제 및 로깅 도구
 - TCP Wrapper
  -- 슈퍼 데몬(Xinetd)의 영향을 받는 데몬들은 TCP Wrapper로 접근 제어와 로깅이 가능
  -- 도식화 : 클라이언트의 요청 -> Xinetd -> TCP Wrapper -> 데몬 실행
  -- /etc/host.deny 파일과 /etc/host.allow 파일을 통해 접근 통제 가능
   --- Deny 정책 적용 시 host.deny에 ALL:ALL 을 적어 놓고 host.allow에 데몬 종류:클라이언트 주소 를 적음
  -- 접근 통제 기록은 secure나 message 파일 등에 기록됨

> 스캔 탐지 도구
 - 방어적인 관점에서 스캔 탐지가 일어나면 이에 따라 방어 대책을 세워야 함
 - portsentry
  -- 포트 스캔을 실시간으로 탐지하고 TCP_Wrapper 와 결합하여 host.deny 파일에 자동으로 등록해 방어함
 - 실시간 네트워크 불법 Scan자동탐지 도구(RTSD ; Real Time Scan Detector)
  -- KISA 에서 과거에 개발한 것으로 오래되어 업데이트가 안되는 중
  -- 정보를 찾아 보려고 했으나 찾지 못함

> 로깅 및 로그 분석 도구
 - syslog
  -- 백그라운드 프로세스로 돌면서, 로그 메시지를 하나 이상의 개별 파일에 기록하는 데몬
  -- /etc/syslog.conf에 각종 로그 환경 설정을 추가, 변경, 삭제 가능
   --- 형식 : Facility.Priority Logfile-Location
    ---- Priority : Emerg > Alert > Crit > Err > Warn > Notice > Info > Debug > None
 - Webalizer
  -- 아파치 웹 로그를 분석해주는 멀티 웹 로그 분석 도구
 - 그 밖에 Swatch (Simple Watcher), Clear Log, LoWatch, netlog 등




서버 보안 - 서버관리자의 업무

ㅇ ㅂㅇ

> 서버관리자의 업무
 - 계정 관리, 운영 및 관리, 보안점검, 전산자료관리, 사용자별 보안설정, 소프트웨어의 설치 및 버전 업데이트, 성능관리, 장애관리, 백업 및 복구, 주변장치 관리, 전반적인 시스템 운영 및 유지관리
 - 시스템의 시작과 종료 및 재 시작
 - 프로세스 및 디스크, 메모리 관리
 - 네트워크 연결 및 상태 관리

서버 보안 - 서버 해킹 원리의 이해

ㅇ ㅂㅇ

> 서버 해킹 원리의 이해

 - 서버 해킹 유형 (원리)
  -- 버퍼 오버플로우 취약점 공격 : Stack OverFlow, Heap OverFlow
  -- 시스템 특성 이용 공격 : Race Condition, Format String
  -- 프로토콜 취약점 공격 : SYN Flooding, TCP Connection Hijacking, IP Spoofing, Sniffing
  -- 서비스 거부 공격(DoS, DDoS) : 파괴공격, 시스템 자원 고갈, 네트워크 자원고갈
  -- 기타 취약점 공격 : 사용자 도용, 소프트웨어 보안오류, 구성설정오류, E-mail 공격

 - 서버 해킹 단계
  -- 정보 수집 단계
   -- 포트스캐닝 등
  -- 시스템 침입 단계(root 권한 획득이 주 목적)
   --- exploit(root 계정 따내는 여러 프로그램)
   --- 서버 설정 오류 / 원격 버퍼 오버 플로우 취약점 / 계정 도용 / 패스워드 파일 획득 / 기타 취약점을 이용하여 침입
   --- 가장 단순하지만 강력한 대책은 최신 버전으로 업데이트(패치)
  -- 공격 경유지나 혹은 거점 마련
   --- 백도어 등을 설치하거나, 또 다른 공격의 공유지로 삼음


서버 보안 - 시스템 로그 설정과 관리

ㅇ ㅂㅇ

> 시스템 로그 설정과 관리
 - 시스템 로그는 시스템의 정확한 시간을 설정하는 것이 필수 항목
  -- rdate -s time.bora.net

 - UNIX / Linux 로그
  -- UTMP, WTMP, PACCT(Process Account), sh_history or .bash_history, lastlog, syslog, sulog, secure 등

 - Linux의 /var/log 디렉토리
  -- messages
   --- 로그인 기록에서 디바이스에 관련된 정보와 네트워크 등 다양한 메시지 정보 출력
   --- 콘솔에 출력되는 메시지들이 저장, 시스템 장애가 발생시 해당 파일을 점검하여 취약점 점검
  -- pacct
   --- 로그인부터 로그아웃까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보 수집 ; binary
   --- 명령어 : lastcomm
  -- history
   --- 사용자 별로 실행한 명령을 기록하는 로그
  -- lastlo
   --- 사용자별로 최근 로그인 시간 ; binary
   --- 명령어 : lastlog
  -- wtmp
   --- 전체 로그인 기록(최근에 사용자 로그인 및 로그아웃 한 정보) / utmp의 기록과 마찬가지 ; binary
   --- 명령어 : last
  -- utmp
   --- 현재 로그인 되어 있는 사용자에 대한 정보(/var/run/utmp에 있음) ; binary
   --- 명령어 : w / who / user / finger
  -- btmp
   --- 로그인이 실패한 경우 ; binary
   --- 명령어 : lastb
  -- sulog
   --- su 명령어와 관련된 로그
  -- dmesg
   --- 부팅부터 HW 에러
  -- secure
   --- 보안과 관련된 중요한 로그(사용자 인증과 관련된 로그 ; FTP나 SSH 같은 것들)
  -- httpd access_log, error_log
   --- 웹 서버에 대한 로그
  -- xferlog
   --- FTP로 어떤 자료가 오갔는 지 보여주는 로그





서버 보안 - 시스템 최적화

ㅇ ㅂㅇ

> 시스템 최적화
 - CPU
  -- top : CPU 와 Memory, Swap 에 대한 전체적인 모니터링 가능
  -- ps aux : CPU 와 Memory 사용량이 큰 PID 확인 가능
  -- pstree : 시스템에서 프로세스 간의 연결구조를 트리 구조로 보여줌

 - Memory
  -- free : 사용되는 메모리와 여유가 있는 메모리가 얼마인지 알려주는 간단한 명령어
  -- vmstat : 가상 메모리 상태를 확인(Swap-Out과 Swap-In을 볼 것)

 - Disk I/O
  -- df : 파일 시스템의 상태를 기초로 용량을 출력(df -k(KB 단위) , df -h (다양한 단위))
  -- du : 실제 디렉토리와 파일의 용량을 출력
  -- iostat : 디스크에 I/O 가 얼마나 나타나는지 모니터링

 - Network
  -- netstat : IP 및 포트 정보
  -- Ping
  -- traceroute
  -- tcpdump


서버 보안 - 시스템 접근통제기술

ㅇ ㅂㅇ

> 시스템 접근 통제 기술
 - 접근통제 정책
  -- 신분기반(Identitiy-based) 접근통제 정책
  -- 규칙기반(Rule-based) 접근통제 정책
  -- 역할기반(Role-based) 접근통제 정책

 - 접근통제 메커니즘
  -- 접근통제 목록(ACL ; Access Control List)
   --- 주체가 디렉토리나 파일과 같은 특정 시스템 객체에 접근 할 수 있는 허가받은 접근 종류들이 기록된 문서

  -- 통제 목록(CL ; Cotrol List)
   --- 주체에게 허가된 자원 및 권한의 목록

  -- 보안 레이블(SL ; Security Label)
   --- 저장되어 있는 데이터 항목, 물리적인 자원 및 사용자와 같은 객체에 부여된 보안 속성 정보의 집합으로 보안 레이블은 사용자, 타겟(자원), 접근 요청 또는 전송중인 접근통제 정보에 부여함

 - 접근통제 방식
  -- 강제적 접근통제(MAC ; Mandatory Access Control)
   --- 관리자 만이 객체와 자원들에 대한 권한을 할당 할 수 있으며, 자원에 대한 접근은 사용자에게 주어진 보안등급의 보안레벨에 기반함, 관리자만이 객체의 보안 레벨 또는 사용자의 보안등급을 수정 가능
   --- 주체의 권한을 기준으로 객체에 대한 접근을 제어

  -- 임의적 접근통제(DAC ; Discretionary Access Control)
   --- 자원의 접근 권한을 사용자 계정(그룹)에 기반함
   --- 사용자는 자원의 ACL이 수정됨으로써 자원에 대한 접근 권한을 부여 받음
   --- 사용자 또는 그룹이 객체의 소유자 일 때 다른 사용자나 그룹에 권한을 부여 할 수 있음
   --- 주체가 속한 그룹의 권한을 기준으로 객체에 대한 접근을 제어함

  -- 역할기반 접근통제(RBAC ; Role Based Access Control)
   --- 자원에 대한 접근은 사용자에게 할당된 역할에 기반함
   --- 관리자는 사용자에게 특정한 권리와 권한이 정의된 역할을 할당
   --- 사용자와 할당된 역할의 연관성으로 인해 자원들에 접근 할 수 있고 특정 작업을 수행 가능
   --- 최근에 많이 사용되며 관리자의 사용이 편리함

 - Linux
  -- iptables
   --- 리눅스 커널 안 패킷 필터링 기능을 가진 netfilter를 관리하기 위한 툴

 - Windows
  -- ipsec(Internet Protocol Security Protocol)
   --- 데이터 송신자의 인증을 허용하는 인증 헤더 (AH)와, 송신자의 인증 및 데이터 암호화를 함께 지원하는 ESP (Encapsulating Security Payload) 등, 두 종류의 보안 서비스를 제공
 

서버 보안 - 시스템 파일 설정과 관리

ㅇ ㅂㅇ

> 시스템 파일 설정과 관리
 - 유닉스/리눅스 디렉토리 구조(트리 구조)
  -- /bin : 시스템 기본 명령어가 포함되어 있는 필수 바이너리 파일
  -- /sbin : 관리자가 사용하는 시스템 운영에 필요한 명령어
  -- /bott : 부팅시 커널을 위한 프로그램 파일과 부트 이미지 디렉토리
  -- /dev : 장치 파일, 프린터나 터미널 같은 장치를 다루기 위한 특수 파일이 저장
  -- /mnt : CD-ROM과 플로피 디스크의 마운트 포인트를 제공하는 디렉토리
  -- /lib : 시스템 운영 및 프로그램 구동시 필요한 공유 프로그램이 들어있는 라이브러리 디렉토리
  -- /var : 내용이 자주 변경되는 가변 자료를 저장하는 디렉토리, 시스템 로그와 메일 송수신 저장 공간
  -- /tmp : 컴퓨팅 작업 시 생성되는 임시 파일 디렉토리
  -- /home : 일반 사용자의 작업 디렉토리
  -- /etc : 시스템의 환경 설정 및 주요 설정 파일이 포함된 디렉토리
  -- /usr : 각종 서드 파티 응용 소프트웨어 들이 설치되는 디렉토리
  -- /proc : 시스템 상태를 제공하기 위한 디렉토리와 파일들이 존재

 - Mount 하기
  -- 디바이스와 디렉토리의 연결
  -- # mount <디스크 or 파티션> <마운트 할 디렉토리>
  -- 재부팅 시 마운트 상태가 풀리기 때문에, /etc/fstab에 mount 내용을 기술하여 자동 마운트 시킴

 - Shell 설정 변경
  -- /etc/profile 에 설정된 값대로 shell에 적용
  -- /root/.bashre : 시스템 전체에 적용되는 함수와 alias
   --- 파일 안에 alias rm = 'rm -i' 라고 기술하면 rm 이란 명령어는 rm -i로 처리
  -- /root/.bash_profile : 사용자 환경설정과 시작프로그램
  -- /root/.bash_history : 사용자 최초 로그인 후 생성되며 사용자가 쉘에 입력한 명령어를 기록

 - 쿼타(Quota)
  -- 디스크에 사용량을 체크 & 감지하고 한 파티션에 너무 많은 디스크를 사용하게 되면 복구해줘야 할 때 사용

 - 파일시스템점검(File System Check & Recovery) : FSCK를 사용
  -- 저널링 파일시스템으로 자동 복구가 되지만, 복구가 불가능한 경우 수동으로 복구해줘야 할 때 사용
  -- 많은 시간을 필요로 하는 경우가 많음
  -- 반드시 검사하고자 하는 파일시스템은 Umount하고 검사해야 함

 - 퍼미션(Permission)
  -- umask : 파일은 666에서 빼고, 디렉토리에서는 777에서 뺌
  -- setuid(s, 4000) / setgid(s, 2000) / sticky bits(t, 1000)
   --- setuid, setgid는 해당 파일이 실행 될 때만 실행한 사용자에게 소유자(그룹)의 권한을 부여
   --- sticky bits는 주로 공유 디렉토리에 지정하며 파일을 root와 소유자만이 삭제, 수정 가능하게 함
  -- setuid 파일 찾기 : find / -user root -perm -4000 -print -xdev



서버 보안 - 계정과 패스워드 보호, 파일 시스템 보호

ㅇ ㅂㅇ

서버 보안

> 계정과 패스워드 보호
 - Linux/Unix Server
  -- 유닉스와 리눅스는 Passwd, Group, Shadow 세 개의 파일을 이용하여 사용자 정보와 그룹 정보고나리, 암호관리를 수행함
  -- 계정 생성, 수정, 삭제 : useradd / usermod / userdel
  -- 계정과 패스워드에 관련된 파일
   --- /etc/passwd : 시스템 로그인과 사용자 계정의 권한 정보
   --- /etc/shadow : 사용자의 암호화된 패스워드 정보, root(슈퍼 유저)의 접근만 허용
   --- /etc/group : 그룹 ID / 그룹 목록
   --- /etc/login.defs : 사용자 전체에 자동 할당되는 UID, GID 범위, 패스워드 유효기간, useradd 설정사항
   --- /etc/default/useradd : useradd 명령어로 계정 생성 시, 어떤 환경과 파일을 참조 할  것인가에 대한 정보
   --- /etc/skel : 계정 생성시 필요한 파일, 디렉토리를 저장하고 있는 디렉토리, 새 계정 생성시 그대로 해당 계정의 홈 디렉토리로 복사
  -- /etc/passwd 구성
   --- 사용자 계정이름 : x(패스워드가 암호화되어 저장됨을 의미) : UID : GID : 계정 정보 : 홈 디렉토리 : 쉘
   --- root : x : 0 : 0 : root : /root : /bin/bash
    -> Linux에서 사용자 계정 잠구는 법
      - /etc/passwd에서 쉘 정보에 /bin/false 또는 /bin/nologin 을 입력
      - passwd -l <계정명>
  -- /etc/shadow 구성
   --- root : $6$Pe9WPQy7$P/O7enNgG9ohKa : 15551 : 0 : 99999 : 7 : : :
   --- 사용자 계정 : 암호화된 패스워드 : 패스워드가 바뀌어진 日 수 : 패스워드 변경 할 수 있는 최소 日 수 : 패스워드 만료 경고 日 수 : 사용자 제한 이후 계정 정지까지 日 수 : 계정 만기일 : --- 사용 안함 ----
  -- SID(Security Identifier)
   --- 사용자나 그룹을 식별하는 숫자 값으로 각 접근 제어 항목(ACE)에 대한 접근의 허용, 거부 또는 감사 대상이 되는 사용자나 그룹을 식별하는 기능을 제공

 - Windows Server
  -- "컴퓨터 관리"나 net user 명령어로 계정 생성, 수정, 삭제
  -- 계정 생성 시 옵션
   --- 다음 로그온 시 반드시 암호 변경
   --- 암호 변경 불가
   --- 암호 사용기간 제한 없음
   --- 계정 사용 안함(사용 할 때까지 로그인 불가)
  -- 기본 제공 계정인 Administrator의 경우에는 계정 사용 안함으로 설정하거나 이름을 바꿔 놓는 것이 보안상 좋음
  -- Guest 계정은 불필요하면 계정 사용 안함으로 설정 (기본 값은 사용 안함)
  -- 암호 정책
   --- 암호의 복잡성
   --- 최근 암호 기억 : 비슷하게 못만들게 하기 위함
   --- 최대 암호 사용 기간
   --- 최소 암호 사용 기간
   --- 최소 암호 길이
   --- 해독 가능한 암호화를 사용해 암호 저장
  -- 계정 잠금 정책
   --- 계정 잠금 기간 : 0으로 하면 명시적으로 잠금 해제 할 때 까지 유지(0부터 99999분 까지 설정 가능)
   --- 계정 잠금 임계값 : 실패한 로그인 시도 최대 횟수를 설정(0부터 999회 까지 가능, 0이면 잠금 적용 안함)
   --- 다음 시간 후 계정 잠금 임계값을 0으로 설정

 - Window의 인증구조
  -- 윈도우는 모든 계정의 로그인이 LSA(Local Security Authority)의 사용자 접근 권한 검증과 접근 토큰(Access Token)에 의해 허가된 접근을 보장하게 됨. 이와 함께 SAM(Sequential Access Method)을 통해 사용자의 계정정보데이터베이스를 관리하며 SRM(System Resource Manager)은 커널 내에서 사용자 프로세스의 객체에 대한 정당한 접근검증과 이에 대한 감사(Audit)를 수행한다.

 - SSO(Single Sign On)
  -- 한 번의 인증을 통해 해당 사용자에게 허용된 시스템을 재 인증 절차 없이 접근이 가능하게 하는 접근통제기술

 - EAM(Extranet Access Management)
  -- 단일 로그인(SSO) + ACL(Access Control List) + Security Management

 - IAM(Identity Access Management)
  -- EAM + 계정관리

 - 패스워드 관리
  -- 안전한 비밀번호의 설정을 위해 영문 대문자, 영문 소문자, 숫자, 특수문자 32개(~ ! @ # $ % ^ & * ( ) _ + = { } [ ] | \ : ; ' " < > , . ? /) 중 2가지 이상으로 구성한 경우 최소 10자리 이상, 문자열 종류를 3가지 이상으로 구성한 경우 최소 8자리 이상의 길이로 구성하는 것이 바람직

> 파일 시스템 보호
 - Linux
  -- minix / ext2 / ext3 / ext4
  -- 파일 잠금, 보호(접근 제어 목록, 부여권한), 파일 시스템 일관성 유지, 파일 권한 관리(Permission)
  -- 퍼미션(Permission)
  -- 특수 권한
   --- SUID(SetUID), SGID(SetGID), Stiky bit
  -- Sticky bit 
  -- 무결성 점검 도구
   --- Tripwire, Fcheck, AIDE, samhain, claymore
  -- 접근통제 및 로깅 도구
   --- TCP_Wrapper, Xinetd, IPFilter(Solaris)
  -- 시스템 접근통제 기술
   --- 접근통제정책, 접근통제메커니즘, 접근통제보안모델
 - 클라우드 파일 시스템
  -- Ceph
  -- GlusterFS(글러스터)
  -- Google 파일시스템(GFS)
  -- Hadoop 분산파일시스템(하둡)
  -- Lustre 파일시스템
  -- Panasa 파일시스템
  -- PVFS2
  -- OASIS : 한국전자통신연구원 저장 시스템 연구팀에서 개발한 객체 기반 클러스터 파일 시스템
   
 - Windows
  -- FAT12 / FAT16 / VFAT / FAT32
  -- NTFS 시스템 사용
  -- 관리 공유 폴더 제거 / 마지막에 로그인한 계정 숨김 설정 / 예약 작업 수시로 체크하여 이상한 작업의 자동 실행 막음 / 원격 레지스트리 서비스 중지





2016년 7월 15일 금요일

클라이언트 보안 - 도구활용 보안 관리

ㅇ ㅂㅇ

도구활용 보안 관리

> 클라이언트 보안도구 활용
 - 클라이언트 보안도구는 사용자가 손쉽게 클라이언트의 취약점을 조치하고, 조직의 보안관리자가 지속적으로 클라이언트 보안 관리를 할 수 있도록 지원하는 도구임
 - BlcakICE
  -- 일종의 방화벽
  -- 외부에서 자신의 컴퓨터에 접근하는 것을 탐지 / 제어하는 프로그램
  -- 침입 차단 / 어플리케이션 보호 / IDS(침입탐지시스템 ; Intrusion Detection System) 기능 제공
 - Snort
  -- 공개 네트워크 IDS
  -- 다양한 OS 지원 / Rule 설정 가능

> 클라이언트 방화벽 운영
 - 외부로부터 시도되는 각종 공격과 유해한 데이터를 사전에 차단하고 내부정보의 외부 유출을 통제하는 역할을 함
 - Windows 방화벽(IPsec ; Internet Protocol Security)
 - Linux/Unix 방화벽(iptables)

클라이언트 보안 - 공개 해킹도구에 대한 이해와 대응

ㅇ ㅂㅇ

공개 해킹도구에 대한 이해와 대응

 > 트로이 목마 S/W
  - 주로 웹페이지, 이메일, P2P 다운로드 사이트 등에서 유용한 프로그램으로 가장해 프로그램 내에 숨어서 의도되지 않는 기능을 수행
  - 대표적인 툴 : ALO4FREE.COM / Shark2 / NetBus / Back Orific

 > 크래킹 S/W
  - 루트킷(Rootkit)
   -- 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음
   -- 대표적인 툴 : Irk5
  - 안티 루트킷(Anti-Rootkit)
   -- 루트킷을 찾아내는 프로그램
   -- 대표적인 툴 : Icesword, chkrootkit, TDSSkiller
  - 패스워드 크래킹(Password Cracking)
   -- 시스템 및 네트워크에 접근할 수 있도록 해당 패스워드를 몰래 알아내려는 공격
   -- 대표적 공격 방법 : Brute Force Attack / Dictionary Attack / Password Guessing / Rainbow Table 등
   -- 대표적인 툴 : John the Ripper / pwddump / LOphtCrack . ipccrack / chntpw(to reset pw) / ERD Commander
  - 포트 스캐닝(Port Scanning)
   -- Port Scanner에 의해 목적지 시스템에 대하여 접속 가능한 port를 찾기 위한 행위
   -- 다중 취약점 스캔 : SAINT / sscan2k / vetescan / mscan
   -- 특정 취약점 스캔 : cgiscan / winscan / rpcsan
   -- 은닉 스캔 : Nmap / stealthscan
   -- 네트워크 구조 스캔 : firewalk / Nmap
   -- 스캐닝 기법
    --- Openning Scanning : TCP Connect Scanning
    --- Half-Open Scanning : SYN Scanning
    --- Stealth Scanning : FIN / X-MAS / NULL Scanning
    --- More Advanced Scanning : Spoofed Scanning
   -- 포트 스캐닝의 구분
    --- TCP 포트 스캐닝
     >> 특정 Flag 값을 설정한 뒤, 패킷을 보내고 그에 대한 응답을 확인
    --- UDP 포트 스캐닝
     >> 포트가 열린 상태 : 아무런 응답 없음
     >> 포트가 닫힌 상태 : UDP 패킷이 목적지에 도달하지 못하였다는 메시지
      --> UDP는 송신도중 패킷이 유실되도 반응이 없어 신뢰성이 떨어짐
  - Nmap 사용법
   -- 스캔 타입
    --- -sS : TCP Syn Scan
    --- -sF / -sX / -sN : FIN / X-MAS / NULL Scan
    --- -sU : UDP Scan
    --- -sP : Ping Sweep
    --- -b : FTP Bounce Attack
   -- 스캔 옵션
    --- -P0 : Don't Ping before scanning ; ping으로 사전 조사하는 과정을 없앰(네트워크가 살아 있는 것을 알고 있을 때 사용)
    --- -PT : ICMP Request Packet을 보내고 응답을 기다리는 대신에 TCP ACK를 보내 응답을 기다림
    --- -PS
    --- -PB
    --- -O : 운영체제 확인
    --- -p
    --- -S : Spoofing
    ex) #./Nmap -p 1-30,110,65535 203.x.x.x
      -> 203. x.x.x 의 1~30번, 110번, 65535번 포트를 스캔함

 > 키로그 S/W
  - 컴퓨터 사용자의 키보드 움직임을 탐지해 ID나 패스워드, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼 가는 해킹 공격을 키로그 공격이라 함
  - 공격원리는 어플리케이션에 도달하는 message, mouse action, Keystrokes 등의 이벤트들을 가로채는 HOOK 매커니즘을 이용
  - 대표적인 툴 : Winhawk, Key~~로 시작하는 툴들



클라이언트 보안 - 메일 클라이언트 보안

ㅇ ㅂㅇ

메일 클라이언트 보안

 > 메일 클라이언트 보안의 종류
  - 메일 계정 관리, 메일 보안 관리, 메일 유지 관리, 메일 필터링(차단), 아웃룩 익스프레스 보안 이메일 인증서 설정

 > PGP(Pretty Good Privacy)
  - 인터넷에서 사용되고 있는 이메일 보안 시스템의 하나로 기밀성, 인증, 압축, 분할 기능 제공
  - 데이터 암호화와 복호화가 가능한 프로그램
  - IETF에서 표준으로 채택한 PEM과 비교
  - 수신 부인 방지, 메시지 부인 방지 기능이 없음
  - 메시지의 비밀성을 위해 공개키 암호기술을 사용(RSA, IDEA 등)
  - 메시지의 무결성을 위해 메시지 인증을 사용
  - 메시지의 생성, 처리, 전송, 저장, 수신 등을 위해 전자 서명을 사용

 > S/MIME(Secure Multi-Purpose Internet)
  - 표준보안 메일 규약으로 송/수신자를 인증하고 메시지의 무결성을 증명함
  - MIME에 전자서명과 암호화를 더한 형태로 RSA 암호시스템을 사용







2016년 7월 14일 목요일

클라이언트 보안 - 웹브라우저 보안

ㅇ ㅂㅇ

웹 브라우저 보안

 > 인터넷 익스플로러의 자체 보안 기능
  - 일반 탭 : 임시 인터넷 파일, 열어본 목록(History), 쿠키, 저장된 암호 및 웹 양식 정보를 삭제 가능
  - 보안 탭 : 안전한 인터넷의 사용을 위해 보안 수준을 지정 가능
  - 개인정보 탭 : 사이트 관리, 팝업 차단, 고급(안전한 인터넷의 사용을 위해 보안 수준을 지정 할 수 있음)
  - 고급 탭 : 보안 부문의 주요 선택 설정 가능

 > 브라우저에서 개인 정보를 수집하는 기술
  - 쿠키(Cookie) & 슈퍼 쿠키(Super Cookie)
   -- 쿠키 : 인터넷 웹 사이트의 방문기록을 남겨 사용자와 웹 사이트 사이를 연결해주는 임시 파일
   -- 슈퍼 쿠키 : 쿠키와 마찬가지로 사용자의 웹사이트 방문기록 등을 알 수 있는 새로운 형태의 쿠키 파일로 사용자가 컴퓨터 내의 쿠키를 삭제해도 컴퓨터 이용자들이 어떤 사이트를 방문했는지 파악 할 수 있음
    * 슈퍼 쿠키를 사용 할 경우 사생활 보호 모드로 인터넷에 접속하더라도 추적 할 수  있고, 일반 쿠키와 달리 쿠키를 만들지 않은 웹 사이트에서도 기록 추적이 가능함
   >> 사용자의 웹 사이트 기록 및 비밀 번호 등 중요한 정보가 담기기 때문에 공용 컴퓨터 사용시 삭제는 필수
  - 비콘(Beacon ; Web Bug)
   -- 근거리 무선 통신 방식을 사용 하는 무선통신 장치, IoT 시대에 화두가 되었던 장비
  - History Stealing
  - Fingerprint

 > HTTP(Hyper-Text Transfer Protocol) 프로토콜
  - 웹상에서 파일(텍스트, 이미지 등)을 주고 받기 위한 프로토콜로 TCP/IP와 관련된 프로토콜(포트 번호 : 80)
  - 한 번 접속해서, 정보를 주고 받고 접속을 끊어버리는 특징(그로 인해 세션과 쿠키를 사용)
 * HTTP 요청 방식(Method)
  - GET 방식
   -- 클라이언트가 서버로 전송하는 정보를 URL에 담아 전송
   -- 서버에게 자원 요청시 URL에 보낸 자료가 노출 될 수 있음(보안 정보의 노출 우려)
   -- 보낼 수 있는 자료의 양이 한정되어 있음
   -- HTML 파일인 경우 내용을 화면에 보여줌
  - POST 방식
   -- 요청 사항을 HTTP 헤더 안에 넣어서 서버로 전송하는 방식
   -- 사용자가 폼에 정보를 입력하고 Sumit 버튼을 클릭, 브라우저는 서버에 HTTP POST 요청을 보냄

 * HTTP 1.0
  - 한 번에 한 종류의 데이터만 받을 수 있음(이미지와 텍스트를 받으려면 총 두 번의 접속이 필요)
   > 요청 방식
    - GET : GET 방식으로 서버에 리소스(정보)를 달라고 요청
    - HEAD : GET 방식과 유사하지만, 요청한 리소스가 아닌 Header 만 채워서 응답(해당 정보를 잘 처리하는지 테스트)
    - POST : POST 방식으로 서버에 리소스를 달라고 요청

  * HTTP 1.1
   - 한번에 이미지와 텍스트를 받을 수 있음
    > 요청 방식
     - GET(Select)
     - HEAD
     - POST(Insert)
     - OPTION : 서버가 요청한 리소스에서 어떤 요청방식들을 처리해주는 지 알려줌
     - PUT(Update) : 서버에 요청한 리소스를 저장
     - TRACE : 클라이언트의 요청을 그대로 반환(루프백 메시지를 위한 요청을 함; echo 서비스로 서버 상태를 확인하기 위한 목적으로 사용)
     - CONNECT : 암호화 되지 않은 HTTP 프록시를 통해 SSL 암호화 통신(HTTPS)를 용이하게 함
     - DELETE : 명시된 리소스를 서버가 삭제 할 것을 요청

  * HTTP 상태코드
   > 1xx : 조건부 응답 / 정보
    - 100 : 계속
   > 2xx : 성공
    - 200 : 성공, 서버가 요청을 제대로 처리함
    - 201 : 서버가 성공적으로 요청한 새 리소스를 생성(PUT 메소드??)
    - 202 : 허용, 요청을 받았으나 아직 처리하지 못함
    - 204 : 컨텐츠 없음, 요청을 처리했지만 컨텐츠를 제공하지 않음
    - 205 : 컨텐츠 재 설정 요청을 처리했지만 컨텐츠를 표시하지 않음 그리고 문서를 재 설정할 것을 요구
    - 206 : 일부만 성공
   > 3xx : 재전송
    - 300 : 여러 선택 항목
    - 301 : 영구 이동, 요청한 페이지가 다른 위치로 영구이동함
    - 302 : 임시 이동, 요청한 페이지가 다른 위치로 임시로 이동, 여전히 현재 페이지를 요청해야 함
    - 303 : 기타 위치 보기, 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우
    - 304 : 수정되지 않음, 마지막 요청 이후 요청한 페이지가 수정되지 않음
    - 305 : 프록시 사용, 요청자는 프록시를 사용하여 요청한 페이지만 접근할 수 있음
   > 4xx : 클라이언트 측 에러(요청 오류)
    - 401 : Forbidden
    - 403 : 유효한 요청에 대해 서버가 응답을 거부(권한이 없는 401과 다름)
    - 404 : NOT Found
   > 5xx : 서버 측 에러
    - 500 : 내부 서버 오류
    - 501 : 해당 메소드를 인식 못하거나 기능이 없음

    - 자세한 정보를 원하는 분들을 위해
 

 

 > HTTPS
  - 본질적인 HTTP와 동일한 프로토콜이나 보안 전송 방식인 SSL을 사용하여 네트워크를 통한 모든 데이터의 무결성과 프라이버시를 보호 받음

 > S-HTTP
  - HTTP 프로토콜에 보안 기능을 포함 한 것으로 사용자가 인터넷을 통해 전송하는 웹 문서의 암호화 및 전자 서명을 지원하는 프로토콜

 > SSL
  - 인터넷상에서 웹 브라우져와 웹 서버 간에 데이터를 안전하게 주고 받을 목적으로 전자상거래등의 보안을 위해 Netscape 사에서 개발한 암호화 통신 프로토콜





클라이언트 보안 - 레지스트리 활용

ㅇ ㅂㅇ

레지스트리
 - 시스템을 구성하기 위해 필요한 정보를 저장한 중앙계층형 데이터베이스

하이브(Hive)
 - 레지스트리 데이터베이스는 하이브라는 레지스트리 하위 집합이 들어있는 여러 개의 파일로 구성되어 있다. 하이브는 하나 이상의 레지스트리 키와 서브키, 설정 항목이 들어 있다.

레지스트리의 루트키와 저장정보
 - HKEY_CURRENT_USER(HKCU)
  -- 현재 로그온 되어 있는 사용자에 따라 달리 적용 되는 제어판 설정, 네트워크 연결, 응용 프로그램 등과 관련된 정보
  -- 윈도우가 설치된 컴퓨터 환경설정에 대한 정보
  -- 사용자의 프로필 파일 ntuser.dat에 저장되어 있음
 - HKEY_USERS(HKU)
  -- 컴퓨터의 모든 사용자 프로필 정보
  -- 데스크 탑 설정과 네트워크 환경에 대한 정보
 - HKEY_LOCAL_MACHINE(HKLM)
  -- 설치된 하드웨어와 소프트웨어 설치드라이버, 프로그램 설정에 대한 정보
 - HKEY_CLASSES_ROOT(HKCR)
  -- OLE 데이터(파일과 프로그램간의 연결에 대한 정보)와 파일의 각 확장자에 대한 정보
  -- HKEY_LOCAL_MACHINE\Software\Classes 복사본
 - HKEY_CURRUNT_CONFIG(HKCC)
  -- 시스템 시작 시 컴퓨터에서 사용하는 하드웨어, 프로필 등의 정보
  -- 디스플레이와 프린터에 관한 정보

 -> 악성코드 구동을 위해 주로 HKEY_CURRENT_USER와 HKEY_LOCAL_MACHINE이 이용







2016년 7월 7일 목요일

클라이언트 보안 - 바이러스와 백신

ㅇ ㅂㅇ

바이러스와 백신

바이러스(Virus)
 > 바이러스(Virus)
 - 다른 프로그램에 기생해서 실행 (독자적 실행 불가)
 - 자기 자신 또는 자신의 변형을 복사하여 컴퓨터 작동에 피해를 주는 명령어 들의 집합
 - 파일 전송 기능이 없어 네트워크 대역폭에는 영향을 끼치지 않음
 - 대표적으로 1994년 04월 26일 CIH 바이러스가 있음

 > 웜(Wrom)
 - 독자적으로 실행(기억장소에 코드나 실행파일로 존재)
 - 빠른 전파력을 가지는 소프트 웨어
 - 네트워크를 사용해서 자신을 복사하기에, 네트워크 대역폭을 잠식함
 - 대표적으로 2001년 09월에 발생한 님다(Nimda)

 > 악성 BOT
 - ROBOT의 줄인 말로 수 많은 PC에 소프트웨어를 설치하여 원격에서 명령을 주어 특정 사이트를 공격하는 프로그램

비 바이러스
 > 트로이 목마(Trojan)
 - 자기 자신을 복제하지는 않지만, 악의적 기능을 포함하는 프로그램
 - 정상 기능의 프로그램으로 가장하여 의도하지 않은 기능을 수행하는 코드
 - 유틸리티 프로그램에 내장되거나, 그것으로 위장하여 배포되어짐
 - 대표적인 것으로는 백오리피스 같은 프로그램이 있음

 > 스파이 웨어(Spyware)
 - 타인의 컴퓨터에 잠입해 중요한 정보를 사용자 몰래 수집 후 불법 유출시키는 소프트웨어

 > 에드웨어
 - 사용자의 동의 없이 컴퓨터 사용시 자동적으로 광고가 표시되게 하는 악성코드 소프트웨어

 > 해킹툴
 - 간편하게 해킹 공격을 수행할 수 있게 해주는 프로그램

감염 영역(부위)에 따른 분류
 - 파일 바이러스 (File)
  -- 일반적으로 실행 가능한 프로그램(*.EXE 등) 파일에 감염
  -- 특히 윈도우에서는 다양한 형태의 실행파일이 존재하므로 감염되는 파일 종류도 BIM, OCR, SCR 등으로 다양
  -- 도스 파일 바이러스, 윈도우 파일 바이러스 등

 - 부트 바이러스 (Boot)
  -- 부트 영역에 감염되는 바이러스
  -- 부트 섹터는 특히 바이러스가 상주하기 좋은 위치
  -- 바이러스는 부팅과정에서 이미 제어권을 획득하여 동작하기에 실제로 부팅과정 후에 실행될 수 있는 바이러스 검출 프로그램 등을 쓸모 없게 만듬

 - 부트 / 파일 바이러스 (Boot/File ; Multipartite Virus)
  -- 부트 영역 및 파일을 동시에 감염시키는 바이러스

 - 메모리 상주 바이러스
  -- 메모리 상주코드에 바이러스를 첨부시키는 데 이러한 상주 코드는 시스템이 동작되는 동안 여러번 활동하게 됨

 - 매크로 바이러스 (Macro)
  -- 응용 프로그램에 포함되는 매크로 기능을 이용하여 자신을 복제하는 바이러스
  -- 예로 MS 오피스의 매크로 기능을 이용하여 문서 파일을 감염시키는 바이러스

 - 스크립트 바이러스 (Script)
  -- 자바 스크립트와 비주얼 베이직 스크립트로 작성된 웜 또는 바이러스

바이러스 예방 대책
 - 정품 소프트웨어 사용을 생활화
 - 다운로드는 정식 홈페이지 및 믿을 만한 사이트에서 할 것
 - 출처가 불분명한 전자 우편은 열지 않고 삭제 할 것
 - MS 아웃룩 익스프레스 사용자는 보안 패치를 주기적으로 설치 할 것
 - 데이터 백업을 생활화 할 것
 - 최신의 백신 프로그램으로 버전 업데이트 할 것
 - 백신  및 PC 방화벽을 동시에 사용 할 것

백신 프로그램의 기능
 - 악성 프로그램 예방
 - 악성 프로그램 검출 및 감염 여부 확인
 - 악성 프로그램 복구(치료/삭제)









2016년 7월 6일 수요일

클라이언트 보안 - 윈도우 보안(설치 및 관리/공유자료 관리)

ㅇ ㅂㅇ

윈도우 보안
 > 설치 및 관리
  - 정품 파일 설치 및 라이센스 사용하여 권장 사양에 설치 할 것
 > 라이센스 모드
  - Per Server : 서버에 동접하는 클라이언트 숫자에 따라 라이센스를 구매하는 방식
  - Per Client : 클라이언트 숫자에 따라 라이센스를 구매하는 방식
 > 사용자 계정 관리
  - 사용자 계정 컨트롤(UAC ; User Acount Control) : 관리자 수준의 권한이 필요한 변경 사항이 있을 때, 사용자에게 이를 알려 주는 것

 > 공유폴더 관리
  - 공유 폴더
   -- NTFS는 사용자 계정이나 그룹에 대해서, 파일과 폴더에 퍼미션(Permission)을 줄 수 있음
   -- Everyone 그룹에 대해서는 기본적으로 "읽기" 권한만 주어짐
    --- 로컬에서 기본폴더를 만들면 Everyone 그룹에 대해서 "모든 권한"이 주어짐
  - 숨은 공유 폴더 (공유폴더 이름 끝에 '$'를 붙이는 폴더)
   -- 네트워크 공유 목록에서 공유 폴더를 안보이게 함
   -- 접근하기 위해서는 공유 폴더 이름을 통해 직접 접근하여야 함
  - 관리를 목적으로 하는 기본적인 공유 폴더 (ADMIN$, IPC$, C$ 등)
   -- 모두 숨은 공유로 만들어짐
   -- cmd(명령 프롬포트)에서 "net share" 명령어로 확인 가능
   -- 네트워크 접근 사용만을  제한 할 수 있고, 로컬 접속은 제한 불가
   -- 보안상 사용하지 않는 경우 비활성화하는 것이 좋음


  * 사용하지 않는 공유 폴더 제거법
   1. [시작] - [실행] - "compmgmt.msc" 실행 or [내 컴퓨터] 아이콘 오른쪽 마우스 클릭 후 [관리] 실행
   2. [공유 폴더] - [공유] 항목에서 확인 후 사용하지 않는 공유 폴더는 공유 중지함
    - IPC$는 공유 중지가 되지 않음


   3. 리부팅 시 자동으로 공유폴더를 사용하지 않도록 레지스트리 수정함
   4. [시작] - [실행] - "regedit" 실행
   5. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 경로로 이동 후 오른쪽 마우스 클릭하여 [새로만들기] - [DWORD(32비트) 값]을 선택하여 값을 생성 후 이름을 "AutoShareWks" 로 작명하고 입력 값은 "0" 으로 설정



   6. IPC$ 은 제거가 되지 않아 널 세션을 제거 하는 방법을 이용함
   7. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA로 이동 후 "restrictanonymous"의 값을 1(REG_DEWORD 타입)로 변경 (기본은 0)
 












2016년 7월 5일 화요일

시스템 보안 - 운영체제 별 주요 기능

ㅇ ㅂㅇ

유닉스
 > 구성
  - 커널(Kernel)
   -- OS의 핵심으로 주기억장치에 상주하여 자원을 관리
   -- 입출력 / 메모리 / 프로세스 / 파일관리의 부분으로 나눔
   -- 쉘에서 지시한 작업을 수행
  - 쉘(Shell)
   -- 커널과 사용자간의 인터페이스를 제공
   -- 사용자가 입력하는 명령의 입/출력을 수행하며 프로그램을 실행시킴
   -- 명령어 해석기 / 번역기라고 함
  - 파일 시스템(File System)
   -- 계층적 트리 구조를 가지고 있으며 아래와 같이 구성되어 있음
    --- 부트 블록(Boot Blocks) : 파티션의 첫 부분에 예약되어 있는 블럭들로 부팅시 필요한 코드 저장(커널 적재 코드 등)
    --- 슈퍼 블록(Super Block) : 파일 시스템 당 한 개씩 생성 / 전체 파일 시스템에 대한 정보 저장
    --- 아이노드(I-Nodes) : 파일 이름을 제외한 모든 파일과 디렉토리에 대한 정보를 저장
    --- 데이터 블록(Data Blocks) : 실제 데이터가 저장됨
 > 특징
  - 멀티 태스킹 및 멀티 유저
  - 이식성 : C 언어 기반으로 대부분의 컴퓨터에 이식 가능
  - 계층적 파일시스템 구조
  - 보안과 접근보호 : 파일접근 권한을 User, Group, Other로 구분하며 권한에 따라 Read, Write, Execute 기능 부여
  - 입출력 방향전환 및 파이프 기능( " | " )
  - 장치 독립성 : 모든 주변장치를 하나의 파일처럼 간주
  - 유연한 커뮤니케이션 : 통신에 관한 다양한 유틸리티 제공
 > 기능
  - 프로세스 실행 제어
  - CPU 스케쥴 관리
  - 주기억장치 할당
  - 파일시스템 관리
  - 주변장치 접근관리
  - 서비스 실행 지원

윈도우
 > 특징
  - GUI 환경 : Icon 이라는 그림 명령을 통해 쉽게 프로그램에 접근 할 수 있음
  - Multi-tasking : 한 번에 여러 가지 작업을 동시에 수행 가능
  - OLE(Object Linking Embedding) : 개체 연결 포함 기능으로 프로그램 간에 개체(그림, 표 등)을 교환 할 수 있음
  - 정보의 전송 통합 : 두 개 또는 그 이상의 응용 프로그램에서 작업하여 상호 간에 정보를 전송 통합 할 수 있으며, 이는 클립보드라 불리는 Desktop Accessory를 통해 이루어짐
  - 응용프로그램 : 윈도우는 사용자를 위하여 여러 가지 응용 프로그램을 제공

리눅스
 > 특징
  - 멀티 태스킹 지원
  - 다중 사용자(Mulit-user) 지원
  - GUI 환경 지원
  - 다양하고 탁월한 성능의 파일시스템 제공
  - 공유 라이브러리 지원
  - TCP / IP와 BSD 소켓 지원
  - 가상메모리 지원
  - 다중 프로세스 및 클러스터링 기능

보안 운영체제(Secure OS)
 > 특징
  - 운영체제 차원의 근본적인 보안대책
  - OS 레벨의 강력한 해킹 방지
  - 시스템 성능 저하 최소화
  - 기준 응용과의 완전한 호환성 유지
  - 웹 서버 보호, 데이터베이스 보호, 통합 보안관리체계 구축
  - Kernel Mode에 Security Kernel을 통한 정보자원 보호
 > 기능
  - 사용자 인증 및 제어
  - 접근 권한 통제(Authorization) ; Authorization = Authentication + Access Control
   -- 사용자 인증(Authenticaction)
   -- 접근 통제(Access Control)
  - 침입 탐지 및 방어(Intrusion Detectuon & Prevention)
  - 보안 감사
  - 호스트 방화벽
  - 자체 보호
  - 다중보안등급 및 보안영역










시스템 보안 - 분산 시스템

ㅇ ㅂㅇ

분산 시스템

 > 개요
  - 분산 되어 있는 컴퓨터에서, 작업이 나누어 처리되고 그 결과가 서로 호환되도록 연결되어 있는 시스템
  - 분산 처리 시스템은 노트(Node) 또는 사이트(Site)의 집합으로 정의 할 수 있음
  - 투명성(Transparency)를 보장해야 함
   -- 위치 투명성 : 컴퓨터의 실제 위치를 몰라도 접근 가능
   -- 이주 투명성 : 자원 이동에 제한이 없음
   -- 병행 투명성 : 사용자의 위치를 몰라도 다른 사용자와 자원의 공유 가능
   -- 복제 투명성 : 사용자에게 통지 할 필요 없이 자유롭게 복제 가능

 > 특징
  - 사용자에게 동적으로 할당 할 수 있는 일반적인 용도의 자원이 각 노드에 분산되어 있고, 중복되어 있음
  - 분산된 노드들은 통신 네트워크를 이용하여 메시지를 주고 받음으로서 정보를 교환함
  - 시스템을 구성하는 노드들은 각기 어느 정도의 자율성(Autonomy)을 가짐
  - 시스템 전체의 정책을 결정하는 어떤 통합적인 제어기능이 있어야 함

 > 장점
  - 자원 공유
   -- 노드들이 서로 연결되어 있어, 한 노드의 사용자와 다른 노드들의 사용자 간에 자원을 공유하여 사용 가능
  - 연산속도 향상
   -- 특정 연산이 동시에 수행 가능 한 부 연산들로 나눌 수 있다면 부 연산들을 여러 노드들에 분산시켜 연산 속도를 높일 수 있음(부하 공유)
  - 신뢰성
   -- 분산 시스템 내 한 노드에 고장이 발생하여도 나머지 노드들이 계속 동작함
   -- 시스템이 여러 범용 컴퓨터들로 구성되어 있으면 이들 중 어느 한 노드의 고장이 다른 노드들에게 영향을 주어선 안됨
  - 통신
   -- 여러 노드들이 통신 네트워크를 통해 연결되어 있을 때 다른 노드에 있는 사용자들은 정보를 교환 가능
   -- 하위 수준에서는 메시지들이 시스템들 간에 전송됨




시스템 보안 - 파일 시스템 관리

ㅇ ㅂㅇ


파일 시스템 관리

 기본 용어
 > 파일 관리자
  - 운영체제 중에서 기억장치 관리시스템의 한 부분으로 주로 보조기억장치 상의 파일을 총괄 관리한다.
  - 파일관리자는 적절한 제어방식을 통해 정보를 보관하는 개인 저장장소를 제공하고, 정보를 여러 사용자가 공동으로 이용할 수 있게 하는 수단을 제공

 > 파일 할당 테이블(FAT ; File Allocaction Table)
  - 파일이 저장되어 있는 클러스터들의 위치를 제공하는 일종의 파일 배치표
  - 운영체제는 새로운 파일에 대해 각 클러스터(주소)의 위치와 순서를 기록한 FAT 엔트리를 만듬
  - 파일을 읽어오는 것은 디스크에서 먼저 디렉토리 등록정보와 FAT을 참조하여 그 파일의 시작 클러스터와 마지막 클러스터에 있는 내용을 읽음

 디렉토리 구조
 - 1 단계(단일) 디렉토리 구조 
  -- 모든 파일이 같은 디렉토리에 존재하며, 파일 이름이 유일한 구조
  -- 파일이나 사용자의 수가 증가하면 파일 관리가 복잡해짐
  -- 파일명은 일반적으로 내용과 관련된 이름을 사용하며 파일명의 길이는 시스템에 따라 제한됨
 - 2 단계 디렉토리 구조 (2계층 구조)
  -- 중앙에 마스터 디렉토리(MDF)가 있고, 각 사용자의 디렉토리(UFD)가 하위에 있는 구조
  -- 마스터 파일 디렉토리는 사용자 파일 디렉토리를 관리하고, 그 아래에 사용자별로 서로 다른 파일 디렉토리가 있는 2계층 구조
  -- 하나의 사용자 파일 디렉토리에서는 유일한 파일 이름을 사용해야 하지만, 서로 다른 사용자 파일 디렉토리에서는 동일한 파일 이름을 사용 가능
  -- 특정 파일을 지정 할 때는 사용자 이름과 파일 이름을 함께 지정해야 하므로 파일이름이 길어짐(ex 사용자1/파일1 ..)
 - 트리 디렉토리 구조 
  -- 하나의 루트 디렉토리와 다수의 하위(종속,서브) 디렉토리로 구성되며, 포인터로 탐색(일반적인 OS(DOS, Windows, UNIX 등)에서 사용)
  -- 각 디렉토리는 서브 디렉토리나 파일을 가질 수 있음
  -- 서로 다른 디렉토리 내에 동일한 이름의 파일이나 디렉토리를 생성 할 수 있음
  -- 디렉토리의 탐색은 포인터를 사용하며, 경로명은 절대 경로명과 상대 경로명을 사용
  * 절대 경로명 : 루트에서부터 지정도니 파일 위치까지의 경로
  * 상대 경로명 : 현재 디렉토리를 기준으로 지정된 파일 위치까지의 경로
 - 비주기(비순환) 디렉토리 구조(Acyclic Graph Directory)
  -- 파일과 디렉토리의 공유가 허용될 수 있는 사이클이 없는 구조
   -> 사이클이 허용되지 않는 구조라는 것은 하위 디렉토리가 상위 디렉토리나 상위 파일을 공유 할 수 없다는 것을 의미함
  -- 디스크 공간을 절약 할 수 있음
  -- 하나의 파일이나 디렉토리가 여러 개의 경로 이름을 가질 수 있음
  -- 디렉토리 구조가 복잡하고, 공유된 하나의 파일을 탐색 할 경우 다른 경로로 두 번 이상 찾아 갈 수 있으므로 시스템 성능이 저하 될 수 있음
  -- 공유된 파일을 삭제할 경우 고아 포인터(Dangling Pointer)가 발생 할 수 있음
   -> 고아포인터(Dangling Pointer)
    - 여러 디렉토리에서 한 개의 파일을 공유하여 사용 할 때 공유된 파일을 삭제하면 파일이 없어졌는데도 불구하고 다른 디렉토리에서는 그 파일을 가리키는 포인터가 남아 있게 된다. 이와 같이 삭제된 파일에 대한 포인터를 끊어진 포인터, 즉 고아 포인터라고 함
 - 일반 그래프 구조
  -- 사이클이 허용되고, 기본 트리 디렉토리 구조에 링크를 첨가한 구조
   -> 링크 : 다른 파일이나 디렉토리를 가리키는 포인터를 말함
  -- 디렉토리와 파일 공유에 완전한 융통성이 있음
  -- 탐색 알고리즘이 간단하여, 파일과 디렉토리를 액세스하기가 쉬움
  -- 사용되지 않은 디스크 공간을 되찾기 위해 쓰레기 수집(Garbage Collection)이 필요
  -- 불필요한 파일을 제거하여 사용 공간을 늘리기 위해 참조 계수기가 필요함
   -> 참조 계수기
    - 파일 시스템을 탐색하는 것으로 접근 할 수 있는 디스크의 모든 공간을 표시해 두고 다음번 탐색시 표시되지 않은 공간을 사용 가능한 공간의 리스트로 수집하는 것을 Garbage Collection이라고 하며, 이 때 사용되는 것을 참조 계수기라고 한다.

 파일 공간의 할당과 회수 방법
 > 연속 할당(Contiguous Allocation)
  - 파일들이 디스크 내의 연속적으로 인접된 공간에 저장되는 기법
  - 할당 방법에 따라 고정크기와 가변크기로 구분
  - 연속하는 논리적 블록들이 물리적으로 서로 인접하여 있는 것
  - 이는 연속하는 논리적 블록들이 디스크 전체에 분산되어 있는 것에 비해 훨씬 빠른 액세스가 가능

 > 연결 할당(Linked Allocation)
  - 동일 파일에 속해 있는 섹터들이 연결리스트(Linked List)로 연결되어 있으므로 디스크 전체에 분산되어 있어도 액세스가 가능한 기억장치 할당기법
  - 블록이 어디에 있든지 포인터만 연결해주면 되므로 외부 단편화가 발생하지 않음
  - 따라서 연속할당에서와 같은 압축은 불필요

 > 색인 할당(Indexed Allocation)
  - 연결 할당은 연속 할당의 외부단편화 문제와 파일 크기 예측 문제를 해결했으나, FAT이 없으면 직접 접근 방식을 지원 할 수 없음
  - 색인 할당은 모든 포인터들을 색인 블록으로 관리함으로써 이 문제를 해결
  - 각 파일들은 디스크 블록 주소를 모아놓은 색인 블록을 가지므로 기억공간의 낭비가 발생

Window File System
 > FAT(File Allocaction Table)
  - DOS 때 부터 사용되고 있는 대표적인 File System으로 FAT16과 FAT32가 있음
  - 하드디스크에 FAT이라는 영역을 만들어 파일의 실제 위치 등의 정보를 기록하고 이를 이용
  - 저용량에 적합 / 보안에 취약 / 호환성 우수
 > NTFS(NT File System)
  - MFT(Master File Table)를 사용하여 관리하며, Mirror와 파일로그가 유지되어 파일 복구가 가능
  - FAT에다가 대용량 / 보안성 / 압축기능 / 원격저장소 등의 기능을 추가해서 만든 윈도우 전용 File System
  - 대용량 지원 / 강력한 보안 / 자동 압축 및 안정성 / 호환성이 좋지 않음 / 저용량에서는 FAT 보다 효율이 좋지 못함

Unix & Linux File System
  - EXT2 : FSCK(File System Check)을 이용하여 시스템 손상 복구 가능
  - EXT3 : 저널링(Journaling) 기술로 더욱 빠르고 안정적인 복구가 가능
  - EXT4 : 빨라진 FSCK / 하위 호환성 / 지연된 할당(Allocate-On-Flush ; 데이터가 디스크에 쓰이기 전까지 블록 할당 지연)

Partiton
  - 주 파티션
   -- 기본 파티션을 의미, 주 파티션의 수 + 확장 파티션의 수 <= 4
  - 확장 파티션
   -- 저장 공간은 없으며, 논리 파티션을 만들게 해주는 그릇의 역할, 디스크에 하나만 생성
  - 논리 파티션
   -- 최대 12개 (NTFS 에서는 제한 X)





시스템 보안 - 가상기억장치 관리

ㅇ ㅂㅇ

기억장치 관리

가상기억 장치의 구성과 관리
 > 개요
  - 가상기억장치의 개념은 프로그램, 데이터, 스택의 결합된 크기가 이용할 수 있는 물리적인 기억장치를 초과한다는 데 있음
  - 정기적으로 실행되는 프로그램의 일부는 주기억장치에 유지하고, 더 이상 빈번하게 사용되지 않는 나머지는 가상기억장치나 디스크에 유지
  - 가상기억장치는 사용자 논리 메모리를 실제 메모리와 분산시킴으로써 주기억장치를 매우 큰 저장장치의 균일한 배열로 생각하여 사용 할 수 있으므로, 프로그래머가 주기억장치의 한계를 걱정할 필요는 없음

 > 동작원리
  - 가상기억공간과 실 기억공간을 연결하는 주소의 매핑(Mapping)과정이 필요함
  - 논리 주소 공간을 블록으로 나누고 실제 주기억장치 용량에 맞는 블록만을 불러오는 데, 이 때 어떤 블록을 주기억장치에 불러올 것인지는 주소 변환 테이블을 사용하여 결정함
  - 가상주소(virtual address)는 실행 중 인 프로세스가 참조하는 주소, 실 주소(real address)는 주기억장치에서 사용가능한 실제 주소

 > 가상기억장치의 구현
  - 가상기억장치의 구현 방법에 따라 페이징/세그멘테이션/페이징과 세그멘테이션 혼용기법으로 나뉨
  - 사상표 색인을 찾는 방법에 따라서 직접 사상 / 연관 사상 / 직접과 연관 사상 혼용 방법으로 나뉨

 >> 페이징(Paging) 기법
  - 블록 사이즈가 고정된 방식으로 사용자가 작성한 프로그램은 기계적으로 동일한 크기의 페이지 단위로 분해되어 구현됨
  - 내부 단편화가 발생 할 수 있음
  - 스레싱(Thrashing) : 자주 페이지의 교체가 일어나는 현상(프로세스 처리 시간 < 페이지 교체 시간)
  - 워킹 셋(Working Set) : 자주 사용되는 페이지들을 묶어 주기억장치에 계속 상주 시키는 방법, 스레싱의 대책
 >> 세그멘테이션(Segmentaion) 기법
  - 블록 사이즈가 가변적인 Segment로 나누어 구현된 방식
  - 프로그램을 Segment로 나누는 일은 프로그래머가 직접해야 함
  - 외부 단편화가 발생 할 수 있음

 >> 페이지/세그멘테이션 혼용 기법
  - 세그먼트가 너무 가변적이고, 때로는 그 크기가 지나치게 커서 주기억장치에 적재 할 수 없는 경우의 문제점을 극복하기 위한 방식
  - 프로그램을 논리적인 세그먼트 단위로 분할하고, 각 세그먼트들을 다시 각각 페이지 단위로 분할함

  * 단편화(Fragmentation)
   - 내부 단편화(Internal Fragmentation) : 할당 받은 페이지를 다 사용하지 못한 경우 자투리 공간이 발생하는 것(영향이 적음)
    -- 압축(Compaction)으로 해결 가능 : 분산되어 있는 단편화도니 빈 공간들을 결합(Garvage Collection)
   - 외부 단편화(External Fragmentation) : 할당과 제거를 반복하면서, 적재하기 애매해진 공간들이 발생하는 것
    -- 통합(Coalescing)으로 해결 가능 : 인접해 있는 단편화된 공간을 하나의 공간으로 통합

 > 연관 사상 방법(associative mapping)
  - 빠른 주소변환을 수행하기 위해서 위치지정(location addressed)이 아닌 내용지정(content addresed)의 연관 기억장치에 사상 페이지 테이블을 유지함
  - 두 번의 기억장치 접근문제는 연관기억장치 또는 변환 버퍼(TLB; Translation Look-aside Buffers)라고 하는 특별한 하드웨어 캐시를 사용함으로써 해결 할 수 있다.
  - 주기억장치보다 훨씬 빠른 접근시간을 가지는 연관기억장치에 페이지 사상표 전체를 넣는 방법으로 가장 빠르고 융통성 있는 사상구조

 > 직접/연관 사상 혼용 방법
  - 연관/직접 사상의 혼용 페이징 방법은 더 저렴한 비용으로 캐시나 연관기억장치의 장점을 살릴 수 있는 절충 방안이다.
  - 가장 최근에 참조된 페이지는 조만간 다시 사용되기 쉽다는 지역성의 원리를 이용

 > 직접 사상 방법
  - 페이지 사상표는 주기억장치에 있으며, 프로세스의 가상기억장치를 구성하는 모든 페이지에 대한 항목이 페이지 사상표에 있음
  - 명령어 수행주기 외에 추가적인 장치 수행주기가 수행됨
  - 페이지 테이블을 위해서 한 번, 그 메모리 자체를 위해서 한 번, 두 번의 기억장치 접근이 필요

 보조기억장치
  > 디스크 스케줄링
   - FIFO(=FCFS)
    -- 작업 요청 순서대로 처리
    -- 구현이 쉽고, 공평
    -- 트랙 탐색 패턴의 최적화 시도가 없으며 따라서 응답시간이 길어지는 영향 발생
   - SSTF(Short Seek Time First)
    -- 현재위치에서 탐색거리가 가장 짧은 요청을 먼저 처리
    -- FCFS보다 처리량이 많고 평균 응답시간이 짧음
    -- 응답시간 편차가 심함(기아 상태 발생 가능)
    -- 처리량 중심인 일괄시스템에 유용함
   - SCAN
    -- 헤드가 한 방향으로 쭉가면서 처리하는 방법, 실린더 끝까지 가서 방향을 전환함(가장 바깥쪽 실린더에 도달할 때까지 진행방향을 바꾸지 않음)
    -- 진행방향상의 가장 가까운 곳에 있는 요청을 서비스 함
    -- 부하가 적을 대 우수한 기법
    -- SSTF의 차별대우를 많이 없애고 낮은 편차를 가짐
    -- 바깥쪽 트랙이 가운데 트랙보다는 차별대우를 받음
   - C-SCAN
    -- 헤드가 실린더 끝에서 안쪽으로 이동하며 처리
    -- 한쪽 방향으로만 헤드를 이동하며, 끝에 도착하면 다시 처음부터 다시 진행
    -- 안쪽과 바깥쪽 트랙의 차별대우를 제거함
    -- 응답시간의 편차가 적으며 부하가 많은 상황에서 효과적
   - N-Step SCAN
    -- 헤드의 방향이 전환 될 때, 이미 대기 중이던 요청만 처리(도중에 생긴 요청은 무시)
    -- SCAN 알고리즘에서 방향 전환시 먼저 요구한 N개의 요청만 서비스 함
    -- 헤더가 있는 실린더에 요청이 집중될 때 발생하는 무한대기를 제거한 방법









2016년 7월 1일 금요일

시스템 보안 - 주기억장치 관리

ㅇ ㅂㅇ

2) 기억장치 관리
 - 주기억 장치
  > 반입기법(Fetch) : 언제 보조기억장치의 데이터를 주기억장치로 옮기는 지 결정하는 방법
   - 요구 반입 정책(Demand Fetch Strategic) : 실행 프로그램이 특정 프로그램, 데이터 등의 참조를 요구 할 때 적재 하는 방법
   - 예상 반입 정책(Anticipatory Fetch Strategic) : 실행 프로그램이 참조할 프로그램, 데이터 등을 미리 예상하여 적재하는 방법

  > 배치 기법(Placement) : 보조 기억 장치의 데이터를 주기억장치 어디로 위치 할 지 결정하는 방법
   - 최초 적합(First Fit)
   - 최적 적합(Best Fit)
   - 최악 적합(Worst Fit)

  > 교체 기법(Replacement) : 공간 확보를 위해 어떤 데이터를 제거하며, 새로운 데이터를 어디에 위치 할 지 결정하는 방법
   - FIFO(First In First Out)
   - LRU(Least Recently Used) : 가장 오랫동안 사용하지 않은 것을 바꿈
    > 한 프로세스에서 사용되는 각 페이지마다 카운터를 두어현 시점에서 가장 오랫동안 사용되지 않은 페이지를 제거 하는 방법
    > 단점 : 불러왔던 시간을 기록해야 하기 때문에 시간 오버헤드가 발생하고, 실제로 구현하기가 매우 어렵다.
   - LFU(Least Frequently Used) : 가장 사용 빈도가 낮은 걸 바꿈
    > 구역성 문제 발생한다(Locality)
    > 단점 : 바로 불러온 페이지가 교체되어 질 수 있다.
     * 구역성(Loaclity)
      -- 지역성은 캐시 메모리, 연관기억장치의 성립 이유가 되고, Working Set LRU 등의 페이지 교체 기법을 뒷받침 함
      - 시간 지역성(Temporary Locality)
       : 최근 참조된 기억장소가 가까운 미래에도 계속 참조될 가능성이 높음
      - 공간 지역성(Spatial Locality)
       : 하나의 기억장소가 참조되면 그 근처의 기억장소가 계속 참조될 가능성이 높음

   - NUR(Not Used Recently) : 최근 전혀 사용하지 않은 것을 바꿈
    > LRU 방법의 단점인 시간 오버헤드를 적게 하는 방법
    > 2개의 비트를 두어 구분한다.
     * 참조비트 : 0(페이지가 참조되지 않았을 때) / 1(페이지가 참조된 적이 있을 때)
     * 변형비트 : 0(페이지 내용이 변형되지 않았을 때) / 1 (페이지 내용이 변형되었을 때)

  - 스레싱(Thrashing)과 워킹 셋(Working Set)
   > 스레싱
    -- 너무 페이지의 교체가 자주 일어나는 현상
    -- 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 처리시간보다 페이지 교체시간이 더 많아지는 현상

   > 워킹 셋
    -- 실행 중인 프로세스가 일정시간 동안 참조하는 페이지들의 집합
    -- 한 프로그램이 효율적으로 수행되려면 그 프로그램의 워킹 셋이 주기억장치 내에 유지되어야 함