SSH 란
SSH(Secure Shell)는 네트워크의 컴퓨터 간에 보안 통신을 허용하는 네트워크 프로토콜입니다. 보안되지 않은 네트워크를 통해 암호화된 연결을 제공하므로 원격 액세스 및 시스템 관리에 널리 사용됩니다.
SSH는 클라이언트-서버 모델을 사용하며 일반적으로 포트 22에서 작동합니다. 클라이언트가 SSH 서버에 연결되면 먼저 키 교환을 수행하여 보안 연결을 설정합니다. 서버는 자신의 공개 키를 클라이언트로 보내고 클라이언트는 공개 키로 메시지를 암호화하여 다시 서버로 보냅니다. 그런 다음 서버는 개인 키로 메시지를 해독하여 후속 통신을 암호화하는 데 사용되는 클라이언트와 서버 간의 공유 비밀을 설정합니다.
보안 연결이 설정되면 클라이언트는 원격 로그인, 파일 전송 및 명령 실행을 포함하여 서버에서 다양한 작업을 수행할 수 있습니다. SSH는 또한 사용자가 방화벽 뒤의 네트워크 리소스에 안전하게 액세스할 수 있도록 하는 포트 포워딩을 지원합니다.
SSH의 주요 이점 중 하나는 도청 및 중간자 공격으로부터 보호하는 강력한 암호화 및 인증 메커니즘입니다. SSH에는 추가 보안 계층을 제공하는 공개 키 인증, 2단계 인증 및 호스트 기반 인증과 같은 기능도 포함되어 있습니다.
보안 기능 외에도 SSH는 고도로 구성 가능하며 다양한 사용 사례에 맞게 사용자 정의할 수 있습니다. 예를 들어 VPN 연결을 설정하고 SSH를 통해 트래픽을 터널링하며 원격 데스크톱에 대한 보안 액세스를 제공하는 데 사용할 수 있습니다.
전반적으로 SSH는 보안되지 않은 네트워크에서 보안 통신을 제공하는 강력하고 유연한 프로토콜입니다. 강력한 암호화 및 인증 메커니즘은 특히 보안이 최우선 순위인 엔터프라이즈 환경에서 원격 액세스 및 관리에 널리 사용됩니다.
SSH packet 구조
SSH 패킷의 구조는 헤더와 페이로드로 구성됩니다. 헤더에는 패킷 유형, 시퀀스 번호 및 길이와 같은 패킷에 대한 메타데이터가 포함됩니다. 페이로드에는 전송되는 실제 데이터가 포함됩니다.
다음은 SSH 패킷 구조의 예입니다.
+-------------------------+
| Packet Length (4 bytes) |
+-------------------------+
| Padding Length (1 byte) |
+-------------------------+
| Payload (Variable length) |
+-------------------------+
| Padding (Variable length) |
+-------------------------+
패킷 헤더의 각 필드는 다음과 같습니다.
Packet Length: 헤더와 페이로드를 포함한 패킷의 전체 길이를 나타내는 4바이트 필드입니다.
Padding Length: 패킷 길이가 4의 배수가 되도록 페이로드 끝에 추가되는 패딩의 길이를 나타내는 1바이트 필드.
Payload: SSH 사용자 인증 요청 또는 암호화된 데이터와 같이 전송되는 실제 데이터를 포함하는 가변 길이 필드입니다.
Padding: 패킷 길이가 4의 배수가 되도록 페이로드 끝에 추가되는 임의의 데이터를 포함하는 가변 길이 필드입니다. 패딩은 공격자가 전송 중인 데이터에 대한 정보를 추론하기 위해 패킷 길이를 사용하는 것을 방지하는 데 필요합니다. .
SSH 패킷의 정확한 구조는 전송되는 패킷 유형에 따라 다를 수 있지만 모든 SSH 패킷에는 어떤 형태로든 헤더와 페이로드가 포함됩니다.
SSH 동작
SSH는 암호화를 사용하여 클라이언트와 서버 간에 전송되는 데이터의 기밀성과 무결성을 보호하고 인증된 사용자에게만 원격 시스템에 대한 액세스 권한이 부여되도록 합니다.
SSH 동작 방식은 다음과 같습니다.
클라이언트가 연결 요청을 보냅니다: SSH 클라이언트는 SSH를 통해 원격 시스템에 연결하라는 요청을 보냅니다.
서버가 식별 문자열로 응답: SSH 서버는 서버의 SSH 버전 번호와 지원되는 암호화 알고리즘 및 기타 매개변수 목록을 포함하는 식별 문자열로 응답합니다.
키 교환: 클라이언트와 서버는 키 교환 프로토콜을 사용하여 그들 사이에 전송되는 데이터를 암호화하고 해독하는 데 사용할 공유 비밀 키를 설정합니다. SSH에서 사용되는 가장 일반적인 키 교환 알고리즘은 Diffie-Hellman입니다.
사용자 인증: 클라이언트는 암호 인증, 공개 키 인증 또는 이 둘의 조합과 같은 다양한 방법을 사용하여 서버에 자신을 인증합니다. 서버는 클라이언트의 신원을 확인하고 인증에 성공하면 시스템에 대한 액세스 권한을 부여합니다.
보안 채널: 클라이언트가 인증되면 키 교환 중에 생성된 공유 비밀 키를 사용하여 클라이언트와 서버 간에 보안 채널이 설정됩니다. 클라이언트와 서버 간에 전송되는 모든 데이터는 이 키를 사용하여 암호화되고 해독됩니다.
명령 실행: 이제 클라이언트는 원격 시스템에서 명령을 실행할 수 있으며 결과는 보안 채널을 통해 클라이언트로 다시 전송됩니다.
SSH 연결을 통해 클라이언트와 서버는 모두 특정 형식의 정보 패킷을 교환합니다(이전 답변에서 언급한 대로). 이렇게 하면 통신이 안전하고 전송된 데이터가 가로채기 또는 변조로부터 보호됩니다.
'IT-Network' 카테고리의 다른 글
NIC (Network Interface Card)에 대하여 (0) | 2023.05.21 |
---|---|
Firewall (0) | 2023.04.29 |
FTP (0) | 2023.04.27 |
SMTP (0) | 2023.04.26 |
UDP에 대하여 (0) | 2023.04.25 |
댓글