Kali Linux란 무엇인가?

Kali Linux는 침투 테스트(Penetration Testing)디지털 포렌식에 최적화된 리눅스 배포판이다. 보안 전문가, 해커, 윤리적 해커(ethical hacker)들이 주로 사용하는 운영체제이다.
Debian 기반으로 제작되었으며, 수백 가지의 해킹 및 보안 도구들이 기본 내장되어 있어 설치만 하면 바로 실습이 가능한 환경을 제공한다.

 

Kali Linux의 주요 특징

  • 해킹 및 보안 도구가 기본 포함되어 있다.
    대표적으로 Nmap, Metasploit, Burp Suite, Aircrack-ng 등이 있다.
  • 라이브 부팅이 가능하다.
    USB나 가상 머신으로 실행할 수 있어 설치 없이도 사용이 가능하다.
  • 지속적인 업데이트가 이루어진다.
    Offensive Security가 꾸준히 관리하고 있어 최신 취약점에 대응하기 좋다.

 

칼리 리눅스는 https://www.kali.org 공식 홈페이지에서 VMware 버전 파일을 다운로드할 수 있다.

 

Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution

Home of Kali Linux, an Advanced Penetration Testing Linux distribution used for Penetration Testing, Ethical Hacking and network security assessments.

www.kali.org

 

 



 

다운로드한 압축 파일을 해제한 후, VMware에서 .vmx 파일을 열면 바로 실행할 수 있다.

 

칼리 리눅스를 처음 실행하면 로그인 화면이 나타나며,

 

기본 계정은

ID: kali

PW: kali


 

DVWA란 무엇인가?

DVWA(Damn Vulnerable Web Application)는 웹 취약점 실습용 웹 애플리케이션이다. 이름 그대로 ‘끔찍하게 취약한 웹사이트’로, 웹 해킹을 학습하고 실습하기 위한 목적으로 만들어졌다.

 

DVWA의 주요 목적

  • 웹 해킹 기법을 실습할 수 있도록 다양한 취약점 시나리오를 제공한다.
  • SQL Injection, XSS, CSRF, File Inclusion 등 실제 웹 공격 기법을 직접 실행하고 대응하는 연습이 가능하다.
  • 보안 실습 환경에서만 사용해야 하며, 절대로 공개된 서버에 설치해서는 안 된다.

DVWA는 보안 훈련을 위한 훌륭한 도구로, Kali Linux 환경과 함께 사용하면 효과적인 학습이 가능하다.

 

 

DVWA의 공식 GitHub 페이지는 다음과 같다:
👉 https://github.com/digininja/DVWA

칼리 리눅스에 DVWA를 설치하기 위해 위 GitHub 페이지를 참고하였다.
설치 과정에서는 아래 블로그와 유튜브 영상을 참고하였다.

이 자료들을 바탕으로 Kali Linux 환경에서 DVWA 설치를 진행하였다.

 


 

 

 

 DVWA 설치 과정 (GitHub 클론부터 Apache 웹 서버 실행까지)

DVWA를 실행하기 위해서는 웹 서버(Apache)가 작동해야 한다.
아래는 DVWA 설치의 첫 단계로, GitHub에서 소스 코드를 가져와 Apache를 통해 웹 환경을 구축하는 과정이다.

 

1. DVWA 파일 다운로드

git clone https://github.com/digininja/DVWA
  • DVWA 공식 GitHub 저장소에서 웹 애플리케이션 소스 코드를 복제한다.
  • 이 코드는 .php, .html, .css, .js 등의 파일로 구성된 웹 애플리케이션 파일이다.

2. Apache 웹 서버가 인식할 수 있는 위치로 이동

sudo mv DVWA /var/www/html
  • Apache 웹 서버는 기본적으로 /var/www/html 디렉토리를 웹 루트 디렉토리로 사용한다.
  • 따라서 DVWA 폴더를 이 위치로 이동시키면, Apache가 해당 애플리케이션을 서비스할 수 있게 된다.

3. 디렉토리 이동 및 확인

cd /var/www/html
ls
  • DVWA 폴더가 정상적으로 이동되었는지 확인한다.

4. Apache 웹 서버 실행

sudo service apache2 start
  • Apache 웹 서버를 실행하는 명령어이다.
  • 이 명령어를 통해 Apache가 사용자의 웹 요청을 수신할 준비를 하게 된다.

더보기

🌐 아키텍처 관점에서 이해하기

🔧 Apache의 역할

  • Apache는 웹 서버로서, 사용자가 브라우저로 보내는 HTTP 요청을 수신하고,
  • 요청에 따라 정적 파일(css, js, 이미지)을 전달하거나,
    동적 파일(.php)은 내부적으로 PHP 엔진을 호출하여 실행 결과를 반환한다.
  • 따라서 Apache가 실행되어야 비로소 DVWA와 같은 웹 애플리케이션이 '웹페이지 형태로 동작'하게 된다.

 

 

 

 DVWA 설정 파일 생성 및 MariaDB 실행

Apache 웹 서버를 성공적으로 실행했다면 http://localhost 주소로 접속이 가능해진다. 하지만 아직 DVWA 웹 애플리케이션에는 기본 설정 파일이 생성되지 않았기 때문에, http://localhost/DVWA 주소로 접근할 경우 오류 페이지가 나타난다.

이 문제를 해결하려면 DVWA 설정 파일을 직접 생성해야 한다.


1. DVWA 디렉토리로 이동

cd DVWA
  • DVWA 소스코드가 위치한 디렉토리로 이동한다. 이 디렉토리는 /var/www/html/ 안에 존재한다.
ls
  • 디렉토리 안에 어떤 파일들이 있는지 확인한다.

2. 설정 파일 폴더 확인

ls config
  • DVWA의 설정 파일이 들어 있는 config 폴더를 확인한다.
  • 이 안에는 기본 설정 파일 템플릿인 config.inc.php.dist 파일이 존재한다.

3. 설정 파일 복사 및 이름 변경

cp config/config.inc.php.dist config/config.inc.php
  • 위 명령은 기본 설정 파일을 복사하고, DVWA가 인식할 수 있는 이름으로 변경하는 과정이다.
  • config.inc.php는 DVWA가 데이터베이스, 보안 설정 등을 불러올 때 참조하는 핵심 설정 파일이다.

🔧 중요한 역할:

  • 이 파일이 없으면 DVWA는 내부 설정을 불러오지 못해 에러를 출력하게 된다.
  • 이 과정은 DVWA 초기 설정의 필수 단계다.

4. MariaDB(데이터베이스 서버) 실행

sudo service mariadb start
  • DVWA는 내부적으로 MariaDB(MySQL 호환)를 사용하여 사용자 정보, 로그인 내역, 실습 데이터 등을 저장한다.
  • 이 명령을 통해 데이터베이스 서버를 실행해야 DVWA가 정상적으로 DB 연결을 할 수 있다.

 


 

 

DVWA 데이터베이스 오류 해결 방법(데이터베이 및 사용자 계정 생성)

앞서 설정 파일을 구성하고 웹 서버를 실행해 DVWA 페이지에 접근할 수 있게 되었지만,
http://localhost/DVWA/setup.php 페이지에서 "Create / Reset Database" 버튼을 클릭하면 오류가 발생할 수 있다.

이 문제는 DVWA에서 사용할 데이터베이스와 사용자 계정이 MariaDB에 생성되어 있지 않기 때문이다.
따라서 직접 데이터베이스와 사용자 계정을 생성해줘야 한다.


데이터베이스 수동 생성 절차

1. 루트 계정으로 전환

sudo su -
  • 시스템의 root 계정으로 전환한다.
  • MariaDB 관리 권한이 필요하기 때문에 root 계정으로 접속하는 것이 일반적이다.

2. MariaDB 접속

mysql
  • MariaDB 콘솔에 접속한다.

3. DVWA용 데이터베이스 생성

create database dvwa;
  • DVWA가 사용할 데이터베이스를 생성한다.

4. 사용자 계정 생성

create user dvwa@localhost identified by 'p@ssw0rd';
  • dvwa라는 이름의 사용자 계정을 생성하고, 비밀번호는 p@ssw0rd로 설정한다.

5. 사용자에게 권한 부여

grant all on dvwa.* to dvwa@localhost;
  • dvwa 데이터베이스에 대해 dvwa@localhost 사용자에게 모든 권한을 부여한다.

6. 권한 적용

flush privileges;
  • 위에서 부여한 권한이 즉시 적용되도록 한다.

✅ 완료 후 확인할 수 있는 변화

  • http://localhost/DVWA/setup.php 페이지에서 다시 "Create / Reset Database" 버튼을 클릭하면 이제 에러 없이 정상적으로 테이블이 생성된다.
  • 이후 DVWA의 로그인 페이지로 이동하며, DVWA가 완전히 실행 가능한 상태가 된다.

🔐 참고

이 과정을 통해 설정된 정보는 config/config.inc.php 파일 안에 다음과 같이 반영되어 있어야 한다:

$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'p@ssw0rd';
$_DVWA[ 'db_database' ] = 'dvwa';

 


 

DVWA 설정 마무리 및 로그인

앞서 수동으로 데이터베이스를 생성하고 권한 설정을 완료했다면, 이제 DVWA 설정 탭에서 데이터베이스를 초기화할 수 있다.

📌 DVWA 설정 완료

  1. 브라우저에서 다음 주소로 접속한다:
    👉 http://localhost/DVWA/setup.php
  2. "Create / Reset Database" 버튼을 클릭한다.
    • 이 작업을 통해 DVWA가 데이터베이스에 필요한 테이블과 초기 데이터를 자동으로 생성한다.
    • 성공 메시지가 나타나면 기본적인 설정은 모두 완료된 것이다.

🔐 로그인 정보

DVWA의 기본 로그인 정보는 다음과 같다:

  • ID : admin
  • PW : password

 

더보기

📊 DVWA 실행 구조 요약

[사용자 브라우저]
       ↓ HTTP 요청
http://localhost/DVWA/login.php
       ↓
[Apache 웹 서버]
       ↓
[PHP 엔진: login.php 실행]
       ↓
[MariaDB: 사용자 정보 조회]
       ↓
[Apache가 결과 HTML 응답]
       ↓
[브라우저에 출력]

 

 

추가설정

이제부터는 해당 셋업 창에서 Disabled로 표시된 항목들을 하나씩 해제하는 작업을 진행할 것이다.

(현재 상태에서도 DVWA를 사용할 수는 있지만, 몇몇 기능이 비활성화(Disabled) 상태로 인해 정상적으로 작동하지 않는 경우가 있다.)

이는 추후 취약점 분석을 원활하게 진행하기 위해 미리 설정을 완료해두는 단계이다.

 


🔧 PHP 설정 변경을 통한 기능 활성화 (allow_url_include, display_errors 등)

✅ 대상 기능

  • allow_url_include
  • display_errors
  • display_startup_errors

위 항목들을 활성화하여 실습 시 오류 메시지를 확인할 수 있도록 한다.


🛠 설정 방법

루트 권한 획득 및 설정 파일 위치로 이동

sudo su -                 # 루트 계정 권한 얻기
cd /etc/php               # PHP 설정 디렉토리로 이동
ls                        # PHP 버전 확인
cd 8.4                    # (버전에 따라 숫자는 다를 수 있음)
ls
cd apache2                # Apache용 설정 디렉토리
vim php.ini               # php.ini 파일 편집

위 과정은 /etc/php/8.2/apache2/php.ini 파일을 편집하기 위한 단계이다.
vim 외에도 nano, gedit 등 다른 에디터를 사용해도 무방하다.


 php.ini 파일 수정

아래 항목들을 찾아 모두 On으로 변경한다:

allow_url_include = On
display_errors = On
display_startup_errors = On

변경 후(i를 눌러야 수정 가능) 저장하고 종료한다 (vim에서는 Esc → :wq).


Apache 재시작

변경 사항을 적용하기 위해 Apache를 재시작한다:

apachectl restart

 

📁 DVWA 업로드 디렉토리 권한 설정하기

DVWA에는 파일 업로드 취약점을 실습할 수 있는 File Upload 탭이 존재한다.
하지만 이 기능을 사용하려면 업로드되는 파일을 저장하는 디렉토리에 웹 서버(Apache)가 쓰기 권한을 가져야 한다.

따라서 아래와 같이 디렉토리의 소유자 및 권한을 설정해야 한다.


🛠 터미널 입력 명령어 및 설명

sudo su -
  • 루트 계정으로 전환하여 시스템 파일 및 권한 설정을 할 수 있게 한다.
ls -al /var/www/html/DVWA/hackable/uploads/
  • 업로드 디렉토리의 현재 소유자 및 권한 상태를 확인한다.
chown www-data /var/www/html/DVWA/hackable/uploads/
  • 웹 서버(Apache)의 사용자 계정인 www-data에게 해당 디렉토리의 소유권을 넘긴다.
ls -al /var/www/html/DVWA/hackable/uploads/
  • 변경된 소유권이 반영되었는지 확인한다.


 

🔐 DVWA CAPTCHA 설정하기 (reCAPTCHA 활성화)

DVWA에는 취약한 CAPTCHA 실습 탭이 존재하며, 이를 제대로 활용하기 위해서는
php-gd 모듈 설치Google reCAPTCHA 키 등록이 필요하다.

아래 단계에 따라 설정을 완료하면 CAPTCHA 관련 기능이 정상적으로 작동하게 된다.


1.php-gd 모듈 설치

php-gd는 이미지 처리 기능을 제공하는 PHP 모듈로, CAPTCHA 이미지를 생성하는 데 필수적이다.

sudo apt update            # 패키지 목록 업데이트
sudo apt install php-gd    # php-gd 모듈 설치
sudo apachectl restart     # Apache 재시작

이 과정을 완료하면 DVWA 설정창에서 PHP module gd: Missing 오류 메시지가 사라지게 된다.


2.Google reCAPTCHA 키 발급

  1. 브라우저에서 다음 주소로 접속한다:
    👉 https://www.google.com/recaptcha/about/
  2. v2 reCAPTCHA → "I'm not a robot" 유형을 선택한다.
  3. Label에는 자유롭게 DVWA 실습용임을 표시하고,
    Domains 항목에는 반드시 localhost를 추가한다.
    → 로컬 환경에서 실습하기 위함
  4. **사이트 키(Site Key)**와 **비밀 키(Secret Key)**를 발급받는다.


3. DVWA 설정 파일에 키 등록

터미널에서 설정 파일을 열고, 발급받은 키를 등록한다.

sudo su -
cd /var/www/html/DVWA/config
vim config.inc.php

설정 방법

  • vim 에디터에서 recaptcha_public_key와 recaptcha_private_key 항목을 찾아 아래와 같이 수정한다:
$_DVWA[ 'recaptcha_public_key' ]  = '발급받은_사이트_키';
$_DVWA[ 'recaptcha_private_key' ] = '발급받은_비밀_키';

 

찾기 기능 사용 팁:
vim에서 /recaptcha 입력 후 Enter를 누르면 해당 항목으로 빠르게 이동 가능

수정이 완료되면 Esc → :wq 로 저장하고 종료한다.

 


작동 확인

  • 브라우저에서 DVWA 설정 페이지를 새로고침하면,Missing 오류가 사라지고 CAPTCHA 기능이 정상적으로 작동하는 것을 확인할 수 있다.

 

추가 설정 완료된 화면


 

 

🔐 Burp Suite 실습 정리: 실행부터 Intercept 원리까지

웹 모의해킹 실습을 위해 DVWA와 함께 사용하는 대표 도구는 Burp Suite이다.
Kali Linux에는 Burp Suite가 기본적으로 설치되어 있기 때문에 별도의 설치 과정은 필요 없다.
이번 포스트에서는 Burp의 실행, Intercept 기능의 개념, Burp 내장 브라우저와 Firefox의 차이점, 프록시 설정 방법, 그리고 실습 중 마주칠 수 있는 상황들을 정리하였다.


1. Burp Suite 실행 방법

터미널에서 burpsuite 명령어를 입력하면 실행된다.
첫 실행 시 라이선스 동의 화면이 나타나며, I accept를 클릭하여 진행해야 한다.
이후 Temporary project → Use Burp defaults → Start Burp를 선택하면 Burp가 실행된다.


2. Proxy 탭에서 Intercept 기능 개념

Proxy > Intercept 탭은 Burp의 핵심 기능 중 하나이다.
이 기능은 웹 브라우저가 서버로 요청을 보내기 전에 Burp가 요청을 가로채도록 한다.
Intercept가 ON 상태이면 요청이 Burp에서 멈추고 브라우저는 응답을 기다리며 로딩 상태가 된다.
Intercept가 OFF 상태이면 요청이 서버로 바로 전달되어 페이지가 정상 출력된다.


3. Burp 내장 브라우저 vs Firefox

Burp에는 Chromium 기반의 내장 브라우저가 포함되어 있다.
Burp 내장 브라우저는 자동으로 Burp 프록시에 연동되어 있어 별도의 프록시 설정이 필요 없다.
하지만 Intercept가 ON일 경우 localhost와 같은 로컬 주소로의 요청도 Burp에서 가로채므로, 브라우저는 응답을 받지 못해 무한 로딩에 빠진다.
따라서 실습을 원활하게 진행하려면 Firefox 브라우저를 사용하는 것이 좋다.

 

localhost가 Burp에 안 잡히는 이유

Firefox는 보안 정책상 localhost나 127.0.0.1에 대한 요청은 프록시 설정을 무시하고 직접 서버로 요청을 보낸다.
이로 인해 Burp 프록시를 통해 요청이 전달되지 않으며, Burp의 Intercept에도 잡히지 않는다.

 

결과: 실습 중 발생할 수 있는 상황 정리

환경 Intercept 네이버 접속 로컬호스트 접속 설명
Firefox ON ❌ 안 됨 ✅ 됨 로컬호스트는 프록시를 우회하므로 접속되며, 네이버는 Burp에서 요청을 가로채며 차단됨
Firefox OFF ✅ 됨 ✅ 됨 모든 요청이 프록시를 통해 서버에 정상 전달됨
Burp 브라우저 OFF ✅ 됨 ✅ 됨 프록시 자동 적용, Intercept OFF 상태로 모든 요청이 바로 처리됨
Burp 브라우저 ON ❌ 안 됨 ❌ 안 됨 모든 요청이 Intercept에 걸려 Burp에서 Forward 하지 않으면 로딩이 멈춤

 


4. Firefox에서 프록시 설정 방법

Firefox 주소창에 about:preferences를 입력한다.
페이지 하단의 [네트워크 설정] 섹션에서 설정(Configure Proxy) 버튼을 클릭한다.
수동 프록시 구성(Manual Proxy Configuration)을 선택하고 다음과 같이 설정한다:

  • HTTP 프록시: 127.0.0.1
  • 포트: 8080
  • ✅ "모든 프로토콜에 이 프록시 사용" 체크
  • ✅ "HTTPS에도 이 프록시 사용" 체크

 

 

 

'Security > CERT' 카테고리의 다른 글

프록시란?  (0) 2025.05.02
웹 서비스에서 자주 발생하는 핵심 취약점과 대응 전략  (0) 2025.04.24
웹 쉘이란?  (1) 2025.04.10
웹 보안 취약점(3)  (0) 2025.03.28
웹 보안 취약점(2)  (0) 2025.03.20

💬 AWS 메시징 완벽 정리: SQS, SNS, Kinesis 차이와 활용법

현대 애플리케이션은 점점 복잡해지고 있으며, 각 기능이 별도의 서비스로 나뉘어 배포되는 경우가 많습니다. 이런 환경에서 중요한 건, 서비스 간의 안정적인 통신이죠.
AWS에서는 이를 위해 SQS, SNS, Kinesis라는 세 가지 강력한 메시징 서비스를 제공합니다.

이 글에서는 세 가지 서비스를 하나씩 뜯어보며, 언제, , 어떻게 사용하는지 자세히 살펴보겠습니다.


🔄 먼저, 왜 메시징 서비스가 필요할까요?

📍 서비스 간 통신 방식

  • 동기(Synchronous): 한쪽이 요청을 보내고, 응답을 기다리는 구조
    → 예: 웹 서버가 DB에 직접 요청하고 응답받기
  • 비동기(Asynchronous): 요청을 큐(queue)에 넣고, 나중에 처리되는 구조
    → 예: 사용자가 주문 버튼을 누르면, 주문 내용은 큐에 쌓이고 백엔드가 천천히 처리

📍 왜 비동기 메시징이 필요할까?

  • 트래픽이 갑자기 폭증하면 동기 구조는 병목이 생김
  • 예: 보통 10개 영상만 처리하던 서비스가 어느 날 1000개를 처리해야 한다면?
  • 이럴 때는 SQS/SNS/Kinesis를 통해 각 서비스를 독립적으로 확장 가능

📨 Amazon SQS – 큐 기반 메시징 서비스

SQS(Simple Queue Service)는 가장 오래된 AWS 메시징 서비스입니다.

✅ 핵심 기능

  • Producer → Queue → Consumer 구조
  • 메시지는 최대 14일간 보관
  • 소비자가 메시지를 받아 처리 후 삭제(DeleteMessage API)
  • 표준(Standard) 큐: 중복 허용, 순서 보장 없음
  • FIFO 큐: 순서 보장, 중복 제거 기능 제공

✅ 실전 예시

  • 웹 프론트에서 주문 요청 → SQS 큐 → 백엔드에서 순차적으로 처리
  • EC2 Auto Scaling 그룹과 연동하여 처리량 증가에 따라 소비자 수 자동 확장

🔐 보안

  • HTTPS 기반 전송 암호화, KMS를 통한 저장 암호화
  • IAM 및 SQS Access Policy로 접근 제어

⏳ 메시지 가시성 타임아웃

  • 메시지를 가져오면 일정 시간 동안 다른 소비자에게 안 보임 (기본 30초)
  • 시간 내에 처리 안 되면 다시 보이므로 중복 처리 가능성 존재

⌛ Long Polling

  • 메시지가 없을 때, 지정한 시간(최대 20초)만큼 기다렸다가 응답
  • API 호출 수 줄이고 효율성 증가

📣 Amazon SNS – 퍼블리시/서브스크라이브 방식

SNS(Simple Notification Service)는 이벤트 기반으로 다수에게 동시에 메시지를 전달합니다.

✅ 핵심 기능

  • 한 메시지를 여러 구독자에게 동시에 전송
  • SQS, Lambda, Email, SMS, HTTP 등 다양한 타입의 수신자 연결 가능
  • 메시지 필터링 기능으로 특정 조건에 맞는 구독자만 수신 가능

✅ 실전 예시

  • 주문 발생 → SNS로 이벤트 발행 → 배송, 결제, 이메일 알림 등 각각 수신

🔐 보안

  • HTTPS 암호화, KMS 저장 암호화
  • IAM, SNS Access Policy로 접근 제어

🔁 SNS + SQS 구조 (Fan-out)

  • 하나의 SNS 토픽에서 여러 SQS 큐로 메시지를 분산
  • 서비스 간 완전한 분리 가능 (디커플링 구조)

🧠 SNS FIFO 토픽

  • 메시지 순서 보장 및 중복 제거 기능
  • SQS FIFO 큐와 함께 사용하면 순서 + 재시도 + 다수 수신자 구조 완성

 

 

⚡ Amazon Kinesis – 실시간 데이터 스트리밍의 핵심

Amazon Kinesis실시간 데이터 스트리밍을 위한 서비스로, 대규모의 데이터를 빠르게 수집, 처리, 분석할 수 있게 도와줍니다. Kinesis는 실시간 분석이 필요한 상황에서 강력한 도구로, 예를 들어 IoT 센서 데이터, 웹 클릭 스트림, 로그 분석 등의 데이터 흐름을 처리할 때 사용됩니다.

✅ Kinesis의 주요 서비스 구성 요소

  1. Kinesis Data Streams
    • 데이터 스트림을 생성하여 실시간 데이터를 수집하고 처리하는 기본 구성 요소입니다.
    • 데이터를 shard 단위로 나누어 저장하고 처리합니다.
      • 1 샤드는 초당 1MB의 입력과 2MB의 출력을 처리할 수 있습니다.
    • **프로듀서(Producer)**는 데이터를 스트림으로 보냅니다. 예를 들어 웹사이트에서 발생하는 클릭 데이터를 실시간으로 스트림에 기록할 수 있습니다.
    • **컨슈머(Consumer)**는 스트림에서 데이터를 읽고 처리합니다. 예를 들어, LambdaEC2 인스턴스를 사용하여 데이터를 실시간으로 분석하거나 저장할 수 있습니다.
    • 재처리 가능 (Replay): 데이터는 최대 365일 동안 저장되며, 소비자는 필요시 과거 데이터를 재처리할 수 있습니다.
  2. Kinesis Data Firehose
    • 완전 관리형 스트리밍 서비스로, 실시간 데이터 스트림을 S3, Redshift, OpenSearch 등으로 자동으로 전송합니다.
    • 버퍼링 기능을 통해 데이터를 일정 시간 또는 크기만큼 모은 뒤 일괄 처리할 수 있어 지연 시간이 중요한 상황에서 유용합니다.
    • 데이터가 전송되기 전에 AWS Lambda를 이용해 데이터 변환도 가능합니다. 예를 들어, CSV 파일을 JSON 형식으로 변환 후 저장할 수 있습니다.
  3. Kinesis Data Analytics (Flink 기반)
    • 실시간으로 스트리밍 데이터를 SQL 기반으로 분석할 수 있는 서비스입니다.
    • 데이터를 수집한 뒤, 실시간으로 분석하고 결과를 다른 시스템으로 전송할 수 있습니다.
    • Apache Flink를 기반으로 하여 고급 실시간 분석을 가능하게 합니다.

✅ Kinesis의 특징과 장점

  1. 실시간 처리
    • Kinesis는 데이터를 실시간으로 스트리밍하여 즉시 분석할 수 있습니다. 이는 대규모 데이터 환경에서 중요한 요소입니다.
    • 예를 들어 실시간 광고 클릭 분석, 트랜잭션 분석, IoT 센서 데이터 모니터링 등 빠른 데이터 처리가 필요한 모든 분야에서 활용 가능합니다.
  2. 자동 확장
    • Provisioned mode에서 shard 수를 수동으로 설정하거나, On-demand mode에서는 자동으로 확장되어, 사용자는 데이터 트래픽에 맞게 유연하게 대응할 수 있습니다.
    • 온디맨드 모드는 자동으로 확장되므로 관리자가 직접 샤드를 추가/제거할 필요가 없습니다.
  3. 내구성
    • Kinesis Data Streams는 데이터를 최대 365일 동안 저장할 수 있고, 데이터 손실 없이 **다시 처리(replay)**할 수 있습니다.
    • Kinesis Data Firehose는 기본적으로 데이터를 실시간으로 전송하며 배치 처리도 지원하여 데이터 손실 없이 안정적인 전송을 보장합니다.
  4. 확장성
    • Kinesis는 대량의 데이터를 처리할 수 있는 확장 가능한 아키텍처를 제공합니다. 데이터 흐름이 증가하면 샤드를 추가하여 성능을 확장할 수 있습니다.
  5. 대규모 데이터 처리
    • Clickstream 데이터, 로그 분석, IoT 센서 데이터와 같이 대량의 작은 데이터를 실시간으로 처리할 수 있습니다.

✅ Kinesis 데이터 스트리밍 활용 예시

  1. 웹사이트 클릭 스트림 분석
    • Kinesis를 사용해 웹사이트에서 발생하는 사용자 클릭 데이터를 실시간으로 수집하고, 실시간 분석을 통해 사용자의 행동을 추적하거나, 맞춤형 광고를 제공할 수 있습니다.
  2. IoT 데이터 수집 및 분석
    • 수천 개의 IoT 장치에서 발생하는 데이터를 Kinesis로 실시간 수집하여 서버로 전송하고, 이를 즉시 분석하여 장비의 이상 상태를 모니터링하거나 경고를 보낼 수 있습니다.
  3. 로그 분석
    • 서버에서 발생하는 로그 데이터를 실시간으로 Kinesis로 스트리밍하여, 로그를 즉시 분석하고, 에러를 실시간으로 탐지할 수 있습니다.
  4. 실시간 금융 데이터 처리
    • 주식 거래 데이터나 금융 거래 데이터를 실시간으로 스트리밍하여 가격 변화시장 변동성을 분석하고 실시간 대응할 수 있습니다.

🔄 Kinesis vs Firehose

 

기능 Data Streams Data Firehose
처리 방식 직접 작성 (실시간) 완전관리형 (버퍼 후 전송)
데이터 저장 최대 365일 저장 가능 저장 안 됨
재처리 가능 가능 불가
목적지 S3, Redshift, OpenSearch 등 S3, Redshift, 3rd-party 등
 

🧾 정리: SQS, SNS, Kinesis 차이 한눈에 보기


항목 SQS SNS Kinesis
구조 Queue (Pull) Pub/Sub (Push) Streaming (Push/Pull 혼합)
저장 최대 14일 저장 안 됨 최대 365일 저장
순서 FIFO 큐에서만 보장 FIFO 토픽에서만 보장 파티션 키 기준 순서 보장
중복 일부 허용 보장 안 됨 Deduplication 가능
대상 단일 소비자 다수 구독자 스트리밍 분석 및 ETL
확장성 무한 소비자 확장 최대 1,250만 구독자 샤드 기반 확장 / 온디맨드 확장
 

✍ 마무리

  • SQS는 요청이 많아도 순차적으로 안정적으로 처리하고 싶을 때
  • SNS는 하나의 이벤트로 여러 곳에 알림을 보내야 할 때
  • Kinesis는 대량의 실시간 데이터를 빠르게 수집하고 분석할 때

'자격증 > aws' 카테고리의 다른 글

컨테이너  (0) 2025.05.17
스토리지 추가기능  (0) 2025.05.12
Amazon CloudFront  (0) 2025.05.03
Amazon S3 - 보안 (Security)  (0) 2025.04.30
S3 – Advanced  (0) 2025.04.30

 

🔍 침해사고 대응을 위한 프록시(Proxy)와 주요 프록시 툴 정리

침해사고 대응(IR, Incident Response) 업무를 수행할 때, 다양한 네트워크 트래픽을 실시간으로 확인하고 분석 또는 조작할 수 있어야 한다.
이때 핵심 역할을 하는 도구가 바로 프록시(Proxy)이다.

 

https://commons.wikimedia.org/wiki/File:Reverse_proxy_h2g2bob.svg


1️⃣ 프록시란 무엇인가?

프록시(Proxy)는 ‘대리인’을 의미하며, 클라이언트와 서버 사이에서 요청과 응답을 대신 처리하는 중간자 역할을 한다.

사용자는 직접 서버에 요청을 보내는 것이 아니라 프록시를 통해 요청하고, 프록시는 이를 서버에 전달한 뒤 받은 응답을 사용자에게 다시 전달한다.
이 과정을 통해 요청/응답 내용을 가로채거나 조작, 분석할 수 있는 환경이 형성된다.

더보기

프록시도 “서버”입니다, 하지만 일반적인 웹서버와는 역할과 위치가 다릅니다.


✅ 프록시는 서버인가?

  • 예, 프록시는 "프록시 서버(proxy server)"라고 부르는 하나의 서버 유형입니다.
  • 클라이언트(사용자)와 서버(예: 웹사이트) 사이에 위치하여, 중간에서 요청을 받아 처리하거나 전달하는 서버입니다.

✅ 일반 서버 vs 프록시 서버 비교


항목 일반 서버 (웹서버 등)  프록시 서버
역할 클라이언트의 요청을 직접 처리함 요청을 받아 중계 또는 분석
예시 NGINX, Apache, Flask 서버 등 Burp Suite, Fiddler, Squid 등
위치 클라이언트의 요청 대상 클라이언트와 서버 사이
사용 목적 웹사이트 제공, 데이터 처리 등 트래픽 감시, 필터링, 로깅, 조작 등
응답 처리 직접 클라이언트에게 응답 서버의 응답을 받아서 클라이언트에게 전달

✅ 프록시 서버가 클라이언트/서버 역할을 동시에 한다?

맞아요. 프록시 서버는 클라이언트 입장에서는 서버이고,
진짜 서버 입장에서는 클라이언트입니다.

예를 들어:

  1. 사용자가 브라우저에서 구글에 접속하면
  2. 요청은 프록시 서버로 전달됨
  3. 프록시 서버는 구글에 대신 요청 (→ 이때는 클라이언트 역할)
  4. 구글이 응답을 보내면
  5. 프록시는 응답을 받아 사용자에게 전달 (→ 이때는 서버 역할)

🔁 그래서 프록시는 왜 중요한가?

  • 요청과 응답을 통제할 수 있는 위치에 있기 때문에
    • 보안 분석
    • 트래픽 로깅
    • 접근 제어
    • 익명화
    • 캐싱

같은 다양한 보안 및 네트워크 최적화 기능을 수행할 수 있는 것이다.

 


2️⃣ 프록시의 종류: Forward Proxy vs Reverse Proxy

🟦 Forward Proxy (정방향 프록시)

  • 사용자 앞에 위치하여 사용자의 요청을 외부 서버로 전달하는 방식이다.
  • 주로 사용자 감시, 필터링, 트래픽 분석 등에 활용된다.
  • Burp Suite, Paros, Fiddler는 Forward Proxy 구조를 따른다.

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbITqIO%2Fbtsf0RUtWuq%2FsHz7NDkiFlAzaevsJBBKOK%2Fimg.png

🟥 Reverse Proxy (역방향 프록시)

  • 서버 앞에 위치하여 외부 요청을 내부 서버 중 하나에 전달하는 방식이다.
  • 주로 로드 밸런싱, 캐싱, 보안 보호(WAF) 목적에 사용된다.
  • NGINX, Apache HTTP Server 등이 대표적인 예이다.

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqCXM5%2FbtsfpdSAbev%2FTwWMJnKbFJLZGJ92bYQkJ1%2Fimg.png


3️⃣ 프록시 툴은 왜 사용하는가?

침해사고 대응 업무에서 프록시 툴은 다음과 같은 이유로 유용하다:

  • HTTP/HTTPS 트래픽 분석: 사용자가 어떤 요청을 보냈는지 실시간으로 확인할 수 있다.
  • 악성 행위 시뮬레이션: XSS, SQLi 등 공격을 모의실험할 수 있다.
  • 의심스러운 패킷 수집 및 조작: 트래픽을 수동으로 수정하거나 재전송할 수 있다.
  • 취약점 분석: 웹 애플리케이션이 보유한 취약점을 파악할 수 있다.
  • 로깅 및 기록: 트래픽 기록을 통해 사후 분석이 가능하다.

4️⃣ 대표적인 프록시 툴 설명

🔸 Paros Proxy

  • 자바 기반 오픈 소스 프록시 툴로, 보안 분석에서 널리 사용되어왔다.
  • 기능: HTTP/HTTPS 캡처, 패킷 조작, 간단한 취약점 스캔을 지원한다.
  • 특징:
    • 무료이며 간단한 UI를 제공한다.
    • 다만, 개발이 중단되어 최신 웹 환경에는 적합하지 않다.
  • 용도: 보안 입문자나 교육용에 적합하다.


🔸 Burp Suite

  • 가장 널리 사용되는 웹 보안 분석 프레임워크이다.
  • 기능: 인터셉터, 리피터, 스캐너, 인트루더, 플러그인 등을 포함한다.
  • 특징:
    • 무료(Community)와 유료(Pro) 버전이 존재한다.
    • 자동화된 취약점 스캐너가 Pro 버전에 포함된다.
    • 확장 기능을 통해 다양한 기능을 추가할 수 있다.
  • 용도: 기업 보안팀, 모의해킹, 웹 취약점 진단 전문가에게 적합하다.


🔸 Fiddler

  • 웹/모바일 애플리케이션 트래픽 디버깅에 특화된 프록시 툴이다.
  • 기능: HTTP/HTTPS 트래픽 캡처, 세션 분석, 응답 조작, 성능 측정이 가능하다.
  • 특징:
    • 직관적인 GUI를 제공한다.
    • 디버깅과 개발 목적에 적합하지만 보안 분석 기능은 제한적이다.
  • 용도: 웹 개발자, QA, API 디버깅에 적합하다.


✅ 요약 비교표

항목  Paros Proxy  Burp Suite  Fiddler
목적 웹 보안 점검 (입문용) 전문적인 웹 보안 분석 HTTP 디버깅 및 성능 분석
장점 오픈 소스, 가벼움 강력한 보안 기능, 자동화, 확장성 직관적 UI, 디버깅 편리
단점 구식 UI, 개발 중단 유료(Pro는 고가), 무료 기능 제한 보안 분석 기능은 제한됨
대표 용도 교육/입문용 웹 취약점 점검 침해사고 대응, 모의해킹, 취약점 스캐닝 개발 중 API 테스트, 성능 측정 등
프록시 타입 Forward Proxy Forward Proxy Forward Proxy

✍ 마무리

프록시는 단순한 트래픽 중계 도구가 아니라, 보안 위협을 분석하고 대응할 수 있는 관찰 창구이다.
특히 Burp Suite와 같은 고급 프록시 툴은 침해사고의 실체를 파악하고, 취약점을 실험할 수 있어 침해사고 대응 능력을 크게 향상시킨다.

프록시의 개념과 각 툴의 특성을 명확히 이해하고 실무에 적용할 수 있다면, 보안 대응뿐 아니라 사전 예방 단계에서도 큰 도움이 될 것이다.

 

 

참고자료

https://wikidocs.net/blog/@rybbit/1079/

 

대표적인 프록시 도구 3가지: Paros, Burp Suite, Fiddler

대표적인 프록시 도구 3가지: Paros, Burp Suite, Fiddler

wikidocs.net

https://maker5587.tistory.com/47

 

'Security > CERT' 카테고리의 다른 글

웹 모의해킹 환경구성  (1) 2025.05.16
웹 서비스에서 자주 발생하는 핵심 취약점과 대응 전략  (0) 2025.04.24
웹 쉘이란?  (1) 2025.04.10
웹 보안 취약점(3)  (0) 2025.03.28
웹 보안 취약점(2)  (0) 2025.03.20

+ Recent posts