SSH와 PORT FORWADING?

bean-baek·2023년 5월 5일
0

Born2BeRoot

목록 보기
6/8

SSH (Secure Shell Protocol)

  • 네트워크를 통해 안전하게 원격 로그인을 하고 명령을 실행하기 위한 보안 프로토콜
  • 암호화 기술을 사용하여 데이터를 안전하게 전송
  • 주로 원격 서버에 로그인하여 명령을 실행하거나 파일을 전송하는 데 사용
  • 원격 시스템 간에 데이터를 안전하게 전송하는 데도 사용
  • 다른 프로토콜 (Telnet / FTP : 파일 전송 프로토콜)보다 안전하고 신뢰성 높음 (텍스트 기반으로 데이터를 전송하기 때문에 전송되는 데이터가 평문으로 노출되어 보안에 취약함)

작동 원리 → 예시 github

사용자(Client)가 키를 생성하면 공개키(public key)와 개인키(private key)가 만들어진다.

공개키를 통신하고자 하는 컴퓨터(Server)에 복사하여 저장한다.

  1. 클라이언트가 통신하고자 하는 서버에 요청을 보낸다.
  2. 응답을 하는 서버가 저장하고 있던 공개키를 보낸다.
  3. 클라이언트는 해당 공개키가 자신의 개인키와 한 쌍의 키가 맞는 지 검사한다.(클라이언트에서 자물쇠와 키를 만들어 키를 서버에 보내고, 통신하고자 할 때 다시 그 키가 자물쇠에 맞는 지 확인하는 것이라고 이해하면 쉽다.)
  4. 한 쌍의 키가 맞는 것이 증명되면 드디어 두 컴퓨터 사이에 암호화된 채널이 생성된다.

암호화 된 채널이 생성되면 이 키를 활용해 데이터를 암호화 복호화하여 주고 받게 된다.

사용자와 서버는 각각의 키를 보유하고, 이 키를 이용해 상대를 인증한 뒤 안전하게 데이터를 주고 받게 되는 것.


SSHD (Secure Shell Protocol Daemon)

Daemon? 백그라운드에서 요청을 기다리는 프로그램

→ SSH의 연결을 받기 위해 대기하는 프로세스

따라서 우리가 본투비에서 수정해야 할 내용은 sshd_config(들어오는 설정)이다

(포트를 변경하고 외부 루트 로그인을 허용해야 하기 위해서!)


sudo ufw allow 4242 # 4242 포트 허용
sudo vim /etc/ssh/sshd_config # 포트 번호 변경 및 외부 루트 로그인 허용을 위해 파일 수정
sudo systemctl restart ssh # 다시 시작

systemctl status ssh #openssh 실행 여부와 포

Port Forwading

→ 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송하는 작업

네트워크 - 원격기기 사이 직접적으로 연결 시에 유용

  • HOST IP: 127.0.0.1(localhost, 자기 자신) 또는 ifconfig | grep inet의 값
  • GuestIPhostname -I의 값
  • HOST PORT: 5000(임의로 설정해줌)
  • GUEST PORT: 4242(앞서 가상머신에서 허용해 준 포트번호)
$ ssh name@127.0.0.1 -p 5000 # ssh <사용자 이름>@<HOST IP> -p HOST PORT

TCP (Transmission Control Protocol)

→ 연결 지향적

→ 인터넷에서 데이터를 전송하기 위한 프로토콜.

→ 데이터의 신뢰성과 정확성을 보장하기 위해 설계됨

TCP는 데이터를 세그먼트 단위로 나누어 전송 → 각 세그먼트는 일련번호를 갖고 있어 순서대로 조립됨 → 수신 측에서 각 세그먼트를 확인 → 데이터 전송 중 손실된 패킷을 재전송하여 데이터의 완전성을 유지 (신뢰성 정확성 보장)

💡 Port forwading은 네트워크에서 패킷을 전달하는 것이므로 해당 패킷이 전송되는 프로토콜을 이해하는 것이 중요. port forwading 설정을 할때 **해당 포트가 TCP인지 UDP인지 체크 필요**

UDP(User Datagram Protocol)

→ 비연결성 프로토콜

UDP는 데이트그램 단위(일련번호/확인응답 등의 추가 정보없이 데이터만을 포함) 데이터를 전송

데이터 전송의 신뢰성/정확성은 보장하지 않지만 빠른 전송과 적은 오버해드를 갖고 있어 실시간 스트리밍과 같은 애플리케이션에서 사용

⇒ TCP 와 UDP는 연결 지향성과 신뢰성 여부에서 차이 있음 TCP는 신뢰성 있는 전송을 위해 연결 후 데이터 확인 / UDP는 빠른 전송을 위해 추가 정보를 제외한 데이터만 전송

0개의 댓글