SSH 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
3번째 줄: 3번째 줄:
TCP 보안 터널을 형성하여 그 위에서 기타 응용 프로토콜이 안전하게 데이터를 교환하는 채널
TCP 보안 터널을 형성하여 그 위에서 기타 응용 프로토콜이 안전하게 데이터를 교환하는 채널


*적은 비용으로, 비교적 쉽게 구현 가능하고, 안전하여 널리 사용됨
* 적은 비용으로, 비교적 쉽게 구현 가능하고, 안전하여 널리 사용됨


==개요==
== 개요 ==


*표준: SSH Ver.2(SSH-2) <nowiki>RFC 4250</nowiki> ~ 4256
* 표준: SSH Ver.2(SSH-2) <nowiki>RFC 4250</nowiki> ~ 4256
*프로토콜 및 포트 번호
* 프로토콜 및 포트 번호
**전송계층 프로토콜 : TCP 만 가능 (TCP 상에 보안 채널 형성됨)
** 전송계층 프로토콜 : TCP 만 가능 (TCP 상에 보안 채널 형성됨)
**포트 번호 : 22 (SSH 서버에 개방되는 포트)
** 포트 번호 : 22 (SSH 서버에 개방되는 포트)


==주요 특징==
== 주요 특징 ==


*'보안 통신', '포트 포워딩(일종의 터널링)' 등의 기능을 제공
* '보안 통신', '포트 포워딩(일종의 터널링)' 등의 기능을 제공
**암호화되지 않은 telnet,rlogin,SMTP 등에 대한 패킷 스니핑 등의 보안공격 방지
** 암호화되지 않은 telnet,rlogin,SMTP 등에 대한 패킷 스니핑 등의 보안공격 방지
**ex) [[텔넷]]은 로그인명,암호 등 모든 정보를 평문으로 보내므로 중간자 공격에 취약
** ex) [[텔넷]]은 로그인명,암호 등 모든 정보를 평문으로 보내므로 중간자 공격에 취약
*클라이언트/서버 형태
* 클라이언트/서버 형태
**사용자 클라이언트 및 응용 서버 사이에서 SSH 클라이언트 및 SSH 서버가 존재함
** 사용자 클라이언트 및 응용 서버 사이에서 SSH 클라이언트 및 SSH 서버가 존재함
**설치된 두 S/W(SSH 클라이언트 및 SSH 서버) 사이에서 TCP 보안 채널이 형성됨
** 설치된 두 S/W(SSH 클라이언트 및 SSH 서버) 사이에서 TCP 보안 채널이 형성됨
**여기서, 서버는 원격 접근하려는 호스트, 클라이언트는 원격 접근하는 사용자
** 여기서, 서버는 원격 접근하려는 호스트, 클라이언트는 원격 접근하는 사용자


==주요 기능==
== 주요 기능 ==


*인증(Authentication)
* 인증(Authentication)
**클라이언트 인증 및 서버 인증
** 클라이언트 인증 및 서버 인증
**클라이언트 및 서버 간에 보안 채널이 설정되고, 서버 인증이 된 후,
** 클라이언트 및 서버 간에 보안 채널이 설정되고, 서버 인증이 된 후,  
**서버가 클라이언트를 인증할 수 있도록 관련 소프트웨어를 호출하게됨
** 서버가 클라이언트를 인증할 수 있도록 관련 소프트웨어를 호출하게됨
*기밀성 유지 : 암호화(Encryption)
* 기밀성 유지 : 암호화(Encryption)
**데이터 전송 전에 암호화하여 전송
** 데이터 전송 전에 암호화하여 전송
**암호 알고리즘 (대칭키 암호 방식의 사용을 기본으로 함) : BlowFish, 3DES, IDEA
** 암호 알고리즘 (대칭키 암호 방식의 사용을 기본으로 함) : BlowFish, 3DES, IDEA
*무결성(Integrity)
* 무결성(Integrity)
**데이터 전송 중에 중간자 공격에 의한 변경 방지를 위해, MAC 코드를 통해 구현
** 데이터 전송 중에 중간자 공격에 의한 변경 방지를 위해, MAC 코드를 통해 구현
*압축(Compression)
* 압축(Compression)
**보낼 데이터를 압축 수행하고 이를 암호화하여 전송
** 보낼 데이터를 압축 수행하고 이를 암호화하여 전송
*포트 포워딩(일종의 터널링)
* 포트 포워딩(일종의 터널링)


[[파일:SSH의 포트 포워딩.jpg]]
[[파일:SSH의 포트 포워딩.jpg]]


*다중화
* 다중화
**클라이언트와 서버 간에 보안 채널이 형성된 후에,
** 클라이언트와 서버 간에 보안 채널이 형성된 후에,
**클라이언트 측에서 복수의 논리 채널을 설정 가능
** 클라이언트 측에서 복수의 논리 채널을 설정 가능


==프로토콜 계층 구조==
== 프로토콜 계층 구조 ==
[[파일:SSH 스택 구조.jpg]]
[[파일:SSH 스택 구조.jpg]]


*SSH 전송 프로토콜 (SSH Transport Layer Protocol, SSH TLP)
* SSH 전송 프로토콜 (SSH Transport Layer Protocol, SSH TLP)
**서버 인증, 기밀성, 무결성, 압축(옵션) 제공
** 서버 인증, 기밀성, 무결성, 압축(옵션) 제공
**주요 협상 대상 : 키 교환 방식, 공개 키 방식, 대칭 키 방식, 메세지 인증 방식, 해시 알고리즘 등이 클라이언트,서버 간에 협상되어짐
** 주요 협상 대상 : 키 교환 방식, 공개 키 방식, 대칭 키 방식, 메세지 인증 방식, 해시 알고리즘 등이 클라이언트,서버 간에 협상되어짐
*SSH 인증 프로토콜 (SSH User Authentication Protocol)
* SSH 인증 프로토콜 (SSH User Authentication Protocol)
**해당 서버에 대한 사용자 인증(User Authentication) 제공
** 해당 서버에 대한 사용자 인증(User Authentication) 제공
*SSH 연결 프로토콜 (SSH Connection Protocol)
* SSH 연결 프로토콜 (SSH Connection Protocol)
**암호화된 터널들 각각에 다수 논리채널들을 다중화 (1:N) 가능
** 암호화된 터널들 각각에 다수 논리채널들을 다중화 (1:N) 가능
*SSH 응용 프로토콜 : TELNET,RLOGIN,SMTP 등
* SSH 응용 프로토콜 : TELNET,RLOGIN,SMTP 등


==패킷 구성==
== 패킷 구성 ==
[[파일:SSH 패킷.jpg]]
[[파일:SSH 패킷.jpg]]


*length  : type ~ CRC 까지의 길이
* length  : type ~ CRC 까지의 길이
*padding : 보안공격이 쉽지 않도록 1~8 바이트 추가
* padding : 보안공격이 쉽지 않도록 1~8 바이트 추가
*type    : SSH 프로토콜 패킷 유형
* type    : SSH 프로토콜 패킷 유형
*데이터  : 운반되는 실제 데이터
* 데이터  : 운반되는 실제 데이터
*CRC    : 오류검출
* CRC    : 오류검출


==키 구성==
== 키 구성 ==


*'''호스트 키''' : 공개 키(공개) 및 자신의 개인 키(미공개)의 쌍
* '''호스트 키''' : 공개 키(공개) 및 자신의 개인 키(미공개)의 쌍
**최초로 서버에 접속 시도하는 클라이언트는, 해당 서버의 개인 키와 수학적 쌍을 이룬 서버의 '''공개 키'''를 서버로부터 부여 받음
** 최초로 서버에 접속 시도하는 클라이언트는, 해당 서버의 개인 키와 수학적 쌍을 이룬 서버의 '''공개 키'''를 서버로부터 부여 받음
**부여 받은 공개키를 저장한후 이를 통해 데이터 교환 및 향후 접속 때 사용
** 부여 받은 공개키를 저장한후 이를 통해 데이터 교환 및 향후 접속 때 사용
**클라이언트는 자신이 관리하는 호스트 키 DB에 향후 비교를 위해, '''공개된 호스트(서버)의 공개 키'''의 복사본을 저장
** 클라이언트는 자신이 관리하는 호스트 키 DB에 향후 비교를 위해, '''공개된 호스트(서버)의 공개 키'''의 복사본을 저장
*'''세션 키''' : 서버 및 클라이언트가 협상하여 서로 공유하게된 대칭 키
* '''세션 키''' : 서버 및 클라이언트가 협상하여 서로 공유하게된 대칭 키
**클라이언트는 서버의 '''공개 호스트 키'''로써 서버를 인증하고는 '''임의 키'''를 생성하고,
** 클라이언트는 서버의 '''공개 호스트 키'''로써 서버를 인증하고는 '''임의 키'''를 생성하고,
**'''임의 키'''와 서버의 공개 호스트 키로 암호화한 키를 서버로 보내면,
** '''임의 키'''와 서버의 공개 호스트 키로 암호화한 키를 서버로 보내면,
**서버는 자신의 '''개인 키'''로 클라이언트가 암호화한 키를 해독, 클라이언트를 인증하면,
** 서버는 자신의 '''개인 키'''로 클라이언트가 암호화한 키를 해독, 클라이언트를 인증하면,
**세션의 나머지를 이 암호화된 키로써 클라이언트/서버 간 '''세션 키'''를 삼게된 (보안 채널)
** 세션의 나머지를 이 암호화된 키로써 클라이언트/서버 간 '''세션 키'''를 삼게된 (보안 채널)


== 같이 보기 ==
== 참고 문헌 ==


* [[리눅스 ssh]]
* 정보통신기술용어해설
 
==참고 문헌==
 
*정보통신기술용어해설


[[분류:보안]]
[[분류:보안]]
[[분류:프로토콜]]
[[분류:프로토콜]]
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)
원본 주소 "https://itwiki.kr/w/SSH"