SK shieldus Rookies 16기 (클라우드기반 시스템 운영/구축 실무 #05)

만두다섯개·2024년 1월 9일
0

SK 루키즈 16기

목록 보기
44/52

주요 정보

  • 교육 과정명 : 클라우드기반 스마트융합보안 과정 16기
  • 교육 회차 정보 : '24. 01. 09. 모의해킹 실무 #05

학습 요약

  • Web3-Tier Web System Architecture & Proxy Server
  • HTTTP 메시지 구조
  • Kali, Metasploitable 추가
  • Zeek 설치 및 SCP 로그전송

Web 3-Tier Web System Architecture & Proxy Server

1. 웹 서버 : Front Server

webserver로 HTTP request를 받아 HTTP response 전송한다. Apache, IIS, Nginx 미들웨어 동작하는 서버이다.

2. 애플리케이션 서버

결제, 주문 등 실제 업무를 처리하는 서버로, Apache Tomcat, WebSphere Application 등의 미들웨어로 구현한다.

3. DB 서버

애플리케이션 실행 시, 생성되는 데이터 관리 기능을 가진 미들웨어로, MySQL, PortgressSQL, Oracle Database 등을 사용한다.

URL 구조

Proxy Server

서버와 클라이언트 간 요청/응답을 중계하는 역할 수행 서버(프로그램)이다.
트래픽 부하, 캐시, 보안 등의 목적으로 사용한다.

보안

  • 실제 서버 또는 클라이언트의 IP를 숨김
  • 프록시 서버의 IP만 공개함으로써 해킹 대비 가능

성능

  • 캐싱 기능과 트래픽 분산으로 성능 향상을 가져올 수 있음
  • 캐싱 기능 : 자주 사용되는 동일한 요청을 캐싱하여 재활용하는 방식
  • 실제 서버를 호출하지 않고 프록시 서버가 대신 응답을 주어 서버의 자원 사용을 줄임

트래픽 분산

  • 일부 프록시 서버는 로드 밸런싱도 제공하여 여러 대의 분산된 서버가 있다면 서버의
    트랙픽을 분산시킴

HTTP 메시지 구조

  • WWW 상에서 HTML 문서를 주고 받는 응용 계층 프로토콜
  • TCP 계열로 80번 포트 사용
  • 웹에서 텍스트, 그래픽, 애니메이션을 보거나 사운드 재생 기능
  • 클라이언트와 서버 사이에 이뤄지는 요청(request) / 응답 (response) 프로토콜
  • 현재 인터넷에서 사용되는 HTTP 버전은 HTTP/1.0, HTTP/1.1, HTTP/2.0 임
  • 1997년 1월에 공개된 HTTP/1.1 버전이 현재 가장 많이 사용
  • 무상태(stateless) 프로토콜

Request Method 종류

GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE 를 사용해 서버에 요청한다.

Request & Response


Request : GET 요청
Response : Request 수신완료 (200 OK), Response Header, Response body 응답.

Response Satus message

3XX 코드 : 리다이렉션
1. 301 Moved Permanently : 영구적 URL 이동
2. 302 Found : 일시적 URL 이동

Kali, Metasploitable 추가

Vmware에서 가상환경을 추가한다. VMX 파일을 사용해 구축한다.
1. Kali Linux 추가
우클릭 - 연결 프로그램 - Vmware 추가

IP 설정 변경

sudo su
nano /etc/network/interface

아래 사진과 같이 IP 설정 후 재부팅한다. (NAT는 이미지 추가단계에서부터 설정되어 별도 명시하지 않는다.)

  1. Metasploitable 추가

칼리 리눅스를 추가한것과 동일하게 Vmware 로 Metasploitable.vmx 파일 실행한다.
실행 후 로그인 (msfadmin /msfadmin )한다.
슈퍼유저 권한 가져온다

sudo -s  # msfadmin

nano /etc/network/interfaces 에서 아래와 같이 수정한다.

이후 reboot 명령어로 재부팅한다.


위 사진과 같은 네트워크 환경을 구성하였다.

Zeek 설치 및 SCP 로그전송

ZeekIDS 서버에서 Zeek(구 bro IDS)를 설치 및 사용해보자.
Zeek는 오픈 소스 네트워크 분석 도구이다. IDS에서 로그 모니터링과 감지 후 로그파일 저장한다. 이 역할을 하도록 ZeekIDS에서 Zeek 설치한다.

  1. ZeekIDS Zeek 설치

사전 확인사항
ZeekIDS에서 현재 시간 사용 확인(date 명령어 사용)
시간 동기화 목적으로 ntp 서버인 Splunkserver 사용

#apt update 
#apt-get install curl gnupg2 wget –y
#curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg
#echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list
#apt update -y
#apt-get install zeek -y
#echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
#source ~/.bashrc
#zeek --version

설치가 완료되었다면, Zeek 버전이 아래와 같이 나온다.

  1. Zeek 설정

첫번째로, Zeek 에서 네트워크의 구조가 어떻게 되었는지 설정해줘야 한다. (내/외부 네트워크 구분)
192.168.0.0 대역의 로그를 수집하기 위해 대역을 설정해준다.
/opt/zeek/etc/networks.cfg 파일을 수정해 로그를 수집할 경로를 지정한다.

#nano /opt/zeek/etc/networks.cfg

두번째로, Zeek에서 수집할 네트워크 인터페이스를 정의한다.
현재 네트워크 구성의 인터페이스를 확인한다. (ifconfig)
인터페이스를 /opt/zeek/etc/node.cfg 파일에 수정해준다.

이로써 Zeek도구에 로그 감지 및 수집할 네트워크 구조와 수집할 네트워크 인터페이스를 설정해주었다.

  1. Zeek 실행

Zeek 활성화 시켜준다.

#zeekctl check
#zeekctl deploy
#zeekctl status
#ls –l /opt/zeek/spool/zeek
  1. zeek 실행 상태에서 로그를 확인한다.
#tail /opt/zeek/spool/zeek/conn.log

로그들이 보인다. Zeek에서 로그를 잘 가지고 있다.

  1. SCP 로그 파일 전송

SCP(secure copy protocol) :SSH 프로토콜 기반의 파일전송 프로토콜.
SCP를 사용해 로그파일을 Splunk Server로 전송한다
SCP는 SSH 서비스가 활성화 되어 있어야 한다.

#apt-get install –y openssh-server
#ufw enable
#ufw allow 22/tcp

방화벽을 포함한 SSH 서비스를 활성시켰다. 로그파일을 전송해보자.

scp 명령어참고

/opt/zeek/spool/zeek/conn.log 파일을 SCP를 사용해 Splunk 서버로 전송해보자.

#scp zeek.zip splunk@192.168.10.10:/tmp

profile
磨斧爲針

0개의 댓글