REST API에서 'REST'란, 'Representational State Transfer'의 약자로, 리소스를 이름으로 구분하여 해당 리소스의 상태를 주고받는 것을 총칭한다. 즉 리소스의 표현에 의한 상태 전달을 의미하는데, 먼저, '리소스의 표현'이란, 문서나 이미지, 이 외 모든 형태의 데이터나 해당 소프트웨어 자체를 표현하기 위한 이름으로 해석된다. 예를 들어, 카페의 메뉴 정보가 자원일 때, 'cafe'를 자원의 표현으로 정하는 것이다. 이어서 '상태 전달'이란, 데이터가 요청되는 시점에서 리소스의 상태(정보)를 전달하는 활동으로 해석된다. 전달되는 형태는 JSON또는 XML이 일반적이다. 즉, REST API는 소프트웨어 개발 아키텍쳐의 한 형식이며, 주로 www(World Wide Web)와 같은 분산 하이퍼미디어 시스템을 위한다고 정의 내릴 수 있다. 

REST의 구체적인 정의는 다음과 같다.

  • HTTP URI(Uniform Resourse Identifier :  통합 자원 식별자  - 인터넷에 있는 자원을 나타내는 유일한 주소)를 통해 리소스를 명시하고, HTTP Method(ex. DELETE, POST)를 통해 해당 자원에 대한 CURD Operation을 적용하는 형식.
    • CURD Operation
      • Create : 생성(POST)
      • Read : 조회(GET)
      • Update : 수정(PUT)
      • Delete : 삭제(DELETE)
      • HEAD : header 정보 조회(HEAD)

 

REST API의 특징은 다음과 같다.

  • REST는 HTTP(HyperText Transfer Protocol : www 상에서 정보를 주고 받을 수 있는 프로토콜) 표준을 기반으로 구현하기 때문에, HTTP를 지원하는 프로그래밍 언어로 클라이언트, 서버를 운용할 수 있다.  
  • 사내 시스템도 REST 기반으로 시스템을 분석해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다. 

'project' 카테고리의 다른 글

ELK Stack --1  (0) 2020.01.15
빅데이터(Big Data)  (0) 2020.01.14
SNORT --2: 설치  (0) 2020.01.11
SNORT --1  (0) 2020.01.10
IDS/IPS  (0) 2020.01.09

빅데이터를 다루기위한 방안으로 대두되는 것이, ELK Stack이다. 'ELK'란, Elasticsearch, Logstash, Kibana, 이 세 오픈 소스 프로젝트의 머리글자를 따 만들어진 단어이다. 

 

  • E의 'Elasticsearch'란, JSON 기반의 분산형 오픈소스 RESTful 검색 엔진으로, 텍스트, 숫자, 위치 기반 정보, 정형/비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈 소스 검색에 이용된다. Elasticsearch는 Apache Lucene(자바 언어로 이루어진 정보 검색 라이브러리 오픈소스 소프트웨어. 아파치 소프트웨어 재단에 의해 지원됨)을 기반으로 구축된다. 

Elasticseach의 용례는 다음과 같다.

  • 애플리케이션 / 웹사이트 / 엔터프라이즈 검색
  • 로깅&로그 / 보안 / 비즈니스 분석
  • 인프라 메트릭 / 컨테이너 / 애플리케이션 성능 모니터링
  • 위치 기반 정보 데이터 분석 & 시각화

Elasticsearch의 장점은 아래와 같다.

  1. Lucene을 기반으로 구축되기 때문에, 거의 실시간 검색 플랫폼일 정도로 빠르다. 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 아주 짧기 때문에, 전체 텍스트 검색에 뛰어나다. 때문에 보안 분석, 인프라 모니터링같은, 시간이 중요한 용례에 알맞다. 
  2. Elasticsearch에 저장된 문서는 '샤드'라고 불리는 여러 다른 컨테이너에 걸쳐 분산되고, 이 '샤드'는 복제되어 하드웨어 장애 시 중복되는 데이터 사본을 제공한다. 이 분산적인 특징은 수많은 서버까지 확장할 수 있으며, 대량의 데이터 처리를 가능하게 한다.
  3. 데이터 롤업, 색인 수명 주기 관리와 같은, 데이터를 훨씬 더 효율적으로 저장하고 검색할 수 있게 해주는 기능이 함께 탑재되어 있다. 

 

  • L의 'Logstash'란, 실시간 파이프라인(pipeline: 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 구조) 기능을 가진 오픈소스 데이터 수집 엔진이다. 서로 다른 소스의 데이터를 탄력적으로 통합하고 사용자가 선택한 목적지로 데이터를 정규화할 수 있다. 

아래의 상황에서 Logstash를 이용할 수 있다.

1. 로그와 메트릭

  •  다양한 웹 로그(ex. Apache) 및 애플리케이션 로그 수집
  • Windows 이벤트 로그, FW 로그 등 다양한 로그 형식 수집
  • Filebeat와 연계하여 보충적인 보안 로그 전달 기능 활용 가능 *TCP와 UDP를 통해 여러 인프라 및 애플리케이션 플랫폼의 메트릭 수집

2. 웹

  • HTTP 요청을 이벤트로 변환
  • HTTP 엔드포인트 폴링으로 이벤트 생성

3. 데이터 저장소와 스트림

  • JDBC 인터페이스를 통해 관련 DB 또는 NoSQL 저장소의 데이터를 더 정확히 이해
  • 메시징 큐가 제공하는 각종 데이터 스트림 통합

4. 센서와 IoT

  • IoT에 연결된 센서로부터 데이터 수집

 

  • K의 'Kibana'란,  Elasticsearch와 함께 사용하도록 설계된 오픈소스 분석 및 시각화 플랫폼이다. Kibana를 사용하여 Elasticsearch 인덱스에 저장된 데이터를 검색하고, 상호 작용을 수행할 수 있다. 다양한 차트, 테이블, 지도의 형태로 데이터를 시각화하는 서비스가 제공된다. 

2015년, ELK Stack에 파일을 추적할 수 있는, 경량의 단일 목적 데이터 수집기 제품군을 도입했고, 이를 Beats라 한다. 

 

 

참조

https://www.elastic.co/kr/what-is/elk-stack
https://www.elastic.co/kr/what-is/elasticsearch
https://ko.wikipedia.org/wiki/%EB%A3%A8%EC%94%AC
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://www.elastic.co/guide/kr/logstash/current/introduction.html
https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8_(%EC%BB%B4%ED%93%A8%ED%8C%85)
https://www.elastic.co/kr/products/kibana

'project' 카테고리의 다른 글

ELK Stack --2: REST API  (0) 2020.01.16
빅데이터(Big Data)  (0) 2020.01.14
SNORT --2: 설치  (0) 2020.01.11
SNORT --1  (0) 2020.01.10
IDS/IPS  (0) 2020.01.09
빅 데이터(Big Data)란 기존 데이터베이스 관리도구의 능력을 넘어서는 대량(수십 테라바이트)의 정형 또는 심지어 데이터베이스 형태가 아닌 비정형의 데이터 집합조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술이다.

라고 위키백과에서는 정의한다. 2001년, Gartner에서는 '전례 없이 빠른 속도로 쏟아져 나오는 다양한 종류의 데이터'를 빅데이터라고 정의내린 바 있다.

간단히 말해 빅 데이터는 새로운 데이터 소스에서 수집된, 보다 복잡하고 거대한 '데이터 세트'이다. 이러한 데이터 세트는 그 용량이 매우 크기 때문에 기존 데이터 프로세싱 소프트웨어로는 관리할 수 없다. 그러나 이러한 대량의 데이터를 이용하면, 이전까지는 해결하지 못했던 여러 비즈니스 관련 문제들을 해결할 수 있기 때문에, 이 개념은 급부상하고 있다. 

 

빅데이터에서 고려해야 할 특징은 크게 세 가지이고, 각 단어의 이니셜을 따 3V라 한다.

  • 크기(Volume) : 데이터의 크기.
  • 속도(Velocity) : 데이터가 수신되는(또는 처리되는) 속도. 데이털르 디스크에 쓸 때보다 메모리에 직접 스트림 처리될 때 가장 빠른 속도를 낸다. 인터넷 기반 스마트 제품의 경우, 실시간에 가까운 속도로 운영되기 때문에 실시간 평가와 동작이 요구되기도 한다. 
  • 다양성(Variety) : 데이터의 종류의 다양성.

지난 몇 년간, 추가로 고려해야 할 사항들이 대두되었고, 세부내용은 아래와 같다.

  • 가치(Value) : 데이터는 고유의 가치를 지니고 있고, 응용에 있어서 이러한 가치를 발견해내는 과정이 선행되어야 한다. 
  • 정확성(Veracity) : 보유한 데이터를 신뢰할 수 있는 정도.

 

빅데이터는 아래의 작업이 이루어지면서 작동한다.

1. 통합

빅데이터는 다양한 서로 다른 종류의 소스와 애플리케이션으로부터 데이터를 수집해 종합한다. 통합이 진행되는 동안에는 데이터를 불러와 프로세싱을 거친 뒤, 분석가들이 활용할 수 있는 형태로 구성되어 있는지의 여부를 확인한다. 

2. 관리

빅데이터는 저장공간을 필요로 한다. 저장공간을 확보하는 방법으로는 클라우드나 온프레미스(on-premise: 원격환경으로 보유한 전산실 서버에 직접 설치해 운영하는 방식으로, 클라우드와 대비됨) 둘 중 하나를 선택하거나, 둘 다를 활용할 수도 있다. 대부분의 이용자들은 데이터의 현재 위치에 따라 스토리지 솔루션을 선택하곤 한다. 클라우드 솔루션의 경우, 사용자의 현재 컴퓨팅 관련 요구사항을 지원하고, 필요할 때마다 리소스를 자유롭게 활욯할 수 있다는 장점이 있다. 

3. 분석

데이터에 대한 가시적인 분석 후 데이터의 명확성을 개선시킨다. 후속 작업으로는 머신러닝과 인공지능 기술로 데이터 모델을 구축하는 활동이 고려된다. 

 

 

참조

https://ko.wikipedia.org/wiki/%EB%B9%85_%EB%8D%B0%EC%9D%B4%ED%84%B0
https://www.oracle.com/kr/big-data/guide/what-is-big-data.html

 

 

'project' 카테고리의 다른 글

ELK Stack --2: REST API  (0) 2020.01.16
ELK Stack --1  (0) 2020.01.15
SNORT --2: 설치  (0) 2020.01.11
SNORT --1  (0) 2020.01.10
IDS/IPS  (0) 2020.01.09

실습환경은 VMware Workstation 15 / Windows 10 이고, 이어지는 SNORT 게시글은 본 실습환경에 맟춰 구성된다.

  1. SNORT 공식 홈페이지에서 설치 프로그램을 다운로드한다. 작성일 기준 최신 버전은 2.9.13이다. 
  2. cmd에 다운로드된 경로 찾아간 후, 해당 디렉토리에서 bin 디렉토리로 이동한다. 현재 디렉토리에서 snort -W 입력 시 설치된 SNORT의 버전과 NIC(Network Interface Controller: 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치)를 확인할 수 있다. 

SNORT 인트로

  • WinPcap 설치

pcap(packet capture: 패킷 캡처)은 컴퓨터 네트워크 관리 분야에서 네트워크 트래픽 포착용 API를 구성하기 때문에 pcap 라이브러리는 네트워크 분석 툴의 운용에 있어서 필수적이지만, 윈도우에는 내장되어있지 않으므로 직접 설치해주어야 한다. 해당 드라이버는 공식 홈페이지에서 다운받을 수 있다.

또 다른 경우로는 이 전에 WireShark와 같은 다른 네트워크 분석 툴을 설치한 전적이 있다면, 이미 pcap이 OS에 설치되어있을 수 있다. 이러한 경우에는 드라이버 설치를 생략해도 된다. 

 

 

참조

https://jdh5202.tistory.com/488
http://agol.egloos.com/5491654

'project' 카테고리의 다른 글

ELK Stack --1  (0) 2020.01.15
빅데이터(Big Data)  (0) 2020.01.14
SNORT --1  (0) 2020.01.10
IDS/IPS  (0) 2020.01.09
방화벽(Firewall)  (0) 2020.01.07

SNORT란 오픈소스 IPS로, 트래픽 탐지와 패킷 로딩이 실시간으로 가능하다는 특징이 있다. 공식 홈페이지에서 다운로드가 가능하다.

프로토콜 검색과 컨텐츠 분석이 가능하고, 다양한 전처리 프로그램을 이용하여 다수의 취약점 익스플로잇 시도를 탐지해내는 능력이 있다. 수많은 종류의 공격과 버퍼오퍼플로우, 비노출 포트 스캔, CGI 공격 등을 탐지하는데 뛰어난 효과를 발휘한다는 장점을 가지고 있다. 

SNORT의 구조는 크게 네 가지로 분류할 수 있다.

  • 스니퍼(Sniffer) : SNORY IDS를 통과하는 모든 패킷을 수집한다.
  • 전처리기(Preprocessor) : 공격 탐지를 위해 플러그인에 먼저 적용시켜 보는 작업을 거치며 매칭 여부를 확인한다.
  • 탐지 엔진(Detective Engine) : 룰 기반 탐지 엔진으로, 사전에 정의된 탐지 룰과의 매칭 여부를 확인한다.
  • 로깅(Alert Logging) : 정책에 따른 로그를 기록한다.

SNORT를 설정할 수 있는 모드는 총 세 가지이다. 

  • 스니퍼(Sniffer) 모드 : 네트워크 패킷을 읽어서 콘솔에 표시한다. 이 모드는 출력을 화면에 지속적으로 쏟아내고, 때문에 이 모드에서는 데이터를 보존하기가 어렵다. 따라서 작은 규모의 네트워크에서만 사용하는 것이 좋다.
  • 패킷 로거(Packet Logger) 모드 : 패킷을 디스크에 저장한다. 디스크는 사전에 지정된 곳으로 설정되며, 저장된 패킷은 차후에 탐지 · 분석이 가능하다.
  • 침입 탐지(Network IDS/IPS) 모드 : 네트워크 트래픽을 분석하고 공격을 탐지한다. 설정에 따라 공격에 대응하기도 한다. 세 모드 중 가장 복잡하고, 조작의 범위가 방대한 모드이다. 

 

 

참조

https://www.snort.org/
http://manual-snort-org.s3-website-us-east-1.amazonaws.com/node1.html
https://m.blog.naver.com/kimjs6873/220597782024
http://blog.plura.io/?p=5607

'project' 카테고리의 다른 글

ELK Stack --1  (0) 2020.01.15
빅데이터(Big Data)  (0) 2020.01.14
SNORT --2: 설치  (0) 2020.01.11
IDS/IPS  (0) 2020.01.09
방화벽(Firewall)  (0) 2020.01.07

IDS(Intrusion Detection System: 침입탐지시스템)이란 외부에서 내부로 들어오는 패킷이 정상인지 아닌지의 여부를 탐지하는 솔루션을 일컫는다. IPS(Intrusion Protection System: 침입차단시스템)는 IDS에 차단기능을 추가한 것을 말한다. 

IDS/IPS는 내부 네트워크 구간에 들어가려는 모든 패킷을 탐지할 수 있는 경로에 위치한다. 특히 IPS는 기본 방화벽 기술의 특정 유형의 네트워크 트래픽을 식별해 차단하는 방식에서 나아가, 서명 추적과 이상 감지 등 더 세부적인 보안을 이용해 네트워크 진입의 위협을 방지한다. 이러한 특징은 IPS 기능이 최근 표준 방화벽 기능으로 자리잡게 했고, 때문에 방화벽의 위치에 자리하기도 한다.

 

IDS와 IPS는 설치구조의 유형에 따라 '미러(mirror)방식'과 '인라인(inline)방식'으로 구분할 수 있다.

  • 미러(mirror) 방식 : IDS는 원본 트래픽을 손실이나 변조없이 복사해주는 TAP이라는 장치로 트래픽을 검사하는 구조이다. TAP은 IDS에 패킷을 전달하고, IDS는 트래픽을 검사한 후에 추가적인 대응을 실행한다. 단 이 방식을 사용하는 경우, IPS를 배치하더라도 차단이 불가능하다.

  • 인라인(inline) 방식 : IPS는 탐지를 수행하는 모듈이 패킷을 검사하여 패턴을 분석한 뒤 비정상적이거나 악성이라고 판단되는 패킷을 차단하는 구조이다. IPS는 예측차단이 가능해, 악성코드와 유사한 동작을 보이면 해당 패킷을 차단한다. 이 방식은 네트워크 통로에 직접 IPS를 배치하여 패킷을 직접적으로 관리하는 방식이다. 

 

IDS는 사람이 침입의 패턴을 분석해서 해당 패턴들을 유지하고, 앞서 유지된 패턴과 비교해서 침입으로 판단한다. 반면 IPS는 인공지능이 침입의 패턴을 학습을 통해 얻고, 이 패턴과 비교해서 침입여부를 판단한다는 특징이 있다. 따라서 IDS는 패턴에 없는 새로운 공격은 탐지가 불가능하다는 단점이 있다. 또, IPS는 패턴 자체는 업데이트가 되기 때문에 새로운 공격을 탐지를 할 수는 있다. 그러나 애초에 학습 자체가 잘못되는 경우, 침입이 아닌데 침입이라고 오탐할 가능성이 존재한다. 

 

 

참조

https://run-it.tistory.com/47
http://www.ciokorea.com/news/40045
https://starbirds.tistory.com/25

cf. 'layer3' : https://kkamagistory.tistory.com/205

'project' 카테고리의 다른 글

ELK Stack --1  (0) 2020.01.15
빅데이터(Big Data)  (0) 2020.01.14
SNORT --2: 설치  (0) 2020.01.11
SNORT --1  (0) 2020.01.10
방화벽(Firewall)  (0) 2020.01.07

방화벽은 트래픽을 모니터링해 허용하거나 차단하는 경계 방어 툴이다.

방화벽의 기본 역할은 신뢰 수준이 다른 네트워크 구간들 사이에 놓여서 신뢰 수준이 낮은 네트워크로부터 오는 해로운 트래픽이 신뢰 수준이 높은 네트워크로 오지 못하게 막는 것이다. 신뢰 수준은 네트워크 장치에 대한 기본적인 액세스 수준을 결정하며, 통상적으로 네트워크 관리자의 입장에서 높은 신뢰도를 갖는 구간을 내부 네트워크 구간(LAN), 낮은 신뢰도를 갖는 구간을 외부 네트워크 구간 또는 인터넷 구간이라고 명칭한다. 이 밖에도 내·외부 네트워크 구간 사이에 위치해, 외부에 서비스를 제공하는 서버를 위한 DMZ 구간이 있다. 

관리자는 방화벽에 통과시킬 접근과 그렇지 않은 접근을 명시해야 한다. 방화벽의 가장 기본적인 기능인 접근 제어는 룰셋(Rule Set)을 통해 이루어진다. 

 

방화벽의 유형은 다음과 같다.

  • 상태 기반 방화벽

SPI(Stateful Packet Inspection)또는 동적 패킷 필터링으로 알려진 아키텍처를 통해 동적으로 들어오는 트래픽을 모니터링한다. 일정 시간 동안 통신 패킷을 추적하고, 그 과정에서 송, 수신 패킷들이 모두 검사된다. 특정한 형태의 수신 패킷을 요청하는 송신 패킷들도 추적되며, 적절한 응답이라고 판단되는 수신 패킷에 대해서만 방화벽 통과가 허용된다.

모든 레이어에서 분석이 가능하고 확장성과 투명성을 제공한다는 장점이 있지만, DDoS 공격으로 데이터가 포화되면 장비가 일시 정지되고, 방화벽을 재부팅할 시 현재 연결에 대한 정보를 잃어버린다는 단점이 있다. 연결 정보를 잃어버리는 특징은 자칫 적절한 패킷에 대해 접근을 거부할 상황이 발생할 위험이 있다.

 

  • 프록시 기반 방화벽

데이터를 요청하는 최종 사용자와 해당 데이터의 소스 사이에서 게이트웨이 역할을 한다. 호스트는 필요한 서비스를 프록시 서버에 요청하고, 서버는 호스트의 요청에 따라 외부 네트워크를 연결해준다. 대상 주소로 패킷을 전달하기 전에 프록시가 이를 필터링해 정책을 적용하고 수신인의 기기 위치를 숨기면서 수신인의 기기와 네트워크를 보호한다.

보호되는 네트워크 외부의 기기가 네트워크에 대해 제한된 정보만 수집할 수 있다는 장점이 있다. 직접 연결되지 않기 때문이다. 반면 단점은 유입 연결을 종료하고 외부 연결을 생성하면서 필터링까지 하면 지연이 발생해 네트워크 성능이 저하될 수 있다는 점이다. 결과적으로 이를 통해 응답시간이 너무 느려지기 때문에 방화벽에서 일부 애플리케이션을 사용하지 못하게 할 수 있다.


 

참조

https://ko.wikipedia.org/wiki/%EB%B0%A9%ED%99%94%EB%B2%BD_(%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)
https://m.blog.naver.com/PostView.nhn?blogId=pentamkt&logNo=221034894132&proxyReferer=https%3A%2F%2Fwww.google.com%2F
http://ko.mantis-manheadset.com/info/what-is-a-stateful-firewall-31638170.html
http://www.terms.co.kr/statefulinspection.htm
https://m.blog.naver.com/PostView.nhn?blogId=stop2y&logNo=220011762057&proxyReferer=https%3A%2F%2Fwww.google.com%2F
http://www.ciokorea.com/news/40045

'project' 카테고리의 다른 글

ELK Stack --1  (0) 2020.01.15
빅데이터(Big Data)  (0) 2020.01.14
SNORT --2: 설치  (0) 2020.01.11
SNORT --1  (0) 2020.01.10
IDS/IPS  (0) 2020.01.09

+ Recent posts