webserver로 HTTP request를 받아 HTTP response 전송한다. Apache, IIS, Nginx 미들웨어 동작하는 서버이다.
결제, 주문 등 실제 업무를 처리하는 서버로, Apache Tomcat, WebSphere Application 등의 미들웨어로 구현한다.
애플리케이션 실행 시, 생성되는 데이터 관리 기능을 가진 미들웨어로, MySQL, PortgressSQL, Oracle Database 등을 사용한다.
서버와 클라이언트 간 요청/응답을 중계하는 역할 수행 서버(프로그램)이다.
트래픽 부하, 캐시, 보안 등의 목적으로 사용한다.
보안
- 실제 서버 또는 클라이언트의 IP를 숨김
- 프록시 서버의 IP만 공개함으로써 해킹 대비 가능
성능
- 캐싱 기능과 트래픽 분산으로 성능 향상을 가져올 수 있음
- 캐싱 기능 : 자주 사용되는 동일한 요청을 캐싱하여 재활용하는 방식
- 실제 서버를 호출하지 않고 프록시 서버가 대신 응답을 주어 서버의 자원 사용을 줄임
트래픽 분산
- 일부 프록시 서버는 로드 밸런싱도 제공하여 여러 대의 분산된 서버가 있다면 서버의
트랙픽을 분산시킴
- WWW 상에서 HTML 문서를 주고 받는 응용 계층 프로토콜
- TCP 계열로 80번 포트 사용
- 웹에서 텍스트, 그래픽, 애니메이션을 보거나 사운드 재생 기능
- 클라이언트와 서버 사이에 이뤄지는 요청(request) / 응답 (response) 프로토콜
- 현재 인터넷에서 사용되는 HTTP 버전은 HTTP/1.0, HTTP/1.1, HTTP/2.0 임
- 1997년 1월에 공개된 HTTP/1.1 버전이 현재 가장 많이 사용
- 무상태(stateless) 프로토콜
GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE 를 사용해 서버에 요청한다.
Request : GET 요청
Response : Request 수신완료 (200 OK), Response Header, Response body 응답.
3XX 코드 : 리다이렉션
1. 301 Moved Permanently : 영구적 URL 이동
2. 302 Found : 일시적 URL 이동
Vmware에서 가상환경을 추가한다. VMX 파일을 사용해 구축한다.
1. Kali Linux 추가
우클릭 - 연결 프로그램 - Vmware 추가
IP 설정 변경
sudo su
nano /etc/network/interface
아래 사진과 같이 IP 설정 후 재부팅한다. (NAT는 이미지 추가단계에서부터 설정되어 별도 명시하지 않는다.)
칼리 리눅스를 추가한것과 동일하게 Vmware 로 Metasploitable.vmx 파일 실행한다.
실행 후 로그인 (msfadmin /msfadmin )한다.
슈퍼유저 권한 가져온다
sudo -s # msfadmin
nano /etc/network/interfaces 에서 아래와 같이 수정한다.
이후 reboot 명령어로 재부팅한다.
위 사진과 같은 네트워크 환경을 구성하였다.
ZeekIDS 서버에서 Zeek(구 bro IDS)를 설치 및 사용해보자.
Zeek는 오픈 소스 네트워크 분석 도구이다. IDS에서 로그 모니터링과 감지 후 로그파일 저장한다. 이 역할을 하도록 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 버전이 아래와 같이 나온다.
첫번째로, Zeek 에서 네트워크의 구조가 어떻게 되었는지 설정해줘야 한다. (내/외부 네트워크 구분)
192.168.0.0 대역의 로그를 수집하기 위해 대역을 설정해준다.
/opt/zeek/etc/networks.cfg 파일을 수정해 로그를 수집할 경로를 지정한다.
#nano /opt/zeek/etc/networks.cfg
두번째로, Zeek에서 수집할 네트워크 인터페이스를 정의한다.
현재 네트워크 구성의 인터페이스를 확인한다. (ifconfig)
인터페이스를 /opt/zeek/etc/node.cfg 파일에 수정해준다.
이로써 Zeek도구에 로그 감지 및 수집할 네트워크 구조와 수집할 네트워크 인터페이스를 설정해주었다.
Zeek 활성화 시켜준다.
#zeekctl check
#zeekctl deploy
#zeekctl status
#ls –l /opt/zeek/spool/zeek
#tail /opt/zeek/spool/zeek/conn.log
로그들이 보인다. Zeek에서 로그를 잘 가지고 있다.
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