gyumin.log

리눅스 네트워크 보안 학습 랩

🌱 자라는 중

가상 네트워크를 직접 구축해 서버 하드닝·망 분리·침해 탐지를 수행하고, 발견을 진단 보고서 형식으로 산출하는 실습 프로젝트

  • Ubuntu Server
  • UTM
  • nftables
  • nmap
  • tcpdump
  • fail2ban
  • CIS Benchmark
  • MITRE ATT&CK

개요

서버 → 방화벽 → 탐지로 이어지는 소규모 사내망을 UTM 가상 환경에 직접 구축하고, 각 단계에서 발견한 보안 취약점을 진단 항목으로 정리해 하나의 보고서로 축적하는 프로젝트다. 실제 장비 없이 격리된 가상 네트워크에서 진행하며, 모든 실습은 내가 구축한 자산만을 대상으로 한다.

단순 튜토리얼과 구분되는 지점은 두 가지다. 첫째, 모든 설정 변경을 측정 가능한 전/후 지표로 남긴다(열린 포트 수, 공격 차단률 등). 둘째, 모든 발견을 CIS Benchmark · ISMS-P · MITRE ATT&CK 기준에 매핑해 실무 진단 보고서 형식으로 작성한다. 공부의 부산물이 아니라, 재현 가능한 진단 산출물을 만드는 것이 목표다.

문제 정의

NAC 보안 솔루션을 현장에서 운영하며 장애 분석과 이슈 대응으로 보안을 손으로 다뤄왔다. 다만 그것은 ‘한 제품을 다루는’ 경험이다. 그 밑단 - 트래픽이 왜 그렇게 흐르는지에 대한 네트워크 기초와, 발견을 기준(CIS·ISMS-P)에 매핑해 진단하고 보고하는 역량 - 은 별개의 것이고, 이 랩은 그 간극을 직접 메우는 프로젝트다.

  • 네트워크·시스템 보안을 제품 위에서만 다뤄, 밑단 동작에 대한 감각이 약하다.
  • 보안 진단 역량은 “취약점을 찾는 것”이 아니라 “발견 → 위험도 평가 → 기준 매핑 → 조치 권고”의 흐름을 산출물로 만드는 데 있는데, 이 경험이 부족하다.

→ 직접 취약한 환경을 만들고, 진단하고, 조치하고, 재검증하는 전 과정을 손으로 수행한다.

목표

구분목표달성 기준
기술리눅스 서버를 세워 안전하게 하드닝노출 포트·인증 방식의 전/후 지표 확보
네트워크방화벽으로 망을 분리하고 접근 통제외부→내부 서버 직접 도달 차단 확인
탐지공격을 재현하고 흔적을 탐지스캔·무차별 대입·MAC 스푸핑 탐지 로직 동작
산출물진단 보고서 축적진단 항목 카드 N건, 기준 매핑 포함

실습 환경 & 구성

호스트(M2 맥북) 안의 UTM에 가상 머신 3대를 두고 사설망으로 연결한다.

                    ┌──────────────────────┐
      인터넷 ───────┤      방화벽 VM        │
      (NAT)         │  nftables · NAT      │
                    │  DHCP · DNS(dnsmasq) │
                    └──────────┬───────────┘
                               │  내부망 (사설 세그먼트)
                  ┌────────────┴────────────┐
            ┌─────┴──────┐            ┌──────┴──────┐
            │   서버 VM   │            │  공격자 VM  │
            │   nginx     │            │  (Kali)     │
            │  하드닝 대상 │            │  탐지 실습용 │
            └─────────────┘            └─────────────┘
VM역할등장
서버 VM웹서버를 올리고 하드닝하는 진단 대상Chapter 1~
방화벽 VM망을 분리하고 트래픽을 통제 (nftables/NAT/DHCP/DNS)Chapter 2~
공격자 VM통제된 공격을 재현해 탐지를 검증Chapter 3

기술 스택

  • UTM / Ubuntu Server (ARM64) - 격리된 가상 네트워크와 서버
  • ufw → nftables - 방화벽. Chapter 1은 ufw로 시작해 ‘기본 차단 정책’이라는 개념에 집중하고, Chapter 2에서 nftables로 통일한다(NAT·세그먼트 분리는 nftables가 필수). 각 챕터의 학습 목표에 도구를 맞춘 선택이다.
  • nmap / tcpdump - 진단(포트 스캔)과 트래픽 관찰
  • fail2ban - 로그 기반 자동 차단
  • CIS Benchmark · ISMS-P · MITRE ATT&CK - 진단 기준 프레임워크

학습 방식

모든 세션은 예측 → 실행 → 대조 → 왜? → 부수고 고치기 → 노트의 6단계 루프로 진행한다. 명령을 치기 전에 결과를 예측하고, 빗나간 지점을 파고들며, 일부러 취약하게 만들었다가 다시 잠근다. 세션별 실천 기록은 아래로 모이는 실습 일지에 남긴다.

진단 방법론

발견하는 취약점마다 아래 카드 형식으로 기록한다. “했다”가 아니라 발견 → 근거 → 위험도 → 기준 → 권고 → 검증으로 남겨, 실습 기록이 그대로 진단 보고서가 되게 한다.

[진단 항목 · 형식 예시] SSH 비밀번호 인증 허용

· 발견   : 비밀번호 로그인 허용, 외부에서 22번 포트 접근 가능
· 근거   : ss -tlnp → 22 LISTEN / sshd_config PasswordAuthentication yes
· 위험도 : 높음 - 무차별 대입 공격에 노출
· 기준
    - 기술: CIS Ubuntu Linux Benchmark (SSH 설정 항목)
    - 관리: ISMS-P 2.5 인증·권한관리
· 권고   : 키 기반 인증 전환, PasswordAuthentication no, root 로그인 차단
· 검증   : 비번 로그인 거부 확인, 노출 포트 7개 → 2개

기준은 층으로 쓴다 - CIS Benchmark(무엇이 잘못됐나) + ISMS-P(어느 규제에 걸리나), 공격·탐지 항목에는 MITRE ATT&CK(어떤 기법인가)를 더한다. ISMS-P 세부 항목번호와 CIS 항목번호·벤치마크 버전은 원문(KISA 고시·벤치마크 문서)에서 확인해 채운다. 위 카드의 수치는 형식을 보여주는 예시값이며, 실제 카드는 실측값으로 기록한다.

로드맵 & 진행 상황

Chapter 1 · 서버 하드닝 진행 예정

빈 서버를 세워 웹서비스를 올리고, 노출된 문(포트)을 안전하게 잠근다.

  • 측정 지표: 노출 포트 수 전/후(ss -tlnp) · 인증 방식 전/후(비밀번호→키 전용, root 차단) · fail2ban 차단 동작 · 자작 점검 스크립트 통과 항목 수
  • 기준 매핑: CIS Ubuntu Benchmark(SSH·서비스·호스트 방화벽) · ISMS-P 2.5 인증 및 권한관리(세부 항목번호는 KISA 고시 확인)
  • 나만의 확장: 설정 점검 셸 스크립트 · ufw 설정 직후 nft list ruleset로 밑단 규칙 대조(추상화 한 겹 아래 확인)
  • 셀프 면접질문: ‘포트가 열려 있다’의 정확한 의미는? PasswordAuthentication no가 막는 것과 못 막는 것은? fail2ban의 구조적 한계는? 왜 ufw로 시작해 nftables로 갔나?

Chapter 2 · 망 분리와 접근 통제 예정

방화벽 VM을 추가해 망을 내부/외부로 나누고, 서버를 내부망에 숨긴다.

  • 측정 지표: 외부→내부 서버 직접 도달, 분리 전/후(nmap 증적) · NAT 경유 전후 패킷 경로 변화(tcpdump) · 방화벽 규칙별 사유 주석률 100%
  • 기준 매핑: CIS Benchmark 방화벽(nftables) 항목 · ISMS-P 2.6 접근통제(세부 항목번호는 KISA 고시 확인)
  • 나만의 확장: 주소 계획 포함 네트워크 구성도 · 규칙마다 “왜 필요한가” 한 줄을 붙인 규칙표 · 방화벽(세그먼트 기준)과 NAC(단말 기준)의 통제 지점 비교 노트
  • 셀프 면접질문: IP 필터만으로 왜 부족하고 세그먼트 분리가 필요한가? NAT은 보안 장치인가? 방화벽이 못 보는 트래픽은 무엇이 다루나?

Chapter 3 · 침해 재현과 탐지 예정

격리된 망에 공격자 VM을 넣어 통제된 공격을 재현하고, 방어 측에서 탐지한다. 공격 습득이 아니라 “공격이 어떻게 보이고 어떻게 잡히는가”를 이해하는 방어자 훈련이다.

  • 측정 지표: 공격 기법 × 탐지 결과 매트릭스(성공/부분/실패) · 공격 시작→탐지까지 시간 · 오탐·미탐 건수와 원인
  • 기준 매핑: MITRE ATT&CK(T1046 스캔, T1110 무차별 대입, T1557.002 ARP 스푸핑) · ISMS-P 2.11 사고 예방 및 대응(세부 항목번호는 KISA 고시 확인)
  • 나만의 확장: MAC 변경 감지 스크립트 - 단말 식별·MAC 관리는 NAC 제품이 매일 하는 일이다. 현장에서 운영해 온 제품이 해주던 것을 원리 수준에서 직접 재구현하는, 이 프로젝트의 정점이다 · 이 탐지가 못 잡는 케이스 목록 문서화
  • 셀프 면접질문: fail2ban이 못 막는 공격은? ARP 스푸핑은 어느 계층 문제이고 왜 방화벽으로 안 막히나? 내 탐지 스크립트를 우회하려면?

산출물

  • 진단 보고서 - 진단 항목 카드의 축적 (본문·노트에 정리)
  • 종합 모의 진단 보고서 - 전 챕터 완료 후, 카드 축적을 요약(총평) → 위험도 상위 항목 → 조치 로드맵 순의 보고서 1부로 묶는다. 카드의 나열이 아니라 컨설팅 산출물의 형식을 갖추는 것 자체가 훈련이다
  • 점검·탐지 스크립트 - 설정 점검, MAC 변경 감지 (재현 가능한 도구)
  • 네트워크 구성도 - 세그먼트 분리 설계
  • 실습 일지 & 개념 노트 - 아래로 자동 수집

이 페이지는 대문이다. 실습 기록이 project: linux-network-lab 필드를 통해 여기로 모인다. 챕터를 마치면 성과를 정리하고 상태를 done(수확 완료)으로 전환한다.

범위와 제약

  • 학습·방어 목적의 프로젝트다. 모든 실습은 격리된 가상 환경에서, 내가 구축한 자산만을 대상으로 수행한다.
  • 실제 운영 규모(수백 노드·클라우드·디렉터리 서비스)와 다른 축소 모델이며, 각 챕터에 “실무라면 여기에 무엇이 더해지는가”를 함께 기록해 한계를 명시한다.
  • 회사 내부정보(고객사·제품 내부 구조)는 어떤 산출물에도 쓰지 않는다.