10주차에는
1. 네트워크 관련 개념을 이해하였으며,
2. Telnet Server, SSH Server, VNC Server의 작동 방식을 이해하고 구축하였고,
3. 다양한 Remote Server의 장단점에 대해 배웠습니다.
● 실습 과제 결과
<telnet, ssh, vnc 중 하나를 선택하여 설치 및 설정하고, 원격으로 접속되는 모습을 영상으로 촬영>
-> VNC
● 새로 배운 내용
1. 네트워크
▶ TCP/IP :
• 통신의 송수신을 다루는 TCP (Transmission Control Protocol) -> 데이터를 주고받는 것과 관련된 프로토콜
• 데이터 통신을 다루는 IP (Internet Protocol)
• 패킷 (packet) 통신
<네트워크에서 사용되는 핵심 아이디어>
①
- A 컴퓨터가 B 컴퓨터에게 정보를 요청해서 전달받는 형태 -> 요청해서 요청한 결과값을 받는 사이의 과정이 네트워크
- Internet이 모든 네트워크를 포함하지는 않음. 네트워크 중 하나가 인터넷
- A라는 컴퓨터가 윈도우, 맥 등 기기에 상관없이 데이터를 주고받을 수 있음 -> 프로토콜(규약)이라는 약속을 정해놓고 데이터를 주고받음.
②
Packet (패킷) : 네트워크 상에서 데이터를 주고받는 최소 단위
- 데이터를 주고받을 때, 디지털 기기에서는 0과 1로 되어있는 데이터를 주고 받음, 이것을 한번에 주고받을 수 있는 단위로 끊어서 보낼 수 있는 최소 단위를 패킷이라고 함.
- 데이터를 잘라서 헤더 정보를 추가함. (나눠져있는 패킷의 순서에 대한 정보, 누가 보냈는지에 대한 정보, 받는 곳 (목적지)에 관한 정보 등이 필요)
③ Net : 망 -> 연결 망이 단일 회선으로 되어있는 것이 아니라 여러 망이 있음 (여러 경로 존재)
-> 각각의 패킷들이 분산된 망에서 최적의 경로를 찾아서 패킷을 전달, 전달받은 기기에서는 패킷을 모아서 순서를 맞춰서 조합
④ 인터넷 프로토콜 스위트
User / APP / Kerner / Device -> 각각의 단계별로 필요한 정보가 다름.
예) APP 입장에서는 데이터를 모아서 사용자에게 보여주기 위한 데이터, 보여주기 위한 순서가 중요
Device 입장에서는 디바이스의 주소에 관심
-> 한 번에 처리하는 것이 아니라 각 단계별로 나눠서 처리 (일종의 모듈화)
▶ host name
: 웹페이지 정보는 HTML 파일로 저장되어있음. HTML 파일이 저장된 컴퓨터에게 저장된 데이터를 요청해서 전달받는 것 -> 실제 HTML 파일이 저장된 컴퓨터의 주소를 host name이라고 함.
* host name은 외부에 공개되어있지 않음!
▶ domain name
: ip 주소를 사람이 기억하기 쉬운 이름으로 바꾼 것
예) sungshin.ac.kr
이름 / 카테고리 / 국가명
▶ ip address
컴퓨터의 네트워크 장치(랜카드)에 부여된, 중복되지 않은 주소 예) 210.125.88.13
• IP체계 : [IPv4], [IPv6]
-> IPv4 형태로 표현하는데 사물인터넷 등의 기술이 발전하면서 다양한 기기의 ip 주소가 필요해서 거의 가득 차서 IPv6로 (IPv4는 A, B, C, D 4개의 클래스를 이용해서 표현 -> 조금 더 많은 단계로 표현해서 IPv6, 현재는 혼용해서 쓰고있음.)
• netmask / class
각 class는 0~255 (256개)의 값을 가짐
• network address
: 하나의 네트워크를 전체적으로 표현할 때 사용
▶ broadcast address
: 내부 네트워크의 모든 컴퓨터가 수신하는 주소 (특정 네트워크 안에 여러 내부 네크워크들로 연결, 모든 host에게 전달할 수 있는 주소가 broadcast 주소)
▶ gateway
: 내부 네트워크를 외부로 연결하기 위한 장치 (입구 역할)
▶ DNS server address
: URL을 해당 ip 주소로 변환해주는 서버 컴퓨터
2. IP 주소 확인 실습
ifconfig를 이용해서 IP 주소를 확인하기 위해 apt update 및 apt install net-tools
IP 주소 확인 명령어 : ifconfig / ip addr
- 현재 내 장치 VM ware Server(b)의 주소는 192.168.234.129 (IPv4 주소)
- netmask는 255.255.255.0 / broadcast는 192.168.234.255
inet6: IPv6 체계의 주소 - 16진수로 표현 (사람이 읽고 이해하기는 어려움, 기계가 처리하기는 십진수보다 편리 + 더 많은 장치에 IP 주소를 부여할 수 있음)
gateway 정보 : ip route / netstat -rn
네트워크 설정 정보 출력 : ifconfig ens33
네트워크 장치 정지 : ifdown --all
네트워크 장치 가동 : ifup --all
-> apt install ifupdown 해야 함!
네트워크 설정 (GUI 환경) : nm-connection-editor
네트워크 장치 재가동 : systemctl restart networking
3. 네트워크 : Client-Server Model
▶ Client-Server Model
: 서비스 요청자인 client 와 서비스 자원의 제공자인 server 간에 작업을 분리해주는 분산 애플리케이션 구조이자 네트워크 아키텍처
ㄴ> Client(스마트폰, 노트북, 데스크탑 등)에서 웹브라우저를 통해 정보를 요청했을 때 네트워크(internet)을 통해 Server에게 데이터를 요청 (request) -> 서버에서 요청사항을 보고 요청한 내용을 반환(respond)
▶ 종류
• Web server (Apache 또는 IIS) - Web client (인터넷 익스플로러, 크롬, 사파리, 파이어폭스, 모질라 등)
• Telnet server - Telnet client (telnet, PuTTY 등)
• SSH server - SSH client (ssh, PuTTY 등)
• VNC server - VNC client (vncviewer, TightVNC 등)
-> Telent, SSH, VNC: 데이터를 주고받는 터미널의 역할, 원격 접속 지원
• FTP server - FTP client (FileZilla, wsFTP, ftp, gftp 등)
-> 파일 업로드 및 다운로드
• Oralce server - Oracle client (sqlplus)
-> DB (데이터베이스)
4. Telnet Server
▶ telnet
• 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜
• 1969년 개발되었으며, TCP/IP 스택을 갖춘 대부분의 네트워크 장비와 운영체제에서 사용 가능
• 1973년 UCLA 에서 상세 스펙 정의 / 1990년대 초반까지 대학, 공공기관들 사이의 네트워크에서 주로 사용
• 1990년대 이후 늘어난 인터넷 사용자 및 데이터 양으로 서버를 해킹하는 사례가 증가
-> Telnet은 해킹을 염두하고 만든 프로토콜이 아니기 때문에 해킹에 매우 취약함.
-> 텔넷 서버와 클라이언트를 통해 데이터(패킷)을 주고받을 때, 패킷 감청을 할 수 있음, 주고받는 데이터가 무엇인지 몰래 볼 수 있는 것.예를들어, 로그인 정보가 그대로 보임
• 보안 문제 때문에 SSH 로 대체되고 있음
보안에 대한 부분이 없기 때문에 패킷을 주고받는데 추가적인 데이터가 많이 필요하지 않기 때문에 가벼운 형태로 사용할 수 있다는 장점이 있음. 개인적으로 내부의 서버끼리 원격 접속할 때는 간단하게 사용할 수도 있음.
5. Telnet Server 구축하기
dpkg -l xinetd : xinetd 설치 여부 확인
apt install xinetd telnetd : xinetd, telnetd 설치
* xinetd ? 네트워크와 관련된 서비스를 사용하는데 필요한 일종의 통합서비스
vi /etc/xinetd.d/telnet 에 다음과 같이 입력
- telnet이라는 서비스
- socket type을 stream : TCP 프로토콜을 이용할 경우에 stream (UDP라는 프로토콜을 이용할 경우에는 dgram)
- wait : 서비스 요청을 받은 후에 요청받은 서비스가 아직 종료하지 않았을 때 또다른 서비스 요청이 들어오면 어떻게 할 것인가 - 하나가 끝나기 전까지 기다리거나 새로운 서비스를 요청받거나
-> no : 서비스 요청을 받은 이후에 새로운 서비스 요청이 들어오는 것을 허용할 경우 (socket_type을 stream으로 설정할 경우 wait은 no로 설정해주어야 함.)
- user : 해당 서비스를 어떤 사용자 권한으로 서비스할 것인지
- log_on_failure : 해당 서비스에 접속하지 못하였을 경우에 로그 파일을 기록
-> etc/xinetd.conf 라는 파일에 USERID를 추가
* TCP와 UDP의 차이점 :분산 네트워크 환경에서 패킷들이 전송될 때 두 가지 방법
1) 최적의 경로를 정해놓고 그 경로로 순서대로 패킷을 쭉 보냄 : TCP
-> 통로를 설정하는 시간 필요, 연결이 중간에 끊어지면 처음부터 데이터를 다시 받아야 함 (단점)
데이터를 한번에 보내기 때문에 속도가 빠름 (장점)
2) 패킷을 보내서 각각의 패킷 단위별로 알아서 찾아가도록 다양한 경로로 가서 최종 목적지에서 순서에 맞춰 조합 : UDP
-> 속도가 느림 (단점), 중간에 망이 고장낙나 연결이 끊겨도 다른 경로를 통해 갈 수 있음, TCP 방법에 비해 데이터가 살아남을 확률이 높음. (장점)
adduser linuxta : 접속 테스트용 사용자 추가 (linuxta 라는 사용자, 비밀번호도 linuxta로 설정)
systemctl restart xinetd : telnet 서비스 가동
(* 서비스를 가동하거나 멈추거나 재실행할 떄는 systemctl 명령어 사용)
systemctl status xinetd : telnet 가동 여부 확인
ufw allow 23/tcp : 방화벽에서 telnet 의 23번 포트 허용
(* 텔넷에서는 23번 포트를 주로 사용)
ifconfig : server IP 확인
-> 192.168.234.129
6. Telnet Server 접속하기
▶ 리눅스에서 접속
telnet 192.168.234.129 -> linuxta, linuxta 입력하면 로그인
whoami : 접속 계정 이름 확인
exit :telnet 종료
▶ Windows에서 접속
명령 프롬프트에서
ping 192.168.234.129
* ping: 패킷을 보내는 명령어 (네트워크 상태를 확인하기 위해)
패킷을 4개 보냈는데 4개를 받고 손실된 것이 없음 -> 네트워크가 잘 연결되어 있음.
telnet 192.168.234.129 -> linuxta, linuxta 입력하면 로그인
host 컴퓨터인 windows에서 터미널(명령프롬프트)를 이용해서 우분투 서버의 텔넷으로 접속 -> Windows에서 리눅스 사용 가능
root 로 접속해서 사용도 가능
▶ telnet client(iPuTTY) 에서 접속
iPuTTY 설치 Releases · iPuTTY/iPuTTY · GitHub
위 파일 다운, 압축풀기 후 putty.exe 실행
추가정보를 클릭하면 실행 버튼이 뜸
호스트 이름(또는 IP 주소) 에 192.168.234.129 입력 / 연결 형식에 Telnet 설정 (telnet을 설정하면 자동으로 포트도 변경됨) > 열기 -> linuxta, linuxta
7. OpenSSH Server
▶ Telnet 의 문제점
• 암호화되지 않은 데이터를 전송하여, 네트워크 스니핑(sniffing), IP 스푸핑(spoofing)과 같은 공격에 매우 취약
• Sniffing : 네트워크 상의 패킷 감청, 이 과정을 통해 패킷에 포함된 사용자의 아이디, 암호 같은 개인 정보를 탈취
-> 데이터가 암호화되어있지 않기 때문에 패킷 정보를 그대로 가져와서 바로 내용을 볼 수 있음.
• Spoofing : 호스트의 IP주소를 바꾸어 이를 통해 해커의 컴퓨터를 신뢰롭게 꾸며서 정보를 탈취
-> A에서 B로 데이터를 요청할 때 해커가 패킷의 정보를 바꿔서 해커의 컴퓨터로 접속 (해커의 컴퓨터를 B라고 인식하도록 바꿈) or 요 청한 데이터를 반환할 때 해커의 컴퓨터로 가도록
• “안전하지 않은 네트워크 상에서, 암호화된 채널을 생성하여 안전하게 통신할 수 있는" 프로토콜이 필요함
▶ SSH (Secure SHell)
• 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로 그램 또는 그 프로토콜
▶ Open SSH
• SSH 프로토콜을 이용하여 암호화된 통신 세션을 컴퓨터 네트워크에 제공하는 컴퓨터 프로그램의 모임
• 기존 상용화된 SSH 제품군을 대체할 목적으로 오픈소스로 작성 및 배포
서버와 클라이언트 간에 인터넷을 통해 데이터를 주고 받음. - 텍스트 모드로 접속해서 사용
패킷을 보낼 때 패킷에 암호를 걸어놓음 -> 이 암호는 서버와 클라이언트만 풀 수 있음. 중간에 이 패킷을 가져와도 내용을 열어볼 수 없기 때문에 패킷이 안전하게 전달될 수 있음.
8. OpenSSH Server 구축하기 실습
9. OpenSSH Server 접속하기 실습
▶ 리눅스에서 접속
-> telnet으로 접속했을 때와 ssh로 접속했을 때 사용자들이 보기에는 별 차이가 없어 보임 But 데이터를 주고받는 네트워크 상태에서 패킷이 암호화되었는지/ 암호화되지 않았는지의 차이가 존재
▶ SSH client(iPuTTY)에서 접속
10. VNC Server
▶ VNC (Virtual Network Computing, 가상 네트워크 컴퓨팅)
: 컴퓨터 환경에서 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템
(* telnet이나 ssh는 텍스트 모드 형태로 원격 접속, VNC는 GUI (X 윈도우 모드)를 원격 접속)
▶ VNC server
: 그래픽 모드로 원격 관리를 지원하는 서버 -> 원격지에서 X 윈도우 환경을 사용할 수 있게 해줌
11. VNC Server 구축하기
apt install dconf-editor
dconf-editor (org > gnome > desktop > remote-access / require-encryption 체크 해제)
(* dconf-editor: Windows에서 Telnet 기능 설정과 비슷, 리눅스에서 편리하게 설정할 수 있도록)
-> 192.168.234.128
새로 VM ware을 실행해서 Client로 접속
-> vncviewer 192.168.234.128
● 문제 발생 및 해결 과정
오류 1)
강의자료에서와 동일하게 ifconfig ens33이라는 명령어를 입력했는데 'error fetching interface information: Device not found'라는 메세지가 떠서 살펴보니 내 화면에서는 장치가 ens32여서 생긴 오류였다. 따라서 ifconfig ens32라고 치니 잘 실행되었다.
오류 2)
xinet과 telnetd를 설치하는 과정에서 오류가 발생하였다. 마지막 오류 메세지에 따라 apt-get update를 먼저 실행해보았다. 그랬더니 여기에서도 에러가 발생하여 관련 내용과 해결방법을 검색해보았다.
[Linux] Ubuntu 업데이트 서버 연결 에러 (apt-get update 에러)
https://notpeelbean.tistory.com/entry/linux-Ubuntu-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%EC%84%9C%EB%B2%84-%EC%97%B0%EA%B2%B0-%EC%97%90%EB%9F%AC-aptget-update-%EC%97%90%EB%9F%AC [Linux] Ubuntu 업데..
hs5555.tistory.com
<위 링크를 참고한 해결방법>
$ vi /etc/network/interfaces 를 열고
dns-nameservers 8.8.8.8 8.8.4.4 를 추가.
esc + :wq!로 저장 후 닫기
$ vi /ect/resolv.conf 를 열고
nameserver 8.8.8.8
nameserver 8.8.4.4
를 추가
DNS주소를 바꿔주는 방법이라고 한다. 이 방법대로 실행하였더니 apt-get update가 정상적으로 되었다.
그 후 다시 xinetd와 telnetd를 설치하였더니 정상적으로 설치되었다.
오류 3)
ssh 설치 과정에서 오류 발생
위의 2번의 오류와 비슷한 오류인 것 같아 앞에서처럼 apt-get update를 먼저 해보았다.
apt-get update는 정상적으로 되었지만 다시 시도해도 ssh 설치가 제대로 되지 않았다.
idchowto.com - 스마일서브(Cloudv.kr)
IDC구축,운영,보안등 모든 지식을 공유합니다
idchowto.com
위 링크에서 참고한 내용으로 /etc/apt/sources.list의 내용을 수정한 후 apt-get update를 재실행 한 다음 ssh 설치를 다시 진행하였다.
하지만 또 설치되지 않았다.
계속 해결이 되지 않아 여러 링크들을 통해 해결 방법을 물색해보았는데,
itsfoss.com/unable-to-locate-package-error-ubuntu/
[Solved] "E: Unable to locate package" Error on Ubuntu
This beginner tutorial shows how to go about fixing the E: Unable to locate package error on Ubuntu Linux.
itsfoss.com
위의 링크에서 첫번째로 1. Check the package name 라고 하길래 혹시나 해서 패키지 이름을 보니 server가 아니라 sever라는 오타가 나 있었다.. 오타를 고치자 바로 해결되었다......
● 참고할 만한 내용
juner417.github.io/blog/network-101-ip-subnet/
IP,Netmask,Subnet,CIDR
Network 기초 - IP/Netmask/Subnet/CIDR 참고자료
juner417.github.io
네트워크에 관한 내용 설명 중에 netmask에 관한 부분이 잘 이해가 가지 않았고 수업시간에 간단하게만 보고 넘어가서 궁금해서 찾아보았다.
넷마스크란, 네트워크 주소 부분의 비트를 1로 치환한 것이다. IP 주소와 넷마스크를 AND연산을 하면 네트워크 주소를 얻을 수 있다.
포트[PORT]에 대하여
안녕하세요~* 오랜만에 돌아온 소우주입니다~ 이번 시간에는 PORT(포트)에 대하여 알아보는 시간을 가질까 합니다. 1. PORT(포트), 넌 누구니? 먼저, 위키 백과에 나온 정의를 한 번 볼까요? 포트
run-it.tistory.com
Telnet Server 구축 실습에서 다룬 포트에 대한 내용이 더 궁금하여 검색해보았다.
이 글에서는 '포트를 논리적인 접속장소를 나타내는 이정표' 라고 설명한다. 특정 서버에 접속하려면 URL이나 IP 주소를 입력하여 인터넷 상에서 URL이나 IP를 토대로 해당 서버가 있는 컴퓨터로 찾아간다. 대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있기 떄문에 여러 프로그램 중 내가 접속하려는 프로그램을 컴퓨터에게 알려주어야 하는데, 포트 번호가 이 역할을 한다고 한다.
● 회고
좋았던 점(+)
지금까지는 윈도우와 리눅스 서버를 아예 별개인 것 처럼 실습했는데 윈도우에서 Telnet Server 접속하는 실습이 매우 신기하고 흥미로웠다. 그리고 원격으로 접속되는 과정을 보면서 본격적으로 서버 관리자의 역할에 조금 다가간 것 같아서 재미있었던 실습이었다.
아쉬웠던 점(-)
평소에는 큰 오류 없이 웬만하면 실습이 잘 이루어졌었는데 이번 실습따라 오류가 꽤 많이 나서 조금 당황스러웠다. 하지만 오류 메세지를 자세히 읽어보고 오류를 검색해보면서 어떤 부분에서 에러가 났고, 어떻게 해결하는지 알아보는 과정이 꽤나 재미있어서 의미있었던 실습이 되었다. 잘 해결이 안될 때도 있었지만 여러 방법으로 시도하다 보니까 해결되는 쾌감이 있었다. 그리고 세번째 오류에서 정말 한참 끙끙댔던 부분이 오타로 인한 오류였다는 것을 보고 너무 황당했다. 앞으로는 꼭 잘 체크하자........
새로 알게된 점(!)
네트워크에 관한 개념들을 새로 배우게 되었고, 원격 접속 가능한 서버 클라이언트 모델 세가지 Telnet Server, OpenSSH server, VNC Server에 대해 배우고 접속해보는 실습을 진행하였다. 원격 접속에 관한 내용은 아예 처음 배우는 내용이라 흥미로웠다.
'개발공부 > 컴퓨터시스템관리' 카테고리의 다른 글
[컴퓨터시스템관리] 12주차 실습일지 (0) | 2021.05.24 |
---|---|
[컴퓨터시스템관리] 11주차 실습일지 (0) | 2021.05.16 |
[컴퓨터시스템관리] 9주차 중간고사 과제 (0) | 2021.04.28 |
[컴퓨터시스템관리] 8주차 실습일지 (0) | 2021.04.26 |
[컴퓨터시스템관리] 7주차 실습일지 (0) | 2021.04.19 |