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

이러한 아키텍처에서 각 구성 요소를 나누는 이유는 여러 가지가 있는데,
보안: 공개 및 비공개 서브넷 분리: 외부 네트워크와의 접속을 제한하여 내부 시스템을 보호합니다. 공용 서브넷에는 외부 접근이 필요한 자원만 배치하고, 민감한 데이터와 시스템은 비공식 서브넷에 배치하여 보안을 강화합니다.
성능: 각 구성 요소가 전담하는 역할을 갖게 되면, 특정 기능에 대한 성능 최적화가 가능합니다. 예를 들어, 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로 정해져 있음
네트워크 행위 분석 시에 직접 시스템에 어떤 영향을 주었는지 확인해야하는 경우
- 외부에서 IDC 서버에 로그인을 시도하는 경우
- 사무실 대역의 SSH에 로그인을 시도하는 경우
- 윈도우 원격 데스크톱에 로그인을 시도하는 경우
→ 실제 로그인에 성공하였는지 성공여부를 확인할 수 있는 방법 = 윈도우나 리눅스 기반의 시스템 메시지를 확인한다.
- 일반적으로 사용하는 HTTPS(443), FTP(21), SSH, Telnet, WWW(80), SMTP(25) 등의 포트가 아닌 뜬금없는 포트를 사용해 외부와 통신하는 경우 → 이 경우는 패킷 캡쳐.
- 그러나 암호화 통신의 경우, 통신 내용은 확인이 불가능하다.( 세션 로그를 통해 언제부터 언제까지, 얼마나 많은 데이터를 주고받았는지는 확인 가능함)
→ 암호화 통신의 경우, 실제 시스템에 어떠한 영향을 주었는지 확인하는 방법: 실제 해당 시스템의 프로세스 목록 + 열려진 포트를 확인한다.
- 특정 시스템 경로인 windows, /dev/, system32, uninstall 에 파일이 추가되는 경우, 악성코드에 의해 시스템 파일이 변조되거나, 숨김파일이 추가될 수 있다. 악성코드에 감염된 시스템은 원격 공격자와의 연결을 위해 외부통신이 시도된다.
→ 악성코드를 통한 외부로의 통신연결을 확인하는 방법: 프로세스 추적
프로세스 분석 프로그램을 통해 프로세스마다 사용하는 파일, 통신포트를 확인할 수 있음.
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

- 로그, 매트릭 등의 다양한 데이터 소스에서 다양한 유형의 데이터를 수집하고 전달하는 경량 데이터 수집기
- 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의 데이터(로그)를 차트와 그래프 등을 활용하여 대쉬보드 형태로 시각화함
'Training & Research Projects > 네트워크관제' 카테고리의 다른 글
| Snort(스노트)에 대해서 알아보기 (2) | 2024.08.06 |
|---|---|
| 네트워크 기본 정리 (2) | 2024.08.05 |