💡Mission!
이미지 브릿지 모드로 변경하고, 포트 번호 80번으로 변경하고, 친구 컴퓨터에서 잘 나오는지 확인하기!
- 이미지 브릿지 모드로 변경하기
VMware Workstation Edit에서 'Virtual Network Editor' 편집기 열고 Bridged 모드로 변경해주기
- PuTTY 들어가서 네트워크 재설정
sudo nmtui
- nginx 80번 포트로 변경하기
vi /etc/nginx/sites-enabled/default
- index.html 파일 꾸미기
vi /var/www/html/index.html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<img src="./001.jpg">
안녕하세요. Jiwon's 페이지입니다!
</body>
</html>
✏️ 브릿지 모드란?
Bridged 모드를 사용하면 모든 게스트 가상 시스템이 호스트 물리적 시스템과 동일한 서브넷 내에 표시됨. 동일한 물리적 네트워크에 있는 기타 모든 물리적 시스템은 가상머신을 인식하고 가상머신에 액세스 가능.
❓Host-Only?
외부 네트워크와 연결 없이 Host-only 방식을 사용하는 VMware끼리만 통신이 가능. 즉, VMware끼리의 네트워크 대역이 따로 구축되어있어, 외부 네트워크와 호스트 PC와는 통신이 안되고 서로 통신만 가능함
❓NAT?
VMware를 사용할 때, 가장 많이 사용하는 네트워크 방식. NAT 방식을 사용하는 VMware는 IP를 호스트 PC에게서 할당받음. 그리고 호스트 PC는 공유기에게서 IP를 할당받음. (즉, 외부 네트워크와 호스트 PC 전부와 통신 가능)
✏️ Bridge와 NAT의 차이? ⭐
A ) VMware가 IP 할당을 어디서 받느냐의 차이. NAT 방식을 사용하는 VMware가 IP를 호스트 PC에게서 받았다면 Bridge 방식을 사용하는 VMware는 IP를 공유기에게 부여받음. 즉 공유기가 호스트 PC와 가상머신에 같은 네트워크 대역의 IP를 각각 할당하기 때문에 호스트 PC와 가상머신은 동일한 수준의 물리적 PC로 인식됨.
💡Mission!
테트리스 게임을 설치해서 실행해보자!
https://github.com/vicgeralds/vitetris/releases/tag/v0.59.1
1. wget을 통해 tar.gz 파일을 받아온다
2. tar.gz 파일 압축 해제
tar xvzf
3.
apt-get install build-essential
4. 실행할 수 있는 파일을 찾아 실행하기
./configure
5. 상호 접속
./tetris listen 8888 (기다리는 쪽) ./tetris connect 접속할 IP:8888 (접속하는 쪽)
시스템 네트워크 보안 기술
[ 프로토콜의 이해 ]
- 프로토콜(protocol) : 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 메시지가 제대로 도착하지 않으면 메시지를 재전송하는 일련의 방법을 가리키는 '기술적 은어'라는 뜻
- 프로토콜의 3가지 요소!
-1) 구문(syntax) : 데이터의 형식이나 신호로, 부호화 방법 등을 정의
-2) 의미(semantics) : 오류 제어, 동기 제어, 흐름 제어 같은 각종 제어 절차에 관한 제어 정보 정의
-3) 순서(timing) : 송/수신자 간 혹은 양단(end-to-end)의 통신 시스템과 망 사이의 통신 속도나 순서 등을 정의
- 프로토콜의 기능
~> 주소 설정(Addressing) : 각 전송 계층에 맞는 송신자와 수신자의 주소 지정
~> 순서 제어(Sequence Control) : 데이터 단위가 전송될 때 보내지는 순서 명시
~> 데이터 대열의 단편화 및 재조합(Fragmentation & Reassembly)
: 전송 효율이 높은 작은 단위로 단편화 및 응용 프로그램에서 사용하기 위해 재조합
~> 캡슐화(Encapsulation) : 데이터에 제어 정보 덧붙임
~> 연결 제어(Connection Control) : 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행
~> 흐름 제어(Flow Control) : 송신측 개체로부터 오는 데이터의 양이나 속도 조절
~> 오류 제어(Error Control)
: 데이터를 교환할 때 SDU(Service Data Unit)나 PCI(Protocol Control Information)에 대한 오류 검사
~> 동기화(Synchronization)
: 두 개체 간에 데이터가 전송될 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 통해 서로의 상태를 일치시킴
~> 다중화(Multiplexing) : 여러 시스템이 동시에 통신할 수 있는 기법
~> 전송 서비스 : 우선순위 결정, 서비스 등급과 보안 요구 등을 제어
[ 네트워크 계층 프로토콜 ]
- ICMP(Internet Control Message Protocol) : 송신측의 상황과 목적지 노드의 상황을 진단하는 프로토콜
~> 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려줌
~> ICMP를 사용하는 대표 툴은 ping
~> IP는 비연결형 프로토콜로 패킷이 확실히 전송된다는 보장이 없기 때문에 라우터나 노드(호스트) 등에서 오류가 생겨 목적지까지 도달하지 못할 수 있으므로 송신측의 상태를 알려줘야 하는데, 이 때 필요한 것이 ICMP!
~> IP 계층 위에서 동작하지만 TCP, UDP의 전송 계층 프로토콜과는 별개
~> ICMP Echo Request 메시지, ICMP Destination Unreachable 메시지
- IGMP(Internet Group Message Protocol) : 멀티캐스트에 관여하는 프로토콜로 멀티캐스트 그룹 관리
~> 유니캐스트
-> 한 호스트에서 다른 호스트로 전송 (송/수신단이 1:1로 대비)
-> 일반적인 IP 데이터의 전송은 모두 유니캐스트 사용
~> 브로드캐스트
-> 호스트에서 IP 네트워크에 있는 전체 호스트로 데이터 전송
-> TCP/IP에서 브로드캐스트용 주소는 IP 호스트 대역 주소가 모두 '1(2진수로 표현할 시에)'인 경우
-> 일반적인 브로드캐스트는 255.255.255.255
-> 특정 네트워크에 브로드캐스팅 하는 것을 다이렉트 브로드캐스팅
ex) C 클래스의 211.32.34.0 네트워크 대해 브로드캐스팅 하고자 하는 경우 목적지 주소 211.32.34.255
~> 멀티캐스트
-> 유니캐스트와 브로드캐스트의 중간 형태
-> 송신하는 하나의 호스트에 특정한 호스트를 묶어서 전송
-> 지정한 주소로 패킷을 한 번만 전달하면 멀티캐스트 그룹에 속한 모든 호스트에 전달되기 때문에 효율이 높음
-> IP 멀티캐스트 주소는 Class D 주소 대역(244.0.0.1 ~ 239.255.255.255)로 규정
[ 전송 계층 프로토콜 ]
- TCP(Transmission Control Protocol) : 전송 계층에서 동작하는 연결 지향형 프로토콜
[ 응용 계층 프로토콜 ]
: 사용자가 사용하는 응용 프로그램이 네트워크와 통신하기 위해 사용하는 프로토콜
- FTP(File Transfer Protocol) : 파일 전송을 위한 가장 기본 프로토콜, RFC 114로 1971년에 만들어짐
~> FTP 연결은 컨트롤 연결과 데이터 연결로 나뉨
~> 컨트롤 연결
FTP 서버가 21번 포트를 열고 클라이언트의 요청을 기다림(수동적 포트 오픈) -> 클라이언트에서 임의의 포트를 설정하여 FTP 요청을 보냄(능동적 포트 오픈)
- Telnet(23) : 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 직 접 조작할 수 있게 해줌
~> 텔넷이 제공하는 서비스
- 원격 시스템에 표준 인터페이스를 제공하는 네트워크 가상 단말기(NVT, Network Virtual Terminal) 기능을 제공
- 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘을 제공한다. 예를 들어, 7비트 ASCII 코드로 데이터를 주고받을 수도 있고, 8비트 코드로 데이터를 주고받기 가능
- 양단 간의 통신이 대칭적으로 수행되며, 클라이언트측에서 항상 사용자 단말기가 사용되는 대신 임의의 프로그램이 클라이 언트로 작동할 수 있다
- SMTP(Simple Mail Transfer Protocol) : 메일 전송을 위한 프로토콜
- DNS(Domain Name Service) : 도메인 이름 주소를 통해 IP 주소를 확인할 수 있는 프로토콜
- TFTP(Trivial File Trasfer Protocol) : 1985년에 만들어졌으며 FTP처럼 파일을 전송하기 위핸 프로토콜
- HTTP(Hyper Text Transfer Protocol) : 인터넷 서비스를 위한 프로토콜
- POP3(Post Office Protocol 3) & IMAP(Internet Message Access Protocol)
: 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜.
⚠️ IMAP도 POP3와 기본적으로 같으나 메일을 읽은 후에도 메일이 서버에 남는다는 점이 다름
- RPC(Remote Procedure Call) : 썬(Sun)의 Remote Procedure Call을 가리킴
- NetBIOS(Network Basic Input/Output System) : 사무기기와 윈도우 시스템 간의 파일공유를 위한 프로토콜
- SNMP(Simple Network Management Protocol) : 네트워크 관리와 모니터링을 위한 프로토콜
[ 네트워크 서비스 ]
- NAT(Network Address Translation)
- DHCP(Dynamic Host Configuration Protocol)
- DNS(Domain Name System)
💡Mission!
3tier 구축하고 ping 공격해보기
1. 이미지 3개 구축하기
용량이 없어서 여기서부터 못 따라갔다 ^^...
동기분이 차근차근 알려줘서 이해 완료
이 자리를 빌어 정말 감사합니다 ㅎ.ㅎ...ㅎ..
2. Attacker, WEB 이미지 가동
ping 보낼 Attacker에 hping3 다운받기
apt-get install hping3
3. 'Ping of Death'
: ICMP를 이용해 대용량의 조각화 된 패킷을 전송해 Target에서 재조립하지만, 모든 자원을 사용하게 되어 시스템이 다운됨
hping3 --icmp [Target_IP주소] --rand-source
⚠️ log 메세지 그만 보고 싶으면!
hping3 --icmp [Target_IP주소] --rand-source --flood
이로써 ping을 계속 계속 보내는 ping 공격이 완료됨!
4. 공격 받는 서버에서 ping 공격 확인하기!
netstat로 안 보이기 때문에 tcpdump를 사용해서 확인하자!
✏️ tcpdump란?
A) 리눅스/유닉스 계열 OS에서 조건식에 만족하는 네트워크를 통해 송수신 되는 패킷 정보를 표시해주는 프로그램
tcpdump -w icmp.pcap
5. 윈도우에 icmp.pcap 파일 보내서 확인하기
다양한 방법이 있지만 was 서버랑 연동되어 있어서 404 에러가 뜨는 바람에 winSCP 툴을 사용해서 확인했다.
💡Mission!
WAS-WEB 이미지 연동하기!
[ WAS 설치 및 설정 ]
1. VMware Workstation에서 WAS 이미지 가동하기
2. 터미널로 WAS 서버에 접속하기
ssh 계정명@ip주소
3. 톰캣 소스 다운로드
wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.4/bin/apache-tomcat-9.0.4.tar.gz
4. 압축 해제 & 경로 이동
tar xvzf ./apache-tomcat-9.0.4.tar.gz mkdir /usr/local/tomcat mv ./apache-tomcat-9.0.4/* /usr/local/tomcat/
5. java sdk 설치
sudo apt-get install openjdk-8-jdk
6. 톰캣 실행
/usr/local/tomcat/bin/startup.sh
+ 번외로! 톰캣 다운시키는 명령어
/usr/local/tomcat/bin/shutdown.sh
7. 톰캣 구동 확인하기
netstat -anp | grep "8080" or "java"
[ WEB 설정하기 ]
1. nginx 파일 수정하기
vi /etc/nginx/sites-available/default
location / { index index.html index.htm index.jsp; proxy_pass http://[WAS 서버 IP주소]:8080; }
2. nginx 재구동systemctl start nginx service nginx start
3. 브라우저를 통해 웹서버로 요청한 결과 확인하기!
하단 결과화면 참고!
but... ROOT 디렉토리로 설정을 옮겨서 404 에러가 뜬다.
하지만 정상이라는 점! ^^
4. /usr/local/tomcat/webapps/ 아래에 "ROOT" 디렉토리 생성하기
mkdir /usr/local/tomcat/webapps/ROOT/
5. "ROOT"를 "ROOT.ori"로 바꿔주기
mv ROOT ROOT.ori
6. 다시 "ROOT" 생성하기
mkdir ROOT
7. ROOT 디렉토리에 test.jsp 파일 만들어서 꾸며주기
vi test.jsp
8. 톰캣 내렸다가 다시 재구동
/usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
9. 브라우저 상에서 확인하기
[WEB IP 주소]/test.jsp
하단 결과화면2 참고!
✏️ jsp 파일에서 한글이 깨진다면?!
A) 아래 코드를 vi 파일 상단에 달아주자! jsp에서는 메타 태그가 작동하지 않는다.
<%@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%>
오늘의 후기
: 용량을 정리해야겠다. 아직 왜 리눅스를 배우는지조차 잘 이해가 되지 않는데 코딩 처음 시작했을 때처럼 하다보면 자연스럽게 이해가 되는 부분이 생기지 않을까 싶다. 열심히! 매일매일! 꾸준히.. 해야겠다 파이팅 :) ㅋ
'SeSAC > 네트워크 & 리눅스' 카테고리의 다른 글
[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 6일차 (1) | 2023.11.14 |
---|---|
[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 5일차 (0) | 2023.11.09 |
[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 3일차 (2) | 2023.11.07 |
[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 2일차 (0) | 2023.11.07 |
[SeSAC 성동캠퍼스 1기] 네트워크&리눅스 1일차 (0) | 2023.11.06 |