본문 바로가기

OSI Model

26. SSH (7계층 Application Layer 응용 계층)

(7계층 Application Layer 응용 계층)

 

ssh란 telnet 보다 강력한 보안을 제공하는 원격접속 프로토콜이다

 

SSH의 특징은 암호화,인증,압축, 무결성이 있다

 

 

인증

ssh는 사전에 미리 약속된 공개키를 사용하여 인증을 한다

공개키를 설정을 안한 경우에도 패스워드를 이용하여 인증을 한다

 

 

암호화

호스트 사이의 모든 통신이 암호화에 의해 보호되기 때문에 패스워드가 노출되지 않는다

SSH는 네트워크를 통해 전달되는 데이터를 암호화한다

 

3DES, blowfish 등 여러 가지 암호화 방식이 있으며 새로운 암호화 기법을 추가할 수 있다

 

 

무결성

SSH는 MAC(Message Authenticaion Code) 알고리즘을 사용하여 데이터가 변질되는것을 막는다

 

클라이언트가 서버로 메세지를 전송하면 secret key를 받고 그것을 MAC알고리즘에 대입해 MAC코드를 생성한다

 

보내고 싶은 데이터를 암호화하여 MAC코드와 같이 SSH서버로 보낸다

 

서버에서는 받은 메세지를 secret key와 조합하여 MAC코드를 만들고 클라이언트에게 받은 MAC코드와 비교하여 데이더가 변경되지 않았는지 무결성을 검사한다

 

 

압축

ssh는 자동으로 데이터를 압축하여 데이터 크기를 줄여 네트워크 리소스를 줄인다

 

 

전송방식

ssh는 3way-handshake방식으로 정보를 주고 받는다

(TCP방식으로 전송)

 

기본적으로 22번 포트를 사용한다

 

 

 

보안적인 측면

 

telnet보다 보안을 강화하기 위해 만들어졌지만

 

ssh를 이용하여 방화벽을 우회하는 방법들도 생겨났다

 

ssh의 전송방식은 3way-handshake로 클라이언트와 서버간에 세션을 맺는다는 것 이다

이것을 이용한 방법으론

 

예를들면http(80 Port)가 차단된 웹 사이트를 접속이 막힌경우 클라이언트의 리스닝 포트를 열어 놓는다

(할당이 안된 포트중 tcp포트를 열어두면된다 예 8080 , 8585 /tcp port)

 

 

클라이언트는 SSH Server의 22/tcp포트로 SSH Server에 내부로 접속한다

 

 

SSH 클라이언트의 리스닝포트로 접속하고 SSH Server는 22/tcp 로 연결하여 Server내부에 접속한다

 

현재 클라이언트(사용자는) Server 내부에 있기때문에 방화벽에 차단되지 않는다

 

*SSH 프로그램등을 이용하면 쉽게 연결하고 터널링이 가능하다

(밑의 사진은 Xshell6 이라는 프로그램을 사용했다)

 

 

 

 

 

 

 

 

*보안상 SSH의 22/tcp 포트를 차단 또는 변경하는 경우가 있어 무조껀 방화벽을 우회할 수 있는것은 아니다