SyntaxHighlighter.all(); 게을러지고 싶어 부지런한 개발자 :: 게을러지고 싶어 부지런한 개발자

유트브의 '해킹공격의 예술 강좌'를 들으며 네트워크 공부를 정리해보겠습니다. 

===================

네트워크 기본 구조

*스위치(허브): 네트워크 단위들을 연결하는 통신장비. 기본적으로 스위칭 작업이라는 것을 하게 되는데 이는 데이터를 목적지까지 전달하는 방법. . 스위치는 1:N 통신이 가능하고, 허브는 1:1통신이 가능   (아래 사진은 스위치임)

  • Learning (테이블에 정보를 저장한다.)
  • Flooding (모르는 정보를 모든 호스트에 뿌린다)
  • Forwarding (알고있는 목적지에 정보를 전달한다)
  • Filtering (다른 목적지로 넘어가지 못하게 한다)
  • Aging (오래된 정보를 지운다

 

*라우터: 패킷의 위치를 추출하여 그 위치에 대한 최상의 경로를 지정하며 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장비.

-라우터가 하는 일? : 라우터는 최적의 경로를 배정하는 일을 함. 모든 패킷들은 목적지를 갈 때 라우터를 거치게 됨. 그때 라우터가 어느 길로 가는 것이 가장 빠른지 계산하여(가중치를 매겨 가장 짧은 길이 최적의 길을 계산) 그 길로 보내게되고, 이를 라우팅이라고 함.

 

논리적 네트워크

*내부 네트워크: 로컬 네트워크개념으로 라우터나 방화벽 안쪽에 자리한 네트워크로 라우터를 넘어가지 않는 이상 내부에 있는 호스트끼리만 통신이 가능한 네트워크이다.

*외부 네트워크: 라우터나 방화벽을 넘어 밖에 위치한 네트워크로 외부 네트워크로 나감으로써 인터넷이 만들어진다. 

(아래 사진에서는 점선을 기준으로 아래는 내부 네트워크이며, 위는 외부 네트워크임. )

 

 

DNS란?

:호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템

예) KT의 DNS주소:  kns.kornet.net  <->168.126.63.1 

 

 

네트워크 연결과정

*TCP/UDP

-TCP는 신뢰성 높은 연결형 프로토콜로 데이터의 손실이나 중복, 순서반전에 대해 자동으로 복구를 해주며 송,수신간에 정확한 데이터 전송이 가능   (ex. 전화로 비유. 전화를 하면 여보세요? 하고 상대도 받는지 수신을 확인해야하고, 끊을 때에도 끊는것을 서로 확인하고 끊게 되므로 연결이 확실함)

-UDP는 간단하고 가벼우며 신뢰할 수 없는 비연결형 프로토콜로 별도의 연결이나 제한없이 데이터를 빠르게 처리 가능 ( ex. 편지로 비유. 보내는 사람은 보내면 끝이고, 받는 사람들이 받는지 않받는지 모름)

 

*3Way-Handshaking

'네트워크' 카테고리의 다른 글

3강) OSI 7 Layer  (0) 2020.01.17
1강) 네트워크, 프로토콜, 네트워크 두 주소  (0) 2020.01.17

유트브의 '해킹공격의 예술 강좌'를 들으며 네트워크 공부를 정리해보겠습니다. 

===================

*네트워크:

컴퓨터들을 연결하여 글들 간에 통신을 하여 정보를 교환하고 자원을 공유할 수 있도록 하는 방법 

 

*네트워크 크기에 따른 분류:

*LAN(Local Area Network) : 소규모 (같은 장소, 범위내에서 연결이 됨)

*MAN(Metropolitan Area Network): 중규모 (다른 피시방에 있던 다른 나라에 있던 통신이 가능)

*WAN(Wide Area Network): 대규모

 

*프로토콜(Protocol)

-정보기기 사이(즉 컴퓨터끼리/컴퓨터와 단말기 사이 등)에서 정보교환이 필요할 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속. 즉, 통신의 규약을 의미  (ex. 한 명이 한국어, 한명이 영어로 대화하면 무슨말인지 모름. 하지만 프로토콜로 두 사람 모두 동일한 언어로 얘기합시다! 라고 약속을 하면 한 언어로 통신이 원활히 될 것)

 

*네트워크의 두 주소

*IP주소: 네트워크상에서 특정 개체를 나타낼 수 있는 논리적

IP 주소 = 네트워크주소 + 호스트주소                                                                                                                               ex) 192.168.0.1      

(네트워크주소는 한 인터페이스의 제공된 주소로서, 192.168.0점대 대역에 있는 모든 네트워크 애들은 서로 다 통신이 가능.   호스트주소는 해당 인터페이스에서 객체를 구분하는 주소, 즉 개개인을 나타내는 인덱스 번호.

이 둘을 구분하기 위해서는 Class로 구분 가능)

 

*MAC주소: 네트워크상에서 특정 개체를 나타내는 물리적 주소

MAC주소 = 제조사번호 + 특정번호                                                                                                                         ex) 00:60:97:8F:4F:86

(네트워크 카드를 만드는 제조사마다 부여되는 번호. 특정번호는 각 제조사가 주는 특정 번호)

 

*ARP(Address Resolution Protocol): IP주소를 MAC주소로 바꾸는 프로토콜

 

*RARP(Reverse Address Resolution Protocol): MAC주소를 IP주소로 바꾸는 프로토콜

 

양주종의 코딩스쿨 인강을 보며 정리한 리눅스 개인 공부노트입니다.  

==================================================

 

▶ root로 로그인. 비밀번호는 r

▶ssh-server 설치확인이 되어있는지 확인: # rpm -qa | grep ssh                                                                          ssh-server가 실행중인지 확인 : # ps -ef | grep ssh

▶ 네트워크로 가서 port 22을 열어줌 

 

▶putty 다운로드(인터넷에 검색해서 다운로드 설치하도록)

▶putty에 접속 (host Name은 127.0.0.1로 하기. 이 번호는 나 자신 컴퓨터를 의미)

 

 

 

양주종의 코딩스쿨 인강을 보며 정리한 리눅스 공부노트입니다.  

=========================================

#VirtualBox 다운로드 하기 (VirtualBox 5.2.34 released October 15 2019 선택함)

https://www.virtualbox.org/wiki/Download_Old_Builds_5_2

 

Download_Old_Builds_5_2 – Oracle VM VirtualBox

Download VirtualBox (Old Builds): VirtualBox 5.2 The Extension Packs in this section are released under the VirtualBox Personal Use and Evaluation License. All other binaries are released under the terms of the GPL version 2. By downloading, you agree to t

www.virtualbox.org

 

# 다운로드 CentOS 설치하기  (CentOS-7-x86 65-Minimal-1908.iso 선택함) 

http://data.aonenetworks.kr/os/CentOS/7/isos/x86_64/

 

Index of /os/CentOS/7/isos/x86_64

 

data.aonenetworks.kr

 

# VirtualBox 실행 후> 왼쪽 상단에 새로만들기 클릭 > 이름: CentOS7로 쓰고 다음클릭 쭈~욱 

 

# 아래처럼 CentOS7 라는 가상의 컴퓨터가 만들어진 것을 확인

 

 

# 설정 클릭을 하면 아래와같은 창이 뜨고, 그 다음 저장소>비어있음>씨디모양의 버튼>가상 광 디스크 파일 선택

- 그 다음, 위에서 설치해놓은 CentOS-7-x86 65-Minimal-1908.iso를 선택 후 확인버튼 클릭

 

# 시작 버튼 부르면 부팅이 시작됨.  즉, 새로운 기계에 리눅스를 부팅을 시키는 것

 

# 검정화면에서 방향키를 눌러 Install CentOS7쪽에 엔터누르기

 

# 상단의 탭 중에 파일 > 환경 설정 클릭하면 아래와 같은 창이 뜨고, 아래의 창에서 입력버튼 > 가상머신 탭 안의 호스트키 조합을 F12로 변경 후 확인 클릭 

 

# 그 다음 한국어를 선택 후 계속 진행 클릭

 

 

 

--------------이제부터 터미널로 로그인 및 명령어---------------

root - r

j - j     (자동 로그아웃은 Ctrl+D) 

-파티션 용량 확인: # df -h

-설치한 패키기 갯수 확인 :# rpm -qa | nl

-핑테스트: # ping 8.8.8.8  (외부 네트워크와 잘 연결되어있는지 확인. Ctrl+C 누르면 정지)

 

텍스트 처리: head, tail, wc, nl, sort, uniq, cut, tr, sed, awk

 

리눅스 커맨드 라인 텍스트 처리 명령어 중 head에 대해 알아볼게요

head는 문서 내용의 앞부분(10줄) 출력을 해달라는 의미입니다.

자주 사용되는 옵션은

-c, [-]NUM   : NUM byte만 출력

-n, [-]NUM    : NUM line만 출력   

예제로 알아볼게요

 

 

$ cat /etc/passwd 는 /etc/passwd를 전체 출력하라는 의미

 

$ head /etc/passwd  는 전체에서 맨 앞 10줄까지만 출력 (head가 앞 10줄 출력하는 명령어)

 

 

$ cat /etc/passwd | head  는 전체(cat) 출력을 한 뒤, 맨 앞에서부터 10줄(head) 출력

$cat /etc/passwd | head -n 2 는 전체(cat) 출력을 하는데, 그 중 맨 앞에서 2줄까지만 출력

 

 

$ cat /etc/passwd | head -n 2는 맨 앞에서 2번쨰줄까지 출력이라면,

$ cat /etc/passwd | head -n -2는 맨 뒤에 있는 두 라인을 제외하고 전체출력 

이번포스팅에서는 1. Java 설치 , 그리고 2. 톰캣설치를 진행거예요!

(이미 난 톰캣과 자바 이클립스를 깔고 쓰고 있다~~ 하더라도 우리는 서버에 프로젝트를 올릴 거니까 open JDK과 JRE를 다시 설치할 것입니다) 

 

지난 포스팅에 바~로 이어서 진행합니다..! 만약에 터미널 명령 칠 수 있는 연결이 끊겼다면, 

[스프링 프로젝트 AWS에 배포 2탄]에 7번부터 10번을 진행해주시면 됩니다. 

 

바로 터미널 명령에서부터 진행할게요!

 

< JAVA 설치 (open JRE & JDK 설치) >

 

0. jre 설치  $ sudo apt-get install openjdk-8-jre 입력 (중간에 Y/N 나오면 Y 입력하고 나머지 설치가 진행됩니다.)

 

 

1. jdk 설치  $ sudo apt-get install openjdk-8-jdk 입력 (중간에 Y/N 나오면 Y 입력하고 나머지 설치가 진행됩니다.)

- 위에서 JRE 설치 진행했던거랑 똑같이 진행되요~

 

 

2. JRE와 JDK 설치 되었으면, java -version 와 javac -version입력하여 버전을 확인 

 

 

 

3. 자바 위치 확인하기

- 풀경로를 확인해보니 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac  이렇게 되있네요

빨간색으로 칠해진 부분까지 java 환경변수($JAVA_HOME)를 설정해볼게요 

 

 

4.  $ sudo nano /etc/profile 을 입력! 그러면 나노편집기 창에 들어갑니다. 

 

 

5. 나노편집기 창에 맨 아래쪽에 export 어쩌구~~~ 로 시작된 저 세 줄을 추가해줍니다. 

(주의: 마지막 줄은 export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH 입니다~~!!  오타안나게 주의해주세요

세 줄을 다 입력했으면, ctrl+o를 누른 뒤, Enter 를 누르면 저장이 됩니다.

그런 다음 나노편집기를 빠져나가야 하므로 ctrl + x 

 

 

6. 방금전 입력한 세 줄이 제대로 들어갔는지 확인해보기위해 다시 

$sudo nano /etc/profile 를 입력 후, 나노편집기를 확인합니다. 제대로 들어갔다면 ctrl + x를 눌러 다시 빠져나올게요.

 

 

 

7. 그다음 $ source /etc/profile로 reload를 해주고, $ sudo reboot now를 통해 서버를 끕니다. 

에러창이 뜨면 확인 눌러주시면 됩니다. 

 

 

8. 위에서 서버 껏으니 다시 터미널 창을 킨 뒤 $ echo $JAVA_HOME하여, $ $JAVA_HOME/bin/javac - version을 입력하여 자바환경변수를 제대로 설정했는지를 확인합니다. 아래처럼 뜨면 잘 설정이 된거예요

이제 톰캣 설치 해볼게요. 

 

 

< TOMCAT설치 >

9. 톰캣 8 설치  $ sudo apt-get install tomcat 입력 (중간에 Y/N 나오면 Y 입력하고 나머지 설치가 진행됩니다.)

 

 

10. 톰캣 버젓을 확인해볼게요 .. $ sudo /usr/share/tomcat8/bin/version.sh 입력!

 

 

11. 포트 8080설정을 위해 $ sudo ufw allow 8080/tcp 입력! 

아래처럼 Rules updates가 뜨면, 이제 외부에서도 접속할 수 있게 된거예요

 

 

12. 톰캣 서비스를 시작합니다 .  $ sudo service tomcat8 start 입력! 

 

13. 이제 한 번 성공적으로 톰캣이 시작되었는지 확인해봐야하므로, aws 계정에서 자신이 생성한 인스턴스 설명을 보면, 자신의 ip주소이 있습니다. 이를 복사 한 뒤

자신의 ip:8080으로 접속해봅니다! 아래처럼 뜨면 성공!! (윈도우에서 톰캣설치 후 화면 띄워보면 고양이 그림이 나오지만, 리눅스 기반에서 우분트로 저는 했지때문에 아래와 같은 창이 대신 뜨네요!! ) 

 

요기까지 화면이 뜨면 톰캣도 제대로 설치되서 웹서비스를 하기위한 준비가 모두 되었다고 볼 수 있어요! 

지난번 포스팅 1탄에는 AWS에 계정을 하나 생성하고, EC2에 인스턴스(서버) 생성, 그리고 IP를 생성해보았습니다. 

 

이번 포스팅에서는 puTTy를 설치하고, 지난 포스팅에서 제가 생성한 인스턴스 서버에다가 puTTy를 이용하여 SSH 프로토콜로 접속을  해보는 시간을 가질게요!!! 

 

============================

 

0. 푸티(puTTy) 설치 (푸티를 설치하면 puTTygen도 함께 설치가 됩니다.) 

여기로 가셔서 푸티를 설치해주세요~~ 

https://putty.ko.softonic.com/

 

1.  puTTygen을 실행시키면 아래처럼 뜹니다. Load 클릭 

 

2. Load 클릭 후 지반 포스팅에서 다운받아 놓은 awsDevProject.pem을 클릭 !!

(안 보이시는 분들은 하단 쪽에 All Files(*.*)로 변경하면 보입니다. 

 

3. 그다음 이런 창이 뜨는데 확인 클릭 

 

4. 예 클릭

 

5. 가상서버에 접속하기 위해 private key를 하나 생성해야해요. 그 key 이름을 전 awsDevProejctKey로 하겠습니다.

그런 다음 저장 클릭!

 

6. 이제 확장자가 ppk인 private key가 생성되었어요 

 

7. IP 번호를 이제 알아놔야 하거든요.. 그러니 본인 aws 계정에 들어가서 왼쪽 사이드에 EC2대시보드를 클릭하면

아래 IP를 알 수 있어요. 이걸 복사합니다. 

 

8. 6번까지는 puTTygen 실행시켜서 진행했었는데, 이제 puTTy를 실행시켜주세요.

아래의 창이 뜨면 ubuntu@복사한 IP 주소를 입력합니다.

Saved Sessions에 awsDevProject라고 입력했구요. Save 버튼을 클릭하면 save버튼 옆에 awsDevProject가 생겨요! 

 

9. 이어서 SSH 클릭 > Auth클릭 > Browse 클릭

 

10. 좀전에 6번에서 만든 private key를 선택하고  Open 클릭! 

 

11. 아래 터미널 창이 뜹니다.!! 바로 puTTy를 이용해서 지난번 포스팅에서 만든 인스턴스 서버에

SSH 프로토콜로 접속한 상태입니다.

그리고 터미널 창에 ls -l 과  ls -al 을 입력하시면 무엇이 들어가있는지 볼 수 있어요

 

12. 마지막으로 위 터미널 창에다가 아래 두 줄을 하나 씩 차례로 입력해주세요! 

(최신버전으로 맞추는 거예요!) 

 

$sudo apt-get update

$sudo apt-get upgrade 

 

 

 

여기까지 puTTy를 이용한 인스턴스 외부접속을 해보았습니다. 

다음 3탄에서 뵐게요~

 

+ Recent posts