본문 바로가기

Training & Research Projects/네트워크관제

프로젝트 기본 흐름도 정리 및 용어 정리

프로젝트 흐름도 정리(프로젝트 진행 흐름도)

이러한 아키텍처에서 각 구성 요소를 나누는 이유는 여러 가지가 있는데,

 

보안: 공개 및 비공개 서브넷 분리: 외부 네트워크와의 접속을 제한하여 내부 시스템을 보호합니다. 공용 서브넷에는 외부 접근이 필요한 자원만 배치하고, 민감한 데이터와 시스템은 비공식 서브넷에 배치하여 보안을 강화합니다.

 

성능: 각 구성 요소가 전담하는 역할을 갖게 되면, 특정 기능에 대한 성능 최적화가 가능합니다. 예를 들어, Nginx는 웹 요청을 효율적으로 처리하고, Beats는 로그 수집에 집중합니다.

 

유지보수: 시스템을 모듈화하면, 특정 구성 요소를 독립적으로 수정하거나 업그레이드할 수 있어 유지보수가 용이합니다. 문제가 발생했을 때 빠르게 원인을 파악하고 대응할 수 있습니다.

 

확장성: 필요에 따라 각 구성 요소를 독립적으로 확장할 수 있습니다. 예를 들어, 로그 수집량이 증가하면 Beats 인스턴스를 추가하여 수집 능력을 높일 수 있습니다.

 

모니터링 및 관리: 각 구성 요소에서 발생하는 로그와 데이터를 중앙화하여 수집하고 분석할 수 있습니다. 이를 통해 시스템의 상태를 실시간으로 모니터링하고, 문제가 발생했을 때 신속하게 대응할 수 있습니다.

신뢰성: 특정 컴포넌트가 실패하더라도 전체 시스템이 영향을 받지 않도록 설계할 수 있어, 시스템의 가용성을 높입니다.

 

따라서 분리는 복잡한 시스템의 성능과 보안을 동시에 확보하고, 효율적인 운영과 관리를 가능하게 한다.

용어 정리 

iptables

- C로 개발된 리눅스 커널 방화벽

- 방화벽을 통과한 패킷에 대해 연결상태를 관찰해서 기억해두었다가 다음 접속 시 보안을 허용하는 개념

- 주요 리눅스 배포 OS에 내장되어있으며, nftables이 후속버전으로 출시됨

- iptable은 해당 리눅스 커널 방화벽이 제공하는 구성을 직접 시스템 관리자가 설정함. (By table, chain, rule)

- 패킷 필터링 도구로서 방화벽 구성이나 NAT에 사용되는 리눅스 커널 방화벽

- 체인이라는 규칙을 연결한 테이블 구조임 → 각 테이블은 자신만의 고유한 사슬집합 가지고 있지만, 사용자 정의 사슬 생성 가능

- tables에는 filter, nat, mangle 3가지 존재

filter: 방화벽의 가장 핵심적인 테이블로 특정 룰에 따라 패킷을 차단, 허용하는 규칙의 체인이 존재

→ nat: 패킷을 필터링하는 기능은 없고, 네트워크의 주소만 변환하는 테이블

→ mangle: 패킷의 TTL이나 TOS값을 변경하거나 매칭할 때 사용 (잘 사용되진 않는다)

- 체인(chain) : 미리 정의된 3가지 chain. 어떤 트래픽을 허용하고 차단할지 규칙이 정해져 있음

 

Suricata

- Snort를 대체 위해 2010년 미국 국토 안보부가 비영리 단체인 OISF를 설립하여 만든 프로그램

- 역할: IDS(침입 탐지 시스템), IPS(침입 방지 시스템), NSM(Network Security Monitoring) ⇒ 패킷스니핑, 패킷 로깅, 침입 탐지 기능

- Snort 기능 외에 추가된 기능:

→ Protocol Identification: 포트번호를 지정 안하고 Protocol의 Name으로 Rule 지정가능

→ HTTP Normalizer & Parser: 7계층 (응용프로그램 계층)의 프로토콜 인식 가능

→ File Identification: 네트워크 패킷에서 전송되는 파일을 탐지

 

OSSEC (Open Source HIDS SEcurity) ⇒ H(Host)IDS

- 호스트 시스템에서 OS에서 발생하는 로그를 기록 및 분석할 수 있음

- 파일 시스템 무결성 감시와 시스템 로그 감시를 하는 엔드포인트 솔루션

- 윈도우/리눅스 기반의 로그 및 시스템 정보를 중앙 서버와 에이전트(Agent)를 이용해 수집하는 솔루션

- 보안로그 수집하고 내부적으로 이상 행위를 분석하는 엔진

- 시스템을 실행시킨 결과에서 차이가 발생하는 부분만을 OSSEC 위협 경고 메일로 알려줌

- 내부 시스템에 위험이 존재할 수 있는데, 보안성을 높이기 위해 사용하는 것. Snort와 다르게 룰들이 default로 정해져 있음

네트워크 행위 분석 시에 직접 시스템에 어떤 영향을 주었는지 확인해야하는 경우

  1. 외부에서 IDC 서버에 로그인을 시도하는 경우
  2. 사무실 대역의 SSH에 로그인을 시도하는 경우
  3. 윈도우 원격 데스크톱에 로그인을 시도하는 경우

→ 실제 로그인에 성공하였는지 성공여부를 확인할 수 있는 방법 = 윈도우나 리눅스 기반의 시스템 메시지를 확인한다.

  1. 일반적으로 사용하는 HTTPS(443), FTP(21), SSH, Telnet, WWW(80), SMTP(25) 등의 포트가 아닌 뜬금없는 포트를 사용해 외부와 통신하는 경우 → 이 경우는 패킷 캡쳐.
  2. 그러나 암호화 통신의 경우, 통신 내용은 확인이 불가능하다.( 세션 로그를 통해 언제부터 언제까지, 얼마나 많은 데이터를 주고받았는지는 확인 가능함)

→ 암호화 통신의 경우, 실제 시스템에 어떠한 영향을 주었는지 확인하는 방법: 실제 해당 시스템의 프로세스 목록 + 열려진 포트를 확인한다.

  1. 특정 시스템 경로인 windows, /dev/, system32, uninstall 에 파일이 추가되는 경우, 악성코드에 의해 시스템 파일이 변조되거나, 숨김파일이 추가될 수 있다. 악성코드에 감염된 시스템은 원격 공격자와의 연결을 위해 외부통신이 시도된다.

→ 악성코드를 통한 외부로의 통신연결을 확인하는 방법: 프로세스 추적

프로세스 분석 프로그램을 통해 프로세스마다 사용하는 파일, 통신포트를 확인할 수 있음.

 

ELK Stack

ELK stack

- 로그 수집, 처리 및 분석에 사용함

- Elasticsearch + Logstash + Kibana

- 데이터를 수집하고 분석하는 도구 모음

- Beats가 추가되어 ELK Stack이라 불림.

- Beats는 경량 데이터 수집기, Logstash는 데이터 처리 파이프라인 도구, Elasticsearch는 검색 엔진, Kibana는 데이터 시각화 대시보드

1. Beats는 로그 혹은 메트릭이 발생하는서버에 에이전트로 설치되어데이터를 수집하고, 이 데이터를 Logstash로 전송한다. 위 다이어그램에는 Beats와 Logstash 사이에 메시지 큐가 위치하는 것을 확인할 수 있는데, 이는안정성 또는 확장성등을 위함이다.

2. Beats (혹은 메시지큐) 로부터 데이터를 전달받은 Logstash는 데이터를 적절히필터링, 가공하여 Elastic Search로 전달한다.

3. Logstash 로부터 데이터를 전달받은 Elastic Search는 데이터를굉장히 빠른 속도로 검색될 수 있도록 인덱싱한다.

4. Kibana는 REST를 통해 Elastic Search로부터 데이터를 가져와 유저에게시각화와 간편한 데이터 검색 기능 등을제공한다.

Beats

 

Beats

 

- 로그, 매트릭 등의 다양한 데이터 소스에서 다양한 유형의 데이터를 수집하고 전달하는 경량 데이터 수집기

- Logstasg or 메시지 큐(Kafka, RabbitMQ 등)에 데이터를 전달함.

- 수집하는 데이터 소스, 형태에 따라 제품이 나뉨. ① Filebeat: 서버의 로그 파일을 수집한다. ② Metricbeat: 서버의 CPU, 메모리, 디스크 용량과 같은 시스템 메트릭이나 MySQL, Nginx 같은 서비스 메트릭 정보를 수집한다. ③ Packetbeat: 서버와 클라이언트 간의 트래픽을 실시간으로 모니터링해서 네트워크 상태 정보를 수집한다. HTTP, DNS, MySQL과 같이 다양한 프로토콜에서 트래픽 정보를 수집한다. ④ Winlogbeat: 윈도우 시스템에서 발생하는 이벤트 로그를 수집한다. ⑤ Auditbeat: 리눅스 시스템에서 발생하는 사용자 접속과 이벤트 관련 로그 정보를 수집한다. ⑥ Heartbeat: 주기적으로 지정된 URL로 요청을 보내 서비스의 상태를 모니터링한다. ⑦ Functionbeat: AWS Lambda, Azure Functions, Google Cloud Functions 등의 FaaS (Function-as-a-Service) 플랫폼에서 데이터를 수집한다.

★ Elastic Stack이 ELK Stack보다 발전된 단계임! ELK Stack에 단일 목적 수집기 제품인 Beat를 추가해서 Elastic Stack이라 부름.

Elasticsearch

- 아파치 루씬 기반의 확정성이 좋은 JAVA 오픈소스 분산 검색엔진

- 많은 양의 데이터를 보관하고 실시간으로 저장, 검색, 분석가능

- 특징 : 테이블과 스키마 대신 문서형식(JSON)으로 저장, 쿼리 속도가 매우 빠르며 확정성이 뛰어남, 에러에 대한 높은 탄성을 가지며 데이터 타입에 유연함, 빅데이터를 처리할 때 매우 유리함

Kibana

- Elasticsearch에서 색인된 데이터를 검색하고 시각화하는 오픈소스 도구

- Elasticsearch의 데이터(로그)를 차트와 그래프 등을 활용하여 대쉬보드 형태로 시각화함