Layer 4 Trasport (교육 15일차)

SW·2022년 12월 12일
0



(참고)
IPv4 : 4 byte
Port : 2 byte

가용 Port 주소 : 1 ~ 65535번

프로세스 : 하드디스크에서 프로그램이 실행되어 램 메모리에서 동작하는 과정











서버로 접속하는 방법:
cmd에서 실행한다.
ssh 사용자@IP주소 or ssh 사용자@도메인주소

💥💥💥[Port] 💥💥💥
ftp-data : 20번 -> 자료 전송시 사용
ftp : 21번 -> 자료 전송시 사용
telnet : 23번 -> 원격접속 (평문 전송, 사용x)
ssh : 22번 -> 원격접속 (암호문 전송)
whois : 43번
domain : 53번 (tcp 도메인 질의, 동기화/ udp 도메인 질의)
http : 80번 (평문 전송, 개인정보 이슈로 사용x)
https : 443번 (암호문 전송)
snmp : 161번 -> 네트워크 자원 관리 (tcp / udp)



nslookup: 도메인에 해당하는 IP주소를 알려주는 프로그램

C:\Users\user2>nslookup
기본 서버: ns.dacom.co.kr
Address: 164.124.101.2

naver.com
서버: ns.dacom.co.kr
Address: 164.124.101.2

권한 없는 응답:
이름: naver.com
Addresses: 223.130.200.104
223.130.195.95
223.130.195.200
223.130.200.107

exit

http://223.130.200.104 <-- 브라우저가 80번을 자동으로 넣어준다.

http://223.130.200.104:80
http://223.130.195.95:80
http://223.130.195.200:80
http://223.130.200.107:80

👉 웹서버 Port : 80번 이면 사용자가 입력하지 않아도 브라우저가 자동입력하고,8000번이면 사용자가 수동입력 필요함.
http://naver.com -> 도메인은 IP주소를 알아오기 위함.
빠르게 IP주소를 알아오기 위해 UDP 사용 (DNS 질의)

실습> Guest OS 압축하기

CentOS 설치(시간) 이 많이 들어가는 관계로...
-> 기 설치된 CentOS 압축해서 복사 -> 설치

문제점 2가지
1) IP주소 충돌 : Static이든 DHCP이든 nmtui로 변경하면 됨
2) MAC주소 충돌 : 변경 위치만 파악해서 변경하면 됨

(Tip)
압축 / 복사 설치시 원본 CentOS를 DHCP로 설정해 놓고 진행하면 설치 완료시 IP주소 변경 필요없음

VM웨어 내 해당 CentOS가 켜져있는 상태에서는 해당 폴더에 lck 파일 (락 파일) 3개가 보여짐
(경로 : 내 PC > 문서 > Virtual Machines > CentOS7-1
-> 해당 CentOS 선택 시 하단 메시지가 나타남
(사유 : 비정상종료, 실행중인 CentOS, 선택된 CentOS 3개 중 하나임.)
-> 해당 CentOS 종료 시 lck 파일 3개가 사라짐
-> 해당 CentOS 선택 시 lck 파일 1개가 나타남

즉, 실행중인 CentOS / 마우스로 선택된 CentOS / 비정상종료된 CentOS 없이 압축해야 한다.

※ (참고) 윈도우에서 파일 확장명 보기가 안 되어있는 경우,,,,
보안에 취약하다. 왜? 파일 확장명을 공백을 만들어서 사용자가 다른 파일로 착각하게 한다.
(실제 exc 파일인데 gif 파일인 것처럼 보여지도록 할 수 있음)

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

이미 설치된 Guest OS(CentOS7)을 압축해서 복사하는 과정을 설명한다.

가상머신 위치 : 내문서\Virtual Machines

1. 시스템 종료
# shutdown -h now

2. 압축
폴더명: CentOS7-1
압축명: CentOS7-1.zip

3. 압축해제
CentOS7-1 폴더명이 이미 있다면 다른 이름으로 압축이 풀린다.
CentOS7-1 (2) 라는 이름으로 압축이 풀린다.
CentOS7-1 (2) -> CentOS7-2 로 이름을 변경한다.

4. 가상머신 불러오기
CentOS7-2 로 이동한 후 CentOS7.vmx를 더블클릭해서 실행한다.
만약 vmx가 안보이면 파일 메뉴 > 보기 > 파일 확장명을 체크한다.

**대화창이 하나 뜨면 I Moved It을 클릭한다.

부팅창이 나오면 x 버튼으로 창을 닫고 Power Off 버튼을 클릭한다.**

5. MAC주소 변경
VMware를 실행하면 Guest OS가 동일한 이름이 2개가 나온다.

CentOS7-1 <-- 가장 마지막에 실행한 CentOS7-2가 위에 배치된다.
CentOS7-1

CentOS7-2 <-- CentOS7-2로 이름을 변경한다.
CentOS7-1

CentOS7-2를 선택하고
Edit VirtualMachine Settings 를 클릭한다.

Network Adaptor > Advanced > Generate 를 막 누르면 MAC주소가 변경된다.

6. 부팅
CentOS7-1, CentOS7-2를 부팅한다.

부팅 후 아래와 같은 오류 메시지가 나타날 수 있다.
-> VMware 오류가 나는 문제는 GNS에 연결했을 때 시리얼 포트가 생성된 경우임. 이런 오류가 난다면 아래처럼 삭제해주면 된다.

7. IP주소 변경
부팅 후에 CentOS7-2의 IP주소를 변경한다.
CentOS7-1: 200.200.200.3
CentOS7-2: 200.200.200.4

[root@localhost ~]# nmtui
Edit a connection > ens33 Edit ...
IPv4 CONFIGURATION
Addresses: 200.200.200.4/24
Gateway: 200.200.200.2
DNS servers: 168.126.63.1
[X] Automatically connect

IP주소 변경

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:3f:9b:f4 brd ff:ff:ff:ff:ff:ff
inet 200.200.200.4/24 brd 200.200.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::7a56:a678:ec38:7aa/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::fef4:3253:50bf:13c5/64 scope link noprefixroute
valid_lft forever preferred_lft forever

8. ping test
[root@localhost ~]# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=48.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=48.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=49.2 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=48.7 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 48.717/48.897/49.282/0.225 ms

(참고)
윈도우 : Ping 4번 실행 -> 반복하려면 ping -t
리눅스 : Ping 무한루프 -> 인터럽트 시그널을 받아야 멈춘다. ping -c

리눅스
$ : 일반유저,
# : root (관리자)

실습> 호스트명 변경하기

200.200.200.3: www1.linuxmaster.net
200.200.200.4: www2.linuxmaster.net

호스트명을 변경하는 방법
1. 설치할 때 변경하는 방법
2. hostnamectl 명령어를 이용하는 방법
3. nmtui 명령어를 이용하는 방법
4. /etc/hostname을 직접 편집하는 경우
-> 서버 재부팅이 필요함.

1. hostnamectl 명령어를 이용하는 방법
[root@localhost ~]# hostnamectl --help
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
[root@localhost ~]# hostnamectl set-hostname www1.linuxmaster.net
[root@localhost ~]# cat /etc/hostname
www1.linuxmaster.net
[root@localhost ~]# exit
logout
Connection to 200.200.200.3 closed.

C:\Users\user2>ssh root@200.200.200.3
root@200.200.200.3's password:
Last login: Mon Dec 12 20:38:12 2022 from 200.200.200.1
[root@www1 ~]# hostname
www1.linuxmaster.net

2. nmtui 명령어를 이용하는 방법
[root@localhost ~]# nmtui

시스템의 호스트 이름 설정에서 엔터
호스트 이름: www2.linuxmaster.net

[root@localhost ~]# cat /etc/hostname
www2.linuxmaster.net
[root@localhost ~]# exit
logout
Connection to 200.200.200.4 closed.


C:\Users\user2>ssh root@200.200.200.4
root@200.200.200.4's password:
Last login: Mon Dec 12 20:06:00 2022 from 200.200.200.1
[root@www2 ~]# hostname
www2.linuxmaster.net

실습> 와이어샤크로 패킷 분석하기

목적: UDP/TCP 패킷 분석

VMware Network: VMnet8
IP Address: 200.200.200.3
Subnet Mask: 255.255.255.0
Gateway: 200.200.200.2
DNS: 168.126.63.1

  1. 네트워크 설정
    리눅스에서 위에서 제시한 네트워크를 설정한다.
    [root@www1 ~]# nmtui

네트워크 설정

네트워크를 재시작한다.
[root@www1 ~]# systemctl restart network

자신의 네트워크 정보를 확인한다.
라우터에서 sh ip int b, sh int 인터페이스명
[root@www1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:82:30:bb brd ff:ff:ff:ff:ff:ff
inet 200.200.200.3/24 brd 200.200.200.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::7a56:a678:ec38:7aa/64 scope link noprefixroute
valid_lft forever preferred_lft forever

외부와 통신을 확인한다.
8.8.8.8: 미국 구글 DNS
168.126.63.1: KT DNS
[root@localhost ~]# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=53.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=53.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=52.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=52.3 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 52.368/52.875/53.564/0.468 ms

C:\Users\user2>ssh root@200.200.200.3
The authenticity of host '200.200.200.3 (200.200.200.3)' can't be established.
ECDSA key fingerprint is SHA256:mu6VIWND2Hn0cwthWfk3GwbpNVPUk1p7yKmthf0RMBo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '200.200.200.3' (ECDSA) to the list of known hosts.
root@200.200.200.3's password:
Last login: Sun Dec 4 00:19:15 2022 from 10.10.10.1

2. 패키지 설치
패키지 설치 방법: yum -y install 패키지명

CentOS 8 , Rocky Linux 8 부터 yum이 dnf 로 변경되었다.
하지만 yum 명령어도 사용할 수 있다.
yum 이 dnf에 심볼릭 링크도 되어 있다.

📌 프로그램 설치 / 패키지 관리 rpm, yum 명령어 📌
1) 패키지(프로그램) 조회
rpm - qa
2) 패키지(프로그램) 설치
yum -y install 패키지명
yum : yellowdog update modified
-> rpm 기반의 시스템에서 업데이터 기능을 제공한다.
yum [옵션][명령] [패키지 ···]
-y : 모든 물음에 yes로 대답한다.
install : 시스템에 패키지나 패키지들을 설치한다.
3) 패키지(프로그램) 삭제
rpm -e 패키지명
-> e는 erase의 약자.

아파치 웹서버 패키지명: httpd
[root@www1 ~]# yum -y install httpd
[root@www2 ~]# yum -y install httpd

TCP 패킷 전송 프로그램: nc (netcat)
[root@www1 ~]# yum -y install nc
[root@www2 ~]# yum -y install nc

3. 웹서버 접속 테스트💥💥💥💥💥
Client: 200.200.200.3
Server: 200.200.200.4

Server:
-1. 웹서버를 실행한다.
-2. 웹문서를 생성한다.
-3. 방화벽을 중지한다.

Client
-4. 웹 문서를 요청한다.

텍스트용 웹브라우저(lynx) 설치
[root@www1 ~]# yum -y install lynx

아파치 웹서버를 활성화 시킨 후 실행한다.
[root@www2 ~]# systemctl enable httpd
[root@www2 ~]# systemctl start httpd
[root@www2 ~]# yum -y install net-tools

👀 (참고) 👀
ss와 netstat는 네트워크 소켓 정보를 표시하기 위해 사용한다.

ss명령어는 netstat를 대체하기 위해 나온 명령어로 netstat보다는 ss명령어의 사용을 추천한다.
man ss와 man netstat를 사용해 각각의 명령어에 대한 설명을 보면 아래와 같이 나옴을 통해 확인할 수 있다.

ss
ss is used to dump socket statistics(ss). It allows showing information similar to netstat. It can display more TCP and state information than other tools.

netstat
This program is mostly obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.

상태를 확인하면 외부에서 접속해 오기를 기다리는 LISTEN 상태가 된다.
[root@www2 ~]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :22 :
LISTEN 0 100 127.0.0.1:25
:
LISTEN 0 128 [::]:22 [::]:

LISTEN 0 100 [::1]:25 [::]:
LISTEN 0 128 [::]:80 [::]:
<--

[root@www2 ~]# netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:
LISTEN
tcp6 0 0 :::22 ::: LISTEN
tcp6 0 0 ::1:25 :::
LISTEN
tcp6 0 0 :::80 :::* LISTEN <--

웹문서를 생성한다.
[root@www2 ~]# echo Welcome to my server. > /var/www/html/index.html
[root@www2 ~]# cat /var/www/html/index.html
Welcome to my server.

방화벽을 중지한다.
[root@www2 ~]# systemctl stop firewalld

웹 문서를 요청한다.
[root@www1 ~]# lynx --dump 200.200.200.4
Welcome to myserver.

profile
정보보안 전문가

0개의 댓글