728x90

스케줄링

프로세스가 작업을 수행하려면 스케줄러로부터 cpu를 할당 받아야 한다.
할당을 받는 건 순서에 의해 받을 수 있고, 처리하게 되는 시간을 배정을 받는다.
할당 작업은 운영체제에서 구현이 되며 프로세스에게 효율적으로 자원을 할당하기 위한 정책이다.

목적

공정한 스케줄링
모든 프로세스에게 공정하게 할당을 해야함
응답시간 최소화
대화식 사용자에게는 최대한 응답시간(response time)을 빠르게 함
반환시간 최소화
프로세스를 제출한 시간부터 완료시까지 걸리는 반환시간(turn around time)을 최소화 한다.
대기시간 최소화
프로세스 준비 상태 큐에서 대기하는 시간을 최소화 해야함
앞에서 처리가 늦어지면 뒤에서 부하가 생기기 때문에 빠르게 처리해야함.
우선 순위 제도
먼저 처리해야 하는 것에 우선 순위를 부여해서 먼저 처리 함.
처리량 극대화
단위시간당 할 수 있는 처리량을 최대화 한다.
균형 있는
자원 사용
자원들이 유휴 상태에 놓이지 않도록 골고루 사용하게 함.
 
무한 연기 회피
자원을 사용하기 위해 무한정 연기하는 경우를 회피
 

스케줄링 기법

▶선점 스케줄링 (preemptive scheduling)

한 프로세스가 cpu를 할당받아서 실행하고 있을 때 다른 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지할 수 있는 스케줄링 기법을 선점 스케줄링 기법이라고 한다.
우선순위가 높은 프로세스를 먼저 수행할 때 유리하고 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 유용한다.
많은 오버헤드(overhead)를 초래함
A라는 프로세스가 cpu를 사용하고 있을 때 잠시 중지시키고 B를 시키는 상황에 사용됨.
예 )  round robin, SRT, 선점 우선 순위 등의 알고리즘이 있다.
 

▶비선점 스케줄링(non-preemptive scheduling)

이미 사용되는 cpu를 빼았지는 못하고 사용이 끝날 때 까지 기다리는 스케줄링 기법이다.
할당 받은 cpu는 끝날 때 까지 사용함.
응답 시간을 예측할 수 있고 일괄 처리 방식이 적합하다.
모든 프로세스에 요구에 대해 공정하다.
중요도가 높은 작업이 낮은 작업이 기다리는 경우가 발생할 수 있다.
 
예 ) FCFS(first come first service), SJF(shortest job first), 우선 순위, HRN(heighest response next)등이 있다.
-> 높은 우선순위가 먼저 실행되고 낮은 작업이 기다리게 된다.

 


 

프로세스(Process)가 구동하려면 다양한 시스템 자원이 필요하다. 대표적으로 CPU(중앙처리장치)와 입출력장치가 있는데, 최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것을 CPU스케줄링이라고 한다. CPU스케줄링에 대해 알아보기 전에, 왜 필요한지 짚고 넘어갈 필요가 있다. (스케줄링 기법에 어떤 것들이 있는지 외우는 것보다 중요하다.)

 

 

프로세스의 생명주기

 

 

 라면을 끓일 때, 물이 끓을 때까지 멍하니 기다리지는 않을 것이다. 라면 봉투를 미리 뜯어 놓기, 스프 미리넣기, 각종 재료를 미리 준비하기 등을 물이 끓는 것을 기다리면서 할 것이다. 여기서 CPU스케줄링을 착안하면 되겠다. 프로세스는 작업(Job)을 완료할 때까지 다양한 상태가 되는데, 우리가 주목해야할 것은 'Waiting'이다. 

 

 프로세스가 CPU를 점유하여 작업을 수행하는 도중 I/O 또는 Interrupt가 발생하면 일시적으로 프로세스는 CPU를 사용하지 않게 된다. 하지만 계속 점유하고 있다. 이러한 상황을 줄여, CPU를 최대한 활용하면 시스템의 성능 개선을 꾀할 수 있다. 결국, "어떻게 프로세스들이 CPU를 효율적으로 사용하게 할 것인가?" 라는 고민에서 CPU 스케줄링이 출발한다고 할 수 있다.



 

중앙처리장치는 컴퓨터의 두뇌와 같은 역할을 한다.

 

 

 

 본격적으로 CPU 스케줄링에 대해 알아보겠다. CPU 스케줄링은 크게 두 가지로 분류되는데, 선점(Preemptive)스케줄링 비선점(Non-Preemptive)스케줄링이다.

 

선점스케줄링

 

 - CPU가 어떤 프로세스에 의해 점유 중일 때, 우선 순위가 높은 프로세스가 CPU를 차지할 수 있음

 

 - 우선 순위가 높은 프로세스를 빠르게 처리해야할 경우 유용.

 

 - 선점이 일어날 경우, 오버헤드가 발생하며 처리시간을 예측하기 힘듦.

 

 

 선점 스케줄링의 경우 위와 같은 특징이 있으며, 비선점 스케줄링은 선점 스케줄링과 반대이다. 선점 스케줄링의 경우에는 I/O요청, I/O응답, Interrupt발생, 작업완료 등의 상황에서 스케줄링이 일어날 수 있다. 하지만 비선점 스케줄링의 경우 프로세스가 스스로 CPU를 놓아주는 시점(작업이 완료되는 시점)에만 스케줄링이 일어난다. 

 

(비)선점 스케줄링에 각각 속하는 CPU 스케줄링 알고리즘 기법은 다양하다. 그 알고리즘에 대해 간략히 소개하도록 하겠다.

 

 

1. 선점 스케줄링

 

1-1. SRT(Shortest Remaining Time) 스케줄링: 짧은 시간 순서대로 프로세스를 수행한다. 남은 처리 시간이 더 짧은 프로세스가 Ready 큐에 들어오면 그 프로세스가 바로 선점됨. 아래에 소개할 SJF의 선점 버전이라고 할 수 있다.

 

1-2. 라운드로빈(Round-Robin)스케줄링: 각 프로세스는 같은 크기의 CPU 시간을 할당 받고 선입선출에 의해 행된다. 할당시간이 너무 크면 선입선출과 다를 바가 없어지고, 너무 작으면 오버헤드가 너무 커진다.

 

   1-3. 다단계 큐(Multi-level Queue) 스케줄링: Ready큐를 여러 개 사용하는 기법. 각각의 큐는 자신의 스케줄링 알고리즘을 수행하며, 큐와 큐 사이에도 우선순위를 부여한다.

 

   1-4. 다단계 피드백 큐 스케줄링: 다단계 큐와 비슷하나 프로세스들이 큐를 이동할 수 있다.

 

 

2. 비선점 스케줄링

 

1-1.  HRN(Highest response ratio next) 스케줄링: 긴 작업과 짧은 작업간의 지나친 불평등을 어느 정도 보완한 기법수행시간의 길이와 대기 시간을 모두 고려해 우선순위를 정한다.

 

1-2. SJF(Shortest Job First) 스케줄링: 큐 안에 있는 프로세스 중 수행시간이 짧은 것을 먼저 수행. 평균 대기 시간을 감소시킨다.

 

1-3. 우선순위(priority) 스케줄링: 프로세스에게 우선순위를 정적, 혹은 동적으로 부여하여 우선순위가 높은 순서대로 처리한다. 동적으로 부여할 경우, 구현이 복잡하고 오버헤드가 많다는 단점이 있으나, 시스템의 응답속도를 증가시킨다.

 

1-4. 기한부(Deadline) 스케줄링: 작업을 명시된 시간이나 기한 내에 완료하도록 계획.

 

1-5. FIFO 스케줄링: 프로세스들은 Ready큐에 도착한 순서대로 CPU를 할당 받는다. 작업 완료 시간을 예측하기 매우 용이하다. 하지만 덜 중요한 작업이 중요한 작업을 기다리게 할 수도 있다.

 

 


지금까지 CPU 스케줄링과 알고리즘에 대해 간략히 알아보았다. CPU 스케줄링은 운영체제가 사용자도 모르는 새 자동으로 진행하는 작업이다. 프로세스와 비슷한 성질을 띠는 스레드의 경우, 프로그램 개발자가 스케줄링 관련 코드를 삽입해야 한다.

 


 

CPU 스케줄링에 대한 기법은 선점과 비선점 스케줄링이 있으며, 각 기법에 따른 알고리즘은 FIFO, 우선 순위, RR, SJF, 다단계 피드백 큐 스케줄링 등이 있다.

 

(1) 스케줄링 기법

스케줄링 기법은 사용중인 프로세스에서 자원을 빼앗을 수 있는지의 여부에 따라 선점 스케줄링 기법과 비선점 스케줄링 기법이 있다.

 

ⓐ 선점(Preemptive) 기법 - RR, SRT, MFQ 등

하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 프로세서를 빼앗을 수 있는 방법을 선점 스케줄링이라고 한다. 선점 스케줄링 방식은 프로세스의 우선 순위가 높은 프로세스가 CPU를 먼저 차지하기가 용이하기 때문에 실시간 시분할 시스템에서 사용한다.

- 우선 순위가 높은 프로세스가 먼저 수행되어야 할 때 유용하다.

- 빠른 응답 시간을 요구하는 대화식 시분할 시스템이나 처리 시간이 제한되어 있는 실시간 시스템에 유용하다.

- 많은 오버헤드를 초래한다.

 

ⓑ 비선점(Non-preemptive) 기법 - SJF, FIFO, HRN 등

프로세스에게 이미 할당된 CPU를 강제로 빼앗을 수 없고, 그 프로세스의 사용이 끝난 후에 스케줄링을 하여야 하는 방법을 비선점 스케줄링이라고 한다.

- 모든 프로세스들에 대한 요구를 공정히 처리한다.

- 응답 시간의 예측이 용이하다.

- 짧은 작업이 긴 작업을 기다리는 경우가 종종 발생한다.

 

 

(2) 스케줄링 알고리즘의 종류

스케줄링 알고리즘의 종류에는 FIFO 스케줄링, 우선 순위 스케줄링, 기한부 스케줄링, RR 스케줄링 SJF 스케줄링, SRT 스케줄링, HRN 스케줄링, 다단계 피드백 스케줄링 등이 있다.

 

ⓐ FIFO(First In First Out) 스케줄링

가장 간단한 스케줄링 기법으로, 먼저 대기 큐에 들어온 작업에게 CPU를 먼저 할당하는 비선점 스케줄링 방식이다.

- 비선점 스케줄링 기법이다.

- 중요하지 않은 작업이 중요한 작업을 기다리게 할 수 있다.

- 대화식 시스템에 부적합하다.

- FCFS(First Come First Served) 스케줄링 기법이라고도 한다.

 

ⓑ 우선순위(Priority) 스케줄링

각 작업마다 우선순위가 주어지며, 우선 순위가 제일 높은 작업에 먼저 CPU가 할당되는 방법이다. 우선 순위가 낮은 작업은 Indefinite Bolcking 이나 Starvation에 빠질수 있고, 이에 대한 해결책으로 체류 시간에 따라 우선 순위가 높아지는 Aging 기법을 사용할 수 있다

 

ⓒ 기한부(Deadline) 스케줄링

작업이 주어진 제한 시간이나 Deadline 시간 안에 완료되도록 하는 기법이다.

 

ⓓ 라운드 로빈(RR; Round-Robin) 스케줄링

FIFO 스케줄링 기법을 Preemptive 기법으로 구현한 스케줄링 방법으로 프로세스는 FIFO 형태로 대기 큐에 적재되지만, 주어진 시간 할당량(Time Slice) 안에 작업을 마쳐야 하며, 할당량을 다 소비하고도 작업이 끝나지 않은 프로세스는 다시 대기 큐의 맨 뒤로 되돌아간다.

- 선점 스케줄링 기법이다.

- 시스템이 사용자에게 적합한 응답시간을 제공해 주는 대화식 시분할 시스템에 적합하다.

 

ⓔ SJF(Shortest Job First) 스케줄링

SJF는 비선점 스케줄링 기법으로, 처리하여야 할 자업 시간이 가장 적은 프로세스에 CPU를 할당하는 기법이다. 평균 대기 시간이 최소인 최적의 알고리즘이지만, 각 프로세스의 CPu 요구 시간을 미리 알기 어렵다는 단점이 있다.

 

 SRT(Shortest Remaining Time) 스케줄링

SJF 스케줄링 기법의 선점 구현 기법으로, 새로 도착한 프로세스를 비롯하여 대기 큐에 남아 있는 프로세스의 작업이 완료되기까지의 남아있는 실행 시간 추정치가 가장 적은 프로세스에 먼저 CPU를 할당한다.

 

ⓖ HRN(Highest Response Ratio Next) 스케줄링

Brinch Hansen이 SJF 스케줄링 기법의 약점인 긴 작업과 짧은 작업의 지나친 불평등을 보완한 스케줄링 기법이다.

- 비선점 스케줄링 기법이다.

- 서비스 받을 시간이 분모에 있으므로 짧은 작업의 우선 순위가 높아진다.

- 대기 시간이 분자에 있으므로 긴 작업도 대기 시간이 큰 경우에는 우선 순위가 높아진다.

 

ⓗ 다단계 피드백 큐(Multilevel Feedback Queue) 스케줄링

다양한 특성의 작업이 혼합된 경우 매우 유용한 스케줄링 방법으로, 새로운 프로세스는 그 특성에 따라 각각 대기 큐에 들어오게 되며, 그 실행 형태에 따라 다른 대기 큐로 이동한다. 예를 들어 연산 위주의 프로세스들은 처음에 RR 방식의 대기 큐에서 주어진 시간 할당량이 만료되면 다음 단계의 큐에 배치되고, 실행 시간이 길수록 점점 낮은 우선 순위를 지니게 되어 마지막 가장 낮은 우선 순위의 큐에 도달하면 작업이 끝날 대까지 RR 방식으로 스케줄된다.

728x90

http://wiki.hash.kr/index.php/%ED%8F%AC%EB%A7%B7%EC%8A%A4%ED%8A%B8%EB%A7%81_%EA%B3%B5%EA%B2%A9

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/librespeed

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

---
version: "2.1"
services:
  librespeed:
    image: lscr.io/linuxserver/librespeed
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 80:80
    restart: always

728x90

기존 사용하고 있던 MikroTik RB4011iGS+RM 후속 모델이 출시되서 냉큼 사버렸습니다.

기존 장비도 성능은 남아돌지만서도 궁금증을 못 이겨.. 이놈의 장비병이 또... 쿨럭;

 

기존 세팅내역이 많아서 바로 옮겨타기 힘드네요. 천천히 세팅해서 갈아타야겠습니다.

728x90

참고 사이트 - https://www.navidrome.org/

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

--

 

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - "4533:4533"
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_BASEURL: ""
    volumes:
      - "./data:/data"
      - "./music:/music:ro"

    restart: always

728x90

1. 운영체제 개요

(1) 운영체제의 주요 기능

 - 운영체제 : 시스템 자원을 효율적으로 사용하게 하는, 사용자와 컴퓨터 간의 인터페이스 역할

 

(2) 운영체제의 구조

 - 1단계 : 프로세서 관리 ; 동기화 및 프로세스 스케줄링

 - 2단계 : 메모리 관리 ; 메모리 할당, 회수 기능

 - 3단계 : 프로세스 관리 ; 프로세스 생성, 제거, 메시지 전달, 시작과 정지

 - 4단계 : 주변장치 관리 ; 주변장치 상태 파악과 입출력 장치의 스케줄링

 - 5단계 : 파일 관리 ; 파일 생성, 소멸, 파일의 열기 닫기, 파일의 유지 및 관리

 

(3) 운영체제의 기술발전 흐름

 - 1세대 : 일괄처리시스템(Batch Processing System)

 

 - 2세대 : 다중프로그램 시스템(Multi-Programming System)

  • I/O 장치와 CPU 사이의 속도 차이를 이용하여, 하나의 CPU와 주기억장치로 여러 프로그램을 동시에 처리하는 방식
  • I/O 장치의 조작으로 CPU 유휴시간이 발생하면, 다른 작업을 처리함
  • 시분할 시스템(Time Sharing System) : 라운드 로빈(Round Robin ; RR) 방식이라고도 함
  • 다중처리 시스템(Multi-Processing System) : 여러개의 CPU와 하나의 주기억 장치를 이용해, 여러 프로그램을 동시에 처리하는 방식  

 - 3세대 : 다중모드처리(Multi-Mode Processing)

  • 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리 시스템을 모두 제공하는 시스템

 - 4세대 : 분산처리 시스템(Distribute Processing System)

  • 여러 개의 컴퓨터(프로세서)를 통신회선으로 연결해서 하나의 작업을 처리하는 방식
  • 각 단말장치나 컴퓨터들은 고유의 운영체제와 CPU, 메모리를 가지고 있음

 

2. 운영체제의 주요 구성 기술

(1) 프로세스 관리

 

 - 프로세스와 스레드의 개념

  • 프로세스 : 실행 중인 프로그램
  • 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위

 - 프로세스 제어 블럭(PCB; Process Control Block)

  • 운영체제가 프로세스에 대한 정보를 저장해 놓은 저장소
  • 다른 프로세스로 제어를 넘겨줄 때, 현재 실행중인 프로세스의 정보를 PCB에 저장하고 제어를 넘김
  • 각 프로세스가 생성될 때마다 PCB가 생성되고, 종료되면 제거됨
  • 부모 프로세스와 자식 프로세스는 PCB를 공유하지는 않음

 - 프로세스 구성 요소

  • Code 영역 : 프로그램 코드
  • Data 영역 : 전역변수 저장
  • Stack 영역 : 지역변수 및 함수의 매개변수 저장
  • Heap 영역 : 동적 메모리 할당 영역

 

 

 

 - 프로세스 상태와 전이

  • 준비 Ready : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 실행 Run :
    • 준비 상태 큐에 있는 프로세스가 프로세서를 할당 받아 실행되는 상태
    • 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비상태로 전이된다.
    • 실행 중인 프로세스에 입출력(I/O) 처리가 필요하면 실행 중인 프로세스는 대기 상태로 전이된다.
  • 대기 (wait), 보류, 블록(Block)
    • 입출력 요구가 발생되어 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태

 - 프로세스 상태 전이도

 

- 프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스 사이의 우선 순위를 관리하는 일

  • 장기 스케줄링 : 어떤 프로세스를 커널에 등록할 것인가
  • 중기 스케줄링 : 어떤 프로세스에게 메모리를 할당할 것인가
  • 단기 스케줄링 : 어떤 프로세스에게 CPU를 할당할 것인가

 - 선점형 스케줄링 정책(Preemptive Scheduling Policy) : 처리 도중 뺏기 가능

  • SJF(Shortest Job First : 최단작업 우선처리) : 버스트 시간이 짧은 프로세스를 우선 처리
  • SRT(Shortest Remaining Time First : 최단 잔여 시간)
  • RR(Round Robin : 순환할당 스케줄링) : Time slice 기반 스케줄링
  • MLQ(Multi Level Queue : 다단계 큐)
  • MFQ(Multi level Feedback Queue : 다단계 피드백 큐)

 - 비선점형 스케줄링 정책(Non-Preemptive Scheduling Policy) : 처리가 끝날 때까지 기다림

  • FCFS(First Come First Served : 선입선출) : 먼저 CPU를 요청하는 프로세스를 우선 처리
  • SJF(Shortest Job First : 최단작업 우선처리) : 버스트 시간이 짧은 프로세스를 우선 처리
  • FIFO(First In First Out : 선입선출)
  • HRN(Highest Response Ratio Next) : CPU 할당 받을 시간과 기다린 시간으로 계산한 우선 순위로 결정

 - 프로세스 교착 상태(Deadlock)

  • 발생 조건 : 1.~4.까지 모두 만족해야 발생
    1. 상호배제(Mutual Exclusion) : 한 프로세스가 자원을 다른 프로세스가 사용 못하게 배제할 때
    2. 점유대기(Wait) : 프로세스가 자신에게 할당된 자원을 해제 안하고, 다른 자원을 기다릴 때
    3. 비선점(비선점 조건; Non-Preemption) : 프로세스에 할당된 자원을 끝날 때까지 해제 할 수 없을 때
    4. 순환대기(Circular Wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
    5. 발생 조건 : 1.~4.까지 모두 만족해야 발생
  • 해결방안
    1. 예방 : 교착 상태의 필요조건을 부정함으로써, 교착 상태가 발생하지 않도록 하는 방법
    2. 회피 : 교착 상태 가능성을 인정하고, 적절하게 피하는 방법 (은행원 알고리즘)
    3. 발견(탐지) : 교착 상태가 발생하면, 교착 상태의 프로세스와 자원을 발견하는 방법
    4. 회복(복구) : 교착상태를 일으킨 프로세스를 종료하고 할당된 자원을 회수하는 방법

 

(2) 기억장치 관리

 

 - 주기억장치

  • 반입기법(Fetch) : 언제 보조기억장치의 데이터를 주기억장치로 옮기나
    • 요구 반입 정책(Demand Fetch Strategic) : 자료가 요구되는 시점에 주기억장치로 옮김
    • 예상 반입 정책(Anticipatory Fetch Strategic) : 프로그램 수행 중 요구될 가능성이 큰 자료를 예상하여 주기억장치로 미리 옮김
  • 배치기법(Placement) : 보조기억장치의 데이터를 주기억장치의 어디로 위치시키나
    • 최초 적합
    • 최적 적합
    • 최악 적합
  • 교체기법(Replacement) : 공간확보를 위해 어떤 데이터를 제거하고 새로운 데이터를 위치시키나
    • FIFO(First In First Out)
    • LRU(Least Recently Used) : 가장 오랫동안 사용안한 것을 바꾼다.
    • LFU(Least Frequently Used) : 가장 사용 횟수가 작은 것을 바꾼다.
    • NUR(Not Used Recently) : 최근에 전혀 사용되지 않은 것을 바꾼다.

 - 가상기억장치

  • 구현방식
  • 페이징(Paging) 기법 : 프로그램을 동일한 크기의 Page로 나누어 구현
    • 내부 단편화의 원인
    • 스레싱(Thrashing) : 자주 페이지의 교체가 일어나는 현상(프로세스 처리 시간 < 페이지 교체 시간)
    • 워킹 셋(Working Set) : 자주 사용되는 페이지들을 묶어서 주기억장치에 계속 상주시키는 방법
    • 페이지 교체 알고리즘
      • FIFO(First In First Out)
      • LRU(Least Recently Used) : 가장 오랜기간 사용하지 않은 페이지 교체
      • OPT(Optimal; 최적교체) : 가장 사용되지 않을 페이지를 교체, 실현 가능성 희박
      • SCR(Second Chance Replacement) : 참조 비트를 주고, 1이면 0으로, 0이면 교체
  • 세그멘테이션(Segmentation) 기법 : 프로그램을 가변적 크기의 Segment로 나누어 구현
    • 외부 단편화의 원인

  ★ 단편화(Fragmentation)

    - 내부 단편화(Internal Fragmentation) : 할당 받은 페이지를 다 사용 못했을 때 생기는 자투리 공간들

        → 압축(Compaction)으로 해결 : 분산되어있는 단편화된 빈 공간들을 결합

    - 외부 단편화(External Fragmentation) : 할당과 제거를 반복하면서, 적재하기 애매해진 공간들

        → 압축(Coalescing)으로 해결 : 인접해있는 단편화된 공간을 하나의 공간으로 통합

 

 - 보조기억장치

  • 디스크 스케줄링
    • FIFO(=FCFS)
    • SSTF(Short Seek Time First) : 현재 헤드에서 가장 가까운 트랙의 요청을 먼저 처리한다.
    • SCAN : 헤드가 한 방향으로 쭉가면서 처리하는 방법, 실린더 끝까지 가서 방향을 전환한다. (엘리베이터 기법)
    • C-SCAN : 헤드가 실린더 끝에서 안쪽으로 이동하며 처리한다. (항상 한쪽 방향에서 반대 방향으로 진행하며 트랙의 요청 처리)
    • N-Step SCAN : 헤드의 방향이 전환될 때, 이미 대기 중이던 요청만 처리한다. (도중에 생긴 요청은 무시)
    • C-LOOK(Circular-Look) : C-Scan의 보완, 대기시간을 좀 더 균형 있게 함, 진행 방향에 더 이상 요청이 없으면 Head는 진행 방향을 바꾼다.

 

(3) 파일 시스템 관리

 

 - 디렉토리의 구조

  • 1단계 디렉토리 : 모든 파일이 같은 디렉토리에 존재하며, 파일 이름은 유일한 구조
  • 2단계 디렉토리 : 중앙에 마스터 디렉토리(MDF)가 있고, 각 사용자의 디렉토리(UFD)가 하위에 있는 구조
  • 트리 디렉토리 : 하나의 루트 디렉토리와 다수의 하위 디렉토리로 구성되며, 포인터로 탐색(일반적으로 OS에서 사용)
  • 비주기 디렉토리(Acyclic Graph Directory) : 파일과 디렉토리의 공유가 허용될 수 있는 사이클이 없는 구조
  • 일반 그래프 : 사이클이 허용되고, 기본 트리 디렉토리 구조에 링크를 첨가한 구조

 - Windows File System

  • FAT(File Allocation 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, 하위 호환성, 지연된 할당
    • ※ 저널링(Journaling) : 파일 시스템에 대하여 변경을 수행하기 전 원래의 로그를 기록하여 변경을 추적 관리하고 복구할 수 있는 시스템을 의미한다.
  • Partition
    • 주 파티션 : 기본 파티션을 의미 / 주 파티션의 수 + 확장 파티션의 수 <= 4
    • 확장 파티션 : 논리 파티션을 만들게 해주는 그릇의 역할 / 디스크에 하나만 생성 가능
    • 논리 파티션 : 최대 12개 (NTFS에서는 제한이 없음)
  • RAID(Redundant Array of Independent Disks)
    • 디스크 고장 시 그대로 복구할 수 있도록 2개 이상의 디스크에 데이터를 저장하는 기술
    • RAID 0(Stripe, Concatenate) : 데이터를 나누어 저장, 디스크 장애 발생 시 복구 불가능
    • RAID 1(Mirroring) : 여러 디스크에 데이터를 완전 이중화하여 저장, 가장 좋은 방식이나 많은 비용 발생
    • RAID 2(Hamming Code ECC) : ECC(Error Correction Code) 기능이 없는 디스크의 오류 복구를 위해 Hamming Code 이용
    • RAID 3(Parity ECC) : Parity 정보를 별도 Disk에 저장
    • RAID 4(Parity ECC, Block 단위 I/O) : Parity 정보는 별도의 디스크에, 데이터는 Block 단위로 데이터 디스크에 분산 저장
    • RAID 5(Parity ECC, Parity 분산 저장) : 분산 Parity를 구현하여 안전성 향상
    • RAID 6(Parity ECC, Parity 분산 복수 저장) : PAID 5의 안전성 향상을 위해 Prity를 다중화하여 저장

 

(4) 분산 시스템

 

 - 개념 : 분산되어 있는 컴퓨터에서, 작업이 나누어 처리되고 그 결과가 서로 호환되도록 연결되어 있는 시스템

 - 투명성(Transparency)를 보장해야 함

  • 위치 투명성 : 컴퓨터의 실제 위치를 몰라도 접근 가능
  • 이주 투명성 : 자원 이동에 제한이 없어야함
  • 병행 투명성 : 사용자의 위치를 몰라도 다른 사용자와 자원의 공유 가능
  • 복제 투명성 : 사용자에게 통지할 필요없이 자유롭게 복제 가능

 

 

3. 운영체제별 구조와 특징 (Unit, Linux, Windows)

(1) 유닉스/리눅스 구조 및 특징

 

 - 구조

  • 커널(Kernel)
    • OS의 핵심으로 주기억장치에 상주하여 자원을 관리함
    • 크게 입출력 / 메모리 / 프로세스 / 파일관리의 부분으로 나눔
    • 쉘에서 지시한 작업을 수행함
  • 쉘(Shell)
    • 커널과 사용자간의 인터페이스를 제공
    • 사용자가 입력하는 명령의 입/출력을 수행하며 프로그램을 실행시킴
    • 명령어 해석기/번역기라고 함
  • 파일시스템(File System)
    • 계층적 트리 구조를 가지고 있고 다음과 같이 구성되어 있음
    • 부트 블럭(Boot Blocks) : 파티션의 첫 부분에 예약되어 있는 블럭, 부팅시 필요한 코드 저장(커널 적재 코드 등)
    • 슈퍼 블럭(Super Block) : 파일 시스템 당 한 개씩 생성 / 전체 파일 시스템에 대한 정보 저장
    • 아이노드(I-Nodes) : 리눅스 커널이 현재 사용하는 자료구조(파일 정보)를 유지하는 구조체
      • 파일 이름을 제외한 모든 파일과 디렉토리에 대한 정보를 저장
      • 파일 링크 정보를 가지며, 파일 링크는 심볼릭 링크(Simbolic Link)와 하드링크(Hard Link)로 구분
      • 심볼릭 링크 : 윈도우의 바로가기와 유사한 기능
        • 긴 파일/디렉토리 명을 대신하여 사용할 때 링크 정보만 가지고 있는 새로운 inode 생성
        • inode는 원래 파일의 포인터 정보만을 가짐
      • 하드 링크 : 원본파이을 복사해 동일한 inode 생성
        • 원본 파일을 삭제, 이동해도 하드링크는 존재
    • 데이터 블럭(Data Blocks) : 실제 데이터가 저장

 - 특징

  • 대화식 운영체제
    • 명령어를 입력받기 위해 쉘 프롬프트($)를 화면에 나타낸다. 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하고 다시 새로운 명령을 받기 위해 대기하고 있다는 표시로 쉘 프롬프트($)를 나타낸다.
  • 다중 작업 기능(multi-tasking)
    • 한 번에 하나 이상의 작업을 수행한느 것을 말한다.
  • 다중 사용자 기능
    • 여러 대의 단말기(키보드와 모니터)가 하나의 컴퓨터에 연결되어 각 단말기에서 사용자들이 프로그래밍을 하거나 파일 편집을 동시에 수행할 수 있다.
    • 즉, 여러 사람이 동시에 유닉스 시스템을 사용하여 개개의 작업을 수행할 수 있다.
  • 이식성(하드웨어 종류에 상관없이 운영되는 특성)
    • 유닉스는 90% 이상이 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화 되어 있어 다른 하드웨어 기종으로 이식이 용이하다.
    • 즉, 다른 기종으로 이식할 경우 하드웨어에 의존하는 부분인 어셈블리어로 작성된 부분을 새로운 환경으로 변환시키고, C 언어로 구현된 나머지 부분을 재컴팡리하여 실행하면 된다.
  • 계층적 트리 구조 파일 시스템
    • 유닉스는 계층적 트리 구조를 가짐으로써 파일 관리를 용이하게 한다.
  • 개발 도구
    • 프로그래머가 여러가지 언어(Fortran, C, C++ 등)를 사용하여 프로그래밍할 수 있도록 많은 컴파일러(compiler)를 제공하고 있다.
  • 통신
    • 유닉스 시스템은 서로 다른 컴퓨터와 통신 가능하도록 하기 위해 여러 가지의 통신 유틸리티(mail, ftp, telnet 등)를 제공한다.
  • 가상 메모리
    • 한정된 메모리를 갖는 시스템에서 실제 메모리보다 더 큰 프로그램을 수행하기 위해 가상 메모리(virtual memory) 기법을 사용한다.

- 리눅스 특징

  • 다중처리 다중 사용자 시스템
  • 다양한 유형의 시스템에서 사용
  • 여러 파일을 동시에 지원
  • 안정적인 네트워크 기능 제공
  • 공개 소프트웨어, 오픈소스

 

(3) 윈도우 구조 및 특징

 

 - 구조

 

 

 - 특징

  • 그래픽 기반(GUI)
  • 멀티 태스킹 기능
  • 메시지 구동 시스템
    • 운영체제가 대신 입력을 받아 전달해주는 방식
  • 독립된 장치
    • 디바이스 드라이버에 의해 다양한 주변 장치들을 제어하고 관리한다.
    • 장치가 바뀌면 디바이스 드라이버를 교체하면 될 뿐 응용 프로그램은 이에 영향을 받지 않음
  • 일관성
    • 사용자가 프로그램에게 명령을 내리는 인터페이스 구성이 표준화 되어 있음
  • 리소스 분리
    • 응용 프로그램은 코드와 리소스가 분리되어 있어 개발자와 디자이너가 분담 작업을 쉽게 할 수 있음

 - 윈도우 인증 처리

  • 인증 프로세스 구성요소
    • Winlogon : 윈도우 로그인 프로세스
    • GiNA : Winlogon은 msgina.dll을 로딩해 사용자가 입력한 계정, 암호를 LSA로 전달
    • LSA : 게정과 암호 검증을 위해 NTLM 모듈 로딩, 계정 검증
    • SAM : 사용자 계정정보(해시 값)에 저장 (리눅스의 /etc/shadow 파일과 같은 역할)
  • 윈도우 운영체제 관련 프로세스 세부 내역
    • wininit.exe : 윈도우 시작 프로그램
    • services.exe : 윈도우 서비스 관리
    • lsm.exe : Local Session Manager, 호스트 컴퓨터와 서버의 연결 관리
    • lsass.exe : Local Security Authority Subsystem Service, 사용자 로그인 검사, 비밀번호 변경 관리, 액세스 토큰 생성
    • svchost.exe : 서비스를 관리하기 위한 프로세스
    • conhost.exe : 쉘의 기본 기능 수행

 

 

(4) 보안운영체제 특징

 

 - 접근 권한 통제(Authorization) ; Authorization = Authentication + Access Control

  • 사용자 인증(Authentication)
  • 접근 통제(Access Control)

 - 칩임 탐지 및 방어(Intrustion Detection & Prevention)

 

참고 자료 : 

2021 이기적 정보보안기사 필기 이론서

 

[정보보안기사] 시스템 보안 - 운영체제

- 목차 - 1. 운영체제 (1) 운영체제 개요 ① 운영체제의 주요 기능   ② 운영체제의 구조   ③ 운영체제의 기술발전 흐름   (2) 운영체제의 주요 구성 기술   ① 프로세스 관리   

yjshin.tistory.com

 

728x90

1. 인증과 접근 통제

(1) 계정과 패스워드 보호

 

▶ Linux Server

  • 리눅스 Booting 순서
    1. ROM BIOS를 읽고 디스크의  MBR(Master Boot Record)에 있는 부트로더(Boot Loader)가 실행
    2. 부트로더(LILO or GRUB)는 보조 기억장치에 저장되어 있는 리눅스 커널 탐색 및 실핵
    3. 리눅스 커널은 하드웨어 확인 후 root의 읽기 전용으로 mount 수행
    4. 디스크 검사 후 root의 쓰기 전용으로 다시 mount 수행
    5. 리눅스 커널은 init 프로세스 실행, PID 1번 할당
    6. init 프로세스는 /etc/initab 파일을 읽어 디바이스 및 프로세스 활성화
  • Linux Run Level
    • 0 : PROM 감사단계
    • 1 : 관리 상태의 단계, 암호 변경 시 사용
    • 2 : 공유된 자원을 갖지 않은 다중 사용자 단계
    • 3 : 공유된 자원을 가진 다중 사용자 단계, 텍스트 유저 모드 (기본실행 단계)
    • 4 : 현재 사용되지 않음
    • 5 : Run Level3으로 기동 후 그래픽 모드인 X-Windows 실행
    • 6 : 재부팅 단계로 실행단계 3의 상태로 재부팅
  • 계정 생성, 수정, 삭제 : useradd / usermod / userdel
  • 계정과 패스워드에 관련된 파일
    • /etc/passwd : 사용자 계정 정보
    • /etc/shadow : 사용자 패스워드
    • /etc/group : 그룹 ID / 목록
    • /etc/gshadow : 그룹 정보
    • /etc/login.defs : 사용자 전체에 자동 할당되는 UID, GID 범위, 패스워드 유효 기간, useradd 설정사항
    • /etc/default/useradd : useradd 명령어로 계정 생성 시, 어떤 환경과 파일을 참조할 것인가에 대한 정보
    • /etc/skel : 계정생성시 필요한 파일, 디렉토리를 저장하고 있는 디렉토리, 새 계정 생성 시 그대로 해당 계정은 홈 디렉토리로 복사
  • /etc/passwd 구성

    • [User Name] : [password] (x : 패스워드가 암호화되어 Shadow 파일에 저장) : [UID] : [GID] : [계정정보] : [홈디렉토리] : [쉘]
    • root : x : 0 : 0 : root : /root : /bin/bash
    • ※ Linux에서 사용자 계정 잠구는 법
      • /etc/passwd에서 쉘 정보에다가 /bin/false 또는 /bin/nologin을 기술함
      • passwd -l [계정명]
  • /etc/shadow 구성

 Windows Server

  • 컴퓨터 관리나 net user 명령어로 계정 생성, 수정, 삭제
  • 계정 생성 시 옵션
    • 다음 로그온 시 반드시 암호 변경
    • 암호 변경 불가
    • 암호 사용기간 제한 없음
    • 계정 사용 안 함(사용할 때까지 로그인 X)
  • 기본 제공 계정인 Administrator(리눅스 root)는 계정 사용 안함으로 설정하거나 이름을 변경하는게 보안상 이득
  • Guest 계정은 불필요하면 계쩡 사용 안함으로 설정(기본값은 사용안함)
  • 암호 정책
    • 암호의 복잡성
    • 최근 암호 기억
    • 최대 암호 사용기간
    • 최소 암호 사용기간
    • 최소 암호 길이
    • 해독 가능한 암호화를 사용해 암호 저장
  • 계정 잠금 정책
    • 계정 잠금 기간 : 0으로 하면 명시적으로 잠금 해제 할 때까지 유지(0부터 99999까지; 분 단위)
    • 계정 잠금 임계값 : 실패한 로그인 시도 최대 횟수를 설정(0부터 999까지 적용가능; 0이면 잠금 적용 X)
    • 다음 시간 후, 계정 잠금 임계값을 0으로 설정(1에서 99999까지; 분 단위)

(2) 파일 시스템 보호

 

▶ Windows

  • FAT12 / FAT16 / VFAT / FAT32
  •  NTFS
  • 관리 공유 폴더 제거 / 마지막에 로그인한 계정 숨김 / 예약작업 수시로 체크 / 이동식 디스크의 자동실행방지 / 원격 레지스트리 서비스 중지

▶ Linux

  • minix / ext2 / ext3 / ext4

▶ 클라우드 파일 시스템

  • Ceph
  • GlusterFS(글러스터)
  • Google 파일시스템(GFS)
  • Hadoop 분산파일시스템(하둡)
  • Lustre 파일시스템
  • Panasa 파일시스템
  • PVFS2
  • OASIS : 한국전자통신연구원 저장 시스템 연구팀에서 개발한 객체 기반 클러스터 파일 시스템

 

(3) 시스템 파일 설정과 관리

 

▶ 리눅스 디렉토리 구조(트리 구조)

  • /bin : 필수 바이너리 파일, 시스템 기본 명령어
  • /dev : 장치 파일
  • /etc : 시스템 설정 파일
  • /usr : 각종 서드 파티 응용 프로그램이 설치되는 프로그램
  • /var : 시스템에서 운영되는 임시파일 및 로그 파일
  • /home : 사용자 홈 디렉토리
  • /lib : 시스템 운영 및 프로그램 구동 시 필요한 공유 라이브러리
  • /sbin : 관리자가 사용하는 시스템 운영에 필요한 명령어
  • /tmp : 임시파일 디렉토리
  • /boot : 부팅에 필요한 커널과 핵심 파일
  • /mnt : CD-ROM과 플로피의 마운트 포인트를 제공하는 디렉토리
  • /proc : 시스템 상태를 제공하기 위한 디렉토리와 파일들이 존재

▶ Mount 하기

  • 디바이스와 디렉토리의 연결
  • # mount <디스크or 파티션> <마운트될 디렉토리>
  • 재부팅 시 마운트가 풀리기에, /etc/fstab에 기술해서 자동 마운트

▶ Shell 설정 변경

  • /etc/profile : 시스템 전역 쉘 변수 초기화
  • /etc/bashrc : 쉘 함수와 Alias를 위한 시스템 전역 변수 정의
    • 파일 안에 alias rm='rm -i'처럼 기술하면, rm이란 명령어는 rm-i와 동일하게 처리하라는 의미
  • ~/.bash_profile : 사용자의 환경 설정 파일
  • ~/.bash_history : 사용자 최초 로그인 후 생성, 사용자가 쉘에 입력한 명령어를 기록

▶ 쿼타(Quota)

  • 디스크에 사용량을 체크 감시하고, 한 파티션에 너무 많은 디스크를 사용하게 되면 관리자에게 알리도록 제한

▶ 파일 시스템 점검(File System Check & Recovery) : FSCK를 사용함

  • 저널링 파일 시스템으로 자동 복구가 되지만, 복구가 불가능한 경우 수동으로 복구해야할 경우 사용
  • 많은 시간을 요구하는 경우가 많음
  • 반드시 검사하고자 하는 파일 시스템은 unmount하고 검사해야 함

▶ 퍼미션(Permission)

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

 find로 악성코드 탐지하기

  1. find 명령으로 악성코드 파일과 중요 파일 존재 여부 확인
  2. 과도하게 부여된 권한이 있는 파일 확인
  3. 최근에 변경된 파일 확인
  4. 특정 사용자가 소유자인 파일 화가인

 

(4) 시스템 접근통제 기술

 

▶ Linux의 iptables

  • 방화벽 정책을 수립할 수 있는 도구로 특정 패킷을 분석해 패킷 차단 및 허용 가능
  • iptables -A FORWARD -p udp -m udp --dport 53 -j DROP : DNS를 사용하는 서비스 모두 차단

▶ Windows의 ipsec

▶ 통제 방식

  • 강압적 접근통제 : MAC(Mandatory Access Control)
    • 주체, 객체 등급 기반 접근권한 부여
  • 임의적 접근통제 : DAC(Discretionary Access Control)
    • 접근 주체 신분 기반 접근권한 부여
  • 역할기반 접근통제 : RBAC(Role-Based Access Control)
    • 주체, 객체 역할기반 접근 권한 부여

 

2. 보안관리

(1) 시스템 최적화(Unix/Linux)

▶ CPU

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

▶ Memory

  • free : 사용되는 메모리와 여유가 있는 메모리가 얼마인지 알려주는 간단한 명령어
  • vmstat : 가상 메모리 상태를 확인

▶ Disk I/O

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

▶ Network

  • netstat : 포트 정보
  • ping : IP 네트워크를 통해 특정한 호스트가 도달할 수 있는지의 여부를 테스트
  • traceroute : 목적지로 이동할 때 패킷이 실제로 사용하는 경로를 검색하는데 사용
  • tcpdump : 네트워크 카드를 통해 송수신 되는 패킷을 가로채고 표시함

 

(2) 시스템 로그 설정과 관리

 

▶ 시스템 로그는 시스템의 정확한 시간이 필수

  • #rdate -s time.bora.net

▶ Linux의 /var/log 디렉토리

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

 

(3) 서버 해킹 원리의 이해

 

▶ 정보수집단계

  • 포트스캐닝 등

▶ 시스템 침입단계(root 권한 획득이 목적)

  • exploit : 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점
  • 서버 설정 오류 / 원격 버퍼 오버플로우 취약점 / 계정 도용 / 패스워드 파일 획득 / 기타 취약점을 이용해 침입함
  • 가장 단순하지만 강력한 대책은 업데이트(패치)

▶ 공격 경유지나 혹은 거점 마련

  • 백도어 등을 설치하거나, 또 다른 공격의 공유지로 삼음

 

(4) 서버관리자의 업무

  • 시스템의 시작과 종료 및 재시작
  • 사용자 계정관리
  • 프로세스 및 디스크, 메모리
  • 네트워크 연결 및 상태관리

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

(1) 시스템 취약점 점검 도구

▶ NESSUS : 서버-클라이언트 구조로 작동하는 취약점 점검 도구

▶ SARA (SATAN 기반) : 서버, IDS, 라우터 등의 보안 분석 도구

▶ nikto2 : 웹 서버 스캔해서 취약점 점검(오픈 소스)

 

(2) 시스템 침입 탐지 시스템

 

(3) 무결성 점검도구

 trpwire : 가장 대표적인 무결성 점검도구로써, 시스템의 모든 파일에 대해 DB를 만들어서 추후 변동 사항을 점검

▶ Fcheck : tripwire보다 조금 더 간편한 설치와 설정

 

(4) 접근통제 및 로깅도구

▶ TCP Wrapper

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

(5) 스캔 탐지도구

▶ 방어적인 관점에서, 스캔 탐지가 일어나면 이에 따라 방어 대책을 세워야 함

▶ Portsentry

  • 포트스캔을 실시간으로 탐지하고 TCP_Wrapper와 결합해, host.deny 파일에 자동으로 등록해 방어

▶RTSD(Real Time Scan Detector) : 실시간 네트워크 불법 Scan 자동탐지 도구

 

(6) 로깅 및 로그 분석 도구

▶ syslog

  • 백그라운드 프로세스로 돌면서, 로그 메시지를 하나 이상의 개별 파일에 기록하는 데몬
  • /etc/syslog.conf에 각종 로그 환경 설정을 추가, 변경, 삭제할 수 있음
    • 형식 : Facility.Priority Logfile-Location
    • Priority : Emerg > Alert > Crit > Error > Warn > Notice > Info >Debug > None
  • webalizer
    • 아파치 웹로그를 분석해주는 멀티 웹 로그 분석도구

참고 자료 :

 

정보보안기사 필기 정리 - 1과목 시스템 보안

2015/03/03 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 준비 2015/03/07 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 1과목 시스템 보안 2015/03/09 - [자격증/정보보안(산업)기사] -

kit2013.tistory.com

 

728x90

1. 윈도우 보안

(1) 설치 및 관리

▶ 라이센스 모드

  • Per Server : 서버에 동접하는 클라이언트 숫자에 따라 라이센스를 구매하는 방식
  • Per Seat : 클라이언트 숫자에 따라 라이센스를 구매하는 방식

▶ 사용자 계정 관리

  • 암호 설정 권장
  • 사용자 계정 컨트롤(User Account Control) : 관리자 수준의 권한이 필요한 변경 사항이 있을 때, 사용자에게 이를 알려주는 것

 

(2) 공유자료 관리

▶ 공유폴더

  • NTFS은 사용자 계정이나 그룹에 대해서, 파일과 폴더에 퍼미션(Permission)을 줄 수 있음
  • Everyone 그룹에 대해서는 기본적으로 <읽기> 권한만 주어짐
    • 로컬에서 그냥 폴더 만들면 Everyone 그룹에 대해 <모든 권한>이 주어짐
  • 숨긴 공유폴더 (공유 폴더 이름 마지막에 $를 붙이는 폴더)
    • 네트워크 공유 목록에서 공유 폴더를 안보이게 함
    • 접근하기 위해서는 공유 폴더 이름을 통해 직접 접근해야 함
  • 관리를 목적으로하는 기본적인 공유 폴더(ADMIN$, IPC$, C$ 등)
    • 이름에서 알 수 있듯, 모두 숨은 공유로 만들어져 있음
    • CMD에서 net share 명령어로 확인 가능함
    • 네트워크 접근 사용만을 제한 할 수 있고, 로컬 접속은 제한할 수 없음
    • 보안상 사용하지 않을 땐 비활성화 하는 것이 좋음
    • 관리적 공유 폴더 제거하기(C$, D$ 등)
      • 위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
      • AutoShareWks의 값을 REG_DWORD 타입의 0으로 바꿈
    • Null 세션 제거하기(IPC$)
      • IPC$ 공유(Null 세션 연결) : 이 세션을 사용하면 Windows에서 익명 사용자가 도메인 계정 및 네트워크 공유 이름을 열회하는 등 특정 작업 수행이 가능
      • IPC$는 제거가 안되기에 Null 세션을 제거하는 방법을 이용
      • 위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
      • restrictanonymous의 값을 REG_DWORD 타입의 1로 바꿈(기본값은 0)

 

(3) 바이러스 및 악성코드와 백신

▶ 바이러스(Virus)

  • 다른 프로그램에 기생해서 실행(독자적으로 실행X)
  • 파일 전송 기능이 없어서, 네트워크 대역폭에는 영향을 끼치지 않음
  • 대표적으로 1994년 4월 26일 CIH 바이러스
  • 세대별 컴퓨터 바이러스
    • 제 1세대, 원시형 바이러스(Primitive Virus) : 돌(Stone), 예루살렘(Jerusalem)
    • 제 2세대, 암호화 바이러스(Encryption Virus) : 폭포(Cascade), 느림보(Slow)
    • 제 3세대, 은폐형 바이러스(Stealth Virus) : 맥가이버(MacGyver), 브레인(Brain), 512
    • 제 4세대, 갑옷형 바이러스(Armor Virus) : 다형성(Polymoriphic), 자체 변형(Self-encryption)
    • 제 5세대, 매크로 바이러스 : 전문 프로그래머가 아니더라도 누구나 쉽게 제작, 배포 가능

▶ Shellcode

  • 작은 크기의 코드로 소프트웨어 취약점을 이용하는 짧은 기계어 코드
  • 일반적으로 명령 쉘을 실행시켜 공격자가 피해자의 쉘 제어
  • 어셈블리어로 작성, 기계어로 번역

▶ Heap Spray

  • Heap 영역에 임의적으로 Shell Code를 삽입 실행하는 공격

▶ 버퍼 오버플로우(Buffer Overflow)

  • 프로세스가 사용 가능한 메모리 공간을 초과해서 발생되는 공격, 보안 취약점
  • ※ 프로세스가 사용하는 메모리 공간 : Text, Data, Stack, Heap 

 

▶ 경쟁조건(Race Condition) : 다중 프로세스 환경에서 두 개 이상의 프로세스가 동시에 수행될 때 발생

 

▶ APT(Advance Persistent Threat) 공격

  • 다양한 공격 기법을 사용하여 지속적으로 공격을 수행하는 행위
  • Zero Day Attack : 소프트웨어 패치 전 취약점을 이용한 공격
    • 바이너리 디핑(Binary Diffing) : 자동으로 Malware 탐지, 오픈소스 라이센스 준수 여부 확인가능; 으로 발견 가능 
  • MAIL APT : 악성코드를 메일에 첨부하여 정보를 획득하는 공격
  • BACKDOOR APT : 표적에 침투 후 백도어를 설치하여 재침입 경로 오픈 공격
  • APT 공격단계:
    1. 침투(Incursion)
    2. 탐색(Discovery)
    3. 수집/공격(Capture/Attack)
    4. 유출(Exfiltration)

 

▶ 웜(Wrom)

  • 독자적으로 실행(기억장소에 코드나 실행파일로 존재)
  • 네트워크를 사용해서 자신을 복사하기에, 네트워크 대역폭을 잠식함
  • 대표적으로 2001년 9월에 발생한 님다(Nimda)

▶ 트로이목마

  • 자기 자신을 복제하지는 않지만, 악의적 기능을 포함하는 프로그램
  • 유틸리티 프로그램에 내장되거나, 그것으로 위장해 배포됨
  • 대표적으로 백오리피스같은 프로그램

▶ 스파이웨어(Spyware)

  • 사용자 몰래 PC에 설치되어 정보를 수집하는 프로그램

 

(5) 레지스트리 활용

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

▶ 루트 키(Root Key) 역할

  • HKEY_CLASSES_ROOT (HKCR) : 파일의 각 확장자에 대한 정보와 파일과 프로그램 간의 연결에 대한 정보
  • HKEY_CURRENT_USER (HKCU) : 현재 로그인한 사용자와 관련된 정보 등
  • HKEY_LOCAL_MACHINE (HKLM) : 하드웨어와 프로그램 설정 정보
  • HKEY_USERS (HKU) : 컴퓨터의 모든 사용자에 대한 정보
  • HKEY_CURRENT_CONFIG(HKCC) : 시스템 시작 시 컴퓨터에서 사용하는 하드웨어 프로필 등(디스플레이, 프린트 설정)
  • HKEY_PERFORMANCE_DATA : 런타임 성능 데이터 정보를 제공
  • 악성코드 구동을 위해 주로 HKEY_CURRENT_USER와 HKEY_LOCAL_MACHINE이 이용됨

▶ 하이브(Hive) 파일

  • 레지스트 정보를 가지고 있는 물리적인 파일
  • SYSTEM, SOFTWARE, SECURITY. SAM, HARDWARE, COMPONENTS, BCD00000000

 

2. 인터넷 활용 보안

(1) 웹브라우저 보안

▶ 검색 기록 / 쿠키 삭제 / 임시파일 삭제

 익스플로어에서는 보안 수준을 설정하기

  • 보통 이상으로 사용하고, 세부 설정 가능

 브라우저에서 개인정보를 수집하는 기술

  • 쿠키(Cookie) & 슈퍼쿠키(Super Cookie) : 슈퍼쿠키는 일반적인 쿠키와는 다른 경로에 저장 돼 발견자체가 어려움
  • 비콘(Beacon ; Web Bug)
  • History Stealing
  • Fingerprint

(2) 메일 클라이언트 보안

▶ PGP(Pretty Good Privacy)

  • 데이터 암호화와 복호화하는 프로그램으로 전자 메일의 보안성을 높이기 위해 자주 사용
  • IETF에서 표준으로 채택한 PEM과 비교
  • 수신 부인방지와 메시지 부인 방지 기능이 없음
  • 메시지의 비밀성을 위해 공개키 암호기술 사용(RSA, IDEA 등)
  • 메시지의 무결성을 위해 메시지 인증 사용
  • 메시지의 생성, 처리, 전송, 저장, 수신 등을 위해 전자서명을 사용

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

▶ 트로이 목마 S/W

  • 대표적인 툴 : AOL4FREE.COM / Shark2 / NetBus / Back Orific

 크랙킹 S/W

  • 루트킷(RootKit) : 서버 내에 침투해서 백도어를 만들고 로그를 삭제하는 등의 패키지들
    • 대표적으로 lrk5
    • 루트킷을 찾아내는 프로그램은 안티루트킷(Anti-RootKit) : 대표적으로 Icesword
  • 패스워드 크랙(Password Crack)
    • Brute Force Attack / Dictionary Attack / Password Guessing / Rainbow Table 등의 공격 방법으로 크랙
    • 대표적인 툴 : John the Ripper / pwdump / LOphtCrack /ipccrack / chntpw(to reset pw) / ERD Commander
  • 포트 스캐닝(Port Scanning)
    • 다중 취약점 스캔 : SAINT / sscan2k /vetescan /mscan 등
    • 특정 취약점 스캔 : cgiscan / winscan / rpcscan
    • 은닉 스캔 : Nmap / stealthscan
    • 네트워크 구조 스캔 : firewalk / Nmap
    • 스캐닝 기법
      • Openning Scanning : TCP connect Scaning
      • Half-Open Scanning : SYN Scanning
      • Stealth Scanning : FIN / X-MAS / NULL Scanning
      • More Advanced Scanning : Spoofed Scanning
    • 포트 스캐닝의 구분
      • TCP 포트 스캐닝 : 특정 Flag값을 설정한 뒤, 패킷을 보내고 그에 대한 응답으로 확인
      • UDP 포트 스캐닝 :
        • 포트가 열린 상태 : 아무런 응답 X
        • 포트가 닫힌 상태 : 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 <PORT_NUMBER> : ICMP Request Packet 보내고, 응답을 기다리는 대신 TCP ACK를 보내 응답 기다림. 살아있으면 RST 수신
        • -PS
        • -PB
        • -O : 운영체제 확인
        • -p <PORT_NUMBER>
        • -S <IP_ADDRESS> : Spoofing
        • 예 : #./Nmap -p 1-30,110,65535 203.x.x.x
          • 203.x.x.x의 1~30번, 110번, 65535를 스캔한다.

 키로그 S/W

  • 대표적인 툴 : Winhawk, Key~~로 시작되는 툴들

(4) 도구활용 보안관리

▶ 클라이언트 보안도구 활용

  • BlackICE
    • 일종의 방화벽
    • 외부에서 자신의 컴퓨터에 접근하는 것을 탐지 / 제어하는 프로그램
    • 침입 차단 / 어플리케이션 보호 / IDS 기능 제공
  • Snort
    • 공개 네트워크 IDS
    • 다양한 OS 지원 / Rule 설정가능

▶ 클라이언트 방화벽 운영

  • Windows 방화벽(ipsec)
  • Linux/Unix 방화벽(iptalbes)

 

참고 자료 :

2021 이기적 정보보안기사 필기 이론서

 

정보보안기사 필기 정리 - 1과목 시스템 보안

2015/03/03 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 준비 2015/03/07 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 1과목 시스템 보안 2015/03/09 - [자격증/정보보안(산업)기사] -

kit2013.tistory.com

 

728x90

1. 네트워크 일반

(1) 네트워크 개념

 ▶ 거리에 따른 네트워크 유형

  • PAN(Personal Area Network) : 3m 이내의 인접 지역간의 통신, 짧은 거리로 인해 유선보다는 무선의 WPAN으로 주로 활용
  • LAN(Local Area Network) : 근거리 영역의 네트워크, 동일한 지역 내의 고속의 전송 회선으로 연결하여 구성, Client/Server와 Peer-to-Peer 모델, WAN보다 빠른 통신 속도
  • WAN(Wide Area Network) : 광대역 네트워크로 LAN 간의 상호 연결망, LAN에 비해 에러율, 전송 지연 높음, 라우팅 알고리즘(두 목적지 사이의 최단거리) 중요
  • MAN(Metropolian Area Network) : LAN과 WAN의 중간 형태의 네트워크, 전송매체는 동축 케이블, 광케이블

 ▶ 회선교환 방식과 패킷교환 방식

  • 회선교환(Circuit Switching) : 교환기를 통해 통신 회선을 설정하여 직접 데이터를 교환하는 방식 (ex. 전화)
    • 고정적인 대역폭을 사용하며, 대용량의 데이터를 고속으로 전송할 때 좋음
    • 연결된 두 장치는 서로 전송률과 기종이 동일해야 송수신 가능
  • 패킷교환(Packet Switching) : 송신측에서 모든 메시지를 일정한 크기의 패킷으로 분해/전송, 이를 수신측에서 원래의 메시지로 조립
    • 고신뢰성, 고품질, 고효율
    • 패킷별 헤더 추가로 인한 오버헤드 발생 가능
    • 가상회선(Virtual Cicuit) : 패킷을 전송하기 전에 논리적인 연결을 먼저 수행
    • 데이터그램(Datagram) : 각 전송 패킷을 미리 정해진 경로 없이 독립적으로 처리하여 교환하는 방식

 ▶ 네트워크 토폴로지

  • 각 형태 별 장단점 알아놓기
  • 계층형(트리형)
  • 수평형(버스형)
  • 망형(그물형)
  • 성형(스타형)
  • 원형(링형)

 

(2) OSI 7 Layer

1. 각 레이어의 기능 및 역할

 ▶ OSI(Open System Interconnection) : 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것

 ▶ SDU(Service Data Unit) : 상향/하향 두 통신 계층 간에 전달되는 실제 정보(실제 데이터 단위량)

 ▶ PDU(Protocol Data Unit) : 동일 통신계층(Peer-to-Peer) 간에 운반되는 전체 데이터량(실제 데이터 + 운반 수단)

  • PDU 구성 :
    • PCI(Protocol Control Unit) : 헤더 정보(발신지 주소, 수신지 주소, 순서 번호, 오류검출용 FCS 등)
    • SDU(Service Data Unit) : 실제 사용자 정보

 ▶ OSI 7 Layer

  1. 물리 계층(Physical Layer)
    • PDU : Bit Stream(0과 1의 연속 / 전기적 신호)
    • Protocol : Ethernet RS-232C
    • Equipment : Repeater / Hub
  2. 데이터링크 계층(Datalink Layer)
    • PDU : Frame
    • Protocol : Ethernet / HDLC / PPP / ...
    • Equipment : Bridge / L2 Switch
  3. 네트워크 계층(Network Layer)
    • PDU : Packet
    • Protocol : IP / ARP / ICMP
    • Equipment : Router / L3 Switch
  4. 전송 계층(Transport Layer)
    • PDU : Segment
    • Protocol : TCP / UDP
    • Equipment : L4 Switch, Gateway
  5. 세션 계층(Session Layer)
  6. 표현 계층(Presentation Layer)
    • 입출력 데이터를 하나의 표현 형태로 변환 (이해할 수 있는 포맷으로 변환)
    • Protocol : JPEG, MPEG, SMG, AFP
  7. 응용 계층(Application Layer)
    • PDU : Data or Message
    • Protocol : Telnet / HTTP / FTP / SSH  ...
    • Equipment : PC / Server / ...

2. 레이어별 네트워크 장비

 ▶ Physical Layer

  • Cable : Twisted Pair Cable, Coaxial, Fiber-Optic Cable
  • Repeater : 전기신호 증폭
  • Hub : Repeater 기능 + Hub에 붙은 모든 장비로 신호 전달(이 때문에 Hub에 붙은 모든 장비는 하나의 Collision Domain)

 ▶ Data Link Layer

  • Bridge : Frame의 MAC주소와 MAC Table을 참조해, 어떤 포트로 Frame을 재조립해 내보낼지 결정할 수 있는 장비
    • Frame을 S/W로 처리되는 방식이기에 Switch보단 느림
    • 모든 포트가 동일한 속도
    • Store-And-Forward 방식만 사용
  • Switch  : Mac 주소와 포트 번호가 기록된 Mac Address Table를 가지고 있어, 목적지 MAC 주소를 가진 장비가 연결된 포트로만 프레임 전송
    • Frame 처리 절차를 칩에 구워서 H/W적으로 구현(ASIC; Application Specific Integrated Circuit) 비교적 Bridge보다 빠름
    • Repeater 기능 + Bridge기능
    • 포트 별로 속도를 다르게 처리 가능
    • Store-And-Forward / Cut-Through 방식 사용

 ▶ Network Layer

  • Router : Packet의 목적지 IP를 보고 목적지와 연결된 인터페이스로 전송해줌(경로결정) / 네트워크 보안 / QoS
  • L3 Swtich

 ▶ Transport Layer

  • L4 Switch : 부하분산(트래픽 분산)

 ▶ Application Layer

  • Gateway : 서로 다른 네트워크망과 연결, 패킷 헤더의 주소 및 포트 외 거의 모든 정보 참조

※ Store-And-Forward : 들어오는 프레임을 전부 일단 버퍼에 담아두고, 어러검출과 같은 처리를 완전히 수행한 후에 목적지를 향해 포워딩하는 스위칭 기법

 

※ Cut-Through : 수신된 패킷의 헤더 부분만 검사하여, 곧바로 스위칭하는 기법

 

(3) TCP/IP 일반

 ▶ TCP/IP Layer

  • 1 Layer (Network Access Layer)
  • 2 Layer (Internet Layer)
  • 3 Layer (Transport Layer)
  • 4 Layer (Application Layer)
    • 관련 서비스 : FTP, DNS, HTTP, Telnet, SMTP, DNMP

 ▶ IPv4, IPv6 Addressing

  • IPv4
    • 네트워크 주소와 호스트 주소로 이루어진 32bit 주소 체계
      • 네트워크를 A,B,C,D Class로 나누어 구분
    • IP주소의 고갈로 기형적인 기술인 NAT와 DHCP, Subnet같은 기술 생성
      • NAT(Network Address Translation) : 1개의 공인 IP로 다수의 사설 IP 통신 가능, 내부에 있는 IP 보안 가능
      • Subnet : 네트워크를 Class로 나누는 체계가 아닌, 임의대로 Classless하게 네트워크를 나누는 기술
      • DHCP(Dynamic Host Configuration Protocol) : 동적으로 IP를 할당하고 필요없는 IP를 회수하는 기술
    • IPv4 Address Classes

      • Class A : 0.0.0.0 to 127.255.255.255
      • Class B : 128.0.0.0 to 191.255.255.255
      • Class C : 192.0.0.0 to 223.255.255.255
      • Class D : 224.0.0.0 to 239.255.255.255
    • 데이터 전달 방법 : Unicast / Multicast / Broadcast
  • IPv6
    • IPv4의 주소 고갈의 대응책으로써 128bit의 주소 체계
    • Header의 간소화로 라우팅이 빨라짐(IPv4와 IPv6의 Header가 다름)
    • 데이터 전달 방법 : Unicast / Multicast / Anycast
  • https://driz2le.tistory.com/69

 ▶ Subnetting 설계 및 활용

  • Subnet Mask : IP주소에서 네트워크 주소와 호스트 주소를 구분하는 구별자 역할
    • 비트열이 1이면 네트워크 주소 부분, 0이면 호스트 주소 부분
    • CIDR(Classless Inter-network Domain Routing) :  Subnet Mask 값을 십진수로 변환해 '/24/ 같이 IP주소 뒤에 붙여서 표현
    • VLSM(Variable Length Subnet Mask) : 서로 다른 크기의 Subnet을 지원하고 필요한 호스트의 수를 계산해서 호스트의 수가 많은 Subnet을 먼저 계산하는 방식
  • Supernetting : 여러 개의 네트워크를 하나의 네트워크의 주소로 묶는 것
  • Subnetting : 하나의 네트워크 구소를 여러 개의 하위 네트워크 영역으로 분할하는 것 / 하위 네트워크를 Subnet이라 함

 ▶ 데이터의 캡슐화

  • 캡슐화(Encapsulation) : 사용자 데이터가 각 계층을 지나면서, 상위 계층으로부터 온 데이터에 자신의 계층 특성을 담은 제어 정보를 헤더화 시켜 이를 결합하는 과정

 ▶ 포트주소 의미와 할당 원칙

  • 포트 주소는 16bit의 정수 형태(0~65535)
    • Well-known Port(0~1023) : 잘 알려진 서비스에 할당된 포트 주소
      • FTP (TCP 20,21)
      • SSH (TCP 22)
      • Telnet (TCP 23)
      • SMTP (TCP 25)
      • DNS(TCP 35 / UDP 53)
      • HTTP(TCP 80)
      • POP3(TCP 110)
      • NetBIOS(TCP 137,138,139)
      • HTTPS(TCP 443)
    • Registered Port(1024~49151) : 특정 프로그램에서 등록한 포트 주소
    • Dynamic Port(49152~65535) : 임의로 사용하는 포트 주소

 ▶ IP, ARP, IGMP, ICMP, UDP, TCP 등 각 프로토콜의 원리 및 이해

  • IP(Internet Protocol)
    • TPC/IP 네트워크에서 출발지, 목적지 IP 주소를 지정하는 프로토콜
    • Packet의 목적지 주소를 보고 최적의 경로를 찾아 패킷을 전송해주는게 주된 역할
    • 신뢰성이 없고 비연결 지향적임(신뢰성보다는 효율성에 중점)
    • IHL(HLEN) : (Header의 길이/4)로써 Option이 없으면 20Byte이므로 5라는 값을 가짐
    • Flags(3 Bits) :
      • Reserved(Must be zero)
      • DF(Don't Flagement) : Datagram의 분할을 방지
      • MF(More Flagment) : Datagram이 분할될 때 마지막 조각이면 0, 아니면 1
  • ARP(Address Resolution Protocol)
    • IP주소를 MAC 주소로 변환하는 표준 프로토콜
      • 해당 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)
  • 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)
    • 멀티캐스트 그룹을 관리하기 위한 프로토콜(멀티 캐스트 멤버 가입, 수정, 탈퇴)
    • 멀티캐스트 호스트와 라우터 사이에서 동작하게 됨(같은 네트워크에서만 동작함 / TTL1)
  • TCP(Transmission Control Protocol)
    • Transport Layer의 프로토콜로써, 신뢰성과 연결 지향적 특징을 가짐
    • 혼잡 제어와 흐름 제어 기능을 제공(Sliding Window) / 에러 제어도 가능(Checksum)
    • 재전송 방법 : GO-Back-N 방법 (되돌아온 ACK 번호 이후의 것 전부 재전송)
    • ICMP 프로토콜로 주기적으로 송수신 가능 여부 체크
    • 클라이언트와 서버의 데이터 교환을 위해 TCP 3-Way Handshake를 통해 TCP Session을 확립해야 함
    • TCP Header Flag

      • URG : Urgent Pointer가 유효함
      • ACK : 확인응답 필드에 확인응답번호(Acknowledgement Number)값이 셋팅됐음을 알림
      • PSH : 버퍼링된 데이터를 가능한 발리 상위 계층 응용프로그램에 즉시 전달할 것
      • RST : 연결확립(ESTABLISHED)된 회선에 강제 리셋 요청
      • SYN : 연결시작, 회선개설 용도
      • FIN : 연결해제, 회선종결 용도
    • 에러제어(Error Control)
      • FEC(Forward Error Correction)
        • 수신받은 데이터에 에러가 없는지 확인
        • 패리티 검사(Parity Check), 볼록합계 검사, 해밍코드(Hamming Code)
      • BEC(Backward Error Correction)
        • 수신측이 에러 검출 후 송신측에게 에러가 발생한 데이터 블록을 다시 전송 요청하는 방식
        • Stop-and-Wait, Go-back-N, Selective Repeat ARQ, Adaptive ARQ
    • 흐름제어(Flow Control)
      • 흐름제어 : 송수신 측 사이 전송 패킷의 양, 속도를 조절하여 네트워크를 효율적으로 사용
      • 슬라이딩 윈도우(Sliding Window) 
        • 호스트 간에 송수신 혹은 수신할 수 있는 Size 정보를 제공
        • Stop-and-Wait의 단점을 보완한 방식
        • 불필요한 네트워크 부하 최소화
    • 혼잡제어(Congestion Control)
      • 송신 단말의 전송률을 제어하여 혼잡으로 인해 손실된 데이터를 재전송
      • TCP Slow Start : TCP가 시작될 때 전송속도를 초기값부터 지속적으로 올리는 법
      • 혼잡회피(Congestion Avoidance)
  • UDP
    • Transport Layer의 프로토콜로써, TCP와 달리 비신뢰성과 비연결지향적인 특징을 가짐
    • Sequence Number와 Ack Number가 없어서 순서 제어와 흐름 제어가 불가능
    • 따로 연결하는 과정이 없어서 빠른처리와 실시간성을 요구하는 서비스에 적합

 ▶ 데이터 전달 방식

  • Broadcast
    • Broadcast Domain(=Subnet) 범위 이내에 모든 시스템에 Frame을 보냄
      • 외부로 나가면 Router 단에서 Drop
    • Broadcast를 받은 시스템은 CPU가 Packet을 처리하도록 함(Broadcast가 많아지면 네트워크 트래픽도 증가하고, CPU 성능도 낮아짐)
  • Anycast
    • IPv4의 Broadcast가 사라지고 IPv6에서는 Anycast로 대체
  • Multicast
    • 네트워크에 연결되어 있는 시스템 중, 일부분에게만 정보를 전송할 수 있는 것
    • Router가 Multicast를 지원해야만 사용가능
    • Multicast Group에 가입, 탈퇴시에 IGMP를 사용
  • Unicast
    • 정보 전송을 위해 Frame에 자신의 MAC와 목적지의 MAC을 첨부해 전송하는 방식
    • 가장 많이 사용되는 방식으로, Broadcast와 달리 CPU 성능에 문제를 주지 않음

 

(4) Unix/Windows 네트워크 서비스

 ▶ DNS, DHCP, SNMP, Telnet, FTP, SMTP, HTTP 등 각종 서비스의 원리 및 이해

  • DNS(Domain Name Service)
    • Domain Name과 IP Address를 Mapping 시켜주는 거대한 분산 시스템
    • 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 동작 순서
      • Client : DNS Cache 확인 → Hosts 파일 확인 → Server로 Query
      • Server : DNS Cache 확인 → Zone File 확인 → Iteractive Query / 해석 실패
    • 취약점을 이용한 공격
      • DNS Cache Poisoning
      • DNS Spoofing
  • DHCP(Dynamic Host Configuration Protocol)
    • 네트워크 상의 IP 주소를 중앙에서 관리하고 할당하도록 해주는 프로토콜
    • DHCP 동작과정
      • Discover : Client가 DHCP Server를 찾음 (Broadcast)
      • Offer : DHCP Server가 Client에게 제공할 수 있는 정보를 줌(Broadcast, 물론 시스템에 따라 Unicast인 경우도 있음)
      • Request : Offer 받은 Client가 제공받은 정보를 사용하겠다고 DHCP Server로 알림
      • 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 151) : Manager to Agent
      • Trap(UDP 162) : Agent to Manager
    • 종류
      • SNMPv1
      • SNMPv2 : 현재 많이 사용(SNMPv1에다가 보안기능을 추가(DES/MD5))
      • SNMPv3 : 구현의 복잡성 때문에 잘 사용되지는 X
    • 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)
    • 제어 접속 포트(TCP 21) 및 데이터 접속 포트(TCP 20)분리
    • ftpuser에 등록된 사용자는 FTP 접근 불가
    • 연결 방식
      • Active 방식 / Passive 방식
  • SMTP(Simple Mail Transfer Protocol)
    • 인터넷 전자우편 표준 프로토콜(TCP 25 Port)
    • Store-and-Forward 방식
    • MTA(Mail Transfer Agent), MDA(Mail Delivery Agent), MUA(Mail User Agent)
    • 다른 형식의 데이터를 전달하기 위해 MIME를 이용함(HTTP와 구성이 비슷)
    • POP3
      • TCP 110 Port, 메일서버에 접속해 저장된 메일을 내려받는 MDA 프로그램
      • 메시지 수신 후 서버에서 해당 메일 삭제
    • IMAP, IMAP3
      • IMAP 143 Port, 메시지 수신 후 메일 서버에 원본 유지
  • HTTP(Hypter Text Transfer Protocol)
    • WWW(World Wide Web)로 시작되는 인터넷에서 웹 서버와 웹 클라이언트 사이에 문서를 전송하기 위해 사용되는 통신 프로토콜
    • TCP 80 포트 사용
    • State-less 프로토콜 : 요청이 있을 때 연결 후, 요청 처리 후에는 연결 종료
    • HTTP Version 1.0
      • 연결을 수행할 때 마다 3-Way Handshaking 기법 사용
      • HTML 페이지를 수신 받고 완전히 연결 종료, 필요 시 다시 연결
    • HTTP Version 1.1
      • Keep Alive Connection : 연결을 종료하지 않고 유지
      • 따라서, 서비스 요청 이후에 바로 연결을 종료하지 않고 연결 대기 이후 종료
    • HTTP Version 2.0
      • 더 빠른 데이터 처리 가능
      • 멀티플렉싱(Multiplexing) : 동시 다발적 양방향 통신
      • 헤더압축(Header Compression) : 헤더 정보를 1/3 수준으로 압축
      • 서버푸시(Server Push) : 웹 서버가 웹 브라우저에게 필요한 데이터를 알아서 미리 전송
    • HTTP 프로토콜 구조
      • GET 방식 : 데이터를 URL에 포함시켜 전송, 전송 데이터 양 제한(2Kbyte or 4Kbyte)
      • POST 방식 : 데이터를 Request Body에 포함시켜 전송, 전송 데이터 양 제한 X
      • HTTP Header
        • HTTP Request 시에 전달해야하는 정보 저장
      • HTTP Body
        • POST 방식의 Request 시에 Body에 파라미터의 정보를 넣고 전송
    • 클라이언트 측의 정보 유지 방식
      • Cookie 
        • 클라이언트 측에 상태 정보를 저장
        • 쿠키 저장 시 종료 시점 설정, 설정 정보가 없으면 웹 브라우저 종료 시점에 종료
      • Session 
        • 서버 측에 상태 정보 저장

 ▶ 라우팅 프로토콜 분류(BGP, OSPF, RIP 등)

  • Distance Vector
    • 최단 경로를 구하는 벨만 포드 알고리즘 기반
    • 네트워크 변화 발생 시 인접한 라우터에 정기적으로 전달, 인접 라우터에서는 라우팅 테이블 정보 갱신
    • 모든 라우터까지의 거리 정보 보관
    • RIP, IGRP, EIGRP, BGP
  • Link State
    • 최소 신장트리를 구하는 다익스트라 알고리즘 기반
    • 라우터와 라우터를 연결하는 Link 상태에 따라 경로 설정
    • 라우터가 Network 변화 감지 시 링크 상태 변경 정보를 인접한 라우터에게 즉각 전달 후 저장
    • 인접 라우터까지의 Link Cost 계산
    • OSPF, IS-IS

 ▶ Workgroup과 Domain

  • Microsoft에서 제공하는 효율적인 디렉토리 관리를 위한 네트워크 모델
  • Workgroup
    • 개별적인 관리모델로써, Workgroup 내의 시스템에 접근하려면 해당 시스템에 생성되어 있는 계정으로 인증받아야함
    • 전체적인 관리가 어려우며 비율적임
  • Domain
    • 통합적인 관리모델로써, Workgroup의 크기가 커지면 각 시스템마다 계정을 생성해야하는 문제점을 고침
    • Domain 내의 한 Server(DC ; Domain Controller)로 Domain 내이 모든 시스템의 사용권한 및 보안의 제어가 가능
      • DC에서 계정을 관리하기에, 각 시스템마다 동일한 계정으로 접근이 가능해짐
    • Domain의 각 시스템들은 다른 로컬 네트워크에 있을 수 있음

 ▶ 터미널 서비스 등 각종 원격 관리 서비스

  •  SSH(Secure Shell)
    • 안전하지 않은 네트워크를 통해 원격 로그인하거나, 기타 안전한 네트워크를 이용하는데 안전한 쉘 프로토콜
  • Windows Terminal Service
    • mstsc(기본값으로 TCP 3389 Port)
      • 보안을 위해 Port를 변경하는 것이 좋은
      • GUI로 작업이 가능하다는게 특징(화면 동기화는 지원되는 X)
      • 동시접근가능한 계정의 수가 존재

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

  • 인터넷 공유(ICS ; Internet Connection Service)
    • 한 시스템에 네트워크 인터페이스가 2개 이상 존재할 때, 인터넷에 연결된 하나의 네트워크 인터페이스를 통해 인터넷에 접속하는 방법
    • ICS를 제공하는 시스템에서, DHCP를 통해 나머지 시스템에게 IP를 할당하고 NAT로 외부와 연결가능하게 함
      • 즉, Windows 시스템을 하나의 Router로 이용하는 기술
  • NAT(Network Address Translation)
    • 사설 IP를 공인 IP와 Mapping하여 변환하는 프로토콜
      • IP 주소의 고갈 / 설계의 효율성 / 보안의 강화 등의 이유로 사용함
    • 종류
      • Static NAT : 사설 IP와 공인 IP를 1:1로 할당
      • Dynamic NAT : 공인 IP의 범위가 정해져있는 Pool에서 자동으로 공인 IP를 선택해서 사설 IP에 Mapping
      • NAT-PAT(NATPort Address Translation) : NAT에 Port 주소를 Mapping해서 변환시키는 방법(Port Forwarding) 

2. 네트워크 활용

(1) IP Routing

▶ IP Routing 종류 및 프로토콜

  • IP Routing : 주어진 IP Packet을 목적지 주소까지 전달하는 것으로 전달 경로의 설정이 핵심
  • Routing Table : 목적지 네트워크로 데이터를 전달하기 위한 경로 정보 Database
    • Routing Table을 채우는 방법
      • Connected : 직접 Interface에 연결된 장비의 정보를 학습
      • Static Route : 관리자가 수동으로 목적지 네트워크에 대한 경로 정보를 입력해서 학습
      • Dynamic Route : Routing Protocol을 이용해, 장비 간 경로 정보를 주고 받아서 정보를 학습
      • Redistributed : 다른 Router와 정보 교환(Routing Protocol 간의 정보 교환)
    • Static Routing
      • Router(config) # ip rout <Destination Network IP> <Subnet Mask> <다음 Router IP>
    • Default Routing : Routing Table에 없는 목적지의 경우 보내는 경로
      • Router(config) # ip route 0.0.0.0 0.0.0.0 <Defult Router IP>
    • 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 간의 
          • Adavanced 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

(2) 네트워크 장비 이해

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

  • LAN Card(NIC ; Network Interface Card)
    • Point-to-Point 포폴로지 형태
    • 신호 전달 방식 : Full Duplex / Half Duplex
  • Hub
    • 1계층 장비
    • 신호 전달 방식 : Half Duplex
      • CD(Collision Domain)를 확장시키지만, CSMA/CD 기법을 사용해 예방과 해결 가능
  • Switch
    • 2계층 장비
    • 신호 전달 방식 : Half Duplex / Full Duplex (CD가 분리됨)
      • Port마다 다르게 설정가능
    • Bridge와는 달리 H/W 방식으로 Switching을 함
    • Switching 하는 방식
      • Stored and Forwarding : 전체 Frame 모두 받고 오류 검출 후 전달
      • Cut-Through : Frame에서 목적지 주소만 보고 바로 전달
      • Fragment-Free : Frame의 64Byte까지만 받고 검사 후, 바로 전달
    • Flooding : 목적지 MAC주소가 자신의 MAC Table에 없거나, MAC Table이 가득차면 Hub처럼 동작
    • Swtich jamming : MAC Table 가득 차게 만들어서, Hub처럼 동작하게 만들어 Sniffing하는 방법
    • MAC Table
      • Learning : 출발지 MAC 주소 확인 후, MAC Table에 없으면 저장
      • Aging : MAC 주소 기억하는 시간
  • Bridge
    • 2계층 장비
    • Switch와는 달리 S/W적으로 구현됨
    • Swtiching하는 방식
      • Sore and Forward

▶ VLAN 구성 및 관리

  • VLAN(Virtual Local Area Network) : 물리적인 네트워크와 상관없이 논리적으로 네트워크를 분리하는 기술
  • 기본적으로, VLAN 소속이 다르면 서로 통신이 불가능함(통신을 위해서 Router나 Routing Module이 필요)
    • Switch 내부적으로 Frame에 VLAN 정보가 있는 Tag를 붙여서 내보내는데, VLAN 소속이 다르면 버림
  • Switch의 모든 Port는 기본적으로 VLAN 1로 할당되어 있음
  • VLAN이 설정된 Switch의 각 Port의 구분
    • Port : 지정된 VLAN Tag 정보만 허용되는 Port (Host로의 연결에 사용)
    • Trunk Port : VLAN Tag 정보를 확인 안하는 Port(다른 Switch와의 연결에 사용)
  • Trunking Protocol
    • 802.1Q : 표준 Protocol(Native VLAN 지원 O)
    • ISL : Cisco Only Protocol(Native VLAN 지원 X)
  • Native VLAN
    • Trunk Port로 Frame이 나갈 때 특정 VLAN에 대한 정보를 Tagging 하지 않고 전달
      • 예를 들어 Native VLAN이 2라면, VLAN 2인 Frame은 Tagging없이 전달
  • VTP(VLAN Trunking Protocol)
    • Cisco Only Protocol
    • Trunk로 연결된 Switch들 간의 VLAN 설정 정보를 통합적으로 관리하기 위한 것
    • VLAN 정보가 공유되는 네트워크를 도메인이라고 지칭
    • VTP Mode
      • Server Mode : VLAN 정보를 생성, 변경, 제거가 가능하며, 도메인 내에 퍼트리는 존재
      • Client Mode : VLAN 정보를 받는 존재
      • Transparent Mode : 도메인 내에 있지만, 자신만의 VLAN 정보를 생성하고 제거

 

(3) 무선통신

▶ 이동/무선통신 보안

  • 무선랜 유형
    • WPAN(Wireless Personal Area Network)
      • 단거리 Ad-Hoc 방식 / Peer to Peer 방식 (노트북과 마우스 등)
    • WLAN(Wireless Local Area Network)
      • 일반적으로 우리가 말하는 Wi-Fi
      • Half Duplex 방식으로 신호가 전달되므로 CSMA/CA로 충돌을 회피함
    • WMAN(Wireless Metropolitan Area Network)
      • 도시 규모의 지역에서 무선 광대역 접속 기능(WiMAX)
  • 무선랜 접속 방식
    • Infrastructure Network
      • 유선 네트워크와 무선 네트워크를 연결하는 AP(Access Point) 장비에 의해 외부통신이 지원되는 WLAN
    • Ad-Hoc Network
      • WLAN 장비 사이에서 직접 통신이 일어날 뿐, 외부와의 연결은 X
  • WLAN 보안 설정
    • WEP(Wireless Equivalent Privacy)
      • RC4 암호화 알고리즘을 사용(RC4 자체가 알고리즘 자체에 취약점이 존재)
      • 정적인 암호화 키를 사용하기에 도청에 약함
    • WPA(Wi-Fi Protected Access), WPA2
      • WEP의 문제점을 보완
      • WPA : 인증(802.1X/PSK), 암호화(TKIP)
      • WPA2 : 인증(802.1X/PSK), 암호화(CCMP) ; CMMP가 AES를 사용하는 거


(4) 네트워크 기반 프로그램 활용

▶ ping, Tracerout 등 네트워크 기반 프로그램의 활용

  • Ping(Packet Internet Grouper)
  • Traceroute(Windows는 tracert)
    • IP의 TTL값 1씩 늘려가며 Time Exceeded 에러 메시지를 통해 목적지까지의 경로를 추적
    • Unix/Linux : traceroute(UDP 생성)
    • Windows : Tracert(ICMP Echo Request 생성)
    • Firewalking : Linux의 traceroute를 이용해 방화벽에 도착하는 port 번호 조작하여 방화벽을 우회하는 기법

▶ Netstat, Tcpdump 등 활용

  • Netstat
    • 시스템에서 제공되고 있는 서비스 정보(현재 open되어 있는 port 정보) 확인
    • netstat -an
  • Tcpdump
    • NIC로 입출력되는 트래픽을 사용자에게 출력해주는 분석 도구
    • 추가

참고자료 : 

 

[정보통신기술용어해설]

ㅇ 기술용어해설 후원    ( 5천원 이내 소액 한 )     - 국민은행 867701-04-090102 `예금주:차재복(기술용어해설)` 윤해철님(2월17일)    이은미님(2월15일)    최해식님(2월10일)    . . . . .    " 여

www.ktword.co.kr

 

정보보안기사 필기 정리 - 2과목 네트워크보안

2015/03/03 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 준비 2015/03/07 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 1과목 시스템 보안 2015/03/09 - [자격증/정보보안(산업)기사] -

kit2013.tistory.com

 

728x90

1. 네트워크 기반 공격 기술 종류

(1) 서비스 거부 공격(DoS : Denial of Service)

  • 특정 서비스를 계속적으로 호출해 컴퓨터 자원을 고갈시키는 공격
  • 소프트웨어 취약점 이용 공격
  • 로직 공격(Logic Attack) : IP Header 변조
  • 플러딩 공격(.Flooding Attack) : 무작위로 패킷 발생

(2) 분산 서비스 거부 공격(DDoS)

▶ TCP SYN Flooding

  • TCP 패킷의 SYN 비트를 이용한 공격 방법
  • 다른 사용자가 서비스를 제공받지 못함
  • 대응방법 :
    • 방화벽에서 대응 : PPS(Packet Per Second) 조정
    • First SYN Drop 설정 : 클라이언트 존재 여부 파악
    • TCP 세션 연결 차단
    • Back queue 증가
    • 라우터에서 대응
      • Watch Mode : 일정 시간동안 미연결 시 SYN 패킷 차단
      • Intercept Mode : 라우터에서 SYN 패킷 요청을 가로채 요청한 클라이언트와 서버를 대신 연결
    • sysctl -w net.ipv4.tcp_max_syn_backlog = 1024 : 
    • sysctl -w net.ipv4.tcp_syncookies = 1

▶ DRDoS : 별도의 Agent를 설치하지 않고 TCP Half Open의 취약점 이용 공격

 

▶ ICMP Flooding(Smurfing Attack)

  • IP 특징(Broadcast 주소 방식)과 ICMP 패킷을 이용한 공격 방법
  • 서브네트워크에 Source Address를 공격대상 서버로 위조한 ICMP Echo 패킷을 Broadcast로 전송하여 다량의 응답 패킷으로 공격
  • 대응방법
    • ACL을 이용한 차단
    • Inbound 패킷 임계치 설정

▶ Tear Drop : IP Fragmentation

  • MTU(Maximum Transmission Unit)보다 큰 패킷의 경우 분할하여 flags와 offset에 정보를 저장
  • offset을 임의로 조작하여 재조립이 불가능하게 만드는 공격
  • Tear Drop 공격 종류
    • Tiny Framgment : 최초의 Fragment를 아주 작게 만들어 네트워크 침입탐지 시스템, 패킷 필터링 장비 우회
    • Fragment Overlap
    • IP Fragmentation을 이용한 서비스 거부 공격
      • Ping of Death : 규정 크기 이상의 ICMP로 시스템 마비 공격
      • Tear Drop : TCP Header 부분의 offset field 값이 중첩되는 데이터 패킷을 전송

▶ Land Attack

  • 송신자 IP 주소, Port 주소를 수신자 IP, Port 주소로 설정하여 트래픽을 전송하는 공격(자폭 공격)
  • 대응 방법
    • 송신자와 수신자의 IP가 동일한 패킷 삭제

▶ HTTP Get Flooding

  • HTTP Request를 지속적으로 호출하는 공격
  • 대응 방법
    • 선별적 IP 차단
    • 컨텐츠 요청횟수 임계치 설정(횟수)
    • 시간대 별 웹 페이지 URL 접속 임계치 설정(시간)
    • Web Scraping 기법을 이용한 차단

▶ Cache Control

  • Cache-Control을 no-cache로 설정하여 항상 최신의 페이지를 전송하게 하여 웹 서버에 부하를 주는 공격
  • 대응 방법
    • Cache-Control 사용 여부에 따른 임계치 기반 대응

▶ Slow HTTP Get/Post Attck

  • Slow HTTP Get 방식
    • TCP 및 UDP 기반 공격, 소량의 트래픽을 사용한 공격, 서비스 취약점 이용
  • Slow HTTP Post 방식
    • Post는 데이터가 모두 수신될 때까지 장시간 연결을 유지함
    • HTTP Post로 서버에 전달할 대량의 데이터를 장시간동안 느리게 전송하는 공격
    • Content-Length 필드에 큰 값을 주고, Content를 소량씩 전송하여 연결을 장시간 유지 시킴
  • Slow HTTP Read Dos
    • TCP 윈도우 크기 및 데이터 처리율을 감소시켜 전송하여 웹 서버가 정상적으로 응답하지 못하는 공격
  • Slow HTTP Header Dos
    • HTTP Header와 Body는 개행문자(\r\n\r\n)로 구분
    • HTTP Header를 조작하여 헤더 정보를 구분할 수 없게 만들어, 웹 서버가 Header 정보를 수신하기 위해 장시간 연결을 유지하게 하는 공격
  • Slow HTTP Get/Post 공격 대응
    • 접속 임계치 설정
    • 방화벽 설정 도구인 iptables로 차단
    • Connection Timeout 설정
    • Keepalivetime 설정
    • RequestReadTimeout 설정
    • POST 메시지 크기 제한
    • 최저 데이터 전송 속도 제한

▶ Hash DoS

  • 해시테이블의 인덱스 정보가 중복되도록 유도해 (해시충돌) 해시테이블 조회 시 많은 CPU 자원을 소모시키는 공격
  • 대응 방법
    • HTTP Post 파라미터 수 제한
    • Post 메시지 크기 제한
    • PHP에서 Hash DoS 차단

▶ Hulk DoS

  • Get Flodding 공격으로, 공격 대상 URL을 지속적으로 변경해 DDoS 차단 정책을 우회
  • 대응 방법
    • 접속 임계치 설정
    • HTTP Request HOST 필드 값에 대한 임계치 설정
    • 302-Redirect 차단

(3) 스캐닝(Scanning)

▶ 포트 스캐닝(Port Scanning)

  • 서버에 열려있는 포트를 확인 후 해당 포트의 취약점을 이용한 공격
  • NMAP 포트 스캐닝
    • TCP Connect() Scan
    • TCP SYN SCAN(HalfOpen, StealthScanning)
      • Open : SYN/ACK
      • Close : RST/ACK
    • TCP FIN SCAN
      • Open : X
      • Close : RST
    • TCP Null : 모든 플래그를 지운다
      • Open : X
      • Close : RST
    • TCP X-MAS Tree Scan : FIN, URG, PSH 패킷 전송
      • Open : X
      • Close : RST
  • TCP Fragmentation
    •  헤더를 두 개로 분할하여 보안 장비 탐지 우회
    • 첫 번째 헤더에는 IP 정보
    • 두 번째 헤더에는 Port 정보

(4) 스니핑 공격(Sniffing Attack)

  • 네트워크로 전송되는 패킷을 훔쳐보는 공격
  • 소극적 공격, 수동적(Passive)
    • 예방은 가능하나 발견하기 어려움
    • 데이터를 도청 & 수집해서 분석하는 것으로 직접적인 피해는 X
  • Normal Mode(정규모드)
    • 자신과 관련된 메시지만 수신, 관련 없는 패킷 삭제
  • Promiscuous Mode(무차별 모드)
    • 네트워크에 흘러 다니느 모든 패킷 모니터링
  • tcpdump

(5) 세션 하이재킹(Session Hijacking)

  • 이미 인증을 받아 세션을 생성, 유지하고 있는 연결을 빼앗는 공격
  • 인증을 위한 모든 검증 우회 : TCP를 이용해 통신 시 RST 패킷을 보내 일시적으로 TCP 세션을 끊고 시퀀스 넘버를 새로 생성해 세션을 빼앗고 인증 회피 가능

(6) 스푸핑 공격(Spoofiing Attack)

 ▶ IP Spoofing

  • 자신의 IP를 속여 해킹하는 방법 (위장 기법)
  • 대응 방법
    • Router에서 Source Routing 차단
    • Sequence Number를 Random하게 발생
    • R-Command 취약점 제거
    • 암호화된 프로토콜 사용

 ARP Spoofing 

  • 클라이언트의 MAC 주소를 공격자가 자신의 MAC 주소로 변경하여 서버와 클라이언트 사이에서 수행하는 공격
  • fragrouter를 통해 연결이 끊어지지 않도록 Release 과정이 필요
  • 스위치 공격 및 스니핑 방법
    • Switch Jamming : 스위치 MAC 주소 테이블에 버퍼 오버플로우 공격, 스위치가 허브처럼 동작
    • ICMP Redirect : 피해자에게 라우팅 경로를 자신의 주소로 위조한 ICMP Redirect 메시지 전송
    • ARP Redirect : 공격자 라우터의 MAC 주소로 변경해 ARP Reply 패킷을 해당 네트워크에 브로드 캐스팅
    • ARP Spoofing : 피해자의 ARP Cache Table을 공격자의 MAC 주소로 변경

2. 네트워크 대응 기술 및 응용

(1) 침입차단 시스템(Firewall)

▶ 침입차단 시스템

  • 네트워크를 경유해서 내부 시스템으로 진입하는 트래픽을 모니터링하고 접근 통제(Access Control List)를 적용해 시스템에 접근이 허용 가능한 사용자, IP, 포트를 결정
  • 인증되지 않은 데이터가 네트워크로 유입되는 것을 방지하고, 어떤 종류의 데이터가 어떻게 외부로 송신되는지를 제한하는 접근 제어 장비
  • 리버스 텔넷(Reverse Telnet) : 내부 망에서 외부 망으로 telnet을 통해 연결하는 것

 침입차단 시스템 구현 방식에 따른 유형

  • 패킷 필터링(Packet Filtering)
    • 특정 IP, 프로토콜, 포트 차단 및 허용 가능
    • 계층 : Network 계층과 Transport 계층
  • 애플리케이션 게이트웨이(Application Gateway)
    • 접근 통제, 로그 관리 등의 기능이 있지만 성능이 느림
    • 계층 : Application 계층
  • 회선 게이트웨이(Circuit Gateway)
    • 계층 : Application ~ Session 계층 사이
  • 상태 기반 패킷 검사(Sateful Packet Inspection)
    • OSI 전 계층에서 패킷의 컨텐츠를 해석해서 침입차단을 제공하는 가장 강력한 기능 가짐
    • 패킷 필터링 방식에 비해 세션 추적 기능 추가
  • 혼합형 타입(Hyrid type)
  • 심층 패킷분석(DPI;Deep Packet Inspection)
    • DPI는 패킷이 가지고 잇는 컨텐츠까지 모두 검사할 수 있는 기능
    • 다양한 컨텐츠 식별 및 분석 가능한 가장 강력한 침입차단 시스템
    • OSI 전계층에서 동작 및 접근 통제 가능

▶ 침입차단 시스템 구축 유형

  • 스크리닝 라우터(Screening Router)
    • IP, TCP, UDP 헤더 부분에 포함된 내용만 분석하여 동작
    • 내부 네트워크와 외부 네트워크 사이의 패킷 트래픽을 perm/drop하는 라우터
  • 베스천 호스트(Bastion Host)
    • 단일 홈 호스트(Single-Home Host)
    • 내부 네트워크 전면에서 내부 네트워크 전체를 보호
    • 내부 네트워크와 외부 네트워크를 연결하는 라우터 뒤에 위치
    • 스크리닝 라우터보다 안전
    • Bastion Host 손상 시 내부망 손상
  • 듀얼 홈드 호스트(Dual-Homed Host)
    • 2개의 네트워크 인터페이스를 가진 Bastion Host
    • 하나의 NIC(Network Interface Card)는 내부 네트워크와 연결하고 다른 NIC는 외부 네트워크와 연결
  • 스크린드 호스트(Screened Host)
    • Packet Filtering Router와 Bastion Host로 구성되어 있음
    • Packet Filtering Router는 외부 및 내부 네트워크에서 발생하는 패킷을 통과시킬 지 결정
    • 외부에서 내부로 유입되는 패킷에 대해서는 Bastion Host로 전달
    • 가장 많이 사용
  • 스크린드 서브넷(Screened Subnet)
    • 스크린드 호스트 보안상의 문제점을 보완
    • 외부 네트워크와 내부 네트워크 사이 하나 이상의 경계 네트워크를 두어 내부 네트워크를 외부 네트워크로 부터 분리
    • 일반적으로 두 개의 스크리닝 라우터와 한 개의 베스천 호스트를 이용

(2) 침입탐지 시스템

▶ 침입탐지 시스템(Intrusion Detection System)

  • 침입 패턴 정보를 DB에 저장하고 지능형 엔진을 사용해 네트워크나 시스템 침입을 실시간 모니터링, 침입 탐지 여부 확인 가능한 보안 시스템
  • 침입차단 시스템 차단 방법
    • 정보 수집
    • 정보 가공 및 축약
    • 침입 분석 및 탐지
    • 보고 및 조치
  • 오용탐지(Misuse) 
    • 침입패턴 정보를 DB화 하여 사용자 혹은 침입자의 네트워크 및 호스트 활동기록과 비교해 동일하면 침입으로 식별
    • 시그니처 기반, 지식 기반
    • 미리 정의된 Rule에 매칭
    • False Positive(오탐률) 낮음
    • False Negative 큼
    • 사전 침입 탐지 불가능
  • 이상탐지(Anomaly)
    • 정상 패턴을 저장하고 정상과 다른 활동이 식별되면 모두 침입으로 식별
    • 프로파일 기반, 행동 기반, 통계 기반
    • 사전 침입 탐지 가능, 오탐률이 높음
    • 알려지지 않은 공격(Zero Day Attack) 대응 가능
    • False Positive가 큼

※ False Positive : false(+)로 표현, 공격이 아닌데도 공격이라고 오판하는 것

※ False Negative : false(-)f로 표현, 공격이지만 공격이 아니라고 오판하는 것

  • 침입탐지 시스템 분류
    • NIDS(Network based IDS) 
      • 네트워크에 흐르는 패킷들을 검사, 침입 판단
      • 방화벽 외부의 DMZ나 방화벽 내부 네트워크 모두 배치 가능
      • 탐지 가능 공격 : 스캐닝, 서비스 거부 공격(DoS), 해킹
    • HIDS(Host based IDS)
      • 시스템상에 설치, 사용자가 시스템에서 행하는 행위, 파일의 체크를 통해 침입 판단
      • 주로 웹 서버, DB 서버 등에 배치
      • 탐지 가능 공격 : 내부자에 의한 공격, 바이러스, 웜, 트로이목마, 백도어

▶ Snort

  • 패킷을 스니핑해서 지정한 Rule과 동일한 패킷 탐지
  • Rule Header는 Action Protocol, IP 주소, 포트 등으로 구성
  • Rule Option은 탐지하는 세부적인 조건 정의 
  • 스니퍼(Sniffer)
    • 네트워크에 전송되는 모든 패킷 수신을 위해 Promiscuos Mode(무차별 모드)로 동작
    • WinPcap 라이브러리가 스니핑을 실행
  • 전처리기(Preprocessing)
    • 입력되는 패킷에 대해 특정 행위가 탐지될 경우 탐색엔진으로 전송
  • 탐색엔진(Detection Engine)
    • 등록된 Rule과 동일한지 여부를 확인하는 규칙 기반 패턴 검색 실행
  • 경고(Alert) 및 로깅(Logging)
    • 탐지된 정보를 로그파일, 네트워크, SNMP 프로토콜 등으로 전송
  • 이후 참고 net123.tistory.com/579
 

Snort - 03. Snort Rule 구조

Snort - 03. Snort Rule 구조 1. Snort Rule Signiture  - 스노트는 다음과 같은 룰 헤더와 옵션으로 구성된다. Snort 룰 시그니처 구조 Action 유형  명령어 내용  alert 경고 발생 및 로그 기록  log   ..

net123.tistory.com

 

(3) 침입대응 시스템

▶ 침입대응 시스템(Intrusion Prevention System)

  • 공격 시그니처를 찾아내 네트워크에 연결된 기기에서 비정상적인 활동이 이루어지는지 감시하여 자동으로 해결 조치
  • 침입 경고 이전에 공격을 중단시키는 것이 주요 목적
  • Real Time 가능한 예방 통제 시스템
  • IDS 문제점 보완 : 오탐지, 미탐지, NIDS의 실시간 공격 방어 불가능

▶ 침입대응 시스템 종류

  • NIPS(Network IPS) : 공격 탐지에 기초하여 트래픽 통과 여부를 결정하는 인라인 장치
  • HIPS(Host IPS) : 호스트 OS 위에서 수행, 공격 탐지 후 실행 전에 공격 프로세스 차단 기능

(4) 허니팟

▶ 허니팟(Honeypot)

  • 해커의 행동, 공격 기법 등을 분석하는데 이용
  • Zero Day 공격 탐지하기 위한 수단 (Zero Day 공격 : 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는 공격)

▶ 허니팟 위치

  • 방화벽 앞 : 내부 네트워크 위험도 증가는 없음
  • 방화벽 내부 : 효율성이 높으나 내부 네트워크 위험 증가
  • DMZ 내부 : 가장 적당한 위치, 관리 불편, 다른 서버의 연결 차단 필요

▶ 허니팟 구축 시 고려사항

  • 해커에게 쉽게 노출될 수 있는 상태, 위치여야함
  • 시스템의 모든 구성요소 갖춰야함
  • 시스템을 통과하는 모든 패킷 감시
  • 시스템 접속자에 대해 관리자에게 전달

(5) 가상사설망

▶ 가상사설망 개요

  • 공중망을 이용해 사설망과 같은 효과를 얻기 위한 컴퓨터 시스템과 프로토콜 집합
  • 따라서 안전한 통신 방식 지향
  • 안전한 통신 방식 : 인증, 터널링
  • 터널링으로 VPN 클라이언트와 VPN 서버 간에 암호화 키 교환 과정을 수행한 후에 암호화를 사용해 메시지를 송수신

▶ SSL VPN

  • SSL(Secured Socket Layer) VPN
    • 웹브라우저만 있으면 언제 어디서나 사용 가능(추가적인 VPN 프로그램 설치할 필요 X)
    • 서버와 클라이언트 간 인증으로, RSA 방식과 X.509 사용
  • SSL VPN 구성
    • 대칭키 암호화(트래픽을 암호)와 비대칭키 암호화(대칭키 암호)를 혼합해서 사용
    • 서버와 클라이언트 사이의 인증, 기밀성, 무결성, 부인방지 서비스 제공
  • SSL VPN 보안 서비스
    • 인증(Authentication) : 클라이언트가 접속하는 서버가 신뢰할 수 있는 서버인지, 서버에 접속한 클라이언트가 인가된 사용자인지 확인, 전자서명과 X.509 공개키 인증서 사용
    • 무결성(Integrity) : 함께 키를 사용하는 MAC 기법을 사용하여 데이터 변조 여부 확인
    • 기밀성(Confidentiality) : 대칭키 암호 사용
    • 부인봉쇄(None-repudiation) : 부가적인 SW를 사용해 응용 계층에서 메시지에 대한 전자서명 허용

▶ IPSEC VPN

  • 보안에 취약한 인터넷에서 안전한 통신을 실현하는 통신규약
  • IPSEC VPN 전송 모드
    • 터널 모드 : VPN과 같은 구성으로 패킷의 출발지에서 일반 패킷이 보내지면 중간에서 IPSec을 탑재한 중계 장비가 패킷 전체를 암호화(인증)하고 중계 장비의 IP 주소를 붙여 전송
    • 전송 모드 : 패킷의 출발지에서 암호화(인증)를 하고 목적지에서 복화하가 이루어지므로 End-to-End 보안 제공
  • IPSEC VPN 키 관리 담당
    • ISAKMP 
      • Internet Security Association and Key Management Protocol
      • Security Association 설정, 현상, 변경, 삭제 등 SA 관리와 키 교환을 정의했으나 키 교환 메커니즘에 대한 언급은 없음
    • IKE
      • Internet Key Exchange, 키 교환담당
      • IKE 메시지는 UDP 프로토콜을 사용해서 전달되며 출발지 및 도착지 주소는 500port를 사용하게 됨
    • IPSEC VPN 인증과 암호화를 위한 Header
      • AH 
        • 데이터 무결성과 IP 패킷의 인증 제공, MAC 기반
        • 인증 시 MD5, SHA-1 인증 알고리즘을 이용
        • 수신자는 닥ㅌ은 키를 이용해 인증값 검증
      • ESP
        • 전송 자료를 암호화하여 전송하고 수신자가 받은 자료를 복호화하여 수신
        • AH와 달리 암호화를 제공(대칭키, DES, 3-DES 알고리즘) 

(6) NAC(Network Access Contol)

 ▶ 엔드 포인트(End Point) 보안 솔루션으로 등록되지 않은 단말기를 식별하여 차단

 ▶ 네트워크에 대한 무결성 지원

 ▶ NAC 구성요소

  • 정책관리 서버(Policy Management Server)
  • 차단 서버Policy Enforcement Server)
  • 에이전트(Agent)
  • 콘솔(Console)

 ▶ NAC 주요 기능

  • 네트워크 정보 자동 수집 및 업데이트 지원
  • IP 관리 및 충돌 보호
  • 인증 서버 연동
  • 네으퉈크 접속 강제화 및 필수 프로그램 설치유도
  • 보안 무결성 확인
  • 무선AP(Access Point) 정보수집 및 비인가 무선 AP접속 통제
  • DHCP(Dynamic Host Conficuration Protocol

▶ NAC 동작 방식

  • Agent 방식
    • 사용자 단말기 NAC Agent를 설치
    • 사용자 단말기에 대한 윈도우 환경, 설정 정보 등의 자세한 정보를 모두 수집할 수 있음
  • Agentless 방식
    • 사용자 단말기에 별도의 Agent를 설치할 필요가 없음
    • ARP 프로토콜을 사용해서 사용자 단말기 정보를 수집하기 때문에 정보 수집에 한계가 발생

(7) ESM(Enterprise Security Management)

▶ 기업의 정보보안 정책을 반영하여 다수 보안 시스템을 통합한 통합 보안관제 시스템

 침입차단 시스템, 침입탐지 시스템, VPN 등의 각종 이벤트를 수집하고 분석하여 통합보안 구현

▶ ESM 주요기능

  • 통합 보안관제 업무
  • ESM Agent 관리
  • 분석 보고서 관리

▶ ESM 구성요소

  • ESM Agent
    • 각종 보안 솔루션의 로그 수집 역할
    • 실시간으로 수집한 로그를 정규 표현식으로 변환하여 ESM Manager에게 전달
  • ESM Manager
    • 로그를 DB에 저장하고 위협 분석, 상관성 분석, 위험도 추론 침입탐지 등의 분석
    • SSL을 사용하여 ESM Agent에서 ESM console로 명령 전달
  • ESM Console
    • 모든 보안 정보를 모니터링 하며 침입 발생 시 명령을 ESM Manager에게 전달
    • 각종 침입에 대한 알람 발생

 ▶ SIEM과 ESM차이점

  • ESM
    • 수집된 로그 및 분석정보를 DB에 저장
    • 보안 솔루션 위주의 로그 수집
    • IP, Port 단위 분석과 알려진 패턴 위주의 분석
  • SIEM
    • 빅데이터를 사용해 대용량의 로그정보를 보관
    • 기업의 모든 자원의 정보 및 로그를 통합해 수집
    • APT 공격 및 알려지지 않은 패턴에 대해 분석
    • 각 칼럼별 인덱싱 가능, 빠르게 대용량 데이터 분석 가능

(8) 무선 LAN 보안 기법

 ▶ SDR(Software Defined Radio)

  • 무선 네트워크를 수신받기 위한 안테나와 소프트웨어로 구성
  • 무선 네트워크를 수신받아서 처리할 수 있는 장치
  • 주파수를 수신받아 재생공격 가능

 ▶ 무선 LAN 보안 기술

  • SSID(Service Set ID)
    • 무선 LAN 서비스 영역을 구분하기 위한 식별자
  • WEP(Wired Equivalent Privacy) 인증
    • IEEE 802.11b에 서 표준화한 데이터 암호화 방식
    • RC4 대칭형 암호화 알고리즘
    • 무작위 공격에 취약
  • WPA(Wi-Fi Protected Access) : IEEE 802.1x/EAP
    • WEP의 정적 키 관리에 대한 문제점 해결 가능
    • 128bit 동적 암호화 및 복호화 수행
    • TKIP(temporal key Integrity Protocol) 방식 : 임시 키 무결성 프로토콜
  • WPA2(Wi-Fi Protected Access) : IEEE 802.11i
    • WPA 동적 키 방식의 블록기반 암호화 기법
    • 128bit 이상의 키를 사용하는 AES 암호화를 사용
  • IEEE 802.11i
    • WPA 방식의 암호화 알고리즘은 AES 사용
    • CCMP(counter Mode Encryption Protocol)는 RC4 알고리즘 대신 TKIP 블록 암호화 방법을 사용하고 AES 암호화 즉, 블록 암호화 방식에 인증 강화
  • KRACK(WPA2 Key Reinstallation Vulnerabilities)
    • WPA2의 암호화 기능을 무력화할 수 있는 공격
    • 공격 시에 AP에 연결하지 않아도 됨
    • 타겟 AP 혹은 Statioon으로 위장하기 위해 MAC Spoofing 필요
    • 특정 대상에 한정된 공격만 수행가능
    • HTTPS로 보호된 인터넷 통신 프로토콜에 대해 복호화 가능
    • 공격자가 패킷 변조 전에 공격 탐지 못하면 사용자가 공격 확인 불가

참고 자료 : 이기적 정보보안기사 필기 이론서

728x90

1. 인터넷 응용 보안

(1) FTP

 ▶ FTP 특징

  • 서버(Server)에 파일을 올리거나 다운로드 하는 인터넷 표준 프로토콜
  • 내부적으로 TCP 프로토콜 사용
  • 명령 채널(TCP 21)과 데이터 전송 채널(TCP 20) 분리 
  • Active Mode와 Passive 모드
  • 스니핑 공격에 취약함, 따라서 전송 과정의 내용을 암호화하는 sFTP 사용 권장
  • ftpuesrs 파일로 특정 사용자에 대해 FTP 접근 차단 가능

 ▶ FTP 종류

  • FTP : ID 및 Password 인증 수행, TCP 프로토콜을 사용해 데이터 송수신
  • tFTP : 인증 과정 없이 UDP 기반의 빠른 데이터 송수신, 69번 포트
  • sFTP : 암호화를 통한 기밀성 제공

 ▶ FTP Active Mode와 Passive Mode

  • Active Mode
    • FTP 클라이언트에서 서버의 21번 포트로 접속
    • FTP 클라이언트에서 서버의 20번 포트로 데이터 전송
  • Passive Mode
    • FTP 클라이언트에서 서버의 21번 포트로 접속
    • FTP 서버가 클라이언트로 데이터 송수신을 위해 1024~65535 범위의 랜덤 포트 정보 송신
    • FTP 클라이언트에서 해당 포트로 데이터 송수신

 ▶ FTP 서비스 로그 기록

  • xferlog 파일

 ▶ FTP 보안

  • FTP 보안 취약점
    • Bounce Attck : 네트워크 포트 스캐닝을 위해 사용
      • Fake Mail : FTP 바운스 공격을 이용해 전자메일을 보내는 공격
    • tftp Acttck : 인증 절차가 없어서 파일 접근 제한이 없어짐
    • Anonymous FTP Attack 
    • FTP 서버 취약점
    • 스니핑
    • Brute Force Attack : 무작위 대입 공격

(2) E-Mail 보안

 ▶ E-Mail 전송 방법

  • SMTP(Simple Mail Transfer Protocol)
    • 전자우편 송신 시 사용되는 표준 통신 규약
    • TCP 25 Port 사용(전자우편 송신 용), DNS의 MX 레코드 사용(상대 서버 지시용)
    • OSI 7계층에서 동작
  • POP3(Post Office Protocol Version 3)
    • E-Mail 수신 시 사용되는 프로토콜
    • 메일 서버에 접속해 저장된 메일을 내려받는 MDA 프로그램
    • E-Mail 수신 후 원격 서버의 E-Mail 삭제
    • 항상 연결 상태가 아닌 네트워크 접근에 유리
    • TCP 110 Prot
  • IMAP 및 IMAP4
    • 메일을 수신하더라도 원본은 계속 저장
    • 메일의 헤더만 검색해서 텍스트 부분만 가져오기 등 작업이 가능
    • IMP4는 프로토콜의 복잡성과 보안 문제 개선

 ▶ E-Mail 보안 기법

  • PGP(Pretty Good Privacy)
    • MIME(Multipurpose Internet Mail Extension, RFC 1521) 객체에 암호화와 전자서명 기능을 추가한 암호화 프로토콜
    • PGP 특징
      • 전자서명, 메시지 암호화, 1회용 세션키 생성, 이메일 호환, 세그먼테이션
  • PEM(Privacy Enhanced Mail)
    • 중앙집중화된 키 인증 방식
    • 구현 어려움 그만큼 높은 보안성 제공
  • S/MIME(Secure Multi-Purpose Internet Mail Extensions)
    • MIME 전자서명과 암호화 기능(RSA)을 첨가한 보안 서비스로 RSA사에서 개발한 보안 프로토콜
    • CA(인증기관)에게 자신의 공개키를 보증하는 인증서를 받아야 함
    • S/MIME에 사용되는 암호화 키
      • DSS : 디지털 서명 알고리즘
      • 3중 DES : 메시지의 암호
      • SHA-1 : 디저털 서명을 지원하기 위한 해시함수

(3) 스팸메일(Spam Mail) 차단 방법

 ▶ RBL(Real Time Blocking List)

  • 이메일 수신 시 간편하게 스팸 여부를 확인하여 차단
  • 스팸메일에 사용되는 IP 리스트를 등록하고 차단

 ▶ SPF(Sender Policy Framework)

  • 발신자 : 자신의 메일 서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록
  • 수신자 : 메일 수신 시 발송자의 DNS에 등록된 SPF 레코드를 확인하여 해당 메일에 표시된 발송 IP와 비교를 통해 수신 여부를 결정

 ▶ SpamAssasin

  • 실시간 차단 리스트를 참고하여 각각의 룰에 매칭될 경우 점수를 매겨서 총 점수가 기준점을 초과하는지 여부에 따라 스팸 여부 결정

(4) 웹 방화벽(Web Firewall)

 ▶ 웹 방화벽(Web Firewall)

  • 홈페이지 자체 및 웹 프로토콜을 기반으로 하는 모든 서비스와 애플리케이션 데이터 기반 정보 시스템에 보안 서비스 제공
  • 웹 애플리케이션 취약점을 이용한 공격에 대한 대응

 ▶ 웹 방화벽 종류

  • 네트워크 기반 방화벽
  • 호스트 기반 방화벽
  • Proxy Method
  • Filtering Module Method

 ▶ 웹 방화벽 주요 기능

  • 웹 공격 방지
  • Positive Security Model 지원
  • SSL 지원
  • 애플리케이션 구조 변화에 대응

 ▶ 워터링 홀(Watering Hole) 공격

  • 워터링 홀 공격(특정 타겟)은 홈페이지에 접속하는 특정 사회적 그룹을 대상으로 악성코드를 유포하여 특정 사회적 그룹에 추가적인 APT 공격등을 목적으로 함
  • Advanced Persistent Threat(지능적 지속 위협)

(5) DNS 보안

 ▶ DNS(Domain Name Service)

  • 인터넷 네트워크 상에서 컴퓨터의 이름을 IP 주소로 변환하거나 해석하는 데 사용되는 분산 네이밍 시스템
  • URL 주소에 대해서 IP 주소를 알려주는 서비스

 ▶ DNS Query 종류

  • Recursive Query(순환) : Local DNS 서버에 Query를 보내 완성된 답을 요청
  • Iterative Query(반복) : Local DNS 서버가 다른 DNS 서버에게 Query를 보내어 답을 요청, 외부 도메인에서 개별적인 작업을 통해 정보를 얻어와 종합해서 알림
  • DNS 레코드
    • A(Address) : 단일 호스트 이름에 해당하는 IP 주소가 여러 개 있을 수 있음
    • AAAA(IPv6 Address) : 호스트 이름을 IPv6 주소로 매핑
    • PTR(Pointer) : 특수 이름이 모데인의 일부 다른 위치를 가리킬 수 있음. 1개만 존재 가능
    • NS(Name Server) : 도메인에는 해당 이름의 서비스 레코드가 적어도 한 개 이상 있어야함(DNS 서버 가리킴)
    • MX(Mail Exchanger) : 도메인 이름으로 보낸 메일을 받도록 하는 목록을 지정
    • CNAME(Canonical Name) : 호스트의 다른 이름을 정의
    • SOA(Start of Authority) : 도메인에 대한 권하능ㄹ 갖는 서버 표시
    • Any(ALL) : 위의 모든 레코드를 표시
  • DNS 보안
    • dnsspoof
      • DNS 파일을 참조해서 DNS를 수행
      • 53번 포트로 전송되는 UDP 데이터를 모니터링 시 URL에 대해 요청이오면 특정 IP로 응답
  • DNSSEC
    • DNS 캐시 포이즈닝과 DNS의 보안 취약점을 보완하기 위해 등장한 기술
    • DNS 응답 정보에 전자서명 값을 첨부하여 송신함으로써 DNS 위변조를 방지하며 정보 무결성 제공 

2. 데이터베이스 보안

(2) 데이터베이스 보안

 ▶ 데이터베이스(Database) 개요

  • 정보시스템 및 기업의 비지니스를 위해 각종 데이터를 일정한 규격으로 저장하여 관리하는 것
  • 여러 사람들이 공동으로 사용할 수 있게 저장되어 잇는 데이터를 공유하는 것
  • 데이터베이스 기능
    • 지속성(Persistence)
    • 데이터 공유(Data Sharing)
    • 회복(Recovery)
    • 데이터베이스 언어(Data Base Language)
    • 보안 & 무결성(Security & integrity)
  • 데이터베이스 관리 시스템(DBMS, Database Management System)
    • 데이터베이스를 생성하고 관리하며 이를 응용하기 위해 구성된 소프트웨어의 모임

 ▶ 데이터베이스 모델(Database Model)

  • 데이터베이스 모델(Database Model)
    • 데이터를 어떤 형태의 자료 구조로 저장할 것인지를 결정하는 것
    • 계층형, 네트워크형, 관계형 데이터베이스
  • 개체관계 모델(ERD, Entity Relationship Diagram)
    • 데이터베이스 설계 과정에서 데이터의 구조를 개념적으로 표현하는 과정
    • 개체관계 모델 구성요소
      • 개체(Entity) : 물리적으로 존재하는 대상 또는 개념적으로 존재하는 대상, 관리할 대상
      • 관계(Relation) : Entity 간의 관계
      • 속성(Attrivute) : Entity의 특성이나 속성

 ▶ 데이터베이스 보안(Database Security)

  • 각종 외부적, 내부적 위협에서 데이터베이스의 기밀성, 무결성, 가용성 등을 확보하는 활동
  • 인가되지 않은 접근, 의도적인 데이터의 일관성을 저해하는 사고로부터 보호하는 것
  • 데이터베이스 보안 위협요소
    • 집합성(Aggregation)
      • 낮은 보안 등급의 정보들을 이용해 높은 등급의 정보를 알아내는 것
    • 추론(Inference)
      • 보안 등급이 없는 일반 사용자가 보안으로 분류되지 않은 정보에 정당하게 접근하여 기밀 저보를 유추해 내는 행위
      • 로우 데이터로부터 민감한 데이터를 유출하는 행위
      • 보안대책 : 다중인스턴스화(Polyinstantiation)
  • 데이터베이스 보안 요구사항
    • 무결성 보장
    • 추론 방지
    • 사용자 제한
    • 감사 기능 : 기록 저장
    • 암호화

 ▶ 데이터베이스 보안 솔루션

  • DB 암호화 솔루션
    • 장점 : 허가받지 않은 사용자가 불법적인 데이터를 취득해도 볼 수 없음
    • 단점 :
      • 운영 서버에 부하발생
      • DB 단위의 접근 제어 X
      • SQL 문장에 대한 로깅 X
    • Plug In 방식
      • 데이터베이스 서버에 별도의 암호화 솔루션 설치
    • API 방식
      • 암호화 API를 호출하여 암호화를 수행하는 방식
    • 패스워드는 무조건 암호화를 수행해야하며, 일방향 암호화를 수행해야 함
  • 데이터베이스 감사 솔루션
    • 장점 :
      • 스니핑 서버가 죽어도 업무에 지장이 없음
      • 운영서버에 부담이 없음
    • 단점 :
      • Packet Loss가 있음
      • 접근 제어가 안 됨
    • 스니퍼 소프트웨어 활용
    • T-Sensor 하드웨어 활용 : 실제 기업이 많이 사용하는 방식
  • 데이터베이스 접근 제어 솔루션
    • 장점 :
      • 독립된 서버로 다중 인스턴스에 대해 통제 가능한 독립된 서버
      • DB 단위의 접근 제어
    • 단점 : 
      • 독립된 서버이기 때문에 이중화 구성 필요
      • Telnet을 통하여 접근하는 SQL 명령에 대해서는 토엦가 어려움
      • 우회해서 접근할 수 있으므로 보안 허점 발생
  • 데이터베이스 암호화 및 접근 통제
    • 사용자 인증(Authentication)
    • 권한 부여(Authorization)
    • 암호화(Encryption)

(3) 데이터베이스 백업

 ▶ 백업 방식

  • 전체 백업(Full Backup) : 전체 백업, 디스크 또는 특정 폴더에 대한 전체를 백업, 많은 양의 백업 매체 필요
  • 차등 백업(Differential Backup) : 가장 최근에 수행된 전체 백업 이후 변경된 모든 것을 백업
  • 증분 백업(Incremental Backup) :
    • 가장 최근에 수행된 백업 이후 모든 변경된 것만 백업, 백업 시간 절감
    • 저장 매체의 효율적 이용, 복구 시 많은 매체가 필요

참고 자료 : 이기적 정보보안기사 필기 이론서

728x90

1. 전자상거래 보안

(1) 전자화폐

 ▶ 전자화폐

  • 디지털 서명이 있는 금액 가치 정보
  • 전자기기에 전자기호 형태로 화폐적 가치 저장

 ▶ 전자화폐 요구조건

  • 불추적성(사생활 보호, 익명성)
  • 오프라인성
  • 가치이전성(양도성)
  • 분할성
  • 독립성(완전 정보화)
  • 이중사용 방지
  • 익명성 취소

 ▶ EDS(Fraud Detection System) 통제

  • 전자금융거래에서 사용되는 정보를 분석해 금전 및 사적인 이득을 취하기 위해 발생되는 각종 부정 거래행위를 탐지 및 예방

(2) SET

 ▶ SET(secure Eletectronic Transaction)

  • 온라인 신용카드 거래 촉진을 위해 VISA와 MASTER CARD사에서 공동으로 개발한 프로토콜
  • SSL에 비해 상대적으로 느림
  • 전자 서명과 인증서를 이용해 안전한 거래 가능
  • 지급 결제 처리 절차에 한해 정의, 시스템 구축 및 인증 절차 복잡
  • 기밀성, 무결성, 인증, 부인봉쇄

 ▶ SET 이중서명(Dual Signature)

  • SET 이중서명 사용 이유
    • 사용자 : 판매자에게 지불정보(계좌 정보) 공유를 원하지 않음
    • 사용자 : PG(Payment Gateway)로 부터 주문정보(물품명세서)를 숨기고 싶음
    • PG : 판매자가 전송한 결제 요청이 실제 고객이 의뢰한 정보인지 확인 필요
  • SET 장점 : 전자상거래의 사기 방지, 기존의 신용카드 기반 활용
  • SET 단점 : 암호 프로토콜 복잡, RSA 속도 저하, 카드 소지자에게 전자지갑 소프트웨어 요구

(3) SSL

 ▶ SSL(Secures Socket Layer)의 개요

  • SSL(Secures Socket Layer)
    • 개방환경에서 Client와 Server의 안전한 통신을 위해 개발
    • RSA 공개키 알고리즘 사용, X.509 인증서 지원, 443번 포트 사용
    • Transport Layer~Application 계층에서 동작
    • 기밀성, 무결성, 인증
  • SSL 구성요소
    • Change Cipher Spec Protocol : Hand Shake Protocol에서 협의된 암호 알고리즘, 키 교환 알고리즘, MAC 암호화, HASH 알고리즘이 사용될 것을 클라이언트와 웹 서버에게 공지
    • Alert Protocol :  SSL 통신을 하는 도중 클라이언트와 서버 중 누군가의 에러나 세션의 종료로 비정상적인 동작이 발생할 때 사용되는 프로토콜
    • Record Protocol : 데이터를 암호화하고 산출된 데이터를 SSL에서 처리가 가능한 크기의 블록으로 나누고 압축

 ▶ OpenSSL 보안 취약점 

  • 하트블리드(HeartBleed) 취약점 : 웹브라우저가 요청했을 때 데이터 길이를 검증하지 않아 메모리에 저장되어 있는 평문 64Kilo Byte가 노출되는 현상

(4) sHTTP

 ▶ 응용 계층에서 보안 기능 제공

 ▶ 기밀성, 무결성, 전자서명

 

(5) IPSEC

 ▶ IPSEC(IP Security) 개요

  • 인터넷상에 가상 전용 회선을 구축하여 데이터 도청과 같은 행위를 방지하기 위한 통신 규약
  • IPSEC 전송 방법
    • 터널 모드 : 패킷의 출발지에서 일반 패킷이 보내지면 중간에서 IPSec을 탑재한 중계 장비가 패킷 전체를 암호화(인증)하고 중계 장비의 IP 주소를 붙여 전송
    • 전송 모드 : 패킷의 출발지에서 암호화를 하고 목적지에서 복호화가 이루어짐(End-to-End)

(6) OTP

 ▶ OTP(One Time Password) 개요

  • 매번 다른 난수를 생성하여 인증 시 패스워드를 대신하는 방법으로 이론적으로 가장 안전한 방법

 ▶ 동기 방식과 비동기 방식 인증 방법

  • 동기화 방식
    • 시간 동기화(Time Synchronous)
      • OTP 생성 매체가 시간을 기준값으로 비밀번호를 생성하는 형태
      • 일정 시간 동안 OTP 전송 못하면 새로운 OTP 생성 시까지 기다려야함
    • 이벤트 동기화(Event Synchronous)
      • OTP 생성 매체와 인증서버의 동기화된 인증횟수를 기준값으로 생성
  • 비동기 방식 : 질의응답(Challenge-Response)
    • OTP 생성 매체와 인증 서버 사이에 동기화되는 기준값 X
    • 사용자가 직접 임의의 난수를 OTP 생성 매체에 입력해 OTP 생성

(7) 전자문서와 ebXML

 ▶ 전자문서(Electronic Documnents) 유형

  • EDI(Electronic Documnet Interchange)
  • XML/EDI
  • XMI(eXtensible Markup Interchange)
  • ebXML(e-business Extensible Markup Language)

 ▶ ebXML 구성요소

  • 비지니스 프로세스(Business Process)
  • 핵심 컴포넌트(Core Components)
  • 등록저장소(Registry Repository)
  • 거래 당사자(Trading Partners)
  • 전송, 교환 및 패키징(Transport, Routing and Packaging)

2. 기타 어플리케이션 보안

(1) SQL Injection

 ▶ SQL Injection

  • 입력값을 조작하여 사용자 인증을 우회하거나 데이터베이스에 SQL 문을 실행해 인증없이 데이터 베이스의 데이터를 얻는 방법

 ▶ SQL Injection 특징

  • 개념
    • 사용자가 서버에 제출한 데이터가 SQL SQL Query로 사용되어 데이터베이스 및 응용 시스템에 영향을 주는 공격
  • 발생원인 
    • 공격자의 입력 값이 데이터베이스의 쿼리 작성에 이용되는 환경에서 입력 값 미검증 또는 부적절한 검증

 ▶ SQL Injection 유형

  • Blind SQL Injection
    • 문자열을 하나씩 자르고, 참(True)과 거짓(False)으로 반환되는 SQL 실행결과를 이용해 데이터를 알아내는 방법
  • Mass SQL Injection
    • 한 번의 공격으로 대량의 DB값이 변조되어 서비스에 치명적인 악영향을 끼치는 공격
  • Union SQL Injection
    • SQL문 뒤에 Union을 입력해 공격자가 SELECT 문을 붙여 실행하는 공격

(2) 운영체제 명령어 삽입

 ▶ 운영체제 명령어 삽입

  • 입력 값을 검증하지 않아 운영체제 명령을 실행할 수 잇는 취약점
  • Command Injection : 입력 값을 조작해서 명령어를 실행하는 공격

(3) 위험한 파일형식 업로드

 ▶ 공격자가 파일을 웹 서버로 업로드하여 악성 스크립트 실행

 ▶ 웹쉘(Web Shell) : 업로드의 취약점을 이용해 실행되는 스크립트

 

(4) XSS(Cross Site Scripting)

 ▶ XSS(Cross Site Scripting, 크로스 사이트 스크립팅)

  • 공격자가 제공한 실행 가능한 코드를 재전송하도록 하는 공격 기법
  • 서버를 경유하여 조작된 웹 페이지 및 URL을 열람하는 클라이언트를 공격

 ▶ XSS의 종류

  • Stored XSS : 게시판에 악성 스크립트를 올리고 사용자가 클릭하면 악성 스크립트 실행
  • Reflected XSS : 메일로 악성 스크립트가 포함된 첨부파일을 사용자에게 전송, 사용자 클릭 시 악성 스크립트 실행 및 웹 서버 공격

 ▶ 대응 방법 : 스크립트가 실행되지 않게 한다.

 

(5) CSRF(Cross Site Request Forgery, 크로스 사이트 요청 변조)

 

 ▶ 사용자가 인식하지 못한 상황에서 의도하지 않은 공격 행위를 수행하게 하는 공격

 ▶ 입력된 신뢰정보를 기반으로 사용자의 요청을 변조 시켜 해당 사용자의 권한으로 악의적 공격 수행

 ▶ 대응방법

  • 입력 폼 작성 시 POST 방식 사용
  • 입력 폼과 해당 입력 처리 프로그램 간에 토큰 사용
  • 중요한 기능에 대해 세션 검증과 재인증 처리 또는 트랜젝션 서명 수행

(6) 포맷 스트링(Format String)

 ▶ 데이터에 대한 포맷 스트링을 정확하게 정의하지 않아서 발생되는 보안 취약점

 ▶ 메모리 열람, 메모리 변조, 쉘코드(Shell Code) 삽입과 같은 보안 취약점 발생

 

(7) SSO(Single Sign On) 개요

 ▶ SSO(Single Sign On)

  • 다수의 서비스를 한 번의 Login으로 서비스에 접속할 수 있게 해주는 보안 시스템
  • 중앙집중형 접근 관리
  • 단점 : SPOF(Single Point Of Failure, 2 Factor로 예방 가능)

 ▶ SSO 종류

  • Delegation 방식 : 대상 애플리케이션 인증 방식 변경 없이 해당 인증 정보를 에이전트가 관리해 사용자 대신 로그온
  • Propagation 방식 : 대부분의 SSO에서 채탁하는 방식, 통합인증 수행하는 곳에서 인증 받아 애플리케이션으로 전달할 토큰 발급
  • Delegation & Propagation 방식  : 웹 어플리케이션의 변경이 불가하고 사용자 통합이 어려운 경우
  • Web 기반 One Cookie Domain SSO : SSO 대상 서비스와 애플리케이션들이 하나의 Cookie Domain안에 존재할 때 사용

(8) DRM 기술 개념 및 활용

 ▶ DRM(Digital Rights Management) 개요

  • DRM(Digital Rights Management)
    • 디지털 컨텐츠를 안전하게 보호할 목적으로 암호화 기술을 이용해 컨텐츠 저작권 관련 당사자의 권리 및 이익을 지속적으로 보호 및 관리하는 시스템
  • DRM 요소 기술
    • 암호화
    • 인증
    • Watermarking
    • 사용자 Repository
    • 사용자 권한 관리
    • Temper Proofing

(9) 워터마킹(Watermarking)

 ▶ 워터마킹

  • 디지털 정보에 사람이 인지할 수 없는 마크를 삽입해 디지털 컨텐츠에 대한 소유권 추적 기술
  • 정보은닉기술, Steganography 기법 중 하나

 ▶ 워터마킹 특징

  • 비인지성(Fidelity)
  • 강인성(Robustness)
  • 연약성(Effermincy)
  • 위조방지(Tamper-resistance)
  • 키 제한(Key-resistance)

 ▶ 핑거프린트(Fingerprint)

  • 워터마킹 기법 중 하나
  • 디지털 컨텐츠에 원저작자 정보와 함께 디지털 컨텐츠 구매자 정보를 삽입
  • 불법 유통 시 불법적으로 유통시킨 구매자를 확인할 수 있는 추적 기술
  • Dual Watermark

(10) 포렌식(Forensic) 개요

 ▶ 디지털 포렌식(Digital Forensic)

  • 디지털 기기를 대상으로 발생하는 특정 행위의 사실과 관계를 법정에서 증명하기 위한 방법 및 절차이다.
  • 디지털 증거휘발성
    • 디지털 증거
    • 디지털 증거분석
    • 휘발성 증거
    • 비휘발성 증거
  • 디지털 포렌식 원칙
    • 정당성 원칙 : 위법수집 증거 배제법칙, 독수 독과(과실)이론
    • 재현원칙
    • 신속성 원칙
    • 절차 연속성 원칙
    • 무결성 원칙
 
공감
728x90

 Cross Site Scripting(XSS) 공격이란? 

Cross Site Scripting(XSS) 공격은 악의적인 사용자가 공격하려는 사이트에 악성 스크립트를 주입하는 것이다. 공격에 성공하면 사이트에 접속한 사용자는 악성 스크립트를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등 민감한 정보를 탈취한다.

 

공격 방법에 따라 Stored XSS와 Reflected XSS로 나뉜다. Stored XSS는 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방법이고, Reflected XSS는 보통 URL 파라미터(특히 GET 방식)에 스크립트를 넣어 서버에 저장하지 않고 즉시 스크립트를 만드는 방식이다. 후술된 내용 대부분은 Stored XSS라고 생각하면 된다. Reflected XSS의 경우 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격을 성공시키기 어렵다.

 

크로스 사이트 스크립팅이라는 이름 답게, JavaScript를 사용하여 공격하는 경우가 많다. 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트드리 XSS에 대한 방어 조치를 해두지 않아 공격을 받는 경우가 많다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파된다. 심지어는 닉네임에 코드를 심기도 한다.

 

물론, HTML을 사용하는 것이기 때문에 Text-Only 게시판이나, BBCode를 이용하는 위키위키 등에서는 XSS가 발생할 일은 없다. 

 

주로 CSRF를 하기 위해서 사용되기 때문에 종종 CSRF와 혼동되는 경우가 있으나, XSS는 자바스크립트를 실행시키는 것이고, CSRF는 특정한 행동을 시키는 것으로 다르다.

 

 XSS 공격 종류 

Stored(or relentless) XSS Attacks

XSS 취약점이 있는 웹 서버에 악성 스크립트를 입력해두고 방문자가 해당 페이지를 읽는 순간 방문자의 브라우저를 공격하는 방식이다. 일명 저장 방식이다.

 

Reflected CSS Attacks

특정 파라미터 값을 통해서 공격하는 방식으로 검색, 에러메시지, URL 등 사용자로부터 입력한 값을 받아 브라우저에게 응답할 때 전송되는 방법이다.

 

DOM(Document Object Model) based CSS Attacks

Document Object Model의 약자로 DOM 객체를 포함하는 자바스크립트 등을 이용하여 데이터 접근 시 검증되지 않은 입력값이 자바스크립트를 통해 삽입되어 발생하는 취약점을 이용하는 방식으로 URL을 통해 사용자를 공격한다.

 공격 기법 

한국에서 가장 많이 사용되는 IE 기준으로 작성한 것이다.

따라서 크롬, 파이어폭스 등의 브라우저나 최신 브라우저 환경에서는 작동하지 않을 수도 있다.

 

스크립트 태그

  • 방법 : 스크립트 태그로 자바스크립트를 실행한다.
  • 예제 
<script>alert('XSS');</script>
  • 설명 : 스크립트 태그의 스크립트를 실행시킨다. 안타깝게도, 매우 정직한 방법이라 대부분의 사이트에서 막는 경우가 많다. 브라우저단에서 필터링 해주는 경우도 있다.

 

자바스크립트 링크

  • 방법 : 링크 태그로 자바스크립트를 실행한다.
  • 예제 
<a href="javascript:alert('XSS')">XSS</a>
  • 설명 : 브라우저에서 about: 링크와 같이, javascript: 로 시작하는 링크는 스크립트를 실행시킨다. 스크립트 태그와 같이, javascript: 를 필터링하는 경우가 많아 많은 사이트에서 막는다.

 

이벤트 속성

  • 방법 : 이벤트 속성을 사용한다.
  • 예제 
<img src="#" onerror="alert('XSS')">
  • 설명 : 이벤트 속성으로 스크립트를 실행할 수 있다. 주로 on 으로 시작하는 속성이 이벤트 속성이다. 자주 사용되는 이벤트 속성으로는 onload onerror onclick 등이 있다. 물론, 이 방법 역시 '자바스크립트 링크' 방법만큼 많이 막혔다.

 

블랙리스트 우회

  • 방법 : 알려지지 않은 태그와 속성들을 사용한다.
  • 예제 :
<ruby oncopy="alert('XSS')">XSS</ruby>
  • 설명 : 블랙리스트 방식으로 막는 사이트에 사용할 수 있다. 위의 방법들보다는 적게 막혔으나, 여전히 최근 웹사이트들에서는 화이트리스트 방식 차단이 대부분이라, 막혔을 가능성이 높다.

 

내용 난독화

  • 방법 : 따옴표로 감싸는 문자열 사이에 공백 문자들을 넣고, HTML 인코드를 하여 난독화한다.
  • 예제 :
<a href="&#x6A;&#x61;&#x76;&#x61;&#x73;&#xA;&#x63;&#x72;&#x69;&#x70;&#x74;&#xA;&#x3A;&#xA;&#x61;&#x6C;&#x65;&#x72;&#x74;&#xA;&#x28;&#x27;&#x58;&#x53;&#x53;&#x27;&#x29;">XSS</a>
  • 설명 : 일부 브라우저에서 javascript: 링크 사이에 공백 문자가 들어갈 수 있고, HTML 인코드를 해도 디코드된 내용이 출력된다는 점을 이용한다. 여기에서는 '자바스크립트 링크' 방법과 사용하였지만, 당연히 다른 방법과 함께 사용할 수 있다.

 

스크립트 난독화

  • 방법 : aaaencode에서 자바스크립트 난독화
  • 예제 :
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) ['c']+ ((゚ー゚) + (o^_^o))+ ((゚ー゚) + (o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) .゚Θ゚ノ+ ((゚ー゚) + (o^_^o))+ (゚Д゚) [゚Θ゚]+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) ['c']+ ((o^_^o) - (゚Θ゚))+ (゚Д゚) .゚ー゚ノ+ (゚Д゚) .゚ー゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) ['c']+ ((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚) ['c']+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) .゚Θ゚ノ+ ((゚ー゚) + (゚ー゚))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚) ['c']+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) ['c']+ ((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) .゚Θ゚ノ+ (o^_^o)+ (゚Д゚) .゚ー゚ノ+ ((゚ー゚) + (゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) .゚Θ゚ノ+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚) ['c']+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ (゚Д゚) .゚Θ゚ノ+ ((o^_^o) - (゚Θ゚))+ (゚Д゚) .゚Д゚ノ+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
  • 설명 : 스크립트를 일본어를 사용한 이모티콘으로 난독화한다. 스크립트 실행은 가능하지만, document.cookie와 같은 단어를 막을 경우 사용하면 된다.

 

 방어 방법 

XSS는 데이터를 입력할 때와 출력할 때, 모두 필터링하고, 클라이언트에도 막을 수 있을만한 수단을 구성해놓는 것이 좋다. 

  • 입력 필터
  • 출력 필터
  • 쿠키의 보안 옵션 사용
  • 콘텐츠 보안 정책(Content Security Policy, CSP) 사용

 

 OWASP에서 발표한 XSS 공격을 방지하는 7계명 

0. 허용된 위치가 아닌 곳에 신뢰할 수 없는 데이터가 들어가는것을 허용하지 않는다.
1. 신뢰할 수 없는 데이터는 검증을 하여라.
2. HTML 속성에 신뢰할 수 없는 데이터가 들어갈 수 없도록 하여라.
3. 자바스크립트에 신뢰할 수 없는 값이 들어갈 수 없도록 하여라.
4. CSS의 모든 신뢰할 수 없는 값에 대해서 검증하여라.
5. URL 파라미터에 신뢰할 수 없는 값이 있는지 검증하여라.
6. HTML 코드를 전체적으로 한번 더 검증하여라.

 

참고자료 : 나무위키

 

What is XSS cross site scripting❓ - types and protection

👉In this article, you will learn what XSS is. What are the types of cross-site scripting. Why is it dangerous and how to protect

www.wallarm.com

 

크로스 사이트 스크립팅(Cross Site Scripting, XSS)을 통한 웹 공격

XSS 즉, 크로스 사이트 스크립팅은 웹어플리케이션에서 볼 수 있는 취약점 중 하나 입니다. 웹페이지에 ...

blog.naver.com

 

728x90

 Cross-Site Request Forgery(CSRF)이란? 

XSRF 또는 Session Riding이라고도 하는 CSRF(교차 사이트 요청 위조)는 웹 브라우저를 속여 사용자가 로그인한 응용 프로그램에서 원치 않는 작업을 실행하도록 하는 공격이다.

 

성공적인 CSRF 공격은 비지니스와 사용자 모두에게 치명적일 수 있다. 세션 쿠키 도난을 포함하여 클라리언트 관계 손상, 무단 자금 이체, 비밀번호 변경 및 데이터 도난이 발생할 수 있다.

 

CSRF는 일반적으로 피해자를 속여 위조된 요청을 서버로 보내도록 유도하는 이메일이나 링크와 같은 악의적인 소셜 엔지니어링을 사용하여 수행된다. 의심하지 않는 사용자는 공격 시 애플리케이션에 의해 인증되기 때문에 합법적인 요청과 위조된 요청을 구별하는 것이 불가능하다.

 

 CSRF 예 

공격을 실행하기 전에 해커는 일반적으로 위조된 요청이 가능한 합법적인 것처럼 보이게 하기 위해 애플리케이션을 조사한다. 예를 들어 $100 은행 송금에 대한 일반적인 GET 요청은 다음과 같다.

GET http://netbank.com/transfer.do?acct=PersonB&amount=$100 HTTP/1.1

해커가 자신의 계정에 $100의 전송을 초래하므로 이 스크립트를 수정할 수 있다.

악성 요청은 다음과 같을 수 있다.

GET http://netbank.com/transfer.do?acct=AttackerA&amount=$100 HTTP/1.1

해커는 요청을 하이퍼링크에 포함할 수 있다.

<a href="http://netbank.com/transfer.do?acct=AttackerA&amount=$100">자세히 알아보기!</a>

다음으로 해커는 이메일을 통해 많은 은행 고객에게 하이퍼링크를 배포할 수 있다. 은행 계좌에 로그인한 상태에서 링크를 클릭하면 의도치 않게 $100 이체가 시작된다.

 

은행 웹사이트가 POST 요청만 사용하는 경우 <a> href 태그를 사용하여 악성 요청을 프레이밍하는 것은 불가능하다. 그러나 이 공격은 포함된 Javascript의 자동 실행과 함께 아래와 같은 <form>태그로 전달될 수 있다.

<body onload="document.forms[0].submit()"> 
   <form action="http://netbank.com/transfer.do" method="POST"> 
     <input type="hidden" name=" acct" value="AttackerA"/> 
     <input type="hidden" name="amount" value="$100"/> 
     <input type="submit" value="내 사진 보기!"/> 
   </form> 
 </body>

 

 예방 방법 

CSRF 공격을 예방하고 완화하는 효과적인 방법이 많이 있다. 사용자의 관점에서 예방은 로그인 자격 증명을 보호하고 승인되지 않은 사용자가 애플리케이션에 액세스하는 것을 거부하는 문제이다.

 

아래는 몇 가지 예방방법 예시이다.

  • 사용하지 않을 때 웹 애플리케이션 로그오프
  • 사용자 이름 및 암호 보안
  • 브라우저가 비밀번호를 기억하도록 허용하지 않음
  • 애플리케이션에 로그인한 상태에서 동시에 탐색 방지

웹 애플리케이션의 경우 악성 트래픽을 차단하고 공격을 방지하기 위한 여러 솔루션이 존재한다. 가장 일반적인 솔루션 중 하나는 모든 세션 요청 또는 ID에 대해 고유한 임의 토큰을 생성하는 것이다. 이는 이후에 서버에서 checked 및 verified된다. 중복 토큰이나 누락된 값이 있는 세션 요청은 차단된다. 세션 ID 토큰과 일치하지 않는 요청은 애플리케이션에 도달할 수 없다.

 

쿠키의 이중 제출은 CSRF를 차단하는 또 다른 잘 알려진 솔루션이다. 고유 토큰을 사용하는 것과 유사하게 임의의 토큰은 쿠키와 요청 매개변수 모두에 할당된다. 그런 다음 서버는 애플리케이션에 대한 액세스 권한을 부여하기 전에 토큰이 일치하는지 확인한다.

 

토큰은 유효하지만 브라우저 기록, HTTP 로그 파일, HTTP 요청의 첫 번째 줄을 기록하는 네크워크 어플라이언스 및 리퍼러 헤더(보호된 사이트가 외부 URL에 연결되는 경우)를 포함하여 여러 지점에서 토큰이 노출될 수 있다. 이러한 잠재적인 약점은 토큰을 완전한 솔루션보다 덜하게 만든다.

 

 CSRF와 XSS비교 

XSS CSRF
개요 : 악성 스크립트가 클라이언트에서 실행됨
공격 대상 : 클라이언트
목적 : 쿠키ㆍ세션 갈취, 웹 사이트 변조 등
개요 : 권한을 도용당한 클라이언트가 가짜 요청을 서버에 전송
공격 대상 : 서버
목적 : 권한 도용


 

참고 자료 : 

 

What is CSRF | Cross Site Request Forgery Example | Imperva

CSRF is a common attack vector that tricks a user into executing an unwanted action in a web application. While dangerous, the attack is easily preventable

www.imperva.com

 

XSS와 CSRF 차이

XSS(Cross Site Scripting)란? XSS는 SQL injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 주로 의도치 않

young-blog.tistory.com

 

728x90
Fragment의 취약점을 이용한 공격기술

- fragment를 조작함으로써 패킷 필터링 장비나 침입차단시스템을 우회 또는 서비스거부공격을 유발 시킬 수 있다.

  1. Tiny fragment 공격
     
    최초의 fragment를 아주 작게 만들어서 네트워크 침입탐지시스템이나 패킷 필터링 장비를 우회하는 공격

    TCP 헤더(일반적으로 20바이트) 2개의 fragment에 나뉘어질 정도로 작게 쪼개서 목적지 TCP 포트번호가 첫 번째 fragment에 위치하지 않고 두 번째 fragment에 위치하도록 한다. 패킷필터링 장비나 침입탐지시스템은 필터링을 결정하기 위해 포트번호를 확인하는데 포트번호가 포함되지 않을 정도로 아주 작게 fragment된 첫 번째 fragment를 통과시킨다. 다음으로 들어오는 fragment의 경우 포트번호가 포함되어 있지만 필터링을 거치지 않고 통과시킨다.

    - 최근 필터링 장비에는 TCP 헤더의 포트번호가 포함되지 않을 정도로 작은 첫 번째 fragment는 drop시키기도 한다.

    - 해당 공격 기법은 nmap을 통해서도 공격이 가능하다. (-f 옵션을 이용)


  2. Fragment Overlap 공격

    - Tiny fragment 공격기법에 비해 좀 더 정교한 공격기법

    - 공격자는 공격용 IP 패킷을 위해 두 개의 fragment를 생성한다. 첫 번째 fragment에서는 필킷 필터링 장비에서 허용하는 http(TCP 80) 포트와 같은 포트번호를 가진다. 그리고, 두 번째 fragment에서는 offset을 아주 작게 조작해서 fragment들이 재조합될 때 두 번째 fragment가 첫 번째 fragment의 일부분을 덮어쓰도록 한다. 일반적으로 공격자들은 첫 번째 fragment의 포트번호가 있는 부분까지 덮어씌운다. IDS에서는 첫 번째 fragment는 허용된 포트번호이므로 통과시키고, 두 번째 fragment는 이전에 이미 허용된 fragment ID를 가진 fragment이므로 역시 통과시킨다. 이 두 개의 fragment가 목적지 서버에 도달하여 재조합되면 첫 번째 fragment의 포트번호는 두 번째 fragment의 포트번호로 overwrite되고 TCP/IP 스택은 이 패킷을 필터링 되어야할 포트의 응용프로그램에 전달한다.

  3. IP Fragmentation을 이용한 서비스거부공격

    - Ping of Death 혹은 Teardrop과 같은 것이 fragmentation을 이용한 서비스거부공격

    - 해당 
    공격들은 이미 잘 알려져 있으며 많은 시스템에서 이미 패치가 완료되었음

    - Ping of Death : 표준에 규정된 길이 이상으로 큰 IP 패킷을 전송함으로써 이 패킷을 수신받은 OS에서 이 비정상적인 패킷을 처리하지 못함으로써 서비스거부공격을 유발 (Jolt 이용)

    -Teardrop : 두 번째 fragment의 offset을 조작하여 fragment들을 재조합하는 과정에서 버퍼를 넘쳐 겹쳐쓰게 한다. Teardrop 프로그램은 겹쳐쓰진 offset 필드를 가진 fragment를 만들어 목표 시스템에 보내며, fragment들을 재조합하는 목표 시스템을 정지시키거나 재부팅시킨다.(Bonk, New Teardrop 이용)

기타 사용 가능한 툴

- fragrouter : 한국인 해커 송덕준(Dug Song이란 닉네임으로 활동)이 만든 툴로 모든 패킷을 다양한 형태의 fragment로 쪼개어서 전송함으로써 공격사실을 숨길 수 있는 툴.

 

 

* 현재는 운영체제에서 IP Fragmentation을 이용한 서비스거부공격(시스템 중지 및 재부팅 유발 공격)에 견딜 수 있도록 패치가 되었다. 그렇기 때문에 해당 취약점에 의해 더 문제가 되고 있는 것은 IDS/IPS를 우회할 수 있는 기술이라는 것이다.
 침입탐지시스템의 경우 침입사실을 결정하기에 앞서 fragment된 패킷들을 재조합 해보아야만 취약점을 통해 우회가 된 사실을 알 수 있을 것이다. 하지만 fragment된 패킷을 재조합하기 위해서는 메모리, 프로세스 등의 많은 시스템 자원을 필요로 하고 이를 실시간 탐지에는 많은 어려움이 따른다.

728x90

[정보보안기사 필기 요약 보기]

 정보보안기사 필기 요약 #1-1. 정보보호 개요 http://captech.tistory.com/2

 정보보안기사 필기 요약 #2-1. 암호학 http://captech.tistory.com/3

 정보보안기사 필기 요약 #2-2. 암호학 http://captech.tistory.com/4

 정보보안기사 필기 요약 #3-1. 접근통제 http://captech.tistory.com/5

 정보보안기사 필기 요약 #4-1. 시스템 보안 http://captech.tistory.com/6

 정보보안기사 필기 요약 #5-1. 네트워크 보안 http://captech.tistory.com/7

 정보보안기사 필기 요약 #5-2. 네트워크 보안 http://captech.tistory.com/8

 정보보안기사 필기 요약 #5-3. 네트워크 보안 http://captech.tistory.com/9

 정보보안기사 필기 요약 #6. 애플리케이션 보안 http://captech.tistory.com/10

 

728x90

https://two2sh.tistory.com/9

 

MS-Office의 DDE 취약점을 이용한 공격 주의 #nagoona

글작성 : 2017년 11월  1. 개요 대략 1달 전인 2017년 10월 9일 보안 기업인 SENSEPOST의 블로그에서 Microsoft의 Office 프로그램에서 매크로 없이 코드 실행이 가능하다는 취약점을 소개하였다. (https://sense.

two2sh.tistory.com

 

728x90

다음으로 2세대 방화벽은 보통 차세대(Next Generation) 방화벽이라 하며 통상 줄여서 NG방화벽이라고 호칭합니다. 1세대 방화벽과의 가장 큰 차이점은 단말이 사용하는 응용 프로그램(Application)을 인식해서 선별적으로 차단이 가능하다는 점입니다.

 

 

1세대 방화벽은 포트 넘버로만 트래픽을 구분할 수 있었기 때문에 TCP 80을 사용하는 모든 트래픽은 모두 차단하거나 허용할 수밖에 없었습니다. 예를 들면 인터넷 사용은 허용하면서 메신저나 P2P 다운로드 트래픽은 차단하고 싶거나, 인터넷 중에서도 유튜브, 인스타그램 등만 선별적으로 차단하는 보안 정책은 모두 같은 TCP 80 포트를 사용하기 때문에 불가능하였습니다.

 

 

우리가 사용하는 인터넷과 같은 통신은 참가하는 모든 단말이 동일한 규칙으로 신호를 주고받아야 하는데 이를 통신 규약을 프로토콜(Protocol)이라고 합니다. 그중에 가장 대표적인 것이 ISO(국제표준화기구)에서는 제정한 OSI 7 레이어 참조 모델이 입니다.

 

 

아래 <그림 1> OSI 프로토콜의 3번째 Network 계층이 IP 주소를 정의하는 곳이며, 4번째 Transport 계층이 TCP 혹은 UDP의 포트 넘버를 정의하는 단계입니다. 즉 1세대 방화벽은 4 계층까지만 모니터링이 가능한 장비이기 때문에 마지막 7번째 Application 계층인 응용 프로그램 단계는 모니터링이 불가능합니다. 

 

 

차세대 방화벽은 Application계층 데이터 모니터링이 가능하기 때문에 4 계층에서 같은 서비스 포트를 사용하는 프로그램이더라도 서로 구분이 가능합니다. 즉 포트 넘버가 아니고 카카오톡 같은 메신저, 토렌트 같은 P2P 파일공유 트래픽을 구분할 수 있습니다. 그뿐만 아니라 카카오톡 트래픽 중에서도 단순한 채팅 트래픽과 파일을 공유하는 트래픽을 구분할 수 있기 때문에 채팅만 허용하고 파일 전송만 선별적으로 차단하는 제어가 가능합니다.

 

<  그림 1  > OSI 7 레이어 및 TCP/IP 4 레이어 모델

 

 

그럼 차세대 방화벽은 어떻게 애플리케이션을 구분할 수 있을까요? 아래 <그림 2>와 같이 패킷이 들어오면 일단 보안정책으로 포트 넘버를 먼저 확인하게 됩니다. 그다음으로 패킷의 L7 레벨에 있는 데이터를 읽어서 방화벽이 가지고 있는 트래픽 패턴 정보와 동일한 패턴이 발견되는지 확인하여, 애플리케이션을 식별하고, 식별이 되지 않으면 다음으로 프로토콜 디코더라는 일종의 패킷 해석기를 이용하여 주고받는 내용의 특성을 분석하고 트래픽을 판별하는 방식을 이용합니다. 

 

 

이 단계에서도 판별이 되지 않으면 휴리스틱(Heuristic) 기법을 이용하여 정확하게 패턴이 일치하지 않더라도 통계적인 기법으로 유사도를 측정하여 80~90% 이상 패턴이 유사하면 특정 애플리케이션 트래픽으로 판별하는 방식으로 동작합니다.

 

 

< 그림 2 >  Application 탐지 프로세스 (출처: 팔로알토 네트웍스)

 

 

그럼 현재 회사에서 많이 사용 중인 차세대 방화벽에서 어떤 애플리케이션을 탐지하고 허용/차단할 수 있는지 알아보도록 하겠습니다. 최근 10년간 가장 트래픽을 많이 발생시키고 있는 프로그램 중의 하나는 단연코 P2P 파일공유 프로그램들입니다. 

 

 

가장 대표적인 경우가 토렌트(torrent)류의 프로그램입니다. 웹하드와 같이 특정한 서버에 접속해서 파일을 다운로드하는 것이 아니라, 서버와 클라이언트가 구분되지 않고, 네트워크에 접속하는 각 개인이 보유 중인 파일을 접속된 다른 사용자들에게 파일을 전송하는 서버 역할을 하고, 내가 없는 파일은 다른 사용자에게서 받아 오는 클라이언트 역할을 동시에 수행하는 프로그램입니다.

 

 

이 프로그램의 특징은 일대일로 파일을 보내고 받는 것이 아니라, 내가 파일을 받을 때 하나의 파일을 여러 개로 쪼개서 여러 개의 단말에서 동시에 파일을 받을 수 있고, 반대로 파일을 보낼 때도 여러 개의 단말에 동시에 전송할 수 있는 점입니다. 

 

 

그래서 동일한 파일을 여러 단말이 많이 보유할수록 파일 전송속도가 빨라지는 특징이 있습니다. 문제는 대용량의 영상 파일을 주고받을 경우 많은 트래픽을 유발하기 때문에 집에서 사용하는 것은 문제가 없으나 회사 같은 조직 내에서 사용할 경우 네트워크 대역폭을 소모시켜서 업무에 지장을 줄 수 있다는 점입니다. 아래 <그림 3>는 방화벽에서 탐지할 수 있는 P2P 파일 공유 프로그램 목록입니다.

 

 

< 그림 3 >  패턴으로 등록된 P2P 파일공유 프로그램 (출처 : 팔로알토 네트웍스)

 

 

목록에 보면 다양한 파일공유 프로그램을 확인할 수 있고 분류 및 위험도, 기본통신방식 등이 나열되어 있습니다. 위험도는 벤더에서 임의로 지정한 등급으로 숫자가 높을수록 위험도가 높은 것으로 특정 등급을 묶어서 차단하거나 로그를 남기는 설정을 할 때 사용할 수 있습니다.  

 

 

파일공유 프로그램 이외에도 네이버 같은 포털 서비스, 다량의 트래픽을 유발하는 영상 스트리밍 서비스인 유튜브(YouTube), 채팅과 파일 전송 기능이 있는 카카오톡, 최근 인기가 높아진 인스타그램과 같은 SNS 서비스 등도 식별이 가능합니다.

 

 

아래 <그림 4>과 같이 네이버 트래픽에서도 블로그, 라인과 같은 메신저, 메일, 엔드라이브 같은 웹하드 서비스, 네이버 TV 같은 비디오 스트리밍 트래픽을 식별할 수 있기 때문에 세분화해서 트래픽을 제어할 수 있습니다.

 

 

< 그림 4  > 네이버 트래픽 식별 목록 (출처 : 팔로알토 네트웍스)

 

 

아래 <그림 5>은 유튜브 트래픽 식별 목록입니다. 영상을 시청하는 것 이외에도 영상을 업로드하는 트래픽도 식별할 수 있는 것을 확인할 수 있습니다.

 

 

< 그림 5  > 유튜브 트래픽 식별 목록 (출처 : 팔로알토 네트웍스)

 

 

아래 <그림 6>은 국민 메신저인 카카오톡 트래픽 식별 목록입니다. 거의 전 국민이 사용하는 서비스이다 보니 보안을 위해 사용을 원천 차단한다면 원성이 대단할 것입니다. 이럴 경우 채팅 서비스는 허용하고 파일 전송 기능만 사내에서 사용을 차단한다면 보안을 강화하면서 임직원의 민원도 해결할 수 있을 것 같습니다.

 

 

<  그림 6 >  카카오톡 트래픽 식별 목록 (출처 : 팔로알토 네트웍스)

 

 

마지막으로 아래 <그림 7>와 같이 사진 기반으로 운영되는 SNS인 인스타그램도 단순한 검색과 포스팅 트래픽을 구별할 수 있기 때문에 좀 더 유연한 보안 정책을 설정 가능합니다.

 

 

<  그림 7 >  인스타그램 트래픽 식별 목록 (출처 : 팔로알토 네트웍스)

 

 

지금까지 차세대 방화벽의 애플리케이션 탐지 기능에 대해 살펴보았습니다. 대략 10년 전부터 차세대 방화벽이 도입되기 시작하면서, 최근에 도입되는 방화벽은 모두 차세대 방화벽을 표방하고 있습니다. 대부분의 벤더는 애플리케이션 탐지 기능을 기본 기능으로 제공하지 않고 별도의 서비스 라이선스를 구매해야 사용 가능하게 하고 있습니다. 

 

 

그 이유는 새로운 서비스가 계속 등장하고 있기 때문에 거기에 맞추어 식별 목록을 계속 업데이트해 줘야 하기 때문입니다. 보통 년 단위로 라이선스를 갱신해야 장비에서 업데이트된 식별 목록을 주기적으로 다운로드할 수 있습니다.

'IT > 네트워크(Network)' 카테고리의 다른 글

Cisco 2960 스위치를 공장 기본 설정으로 재설정  (0) 2022.01.22
Mikrotik RB5009UG+S+IN  (3) 2022.01.13
웹 방화벽  (0) 2022.01.04
DMZ 네트워크를 이해하자  (0) 2022.01.04
방화벽 가상화  (0) 2022.01.04
728x90

웹 방화벽(Web Application Firewall)은 통상 앞글자를 따서 와프(WAF)라고 부릅니다. 앞에서 설명한 차세대 방화벽도 Web 트래픽은 식별할 수 있기 때문에 웹 방화벽과 동일한 기능을 지원하지 않을까 생각할 수 있습니다. 그럼 여기서 차세대 방화벽과 웹 방화벽의 차이점을 먼저 알아보도록 하겠습니다.

 

차세대 방화벽은 모든 트래픽에 대해 L7 레벨을 모니터링하고 제어할 수 있는 장비이며 네트워크의 다양한 트래픽을 관리할 수 있는 장비라면, 웹 방화벽은 http, https트래픽만 집중해서 모니터링하여 웹서버 해킹을 방지하는 목적으로 http method(get, put)와 같은 세부적인 옵션 값에 따라 임계치를 설정하여 차단하는 장비로써 차세대 방화벽으로 차단이 불가능한 웹 기반 공격을 전문적으로 탐지 차단하는 보안장비입니다.

 

일반적으로 차세대 방화벽이 설치되어 있더라도 업무상 혹은 비즈니스 목적으로 운영되는 웹 기반 서버가 있다면 추가적으로 웹 방화벽을 설치하여 웹 서버의 보안을 강화하는 것이 일반적인 적용 방법입니다.

 

그럼 웹 방화벽이 등장한 배경을 알아보죠. 앞에서 설명한 1세대 혹은 2세대(차세대) 방화벽의 보급이 늘어나면서, 서비스하지 않는 모든 포트는 방화벽의 보안정책으로 차단되게 되었습니다. 보통 서버들은 사용자가 이용하지 않는 서비스라도 OS가 설치되면서 기본적으로 오픈되는 포트가 여러 개 있습니다.

 

예를 들면 윈도 OS를 설치하면 파일공유, 원격 접속 등의 위한 포트가 기본으로 오픈되면서 방화벽에서 차단되지 않으면, 인터넷으로 통해서도 접속이 가능한 경우가 종종 있습니다. 이렇게 기본적으로 오픈되는 포트를 통해 많은 공격이 이루어졌지만, 방화벽의 보급이 늘어나면서 서비스하는 포트 이외에는 인터넷으로 통해 접근이 불가능해지면서, 공격자의 공격 대상이 줄어들게 되었습니다.

 

그런데 대부분의 조직에서 웹 서버는 기본적으로 사용하기 때문에 방화벽에서 HTTP, HTTPS 서비스 포트는 열지 않을 수가 없습니다. 공격자의 입장에서는 HTTP, HTTPS 이외에는 열려 있는 포트가 없다 보니, 웹 서비스만 집중적으로 연구해서 공격 기술을 개발할 수밖에 없는 환경이 된 것입니다. 

 

이렇게 웹 기반 공격이 점점 발전되어 다양화되면서, 홈페이지 등이 변조되거나, 웹 서버를 해킹한 후에 이를 통해 사내의 DB서버에 접근해서 조직의 정보를 탈취하는 일이 빈번하게 발생되었습니다. 이런 웹 기반의 공격에 대응하기 위해 웹 공격 유행을 분석하여 3~4년 단위로 유행하는 공격 방식을 연구하여 가장 많이 사용하는 공격 유형 10가지(Top 10)를 발표하는 조직이 있습니다.

 

OWASP(Open Web Application Security Project)라는 일종의 커뮤니티로 다양한 개발자, 보안 관리자 등이 자발적으로 참여하여 조직한 비영리단체로 OWASP Top 10 이란 이름으로 주기적으로 보고서를 발표하고 있습니다. 최근 발표된 버전은 2017로서 아래 <그림 1>과 같이 A1부터 A10까지 가장 빈번하게 발생되는 웹 공격 10개를 나열하고 각 공격 별 취약점 확인 방법과 보안 대책을 설명하고 있습니다.

 

< 그림 1 >  OWASP Top 10 2013, 2017 비교

 

제일 빈번하게 발생되는 공격인 인젝션(Injection:주입)의 경우 말 그대로 클라이언트의 입력값을 조작하여 비 정상적인 명령어를 주입하고 해당 서버의 DB에 있는 다양한 정보를 탈취하거나 관리자 권한을 획득하는 공격 방법입니다. 쉬우면서도 공격 성공률이 높은 유형으로 2017년 3월에 발생한 "여기 어때"라는 숙박 정보 회사의 고객 DB정보를 통해 가입자 절반인 99만 명의 이름, 휴대전화 번호, 숙박 이용정보가 노출되는 사고도 이 공격으로 발생한 사고였습니다.

 

가장 유명한 공격 중 하나인 SQL Injection 공격 방식을 설명드리면, 아래 <그림 2>에 있는 1번과 같이 정상적인 SQL 명령어가 있다고 가정해 보겠습니다. 여기에 2번과 같이 ' OR 1=1 --'이라는 문구를 중간에 삽입하여 3번과 같이 SQL 명령어를 웹 서버로 전송하게 합니다. 1번 명령어는 ID가 INPUT1이고 패스워드가 INPUT2인 사용자의 모든 정보를 불러오게 하는 명령어인데 여기에 특정 문구를 삽입해서 3번과 같이 변조하여 서버로 전송하게 되면, 삽입한 문구 중 '--' 뒤에 있는 문구는 모두 주석 처리되고, OR 1=1은 언제나 True가 되기 때문에 결과적으로 서버에서는 유저 테이블에 있는 모든 정보를 불러오게 하는 명령어로 인식되기 때문에 서버가 보유한 모든 유저들의 정보가 공격자에게 출력되는 결과가 초래되게 됩니다.

 

< 그림 2 >  SQL Injection 공격 방식 (출처: 안랩)

 

그럼 이런 공격을 웹방화벽에서는 어떻게 차단할 수 있는지 알아보죠. 웹 방화벽은 웹 서버 앞에서 사전에 HTTP 패킷을 분석하여 정상적이라고 판단되는 트래픽만 웹 서버로 전달합니다. 아래 <그림 3>와 같이 트래픽이 들어오면 아래와 같은 여러 가지 단계의 분석을 통해 공격을 차단하게 됩니다.

 

1. 패킷의 L7 레벨을 확인하여 정상적인 HTTP구문 인지 먼저 확인한다.

2. URI(예:www.abc.com/user)를 식별하여 적용되어 있는 정책을 확인하고 어떤 공격 탐지 rule을 적용하여 검사할 것인지 판단한다.

3. 적용된 공격 탐지 룰에 따라 여러 가지 공격을 탐지한다. 이때 블랙리스트(black list)를 이용하여 사용할 수 없는 구문이나 패턴을 먼저 차단시킨다.

4. 화이트리스트(white list)를 이용하여 허용된 구문 또는 패턴을 통과시킨다.

5. 정상적인 시도라도 임계치 설정을 통해 짧은 시간 동안 여러 번의 시도가 있으면 차단시킨다. 6. 서버에서 응답하는 웹 페이지가 변조되어 있는지, 에러 코드를 반환을 통해 공격자에게 정보를 제공하는지 확인하여, 관리자에게 경보를 알리거나 반환 값을 숨긴다.

 

< 그림 3 >  웹 방화벽의 공격 트래픽 분석 프로세스 (출처 : 펜타시큐리티)

 

웹 방화벽의 경우도 일반 방화벽과 같이 시간이 지나면서 점점 발전을 거듭하였습니다. 초기 웹 방화벽은 사전에 관리자가 설정하는 화이트리스트, 블랙리스트에 의존하기 때문에 오탐(정상적인 트래픽인데 공격으로 판단하는 경우) , 미탐(공격 트래픽인데 탐지하지 못하는 경우)이 발생하는 경우가 매우 빈번하였습니다. 

 

이런 문제는 웹 방화벽이 URI(예: www.daum.net/news), 웹 트래픽 내용을 모니터링하여 학습하면서 정상적인 접속 내용은 화이트리스트를 자동으로 추가하거나, 기존에 학습된 내용과 현저히 다른 내용이 보이면 공격으로 판단하는 등, 사전에 등록된 패턴에 의존하지 않고, 유사도 등을 측정하여 공격을 차단하는 방식이 사용되었습니다.

 

최근에는 정치적이거나 민족주의적인 이유들, 예를 들면 815 광복절에 일본 해커가 독도 홍보사이트를 공격하여 홈페이지 내용의 위 변조를 시도하는 것 같이 과시형 공격이나, 웹 서버를 통해 고객 자료를 탈취하여 비트코인 등의 금품을 요구하는 행위 등 다양한 공격이 웹 서버를 대상으로 이루어지고 있습니다. 쇼핑몰, 서비스 예약, 웹 포탈, 홍보 사이트와 같이 조직의 비즈니스가 웹에서 대부분 이루어지는 조직에서 이제 웹 방화벽이 필수적인 보안 장비가 되었습니다.

'IT > 네트워크(Network)' 카테고리의 다른 글

Mikrotik RB5009UG+S+IN  (3) 2022.01.13
차세대 방화벽  (0) 2022.01.04
DMZ 네트워크를 이해하자  (0) 2022.01.04
방화벽 가상화  (0) 2022.01.04
Stateful 트래픽 처리방식 방화벽(Firewall)  (0) 2022.01.04
728x90

비무장지대 - DMZ(Demilitarized Zone)란 단어 그대로, 아군과 적군 어느 쪽이든 무장을 하지 않는 지리적 군사 영역을 의미합니다.

 

네트워크에도 DMZ라는 것이 있는데 이것은 무엇이고 언제 사용하는지 알아보겠습니다.

 

컴퓨팅과 네트워크를 사용하는 기관들은 보안의 목적으로 폐쇄 형태의 내부 네트워크(LAN: Local Area Network)만 사용하여 각종 인트라넷이나 내부 시스템을 운영하는 방법도 있지만 이 경우엔 외부 네트워크로는 단절되어 웹 검색이나 이메일링, DNS 사용, FTP 등의 기본적인 인터넷 서비스를 사용할 수 없습니다.

 

외부 네트워크 연결을 위해 별도의 네트워크 케이블링을 하여, 물리적으로 내부/외부 다른 네트워크를 사용할 수 있지만 매우 불편한 상황은 어쩔 수 없습니다. 필자도 예전 SI 사업장에서 내부망/외부망 랜선을 각각 바꿔가며 프로젝트를 했던 경험이 있습니다.

 

문제는 비단 사람뿐만 아니라, 내부 IT 시스템들도 때로는 외부 네트워크를 사용해야 한다는 점입니다. 리눅스 운영체제, MySQL 등을 비롯한 각종 오픈 소스 설치 파일을 다운로드해서 설치하고, 패치 파일 버전을 확인하고 제때 업데이트해야 하는 과정이 있습니다. 업무상 기관의 이메일을 사용해야 하는데 이메일 서버는 내부에 있다 해도 SMTP는 외부에서 진입할 수 있도록 해야 하며, 기관에서 운영하는 웹 사이트는 외부에서 접속하지만 내부에 웹 서버가 존재합니다. 이러한 요구 사항을 DMZ로 해결할 수 있습니다.

 

"내부 네트워크에 존재하지만, 외부에서 접근할 수 있는 특수한 네트워크 영역을 DMZ라고 합니다."

 

DMZ의 활용 예제를 알아보겠습니다.

 

우리 회사의 IT 시스템은 외부에서 접속해야 할 웹 서버/이메일 서버/FTP 서버 시스템이 존재합니다.
이 시스템 영역을 A라고 가정해보겠습니다.

우리 회사의 IT 시스템은 내부에서만 사용하는 시스템 또한 존재합니다.
이 시스템 영역을 B라고 가정해보겠습니다.

외부에 열린 A에서, B로의 접속은 보안상 우려(해킹 등)가 있으므로 접속을 막습니다.
따라서, A를 통해 내부 시스템에 접속이나 침입이 불가능합니다.

B에서, A로의 접속은 보안상 우려가 없고, A가 가진 정보가 필요한 경우가 있으므로 접속을 허가합니다.
따라서, 내부 시스템은 외부 인터넷을 통해 얻은 정보를 내부 DB, 스토리지 등에 저장하고, 활용할 수 있습니다.

 

위 시나리오를 다이어그램으로 대략 표현하면 아래와 같습니다. 외부 연결이 필요한 시스템들을 DMZ에 배치합니다. 그렇다고 모든 연결이 DMZ로 가능한 것이 아니라, 알맞은 서비스만 연결이 되도록 방화벽 설정이 필요합니다. DMZ에서 내부로의 연결은 불가능하지만 반대로 내부에서 DMZ로의 연결은 가능합니다. 이는 또 다른 방화벽에서의 설정으로 구현 가능합니다.

 

DMZ를 구글링 해보면, 아래와 같이 단일 방화벽 구성도 가능합니다. (실제로 이렇게 사용을 더 많이 하고 있습니다)

<방화벽 한 개로 구성하는 DMZ 네트워크>

'IT > 네트워크(Network)' 카테고리의 다른 글

차세대 방화벽  (0) 2022.01.04
웹 방화벽  (0) 2022.01.04
방화벽 가상화  (0) 2022.01.04
Stateful 트래픽 처리방식 방화벽(Firewall)  (0) 2022.01.04
포트 스캔(Port Scan)  (0) 2021.12.17
728x90

이번 글에서는 가상화 기술이 발전하면서 거기에 맞추어 방화벽이 어떻게 발전했는지 알아보도록 하겠습니다. CPU의 코어(core) 수가 증가하면서, 하나의 CPU에서 동시에 여러 개의 OS를 구동할 수 있는 기술이 발전하였습니다. 이 기술을 통해 가상 서버의 사용이 활성화되면서, 이 기술을 서버가 아닌 네트워크 장비에도 활용하고 싶은 수요가 생기면서 NFV(Network Function Virtualization: 네트워크 기능 가상화)라는 용어가 등장하였습니다.

 

현재 대부분의 네트워크 장비, 예를 들면 라우터, 스위치, 방화벽 등은 서버 형태가 아닌 별도의 전용 장비로 공급되고 있습니다. 하지만 이런 장비들도 최초에는 일반적인 서버에 프로그램 방식으로 설치되는 사용되기 시작하였습니다. 지난 글에서 소개드린 1세대 방화벽의 시초인 체크포인트(checkpoint)의 경우에도 처음에는 H/W가 아니라 S/W로 출시되었습니다. 

 

즉, 방화벽을 설치하기 위해서 일반적인 서버를 구매하여 여기에 방화벽 소프트웨어를 설치하고, 서버 뒤에 네트워크 케이블을 연결하여 동작시켰습니다. 2000년 초중반까지도 이런 방식처럼 서버 형태로 공급되어,, 아주 높은 성능을 요구하지 않는 환경에서는 범용 서버의 CPU 성능으로도 웬만한 트래픽은 문제없이 처리할 수 있었습니다.

 

하지만 점점 처리해야 할 트래픽이 증가하면서 범용 서버의 성능으로는 한계에 다다르게 되었습니다. 이제 범용 서버가 아닌 전용 장비가 필요한 시기가 된 것이죠. 이때 등장한 것이 넷스크린(Netscreen)이라는 방화벽이었습니다. 이 회사의 방화벽은 기존 S/W방식으로 제품을 팔지 않고 전용 장비에 전용 OS를 설치하여, 그 당시에는 획기적인 성능인 2 Gbps의 처리 성능을 내는 장비까지 출시하였습니다. 

 

아래 <그림 1>과 같이 대략 13U(56cm)로 랙의 거의 절반을 차지하는 크기에 무게는 23kg이었습니다. 범용 CPU가 아니고 전용 ASIC칩(주문형 반도체: 특정한 기능을 가속해서 처리할 수 있도록 개발된 칩)을 직접 개발하여 적용하고 유닉스를 커널 컴파일(제작자의 의도에 따라 OS를 최적화시키는 작업)하여 전용 OS를 개발하여 적용하였기 때문에, 기존 범용 서버에서 나오는 성능의 대략 10배 이상의 성능을 달성할 수 있었습니다.

 

<  그림 1 >  최초의 Giga급 방화벽(Netscreen 1000)과 동일 성능을 발휘하는 최신 방화벽

 

그럼 다음으로 서버 가상화 기술에 대해 알아보죠. 가상화 기술은 물리적으로 독립된 서버에 여러 개의 가상 서버를 동시에 운영할 수 있는 기술입니다. 아래 <그림 2>를 보면 왼쪽 서버처럼 제일 하단에 검은색의 CPU, 메모리, 저장장치, 랜카드로 이루어진 서버 하드웨어가 존재하고, 그 상단에 윈도 혹은 리눅스, 유닉스 등의 운영체제가 설치됩니다. 이렇게 운영체제가 설치되면, 사용자가 원하는 Web, DNS, Mail 등 의 응용프로그램이 설치되어 독립된 서버로 동작하게 됩니다.

 

그런데 <그림 2 >의 오른쪽 서버와 같이 동일한 하드웨어에 OS 대신에 VMware 같은 하이퍼바이저(Hypervisor)가 설치되면 CPU에 있는 각각의 코어(Core)를 독립된 하나의 가상 CPU로 인식하여, 하나의 가상 서버를 구성할 수 있도록 해줍니다. 또한 메모리, 하드디스크 등도 사용자가 설정하는 용량만큼 분할하여 각각의 가상 서버에 독립적으로 할당시켜 물리적으로 한 개의 메모리와 하드디스크가 가상 서버 개수만큼 존재하는 것처럼 동작하게 도와줍니다.

 

< 그림 2 >  전통적인 서버와 가상화 서버 비교 (출처 : VMWare)

 

이렇게 생성된 가상 서버를 보통 VM(Virtual Machine) 혹은 가상 머신이라고 말합니다. 요즘 인텔 서버용 CPU당 코어 수는 모델에 따라 4개에서 28개까지 장착되어 있기 때문에 하나의 CPU가 있는 서버에 VM당 2개의 코어를 할당한다고 가정하면 최대 14개의 VM을 작동시킬 수 있습니다. 물리적으로 한대의 서버에 14개의 가상 서버를 운영할 수 있다면 가상화를 사용하지 않는 서버만 운영할 경우보다 서버 운영 자원의 절감이 가능합니다. 랙에 설치되어 차지하는 공간, 전원 소모량, 발열을 냉각하기 위한 항온항습기 전기 소모량 등 서버 유지비의 획기적인 절감이 가능하기 때문에 현재 많은 조직에서는 규모의 차이만 있을 뿐 많은 서버를 가상 서버로 운영하고 있습니다. 

 

물리적인 자원의 절감뿐만 아니라 서버를 운영하는 데 있어서도 시간과 인력을 절감할 수 있습니다. 신규로 OS를 설치할 경우 짧게는 20분에서 1시간 이상의 시간이 소요되었지만, 가상화 기술을 이용하게 되면 VM이 하나의 파일로 만들어 지기 때문에, 하이퍼바이저를 통해 동일한 OS에 동일한 소프트웨어가 설치된 VM을 배포하여 3~5분 내에 원하는 개수만큼 바로 사용할 수 있게 됩니다. 그리고 VM에 할당하는 CPU, 메모리를 하드웨어 자원에 여유가 있다면 VM에 할당하는 자원을 원하는 만큼 늘이거나 줄일 수도 있고, 저장 공간도 늘일 수 있기 때문에 서비스 접속자의 증가에 유연하게 대응이 가능합니다.

 

VM이 파일 형태로 존재하기 때문에 하드웨어의 공간적 제약도 없게 됩니다. 특정 서버에 있는 VM들의 사용량이 증가하여 해당 서버의 CPU 사용량이 높아지더라도 가상화 관리 프로그램이 자동으로 CPU 자원에 여유가 있는 서버로 VM을 중단 없이 이동시킬 뿐만 아니라 하드웨어의 장애가 발생되더라도 VM을 짧은 시간 내에 다른 서버에서 재가동시키기 때문에 서버 관리자의 업무량도 획기적으로 줄일 수 있게 되었습니다.

 

서버 가상화를 운영 중인 조직은 자기도 모르는 사이에 아주 기초적이기는 하지만 NFV 기술을 사용하고 있다고 볼 수 있습니다. 여러 대의 VM들이 하나의 서버에서 작동하게 되면 같은 서버 내의 VM 간의 통신뿐만 아니라 서버 외부의 다른 서버 와도 통신이 필요합니다. 아래 <그림 3>과 같이 하이퍼바이저 내에는 'vSwitch'라는 가상의 스위치가 존재합니다. 물리적인 스위치 대신에 가상의 스위치를 이용하기 때문에 사용 포트 수의 제한이나, 물리적인 케이블의 연결이 필요 없게 되었습니다.

 

아래 <그림 3>의 왼쪽 그림과 같이 총 4개의 VM이 있고 각각 vNIC이라는 가상의 네트워크 카드를 통해 vSwitch에 가상으로 연결되어 있고 이를 통해 오른쪽 3개의 서버 VM이 서로 통신이 가능하게 됩니다. 제일 왼쪽 VM은 방화벽 프로그램을 구동시켜 방화벽으로 동작 중입니다. 서버 VM에 연결된 가상 스위치가 방화벽 VM으로 연결되어 있고, 방화벽 VM은 다시 다른 가상 스위치를 통해 서버 외부로 연결되어 있습니다. 이렇게 가상으로 연결된 네트워크 구성을 실제 장비로 동일하게 구성하면 오른쪽 그림과 같습니다. 서버 3대가 하단 스위치에 연결되어 있고, 하단 스위치는 방화벽에 방화벽은 상단 스위치에 연결되어 있어 인터넷 등의 외부 네트워크로 통신이 가능하게 구성할 수 있습니다.

 

< 그림 3 >  가상 스위치를 통한 네트워크 구성 예 (Virtual vs Real)

 

서버 3대, 스위치 2대, 방화벽 1대를 구성할 경우, 차지하는 공간, 소비되는 전력량, 발열로 인한 냉각 비용을 고려하면, 총 6대의 장비를 서버 1대로 구성할 수 있게 되면 여러 물리적인 자원의 획기적인 절감이 가능해집니다. 그뿐만 아니라, 이렇게 가상으로 구성된 전산 자원이 소프트웨어적인 파일 단위로 존재하기 때문에 쉽게 복제하여, 짧은 시간에 동일하게 구성할 수도 있습니다. 구성 변경을 할 경우에도 장비가 있는 데이터센터에 직접 가서 장비를 추가로 설치하거나 네트워크 케이블을 연결할 필요 없이 원격에서 관리 프로그램을 이용하여 손쉽게 장비를 추가, 삭제하거나 네트워크 연결 수정이 가능합니다.

 

보통 <그림 3>과 같이 VM에 일반적인 웹, DB 같은 서버 프로그램 대신에 방화벽, 라우터, 스위치 프로그램을 동작시켜 가상화된 네트워크 기능을 수행하는 것을 NFV(네트워크 기능 가상화)라고 정의합니다. 네트워크 장비 공급사인 시스코, 주니퍼 등의 종합 벤더뿐만 아니라 포티넷, 팔로알토 네트웍스, 파이어아이 등의 보안 전문 벤더까지 실제 장비와 동일한 기능을 수행하는 소프트웨어를 출시 중입니다. 아래 <그림 4>와 같이 일반적으로 기존에 출시되던 제품명 앞 혹은 뒤에 V 혹은 VM이라는 이름을 붙여서 소프트웨어로 제품을 판매하고 있습니다.

 

< 그림 4 >  주니퍼 가상 방화벽 소개 문구

'IT > 네트워크(Network)' 카테고리의 다른 글

웹 방화벽  (0) 2022.01.04
DMZ 네트워크를 이해하자  (0) 2022.01.04
Stateful 트래픽 처리방식 방화벽(Firewall)  (0) 2022.01.04
포트 스캔(Port Scan)  (0) 2021.12.17
ARQ(Automatic Repeat Request) 종류 및 정리  (0) 2021.11.30
728x90

우선 방화벽의 기술발전 역사를 알아보도록 하겠습니다.

본격적인 방화벽이 나오기 전에는 통신을 전송하기 위한 통신장비인 라우터의 필터 기능에서부터 트래픽 제어 기능이 사용되었습니다. 우리가 데이터를 전송한다는 것은 최대 1500byte의 크기로 잘게 쪼개진 데이터 묶음으로 만들어진 패킷(packet)을 보내고 받는 것을 말합니다. 

 

 

이 패킷의 헤더에는 출발지, 목적지 IP주소와 서비스 포트가 기록되어 있습니다. 이 패킷 헤더 정보를 확인해서 라우터에 설정된 필터 정보를 참조하여 들어온 패킷을 허용하거나 차단하는 방식으로 동작합니다. 이런 필터가 증가하게 되면, 라우터의 부하가 증가하게 되어 패킷 전송이라는 본래 기능에 문제가 생기게 되고, 고정된 포트를 사용하지 않고 접속할 때마다 서비스 포트가 변경되는 RPC, FTP 같은 서비스의 경우에는 인식이 불가능한 문제점이 발생되면서 트래픽 제어를 위한 전용 장비의 필요성이 제기되었습니다.

 

 

 1994년 체크포인트(Checkpoint)라는 회사에서 이러한 문제점을 해결한 1세대 방화벽을 개발하였습니다. 개발된 방화벽의 가장 큰 특징은 스테이트풀 인스팩션(Stateful Inspection) 기능이 추가된 것입니다. 단순히 들어오는 패킷을 필터링하는 것이 아니라, 클라이언트와 서버 간 통신 상태를 모니터링하여 연결 테이블을 만들고 관리하면서 좀 더 세밀한 트래픽 제어가 가능해진 것입니다.

 

 

< 그림 1 > 스테이트풀 인스펙션 (Stateful Inspection) 설명

 

 

위의 <그림 1>을 보면 왼쪽의 단말장비에서 오른쪽의 웹 서버로 접속을 시도한다고 가정해 보도록 하겠습니다. 방화벽에는 인터넷에서 DMZ 구역으로 들어오는 패킷에 대해 출발지는 ANY, 목적지는 10.0.0.1, 서비스 포트는 TCP 80 포트에 대해 허용하는 보안 정책이 설정되어 있습니다.

 

 

접속 단말에서 서버로 웹 페이지를 요청하는 트래픽이 방화벽에 도착하면, 방화벽은 해당 요청에 대해 보안 정책을 확인하여 해당 패킷을 오른쪽 웹 서버로 전달합니다. 서버는 단말의 요청에 응답하기 위해 웹 페이지를 접속 단말을 목적지로 하는 패킷으로 생성하여 전송합니다. 이 응답 패킷이 방화벽에 전달되면 방화벽은 다시 보안정책을 참고하여 패킷을 허용할 건지 차단할 건지 결정할 것을 예상할 수 있습니다.

 

 

이 단계에서 스테이트풀 인스펙션의 장점이 발휘됩니다. <그림 1> 방화벽 정책은 외부에서 DMZ 구역으로 갈 수 있는 보안 정책이 있지만 반대 방향인 즉, DMZ 구역에서 외부로 나가게 허용하는 보안 정책은 없습니다. 방화벽은 기본적으로 보안 정책에 적용되지 않는 모든 패킷은 차단하게 되어있습니다. 즉, 서버에서 단말로 가는 응답 패킷은 차단될 것으로 예상할 수 있으나, 스테이트풀 인스팩션 기능이 동작하기 때문에 서버에서 보낸 페이지는 방화벽을 정상적으로 통과하게 됩니다.

 

 

즉 방화벽이 만들어서 관리하는 세션 테이블을 참조하여 들어오는 응답 패킷의 출발지, 목적지 IP 및 Port와 일치하는 세션 리스트가 있는지 확인되면, 해당 패킷은 응답 패킷으로 판단하여 보안 정책이 없더라도 해당 패킷을 클라이언트로 전달하는 것입니다. 방화벽은 데이터를 요청하는 트래픽이 들어오면 서버로 전달하면서 동시에 세션 테이블(Session Table)을 만들어서, 서버와 클라이언트 간의 통신 내역을 모니터링하고 제어하는 용도로 사용합니다.

 

 

아래 <그림 2>는 방화벽에서 출력한 세션 테이블입니다. In항목에 나와 있는 것과 같이 출발지 IP 10.10.10.235에서 출발지 포트 50588을 사용하여 st0.511 인터페이스로 들어와서 목적지 IP 172.70.1.13, 목적지 포트 TCP 7001로, 패킷 수 6개, 456 byte 크기의 패킷이 보안정책 "untrust-to-trust"에 적용되어 목적지로 전달되었습니다. 다음으로 Out에 표시된 것과 들어올 때와 출발지와 목적지 정보가 반대로 바뀌어서 서버에서는 데이터를 요청하는 단말로 응답 패킷을 4개, 427 byte 만큼 전송한 내역을 확인할 수 있습니다.

 

 

<그 림 2 > 방화벽 세션 테이블

 

 

다시 말하면 방화벽은 요청 패킷이 들어오면 서버로 전달하면서 서버에서 다시 클라이언트로 응답할 패킷 정보를 예상하여 미리 세션 테이블을 만들어 둡니다. 실제 응답 패킷이 들어오면 먼저 만들어 둔 세션 테이블에서 정보가 일치하는 세션 정보가 있는지 확인되면, 보안 정책이 없더라도 패킷을 단말로 전달하는 것입니다. 이 기능을 이용하면, 관리자가 서버의 응답 패킷을 예상해서 보안정책을 미리 만들어 둘 필요 없이 방화벽이 자동으로 응답 패킷에 대한 보안정책을 생성했다가 연결이 종료되면 삭제하는 것처럼 작동합니다.

 

 

이런 작동 방식은 회사 내부에 있는 단말이 인터넷을 사용할 때도 동일하게 적용됩니다. 즉 Trust에서 Untrust 방향으로, 출발지는 단말 IP 대역이고 목적지는 ANY이며, 서비스 포트는 TCP 80으로 허용하는 보안 정책이 있으면, 사내의 단말이 인터넷의 웹 서버로 요청 패킷을 보낸 후, 외부에서 내부로 들어오는 응답 패킷은 별도의 보안 정책이 없더라도 인터넷에서 사내의 단말까지 전달되는데 아무 문제가 없습니다. 

 

 

인터넷에서 내부로 들어올 수 있는 통로가 필요할 때만 잠깐 생성되었다가 필요가 없으면 바로 삭제되는 것처럼 동작하기 때문입니다. 즉 라우터와 같이 별도의 통신 연결 정보를 관리하지 않는 장비의 경우 필터(Access List-ACL) 기능과 같이 외부에서 내부로 들어올 응답 패킷을 위한 보안 정책을 미리 만들어 둘 필요가 없기 때문에, 미리 만들어 둔 보안정책을 통해 발생 가능한 잠재적인 보안 위협을 감소시킬 수 있는 점이 1세대 방화벽의 가장 큰 장점이라고 할 수 있습니다.

 

 

그래서 방화벽의 경우 단순히 트래픽을 처리할 수 있는 성능도 중요하지만, 세션을 관리할 수 있는 능력도 중요합니다. 세션을 관리하는 능력을 판단하는 기준은 기본적으로 아래 두 가지 성능을 판단기준으로 사용합니다.

 

 

1. 초당 세션 생성률(CPS- Connection per seconds)

 1초 동안 신규로 세션을 생성할 수 있는 능력. 이 성능은 갑작스럽게 트래픽이 급증하는 경우 예를 들면, 특정한 이벤트(명절 차표 구매, 학기초 수강신청, 재난지원금 지급신청, 상품초 저가 세일)가 발생할 경우 짧은 시간 안에 급속하게 증가하는 접속 요구에 대응할 때 중요한 성능 지표입니다.

 

 

2. 최대 동시 세션 관리수(Maximum Concerent Session)

장비가 동시에 관리할 수 있는 연결 최대수. 이 성능은 방화벽을 통해 연결되는 최대 연결수를 얼마나 지원하는지를 판단하는 기준입니다. 최신 방화벽의 경우 가장 낮은 성능의 장비라도 만개 단위(대략 32,000~64,000개)의 세션을 동시에 관리할 수 있고 고성능 장비의 경우 억 개 단위까지 기능을 지원하고 있습니다. 이 성능은 얼마나 많은 서버와 일반 유저의 트래픽을 처리할 수 있는지 판단하는 기준으로 사용하고 있습니다.

 

 

지금까지 설명한 Stateful 방식의 장비에 대비하여 세션을 관리하지 않는 장비를 보통 Stateless장비라고 말합니다. 스위치, 라우터 같이 단순하게 패킷을 해당하는 목적지로 전달만 하는 장비를 말하는데 이런 장비의 경우 트래픽을 제어하기 위해 ACL을 사용하고 있습니다.  그럼 라우터 장비의 ACL은 어떤 경우에 이용할 수 있을까요?

 

 

방화벽이라는 장비는 앞에서 설명한 것과 같이 세션을 관리하는 장비이다 보니 동시에 관리 가능한 세션수를 초과하게 되면 더 이상 세션을 관리할 수 없기 때문에 신규 세션을 생성할 수 없게 됩니다. 즉 신규 트래픽을 처리할 수 없는 상황이 발생하는 것입니다.

 

 

최근의 DDoS 공격의 경우 이러한 방화벽의 취약점을 악용하여, 의도적으로 방화벽의 관리 가능한 세션수를 초과하게 하여, 서비스를 방해하는 공격이 빈번하게 발생되고 있습니다. 이런 경우에 공격을 수행하는 출발지 IP를 식별할 수 있다면 방화벽 앞단에 있는 라우터의 ACL 필터를 생성하여 방화벽 앞단에서 공격을 차단할 수 있으면 방화벽이 처리해야 하는 세션수를 줄여 주어 서비스의 중단을 막을 수 있습니다.

728x90

참고 사이트 - https://hub.docker.com/_/ghost

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

--
version: '3.1'

services:

  ghost:
    image: ghost:4-alpine
    restart: always
    ports:
      - 8080:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: example
      database__connection__database: ghost
      # this url value is just an example, and is likely wrong for your environment!
      url: http://localhost:8080
      # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      #NODE_ENV: development
    volumes:
      - ./ghost/data:/var/lib/ghost/content
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

728x90

출처 : https://www.cpu-world.com/Related_CPUs/Socket%202011-3_Broadwell.html

 

Related Broadwell CPUs for socket 2011-3

Here you can quickly compare any "Broadwell" microprocessor in socket 2011-3 compatible package with all other CPUs for the same socket and microarchitecture. This feature was a part of our CPU pages, and we expanded it to include all processors, and allow

www.cpu-world.com

728x90

출처 : https://www.cpu-world.com/Related_CPUs/Socket%202011-3_Haswell.html

 

Related Haswell CPUs for socket 2011-3

Here you can quickly compare any "Haswell" microprocessor in socket 2011-3 compatible package with all other CPUs for the same socket and microarchitecture. This feature was a part of our CPU pages, and we expanded it to include all processors, and allow s

www.cpu-world.com

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/wikijs

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

---
version: "2.1"
services:
  wikijs:
    image: lscr.io/linuxserver/wikijs
    container_name: wikijs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
    volumes:
      - <path to config>:/config
      - <path to data>:/data
    ports:
      - 3000:3000
    restart: always

728x90

VPN을 통해 ssh를 접속하지 않는 이상 서버를 공개망에서 사용하게 될 경우 ssh 접속은 외부에 노출될 수 밖에 없습니다.

대부분 해외에서 지속적으로 ssh 로그인을 시도하면서 무작위 비밀번호를 대입합니다.

특히, 지난 Brute-force 해킹으로 인한 서버 탈취 사건을 경험한 이후로 SSH 보안의 중요성을 실감했습니다.

0. 보안? 내가 필요할까?

우분투 서버에서 아래 명령어를 실행시키면, 실시간 ssh 로그인 실패기록을 볼 수 있습니다.

journalctl -f

깜짝 놀랄 수도 있습니다.
실시간으로 계속해서 로그인시도 (공격) 이 발생하고 있습니다.

via GIPHY

먼지와 같은 우리 보안

1. 당장 설치하기.

Fail2ban은 ssh log파일을 스캔해 수상한 ip를 ban해주는 소프트웨어입니다.

1-1. 설치하기

우분투에서 다음을 실행시킵니다.

apt-get install fail2ban

방화벽을 확인해봅니다.

iptables -L
...
Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
...

성공적으로 fail2ban이 추가된 것을 볼 수 있습니다.


1-2. 사용자 설정하기

sudo vim /etc/fail2ban/jail.local

아래 내용을 입력해 입맛에 맞도록 설정해줍니다.

[DEFAULT]

## 차단하지 않을 IP
ignoreip = 127.0.0.1/8 192.168.10.0/24

# 접속을 차단할 시간. 600 = 10분
bantime  = 10800

# 최대 허용 횟수
maxretry = 10

#아래 시간동안 maxretry횟수만큼 실패시 차단
findtime  = 86400

# (선택) 메일 알림기능
destemail = sysadmin@example.com
sender = fail2ban@my-server.com
mta = sendmail
action = %(action_mwl)s

[sshd]
enabled = true

#여러 포트를 사용할 경우 port = ssh,10022
port = 22
filter = sshd
logpath = /var/log/auth.log

위와 같이 저장하면, 아래 규칙으로 동작합니다.

  • 최근 86400분 (60일) 동안
  • 10회의 로그인을 실패하면
  • 10800분 (180시간) 차단

1-3. 서비스 시작하기

service fail2ban restart

주의할 점은, restart할 때마다 벤 목록이 초기화 된다는 점입니다.

2. 기본 사용법

이제 서버에 접속하는 ip를 차단하고 관리할 수 있는 권한이 생겼습니다.

하지만 사용하다가 caps lock이 켜져있을 수도 있고, 비밀번호를 잘못 알려주어 공동작업자가 차단당할 수도 있습니다.

만약, 실수로 차단당했을 때, 푸는 방법을 알아보겠습니다.

2-1. 현재 차단 현황 보기

sudo fail2ban-client status sshd

2-2. 차단 풀어주기

sudo fail2ban-client set sshd unbanip 000.000.000.000
Status for the jail: sshd
|- Filter
|  |- Currently failed:	5
|  |- Total failed:	58
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	25
   |- Total banned:	25
   `- Banned IP list:	106.12.159.235 106.75.141.202 112.30.185.8 112.85.42.195 119.203.240.76 119.207.126.21 124.74.154.66 138.197.183.21 157.7.52.245 165.22.160.32 178.116.159.202 191.191.35.159 191.243.143.170 192.243.215.42 200.70.56.204 223.171.32.56 51.68.143.224 51.77.140.111 68.183.50.149 81.12.159.146 187.32.178.33 150.95.199.179 197.248.16.118 41.78.201.48 101.91.242.119

잠깐사이에 무려 25개의 ip가 밴되어있네요.
fail2ban이 잘 작동하고 있습니다.

결론

간단한 설정만으로 brute-force 공격시도를 방어해보았습니다.
이 외에도 다양한 설정이 가능하니, 공식 메뉴얼을 참고해주세요.

감사합니다!

728x90

원문 : https://www.boho.or.kr/data/guideView.do?bulletin_writing_sequence=36390 

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

Q1. log4j가 무엇인가요?    
Q2. 어떤 서비스들에 주로 사용되나요?     
Q3. log4j 1.x 버전에서도 영향을 미치나요?    
Q4. 취약한 log4j를 사용하고 있는지 어떻게 확인하나요?    
Q5. log4j의 버전 확인 방법은 무엇인가요?    
Q6. 버전에 따라 어떻게 조치해야 하나요?    
Q7. 보안 업데이트는 어떻게 하나요?    
Q8. 보안 업데이트를 하지 않으면 어떻게 되나요?    
Q9. 해당 취약점을 탐지할 수 있는 패턴은 어떻게 작성할 수 있을까요?    
Q10. 당장 패치적용하기가 어려운데 어떻게 하나요?     
Q11. Log4j 취약점으로 인한 공격을 받았는지 어떻게 확인하나요?     
Q12. Log4j 취약점을 이용한 침해사고 발생 시 어디에 신고하나요?    

QnA로 알아보는 log4j 보안취약점 대응 가이드.pdf
0.41MB

728x90

Virtualbox에 Rocky Linux를 설치하면 화면 크기가 자동으로 조정되지 않습니다. 또한 호스트에서 게스트로의 클립보드 및 파일 끌어서 놓기와 같은 일부 다른 기능에 액세스할 수 없습니다. 이를 위해 Rocky Linux 8에 VirtualBox 게스트 추가 ISO를 설치해야 합니다.

또한 VirtualBox Guest Additions 설치는 가상 머신의 성능을 향상시키는 데도 도움이 됩니다.

내용 [ 보기 ]

Rocky Linux 8에 VirtualBox 게스트 추가 설치

글쎄, Rocky Linux에서 게스트 추가를 설정하려면 EPEL repo 및 DNF 관리자, 순전히 명령줄이 필요합니다.

1단계: Epel 저장소 추가

명령 터미널을 열고 다음과 같은 시스템 업데이트 명령을 처음 실행합니다.

sudo dnf update

그런 다음 간단한 명령을 사용하여 EPEL이라고 하는 Enterprise Linux용 추가 패키지를 추가합니다.

sudo dnf install epel-release

 

2단계: 커널 헤더 및 DKMS 설치

다음은 EPEL 저장소의 도움으로 여러 도구를 설치하는 것입니다. 커널 및 DKMS(동적 커널 모듈 지원)를 사용하여 AlmaLinux 8 배포판에 게스트 추가 기능 VirtualBox를 설치하는 데 필요한 커널 모듈을 빌드 및 설치합니다.

sudo dnf install gcc make perl kernel-devel kernel-headers bzip2 dkms

Y 를 입력 하고 Enter 키 를 눌러 설치 권한을 부여합니다 .

 

3단계: Rocky Linux 커널 업데이트

시스템은 커널 업데이트를 자동으로 수행하여 변경을 수행하지만 때로는 그렇지 않을 수도 있습니다. 따라서 시스템을 다시 시작하기 전에 커널 업데이트 명령을 실행하는 것이 좋습니다.

sudo dnf update kernel-*

 

4단계: 게스트 추가 설치 CD 이미지 삽입

Virtualbox 메뉴 >> 장치로 이동한 다음 "게스트 추가 CD 이미지 설치..." 옵션을 선택합니다.

 

5단계: VBoxLinuxAdditions.run 설치

이제 터미널에서 Rocky Linux에 Virtual Guest Additions를 설치하기 위한 스크립트가 포함된 CDROM을 마운트합니다.

sudo mkdir -p /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
sudo sh ./VBoxLinuxAdditions.run --nox11

 

6단계: 클립 공유 및 끌어서 놓기 기능 활성화

온 클릭 장치 오라클 버추얼 메뉴에서 주어진 다음을 클릭 공유 클립 보드 와 "양방향"을 선택합니다. 같은 방법으로 드래그 앤 드롭 을 선택하고 양방향 옵션을 선택합니다.

 

7단계: Rocky VM 다시 시작

마지막으로 Virtualbox Guest Additions의 변경 사항을 적용하고 해당 기능을 Guest에 적용하려면 시스템을 다시 시작하기만 하면 됩니다. 이를 위해 아래 명령을 사용할 수 있습니다.

sudo reboot

 

7단계: 게스트 추가 확인

Rocky Linux 가상 머신을 다시 시작한 후 VBox 게스트 추가가 성공적으로 설치되었는지 확인하십시오.

lsmod | grep vboxguest
728x90

포트스캐닝(Port Scanning)이란?

 

 해커가 악의적인 공격을 수행하기 위해 취약점을 찾는 과정 중 수행하는 사전 작업이라고 할 수 있습니다.

 

피해자 시스템 혹은 네트워크를 선정한 뒤

 

해당 시스템이나 네트워크가 어떤 포트를 열고 서비스를 하고있는지 알아내기 위함 입니다.

 

가령, 해당 시스템이 23포트를 열고 Telnet서비스를 하고있는 것을 알아내었다면

 

해커는 Telnet서비스에 대한 취약점을 이용하여 적극적인 공격을 수행할 수 있겠습니다.

 

1.TCP Connect 스캔 (TCP Open 스캔)

 

 

 구 분  설 명 
 스캔 방법  TCP/IP소켓 프로그래밍의 connect()함수를 사용하여 포트별로 직접 접속하여 스캔하는 방식
 Open Port  정상적으로 연결 설정(3way handshaking)이 완료되며 연결 완료 후 RST+ACK를 전송하여 연결을 종료
 Close Port  포트가 닫힌 상태이면 상대 시스템으로부터 RST+ACK를 수신
 특 징  상대 시스템의 포트Open/Close 여부를 알아내는 가장 확실한 방법이며, 직접 연결을 맺기 때문에 시스템 로그가 남음

 

 

2.TCP SYN 스캔 (Half-Open 스캔)

 

 

 구 분 설 명 
 스캔 방법 raw소켓에 접근해서 TCP 프로토콜 헤더의 제어비트(Control Bit)를 설정하여 스캔
 Open Port Target으로부터 SYN+ACK 응답이 올 경우 ACK가 아닌 RST를 보내어 연결을 강제 종료 
 Close Port 닫힌 경우 Target으로부터 RST+ACK를 수신
 특 징  완전한 연결 설정(3way handshaking) 과정을 수행하지 않기 때문에 시스템 로그가 남지 않음

 

 

3. Stealth 스캔 (FIN / NULL / XMAS 스캔)

 





 

 구 분 설 명 
 스캔 방법 TCP 제어비트(Control Bit)를 비정상적으로 설정해서 스캔
 Open Port Target시스템이 아무런 응답이 없음
 Close Port Target시스템으로부터 RST+ACK를 받게됨
 특 징 시스템 로그를 남기지 않음

 

4.TCP ACK 스캔

 

 

 

 구 분 설 명 
 스캔 방법 TCP 제어비트(Control)비트 중 ACK를 설정하여 스캔
포트의 오픈여부를 확인하는 용도가 아니라 방화벽의 필터링 정책을 테스트하기 위한 스캔
Filtered Target으로부터 ICMP응답이 돌아오거나 아무런 응답이 없음
Not Filtered 필터링 되지 않을 경우 RST를 수신
 특 징 방화벽이 상태기반(stateful) 방화벽인지 단순히 들어오는 SYN을 차단하는 정책을 가지고있는지 확인하는 용도
단순히 SYN만을 차단하는 정책일 경우 방화벽을 통과할 수 있음

 

5.UDP 스캔

 

 

 

 구 분 설 명 
 스캔 방법 스캐닝하고자하는 포트번호를 목적지포트로 설정하여 UDP 전송
Open Port 아무런 응답이 없음
Close Port ICMP Destination Port Unreachable 수신
 특 징 -

 

 

6.Decoy 스캔

 

 구 분 설 명 
 스캔 방법 실제 스캐너 주소 이외에 다양한 위조된 주소로 스캔하는 방식
Open Port -
Close Port -
 특 징 다양한 IP로 스캔하기 때문에 피해자는 누가 스캔을하는지 알아채기 어려움

 

 

+ Recent posts