기술(IT)

암호화 통신 Secure Shell (SSH) 기술

2019. 11. 4.
728x90

Secure Shell (SSH)은 보안되지 않은 네트워크를 통해 네트워크 서비스를 안전하게 운용하기 위한 암호화 네트워크 프로토콜이다. SSH는 클라이언트-서버 아키텍처에서 보안되지 않은 네트워크를 통해 SSH 클라이언트 애플리케이션을 SSH 서버와 연결하는 보안 채널을 제공한다.  일반적인 애플리케이션에는 원격 명령줄, 로그인 및 원격 명령 실행이 포함되지만, SSH로 모든 네트워크 서비스를 보호할 수 있다. 프로토콜 사양은 SSH-1과 SSH-2라고 하는 두 가지 주요 버전을 구별한다. SSH의 표준 TCP 포트는 22이다. SSH는 일반적으로 유닉스 같은 운영체제에 접속하는 데 사용되지만, 마이크로소프트 윈도에서도 사용할 수 있다. 윈도우즈 10은 OpenSSH를 기본 SSH 클라이언트로 사용한다. SSH는 텔넷과 버클리 rlogin, rsh, rexec 프로토콜과 같은 안전하지 않은 원격 쉘 프로토콜의 대체물로 설계되었다. 그러한 프로토콜들은 특히 패스워드를 일반 텍스트로 전송하여 패킷 분석을 통한 가로채기와 공개에 취약하게 만든다. 에드워드 스노든이 유출한 파일은 국가안보국이 SSH 세션의 내용을 읽을 수 있도록 SSH를 해독할 수 있다는 것을 나타내지만 SSH가 사용하는 암호화는 인터넷과 같은 보안되지 않은 네트워크를 통해 데이터의 기밀성과 무결성을 제공하기 위한 것이다.

정의
SSH는 공개키 암호화를 사용하여 원격 컴퓨터를 인증하고 필요한 경우 사용자 인증을 허용한다. SSH를 사용하는 방법은 여러 가지가 있는데, 하나는 자동으로 생성된 민관 키 쌍을 사용하여 네트워크 연결을 암호화한 다음 암호 인증을 사용하여 로그온하는 것이다. 또 다른 방법은 수동으로 생성된 민관 키 쌍을 사용하여 인증을 수행하여 사용자나 프로그램이 암호를 지정하지 않고도 로그인할 수 있도록 하는 것이다. 이 시나리오에서는 누구나 일치하는 서로 다른 키 쌍을 만들 수 있다. 공용 키는 일치하는 개인 키 소유자에 대한 액세스를 허용해야 하는 모든 컴퓨터에 배치된다. 인증은 개인 키를 기반으로 하는 반면, 키 자체는 인증 중에 네트워크를 통해 전송되지 않는다. SSH는 공용 키를 제공하는 동일한 사람이 일치하는 개인 키를 소유하는지 여부만 검증한다. SSH의 모든 버전에서는 알 수 없는 공개 키를 확인하는 것이 중요하다. 검증 없이 공격자의 공개 키를 수락하면 권한이 없는 공격자가 유효한 사용자로 인증된다.

OpenSSH 키 관리
Unix 유사 시스템에서, 인증된 공용 키 목록은 일반적으로 원격으로 로그인할 수 있는 사용자의 홈 디렉토리에 저장되며, ~/.ssh/authorized_keys 파일에 저장된다. 이 파일은 소유자와 루트 이외의 어떤 것으로도 쓸 수 없는 경우에만 SSH에 의해 존중된다. 공개 키가 원격 끝에 있고 일치하는 개인 키가 로컬 끝에 있는 경우, 암호를 입력할 필요가 없다. 스택과 같은 일부 소프트웨어는 제대로 실행하기 위해 이러한 암호 없는 액세스가 필요할 수 있다. 그러나 추가 보안을 위해 개인 키 자체는 암호로 잠글 수 있다. 개인 키는 표준 위치에서도 찾아볼 수 있으며, 전체 경로는 명령줄 설정으로 지정할 수 있다. ssh-keygen 유틸리티는 공용 키와 개인 키를 항상 쌍으로 만든다. SSH는 자동 생성된 키에 의해 암호화된 암호 기반 인증도 지원한다. 이 경우 공격자는 합법적인 서버측을 모방하여 비밀번호를 요청하고 이를 획득할 수 있다. 그러나, 이것은 SSH가 서버측이 이전에 사용했던 키를 기억하기 때문에, 양측이 이전에 인증한 적이 없는 경우에만 가능하다. SSH 클라이언트는 이전에 알 수 없었던 새 서버의 키를 수락하기 전에 경고를 표시한다. 비밀번호 인증은 비활성화할 수 있다.

사용
SSH는 일반적으로 원격 시스템에 로그인하여 명령을 실행하는 데 사용되지만 터널링, 전달 TCP 포트 및 X11 연결을 지원하며, 관련된 SSH 파일 전송(SFTP) 또는 보안 복사본(SCP) 프로토콜을 사용하여 파일을 전송할 수 있다. SSH는 클라이언트-서버 모델을 사용한다. SSH 서버에 접속하기 위해 표준 TCP 포트 22가 할당되었다. SSH 클라이언트 프로그램은 일반적으로 원격 연결을 수신하는 SSH 대몬에 대한 연결을 설정하는 데 사용된다.  다양한 수준의 복잡성과 완전성을 지닌 독점, 프리웨어 및 오픈 소스가 존재한다. 윈도우즈에서 SSH 서버를 설정하는 것은 일반적으로 설정 앱에서 기능을 사용하도록 설정하는 것을 포함한다.  SSH는 클라우드 기반 가상 머신을 인터넷에 직접 노출시키는 보안 문제를 피하면서 연결 문제를 해결하기 위해 클라우드 컴퓨팅에서 중요하다. SSH 터널은 인터넷을 통해 방화벽을 통해 가상 머신으로 가는 안전한 경로를 제공할 수 있다.

일반적으로 TCP/IP 위에서 실행되는 전송 계층은 서버 인증뿐만 아니라 초기 키 교환을 처리하고 암호화, 압축, 무결성 검증을 설정한다. 각각 크기가 최대 32,768바이트인 일반 텍스트 패킷을 주고받기 위한 인터페이스를 상위 계층에 노출시킨다. 사용자 인증 계층이 계층은 클라이언트 인증을 처리하며 여러 가지 인증 방법을 제공한다. 인증은 클라이언트 기반 암호를 묻는 메시지가 표시되면 서버가 아닌 SSH 클라이언트 프롬프트일 수 있다. 서버는 단지 클라이언트의 인증 요청에 응답할 뿐이다. 
암호: 암호를 변경할 수 있는 시설을 포함한 간단한 암호 인증 방법. 모든 프로그램이 이 방법을 구현하는 것은 아니다.
공개키: 일반적으로 적어도 DSA, ECDSA 또는 RSA 키 쌍을 지원하고 다른 구현에서는 X.509 인증서를 지원하는 공개 키 기반 인증 방법.
키보드 인터랙티브: 서버가 정보를 입력하기 위해 하나 이상의 프롬프트를 보내고 클라이언트가 정보를 표시하고 사용자가 입력한 응답을 다시 보내는 다용도 방법. 일부 오픈에서 사용PAM이 암호 인증을 효과적으로 제공하기 위한 기본 호스트 인증 제공자인 경우 SSH 구성으로, 일반 암호 인증 방법만 지원하는 클라이언트와 로그인할 수 없게 되는 경우도 있다.

LIST

댓글

추천 글