정보보안/네트워크 기초

SNI (Server Name Indication) 필드

록스타★ 2024. 8. 5. 11:51
반응형

서론

SNI(Server Name Indication)는 SSL/TLS 프로토콜의 확장 기능으로, 가장 쉽게 이해하기 위해선 네트워크 통신할 때 암호화가 된다면 그 안에 데이터의 값이 무엇인지 알 수 없는데 SNI 필드를 확인하여 특정 사이트 및 트래픽 등을 확인할 수 있다. 쉽게 말하면 네이버에 네트워크 통신할 때 암호화가 되어 데이터 값을 볼 수 없지만 SNI 필드에는 네이버라는 것이 나와 있어 네이버의 트래픽인 것을 유추할수 있는 개념이다.

 

 

본론

SNI (Server Name Indication)는 SSL/TLS 프로토콜의 확장 기능으로, 클라이언트가 서버에 접속할 때 어떤 호스트 이름에 접근하고자 하는지를 서버에 알리기 위해 사용, 하나의 IP 주소에서 여러 SSL/TLS 인증서를 사용할 수 있도록 하기 위해 사용한다.

 

 

SNI 필요성

공유 호스팅 환경

- 하나의 서버에서 여러 도메인을 호스팅하는 경우 SNI가 없으면 서버는클라이언트가 접속을 시도하는 도메인을 알 수 없기 때문에 다른 인증서를 선택할 수 없다.

SSL/TLS HandShake

- 전통적인 SSl/TLS 핸드셰이크는 암호화가 시작되기 전에 클라이언트가 서버에 접속하려는 호스트 이름을 서버에 알리지 않는데 SNI는 이 부분을 해결한다.

 

 

SNI 동작방식

1. 클라이언트 요청 

- 클라이언트가 SSL/TLS 연결을 시작할 때, 'ClientHello' 메시지에 접속하려는 호스트 이름 포함

2. 서버 응답

- 서버는 'ClientHello' 메시지에서 호스트 이름을 확인, 해당 호스트 이름에 맞는 인증서를 선택하여 'ServerHello' 메시지에서 응답

3. 핸드셰이크 완료 

- 핸드셰이크 과정은 선택된 인증서를 기반으로 진행

 

 

SNI 장점

- SNI를 지원하는 서버는 하나의 IP 주소에서 여러 SSL/TLS 인증서를 사용

- 서버 설정이 단순해지고, 추가 IP 주소 없이도 여러 도메인을 안전하게 호스팅

- 별도의 IP 주소를 할당할 필요가 없어 비용 절감

 

SNI 단점

- SNI를 지원하지 않는 구형 클라이언트에서는 작동 하지 않음

- SNI 필드는 암호화되지 않으므로 네트워크 상에서 호스트 이름 노출

 

 

 

결론

SNI는 SSL/TLS 환경에서 다수의 도메인을 하나의 IP 주소로 호스팅할 수 있게 해주는 중요한 기술이다.

최신 웹 서버와 클라이언트는 대부분 SNI를 지원하여, 유연하고 비용 효율적인 보안 설정을 할 수 있다

하지만 구형 시스템과는 호환이 되지않고 호스트 이름이 노출되어 통신 데이터의 사용자 및 서버가 누구인지 알 수 있다.

사실 패킷 감청? 또는 도청? 같이 IP 별로 어떤 프로그램을 사용하는 지 알 수 있으니 위험할 수도 있고, 공격 대상이 될 수도 있어 뭐가 맞고 틀린 건 없지만, 그래도 SNI 필드에 관련하여 숙지를 하고 있는 게 좋다. 

반응형