SIP TLS
요약:
1. Freeswitch는 에이전트를 요구합니다.TLS 서버 역할을하는 올바른 권한이있는 PEM 파일.
2. TLS (Transport Layer Security).
삼. TLS는 웹 암호화에 사용 된 초기 SSL 프로토콜의 진화입니다.
4. 인증서 및 비대칭 암호화는 TLS의 주요 구성 요소입니다.
5. 인증서는 엔티티를 인증하는 데 사용되며 인증서 당국은 그 진위를 확인합니다.
6. 대칭 및 비대칭 암호화는 데이터 암호화 및 암호 해독에 사용됩니다.
7. TLS는 대량 데이터를 암호화하기 위해 인증 및 비대칭 암호화를 위해 대칭 암호화를 사용합니다.
8. TLS는 안전하지 않은 인터넷을 통해 SIP 대화를 안전하게 설정하는 데 사용될 수 있습니다.
9. Freeswitch는 서명 된 인증서 및 암호화 된 오디오/미디어 (SRTP)로 암호화 된 신호 (SIP)를 지원합니다.
10. FreeSwitch는 SIP 프로파일 내에서 모금에 대한 포트를 구성 할 수 있습니다.
질문:
1. TLS 서버 역할을하는 데 FreeSwitch가 필요한 파일?
답변: Freeswitch는 에이전트를 요구합니다.PEM 파일.
2. 에이전트에 대한 올바른 권한을 갖는 것이 중요한 이유.PEM?
답변: 잘못된 권한은 TLS 리스너가 제대로 작동하지 못하게 할 수 있습니다.
삼. SIP에 사용되는 TL은 무엇입니까??
답변: TLS는 SIP 메시지를 가로 채지 않도록 보호하는 데 사용됩니다.
4. TLS와 SSL의 차이점은 무엇입니까??
답변: TLS는 SSL의 진화이며 SIP와 같은 웹 및 실시간 프로토콜 모두에 사용됩니다.
5. TLS에서 사용되는 인증서는 무엇입니까??
답변: 인증서는 엔티티를 인증하는 데 사용됩니다.
6. 인증 당국의 목적은 무엇입니까??
답변: 인증 당국은 인증서의 진위를 확인합니다.
7. TLS에 사용 된 두 가지 유형의 암호화는 무엇입니까??
답변: 대칭 및 비대칭 암호화.
8. 대칭 암호화는 어떻게 작동합니까??
답변: 동일한 키를 사용하여 데이터가 암호화되고 해독됩니다.
9. 비대칭 암호화는 어떻게 작동합니까??
답변: 데이터는 공개 키와 개인 키를 사용하여 암호화 및 암호 해독됩니다.
10. TLS는 무엇을 대칭 암호화를 사용합니까??
답변: TLS는 인증을 위해 대칭 암호화를 사용합니다.
11. TLS는 무엇을 비대칭 암호화를 사용합니까??
답변: TLS는 대량 데이터를 암호화하기 위해 비대칭 암호화를 사용합니다.
12. TLS를 사용하여 안전하지 않은 인터넷을 통해 안전한 SIP 대화를 설정할 수 있습니까??
답변: 예, TLS는 안전하지 않은 인터넷을 통해 안전한 SIP 대화에 사용할 수 있습니다.
13. Freeswitch는 암호화 된 신호 측면에서 무엇을 지원합니까??
답변: Freeswitch는 SIP로 알려진 암호화 된 신호를 지원합니다.
14. SIP의 기본 포트는 무엇입니까??
답변: SIP의 기본 포트는 TCP 포트 5061입니다.
15. FreeSwitch의 SIP 프로필 내에서 구성 할 수있는 것?
답변: SIP 용 포트는 FreeSwitch의 SIP 프로필 내에서 구성 할 수 있습니다.
SIP TLS
FreeSwitch는 TLS 서버 역할을하기 위해서는 하나의 파일 만 필요하며.PEM 파일. 여기에는 인증서와 청취에 사용할 키가 포함되어 있습니다. 참고 에이전트가 매우 중요합니다.PEM (및 선택적으로 Cacert.PEM) 사용자 FreeSwitch에 대한 읽기 권한이 있습니다. 즉, -u freeswitch를 사용하는 경우 “CHMOD 640 에이전트를 원합니다.Pem Cacert.PEM “및”Chown Root.프리 스위치 에이전트.Pem Cacert.PEM “. 잘못된 권한은 TLS 리스너가 제대로 스핀을 할 수 없습니다. 당신의 vars.XML :
전송 계층 보안 이해 (TLS)
여러 블로그 기사를 통해 i’VE는 SIP의 보안 측면 중 일부를 언급했습니다. SIP 인증으로 입증하여 응답 메시지 및 인증 헤더 사용에 대해 논의했습니다. 이러한 종류의 보안은 프로토콜 수준에서 제공됩니다. 다시 말해, SIP 클라이언트 및 서버는 신원 수준 보안을 시행하는 메시지를 교환합니다. 물론 SIP 자체는 텍스트 기반 프로토콜이므로 메시지와 콘텐츠를 눈을 ounying으로부터 보호하는 무언가가 필요합니다. 입력하다 전송 계층 보안 (TLS)).
TLS는 초기 프로토콜의 진화입니다 보안 소켓 계층 (SSL)). SSL은 몇 년 전에 Netscape (Netscape를 기억하십시오?) 및 웹 브라우저와 웹 서버간에 전송 된 데이터를 암호화하는 데 사용되었습니다. 브라우저의 주소 라인이 포함되어있을 때 SSL을 사용하고 있다는 것을 알았습니다 “https” 그리고 아닙니다 “http.” SSL을 사용하는 경우 일부 브라우저도 잠금 기호를 표시합니다.
SIP가 사용하는 다른 프로토콜의 대부분과 마찬가지로 TLS는 인터넷 엔지니어링 태스크 포스 (IETF)). 처음에는 TLS와 SSL이’t 서로 다른 것. 그러나 1999 년 원래 정의 이후 TLS는 SIP와 같은 웹 및 실시간 프로토콜을위한 매우 안전한 전송 프로토콜로 계속 발전해 왔습니다.
TL의 핵심은입니다 인증서 그리고의 개념 대칭 그리고 비대칭 암호화. 나는이 세 가지에 대해 수천 개의 단어를 쓸 수 있지만 몇 단락에서만 위험 할 정도로 충분히 배울 수 있습니다.
첫째, 인증서는 엔티티가 자체를 식별하기 위해 사용하는 디지털 ID의 형태입니다. 그것을 운전자로 생각하십시오’I IP 구성 요소에 대한 라이센스. 그러나 불쾌한 사람들이 그 운전자를 위조하는 것을 막기 위해’S 라이센스, 인증서 당국 (CA) 인증서의 진위를 검증하는 데 사용되는 존재. 기업이 운영하는 개인 CA가 있습니다. 인터넷을 통해 제공되는 공개 CA도 있습니다. Verisign은 잘 알려진 공개 CA의 예입니다.
다음은 대칭적이고 비대칭 암호화가 나옵니다. 둘 다 데이터 암호화 및 암호화되지 않은 방법과 관련이 있습니다. 대칭 암호화의 경우 데이터가 키로 암호화됩니다. 그것’S는 또한 동일한 키로 암호화되지 않습니다. 따라서 두 개의 다른 엔티티가 그 키를 가지고 있다면 암호화 된 데이터를 앞뒤로 보낼 수 있으며 그 키가없는 사람은 아무도 그들이 말하는 것을 이해하지 못할 것입니다. 대칭 암호화의 강점은 빠르고 최소한의 처리 능력을 사용한다는 것입니다. 약점은 키를 교환하기 위해 안전한 메커니즘이 필요하다는 것입니다.
데이터는 비대칭 암호화로 암호화되지만이 경우 공개 및 개인 키라는 두 가지 키가 있습니다. 공개 키는 일반적으로 IP 엔티티의 인증서 내에 포함되며 해당 인증서를 가진 사람은 누구나 공개 키가 있습니다. 개인 키는 비밀로 유지되며 누구에게도 공개되지 않습니다. 이 두 키는 함께 IP 연결로 전송 된 데이터를 암호화 및 해독하기 위해 함께 작동합니다.
공개 키로 암호화 된 데이터는 관련 개인 키로만 암호화되지 않을 수 있습니다. 개인 키로 암호화 된 데이터는 일치하는 공개 키와 암호화되지 않도록 할 수 있습니다. 이 형태의 암호화는 다음으로 알려져 있습니다 공개 키 암호화. 대칭 암호화보다 더 많은 처리 능력이 필요하지만 클라이언트와 서버 만 해독 할 수있는 안전한 데이터 링크를 만듭니다.
나는 TLS가 대칭 및 비대칭 암호화를 모두 사용한다고 썼다. 인증을 위해 대칭을 사용하고 벌크 데이터의 암호화에 비대칭을 사용합니다. 우리의 경우 대량 데이터는 SIP 메시지 및 응답입니다. 이 데이터는 G와 같은 실제 미디어 흐름이 포함되어 있지 않습니다.711 또는 g.729. 해당 데이터는 사용하여 암호화됩니다 보안 실시간 프로토콜 (SRTP) – 다른 날 블로그.
당신이 여전히 읽고 있다면 나는 당신의 강인함에 박수를 보냅니다. 이것은 이해하기 쉬운 것들이 아닙니다. 그래도 다음을 명심하십시오. 괜찮을 것입니다. 인증서는 클라이언트 및 서버의 진위를 확인하는 데 사용됩니다. 인증서가 위조되지 않았는지 확인하기 위해 인증 당국이 존재합니다. 공개 및 개인 키는 SIP 엔티티간에 교환되는 메시지를 암호화하는 데 사용됩니다. 즉, TLS를 사용하면 안전하지 않은 인터넷을 안전하게 사용하여 안전한 SIP 대화를 설정할 수 있습니다. SIP 메시지가 가로 채워도 이겼습니다’t 말하는 것을 이해할 수 없기 때문에 누구든지 좋은 일을합니다.
SIP TLS
FreeSwitch는 SIPS로 알려진 암호화 된 신호를 지원하며, 서명 된 인증서가있는 SSL 또는 TLS와 SRTP로 알려진 암호화 된 오디오/미디어를 지원합니다. 일반적인 관습은 UDP 포트 5060에 암호화되지 않은 SIP 제어 채널 (표준에도 TCP 포트 5060을 사용할 수 있지만)과 TCP 포트 5061에서 SIPS로 알려진 SSL 암호화 또는 TLS 암호화 된 SIP 제어 채널을 갖는 것입니다 . 아래 그림은 SIP가 포트 5060에있는 것으로 묘사하고 포트 5061 및 포트 (X)에있는 것으로 묘사합니다. FreeSwitch는 SIP 프로필 내 에서이 포트를 구성 할 수 있습니다.
RTP 데이터는 UDP를 사용하지만 RTP가 사용하는 포트는 SIP 제어 채널 내에서 협상된다는 점에서 동적입니다. FreeSwitch는 RTP 스트림의 특정 포트 범위를 사용하도록 구성 할 수 있습니다. 이 페이지의 섹션 1에서는 SIP 연결의 해부학 및 가능한 구성을 살펴 보겠습니다. 시나리오에 가장 적합한 구성을 선택하고 FreeSwitch 시스템을 구성 할 수 있습니다.
SIP 연결의 해부학
먼저, 암호화 (또는 RTP) 스트림이 암호화되었음을 의미한다는 가정에서 발생할 수있는 혼란을 없애기 위해 SIP 연결의 해부학을 검토합시다.
그림 1에는 실제로 세 가지 개별 연결, 하나는 제어 용 TCP가 있고 다른 두 개는 오디오 스트림을 스위치로 전달하기위한 UDP입니다. 제어 채널은 여러 가지 기능을 용이하게하지만, 암호화와 관련하여 우리가 주로 걱정하는 것은 은행 핀과 같이 통화 중에 전화를 걸고있는 DTMF 자리 또는 개인 및 가장 중요한 개인 정보와 같은 다른 종류의 액세스 코드입니다. 그림 1에 묘사 된 시나리오를 사용하면 네트워크의 누구나이 귀중한 데이터를 스니핑하고 해독 할 수 있습니다.
SIPS 연결의 해부학
이 문제에 대한 답은 그림 2에 나와 SSL 또는 TLS 래퍼로 SIP 채널을 암호화하여 와이어의 스니핑 패킷이 제어 채널의 데이터를 해독 할 수 없도록합니다. 그림 2에서는 포트 5061에서와 같이이를 묘사하지만 FreeSwitch를 사용하면 실제로 원하는 특정 포트에 포함시킬 수 있습니다. 이 시나리오는 여전히 오디오 데이터의 패킷을 명확하게 만듭니다. 패킷을 스니핑하는 누군가가 당신의 가청 대화를 재구성 할 수 있고 많은 어려움없이 “듣기”할 수 있습니다.
* 메모: IP 폰은 암호화를 지원한다고 광고 할 수 있지만 SSL 및 TLS 서명 된 인증서를 모두 지원할 수 있도록 사양을 확인할 수 있습니다.
SIPS 및 SRTP 연결의 해부학
그림 3에서는 제어 채널이 암호화 될뿐만 아니라 RTP 스트림도 암호화되어 SRTP로 전송됩니다. 이런 식으로, 그리고 이런 식으로만, 당신의 전체 대화는 도청자들로부터 합리적으로 안전합니다. DTMF 숫자는 RTP 데이터에서도 보낼 수 있기 때문에 중요합니다 (밴드). SIP와 SRTP 암호화가 모두 있으면 SIP 통화가 안전한 지 확인하는 데있어 최선의 선택이됩니다.
* 메모: IP 전화는 암호화를 지원한다고 광고 할 수 있습니다. SRTP를 지원하는지 확인하려면 전화 사양을 확인해야합니다. 이 페이지 하단에있는 특정 전화의 상호 운용성 문제와 함께 아래에 더 많은 내용이 있습니다.
Freeswitch 암호화 기능
이 페이지는 TLS, SSL 및 SRTP 암호화 만 포함합니다.
TLS, SSL 및 SRTP 암호화
Freeswitch는 SSL 및/또는 TLS를 통한 SIP를 SRTP 암호화 기능과 함께 지원합니다. KJV 실험실에서 테스트되지 않았기 때문에 Freeswitch가 비디오 스트림을 암호화할지 여부는 확실하지 않지만, 나는 그것이 가능하다고 생각합니다. SRTP 비디오 암호화 테스트를 수행하는 경우 wiki에 결과를 추가하십시오.
ZRTP 암호화 ZRTP는 이제 삭제되었으며 문서에서 제거됩니다
ZRTP는 FreeSwitch에 편집 할 수있는 기회주의 암호화 기능입니다. ZRTP와 관련된 방법 및 추가 정보는 ZRTP 페이지를 참조하십시오.
하이브리드 암호화
FreeSwitch는 실제로 통과하는 SIP 트래픽에 대한 데이터를 암호화 할 수 있습니다. 이러한 방식으로 기본적으로 암호화를 지원하지 않는 IP 전화에 대한 암호화를 제공 할 수 있습니다. 암호화를 지원하지 않는 수많은 SIP 하드웨어가 있으므로이 구성은 모든 실용 상황에 유용 할 수 있습니다.
그림 4에서는 전화에서 스위치까지의 SIP 제어 채널이 암호화되지 않은 반면 FreeSwitch에서 다른 SIP PBX까지의 제어 채널이 암호화됩니다. 이 상황에서 SIP Control과 RTP (오디오) 데이터는 모두 IP 전화와 Freeswitch 사이에 암호화되지 않음을 이해하는 것이 중요합니다. 따라서 SIP IP 전화가 케이블 모뎀의 NAT 라우터 뒤에있는 경우 FreeSwitch는이 라우터 뒤에 있지 않으면 전화의 LAN과 Freeswitch와의 인터넷 연결이 전적으로 열려 있습니다.
또한 “다른 SIP PBX”로 표시된 FreeSwitch와 원격 엔드 포인트 간의 RTP (오디오) 데이터도 암호화되지 않아 계기 될 수 있지만이 연결을위한 제어 채널이 암호화되어 합리적으로 보안됩니다. Freeswitch가 전화와 동일한 LAN에있는 경우 가로 채기 가능성은 적지 만 오디오 데이터는 여전히 가로 채기 할 수 있습니다.
그림 5에서 IP 전화의 SIP 및 RTP 데이터는 암호화되지 않은 반면 다른 SIP PBX에 대한 SIP 및 RTP 데이터는 SIPS와 SRTP가 암호화되어 있음을 알 수 있습니다. 이 옵션은 FreeSwitch와 암호화를 지원하는 다른 엔드 포인트 간의 연결에 대한 제어 채널과 오디오 데이터를 암호화합니다.
휴대 전화에서 Freeswitch 로의 연결은 패킷 스나이퍼에 의해 전적으로 가로 채울 수 있음을 여전히 이해해야합니다.
암호화 옵션 중에서 선택
위에서 설명한대로 Freeswitch에 대한 다양한 암호화 옵션이 있습니다. TLSV1은 TCP 연결을 통해 모든 것을 암호화합니다. 이것은 TCP로 인한 지터 또는 지연이 발생할 수 있다는 단점이 있습니다. UDP는 일반적으로 RTP에 선호되며 TLSV1을 사용하면 트래픽 오버 헤드가 추가됩니다. 마지막으로 SSLV23이 있습니다. 이로 인해 SSL 인증서를 사용하여 암호화 된 TCP 연결을 통해 SIP 제어 채널을 암호화하지만 기본적으로 RTP 데이터에는 아무것도 제공하지 않습니다. 로그인 정보 및 통화 메타 데이터는 제어 채널을 통해 전송되므로 이것이 보호에 관심이있는 경우 충분하고 RTP 데이터에 오버 헤드를 추가하지 않습니다. 음성 데이터 자체를 암호화하려면 (음성 데이터를 이해할 수 없음) SRTP와 결합 할 수 있습니다. SRTP. 이것은 통화 데이터가 암호화되지만 여전히 UDP를 초과한다는 이점이 있으므로 SRTP와 마찬가지로 거의 차이가 없어야합니다. SRTP에 사용되는 암호화 키는 제어 채널 (SSLV23 암호화)을 통해 교환되므로 두 세계의 최고를 제공합니다. 일반적으로 SSLV23 + SRTP는 가장 방화벽 친화적이며 기존 설치에 가장 적은 변경 사항이 있습니다. SSLV23 + SRTP는 FreeSwitch 서버에서 구성하기가 상당히 쉽고 대부분의 클라이언트 및 SIP 전화에 가장 지원되는 암호화 방법 일 가능성이 높으므로 일반적으로 누군가가 통화 데이터 암호화를 시작 해야하는 곳이어야합니다.
IP 전화 및 암호화 정보
일부 공급 업체는 자신의 제품이 SIP 암호화를 지원한다고 광고합니다. 문제는 SIP 암호화를 얼마나 잘 지원하는지가됩니다. 이 복잡한 마케팅 수수께끼를 검토합시다.
- 전화는 SSL 및/또는 TLS 암호화 된 SIP를 지원할 수 있습니다.
- 전화는 서명 된 인증서가있는 TLS를 지원하기까지 갈 수 있습니다.
- 이러한 경고 위와 그 이상으로, 전화는 SRTP 암호화 오디오 데이터를 지원하기까지 갈 수 있습니다.
- 마지막으로, IP 전화가 지원하는지 확인하십시오 기준 모금 및/또는 SRTP 암호화. 본질적으로 제조업체가 제품과 만 작동하는 모발 암호화 방법을 제조하기에는 그리 멀지 않습니다.
경고: 암호화를 수행 할 수있는 SIP IP 폰을 구입하기 전에 사양을 확인하고 연구를 수행하십시오. 휴대 전화가 실행중인 SIP 펌웨어 버전에 문제가 있는지 확인하고 FreeSwitch와의 상호 운용성이 있는지 확인할 수도 있습니다.
FreeSwitch TLS/SSLV23 구현의 한계 (FS-3877)
불행히도 기본 LIB _ Sofia Stack 및 FreeSwitch 구성에는 진단하기 어려운 암호화 문제를 일으킬 수있는 기본 기본 (예상치 못한) 동작이 있습니다. 클라이언트가 서버에 연결하면 서버와 통신하는 데 사용되는 암호화 된 TCP 채널을 만듭니다. 전화, 등록 등을 배치 할 때마다., 이 TCP 세션을 사용합니다. 불행히도, Freeswitch가 고객과 의사 소통하여 들어오는 전화, 알림 등에 대해 이야기하려고 할 때., 서버에서 클라이언트로 두 번째 TCP 채널을 설정합니다. 이것은 암호화되어 있지만 일부 방화벽 구성 및 FreeSwitch의 많은 TLS/SSL 보안 옵션에 문제가 발생할 수 있습니다. FreeSwitch 가이 채널을 설정할 수없는 경우 클라이언트는 전화를 걸 수 있지만 전화를받을 수는 없지만 (또는 서버에서 클라이언트로 시작된 다른 항목)를받을 수 없습니다. 또한 많은 TLS 기능이 예기치 않게 작동 할 수 있으므로 방향을 고려해야합니다. 예를 들어, “out”으로 설정된 TLS-Verify-Policy는 FreeSwitch가 클라이언트에 다시 연결할 때 클라이언트 인증서를 확인하려고 시도합니다. 따라서 클라이언트가 서버에 처음 연결하고 서버> 클라이언트에서 유효성 검사를 건너 뛸 수 있습니다. FreeSwitch는이를 확인합니다. 또한 보안 구멍을 열 수 있습니다. 예를 들어, 들어오는 클라이언트의 확인을 위해 정책을 “in”으로 설정하면 서버가 클라이언트에 연결할 때 클라이언트 인증서를 확인하지 않으므로 MITM 공격이 발생할 수 있습니다. 특히 FreeSwitch가 고객으로 행동하는 경우 주제 검증과 같은 것들이 까다로울 수 있습니다. 예를 들어, 주제 유효성 검사는 FreeSwitch가 인증서 공통 이름에 연결하는 호스트 이름을 확인하지만 서버가 FreeSwitch에 다시 연결할 때 멋진 보안 검사를 수행 할 수 없습니다 (이 시점에서 FreeSwitch는 실제로 공통 이름에 대해 IP 주소를 확인하려고 시도합니다). 또한 목적 유효성 검사 (Freeswitch가 서버에 연결할 때 클라이언트가 아닌 서버에 대해 발행 된 인증서 또는 그 반대도 마찬가지)는 현재 지원되지 않습니다. 이를 통해 클라이언트 인증서를 사용하여 FreeSwitch 서버에 대한 MITM 공격을 허용하지만 연결로 인해 두 가지 방법으로 진행되면 목적 유효성 검사가 현재 지원되지 않습니다 (수신 연결은 다시 연결하는 동안 서버 인증서에서 나올 수 있으므로). 따라서 Freeswitch의 Gentls _ Cert는 현재 FreeSwitch 자체가 사용하지 않는 목적을 올바르게 할당합니다. 이 MITM 구멍을 피하기위한 한 가지 해결책은 현재 다른 CA에서 클라이언트 CERT를 발급하는 것입니다.
구성
Freeswitch는 SSL 및/또는 TLS를 통한 SIP 신호 트래픽의 암호화를 지원합니다. 컨벤션은 포트 5061에서 모금을 운영하는 것입니다 . 더 복잡한 구성이 가능하지만이 문서에서는 다루지 않습니다.
TLS 암호화 지원으로 Freeswitch를 컴파일하려면 다음이 필요합니다
- LiBSSL-Dev (OpenSSL 개발) 패키지가 설치되었습니다.
LIBSSL-DEV 패키지가 설치되어 있지 않으면 문제는 아래에 지정된 암호화 구성 지시문이 포함 된 SIP _ 프로파일이됩니다.
이 패키지를 설치하지 않고 FreeSwitch를 컴파일 한 경우 암호화를 지원하지 않으며 LIBSSL-DEV 패키지를 설치 한 후에는 다시 컴파일해야합니다.
Debian Do Aptitude 설치 libssl-dev (Lenny에 libcurl4-openssl-dev 설치)를 설치 한 다음 컴파일하십시오.
1 단계 – CA (루트) 인증서 생성
TLS/SSL을 사용하려면 모든 서버의 루트 (CA) 인증서와 인증서가 필요합니다. 스크립트가 있습니다 // freeswitch/bin/gentls _ cert 또는 소스 Tarball 내에서 /스크립트/신사 _ cert 이 파일을 생성하는 데 도움이됩니다. FreeSwitch PBX의 DNS 이름이 PBX라고 가정합니다.프리 스위치.org
./gentls_cert 설정 -CN PBX.프리 스위치.org -alt dns : pbx.프리 스위치.org -org freeswitch.org
Conf/SSL 폴더의 Conf/SSL/CA 디렉토리 및 인증서와 함께 CA 인증서 및 키가 생성됩니다.
[의 뜻 메모: -CN 및 -ALT에 제공된 이름은 FreeSwitch 설치의 DNS 이름과 동일하며 전화의 레지스트라 이름으로 사용됩니다 (적어도 폴리 콤). ] gentls _ cert 파일의 “days = 2190″라인을 변경하여 인증서를 더 오랜 시간 동안 유효하게 만들 수 있습니다. 그러나 너무 길게 만들면 문제가 해결됩니다.
2 단계 – 서버 인증서를 생성합니다
./gentls_cert create_server -cn pbx.프리 스위치.org -alt dns : pbx.프리 스위치.org -org freeswitch.org
서버 인증서를 만듭니다 // freeswitch/conf/ssl/에이전트.PEM. 이 파일에는 인증서와 개인 키가 포함되어 있습니다. 공통 및 대체 이름의 도메인 이름을 포함해야합니다. 다른 서버에 대한 인증서를 생성 해야하는 경우 -out gentls _ Cert 용 플래그를 사용하여 출력 인증서/키 파일 이름을 지정하고 원격 서버에 복사하십시오.
새로운 CA를 설정하고 Windows에서 새 인증서를 만들려면 여기로 이동하십시오.
새 인증서가 적용 되려면 (Freeswitch를 사용하는 유일한 방법) Freeswitch를 다시 시작해야합니다.
메모: -CN 및 -ALT에 제공된 이름은 FreeSwitch 설치의 DNS 이름과 동일하며 전화의 레지스트라 이름으로 사용됩니다 (적어도 폴리 콤). 이것은 아이 빔에 필요합니다 (아마도 Pangolin도).
인증서를 검토하십시오
명령으로 인증서 세부 정보를 검토 할 수 있습니다
OpenSSL X509 -Noout -inform pem -text -in/usr/local/freeswitch/conf/ssl/agent.PEM
3 단계 -Sofia 프로파일 구성
FreeSwitch는 TLS 서버 역할을하기 위해서는 하나의 파일 만 필요하며.PEM 파일. 여기에는 인증서와 청취에 사용할 키가 포함되어 있습니다. 참고 에이전트가 매우 중요합니다.PEM (및 선택적으로 Cacert.PEM) 사용자 FreeSwitch에 대한 읽기 권한이 있습니다. 즉, -u freeswitch를 사용하는 경우 “CHMOD 640 에이전트를 원합니다.Pem Cacert.PEM “및”Chown Root.프리 스위치 에이전트.Pem Cacert.PEM “. 잘못된 권한은 TLS 리스너가 제대로 스핀을 할 수 없습니다. 당신의 vars.XML :
주의 : TLS는 기본적으로 비활성화됩니다. 내부 설정 _ SSL _ 활성화 및/또는 외부 _ SSL _ “true”에 활성화하여 활성화.
4 단계 클라이언트 구성
고객 모두에게 보안을 보장하기 위해 최소한 CA 루트 인증서를 설치해야합니다. 체인 검증을 활성화하지 않고 (승인 된 CA에서 서버 인증서를 발행 됨) 클라이언트에 대한 MITM 공격이 가능합니다. CA 인증서는 conf/ssl/cafile입니다.PEM에는 인증서 만 포함되어 있으며 클라이언트는 CA에서 서버 인증서를 발행하기 위해이를 사용합니다. 또한 동일한 CA에서 발행 한 클라이언트 인증서를 원하는 (또는 장치에 따라)를 원할 수도 있습니다. 명령을 사용하여 클라이언트 인증서를 생성 할 수 있습니다
./gentls_cert create_client -cn client1 -out client1
Client1을 생성합니다.PEM (여기서 공통 이름은 실제로 중요하지 않습니다. 서버가 클라이언트 인증서의 주제를 확인할 수 있도록 서버가 원하는대로 설정할 수 있도록 서버가 거의 활성화되지 않을 것입니다). 이 인증서/키 쌍은 클라이언트에 설치해야하지만 (보안을 위해 각 클라이언트마다 다른 권장) 서버가 클라이언트 인증서를 확인하려는 경우에도 서버에 남아있을 필요는 없습니다. 클라이언트가 다른 FreeSwitch 서버 인 경우 클라이언트 1.PEM 에이전트로 이름을 바꾸고 싶을 것입니다.PEM. 참고 다른 FreeSwitch 서버 가이 인증서를 서버로 사용하는 경우 클라이언트가 아닌 Create _ Server 명령을 사용하여 위의 단계를 따라 서버 인증서를 작성하십시오.
상업용 인증서
대부분의 상업용 웹 서버 인증서는 FreeSwitch에서 작동해야합니다. 예를 들어 Thawte SSL123 인증서 (가장 저렴한 옵션)는 하나 이상의 설치에서 작동하는 것으로 알려져 있습니다. 인증서가 작동하는지에 대해 의문이있는 경우 30 일 환불 정책을 제공하는 회사에서 인증서 만 구매해야합니다.
다중 프로파일 TLS
여러 Sofia SIP 프로파일이있는 경우 각 프로파일에 대한 TLS 지원을 활성화하려고 할 수 있습니다. 그러나 각각 다른 DNS 레코드를 사용하여 제 3 자에게 대표 될 수 있습니다. 이 경우 각 DNS 레코드에 대해 // freeswitch/conf/ssl/아래에 새 디렉토리를 만듭니다 . 그런 다음 에이전트를 놓습니다.Pem과 Cafile.각 디렉토리에 PEM. 각 프로필을 특정 대리인을 포함하는 개별 디렉토리에 가리 킵니다.PEM 파일.
문제 해결
TLSV1 문제
SIP _ 프로필 에서이 구성을 선택한 경우 :
TLS에는 가능한 많은 gotchas와 snafus가 있습니다. TLS는 UDP가 아닌 TCP에서 실행되므로 모든 방화벽이 TCP와 함께 작동하도록 구성되어 있는지 확인하십시오. 적절한 인증서를 생성하고 전화 나 ATA에로드했는지 확인하십시오. 또한 시간이 너무 멀지 않은 경우 암호 “나쁜 인증서”오류 메시지를받을 수 있으므로 엔드 포인트에서 시간이 제대로 구성되어 있는지 확인하십시오. (예를 들어, 인증서는 “이전에 유효하지 않음”과 “다음에 유효하지 않음”속성이 있습니다.) 휴대 전화가 등록되지 않거나 제대로 작동하지 않으면 상호 운용성 목록 및/또는 전화 문서 및 펌웨어 개정을 고려할 수 있습니다. 여전히 제대로 작동하지 않으면 SSLV23을 폴백으로 간주 할 수 있습니다.
SSLV23과 관련된 문제
SIP _ 프로필 에서이 구성 옵션을 선택한 경우 :
이것은 당신에게 데이터를 암호화 할 수있는 능력을 제공합니다. 보안은 웹 서버와 유사하며 인증서 신뢰할 수있는 뿌리를 확인할 수 있으며 클라이언트 인증서 인증이 지원되며, 주제 및 인증 날짜가 검증 될 수 있습니다 (일부는 기능에 대한 클라이언트 지원에 따라 다름). 이것은 실제로 당신이 원하는 것일 수 있으며, 여러 전화기가 TLS를 지원하지 않지만 SSL을 지원한다는 점을 고려하면 그에 따라 구성 할 수 있습니다.
SIP 프로필이 시작되지 않으면
FreeSwitch CLI에 들어가면 다음을 입력하면 다음과 같습니다
TLS/SSL 설정을 구성한 SIP _ 프로필이 누락되었음을 알 수 있습니다. 그렇다면 아마도 libssl-dev 패키지 나 에이전트가 누락 될 것입니다.PEM 파일이 제자리에 있지 않거나 잘못된 권한이 있습니다. 인증서 및 키에 대한 읽기 권한이있는대로 FreeSwitch가 실행되는지 확인하십시오. Sofia Tport 디버그 로깅을 High로 켜면 오류가 제대로 시작되지 않는 이유에 대한 오류를 인쇄하는 데 도움이됩니다. OpenSSL 개발 패키지를 설치하려면 분포를 참조하십시오. FreeSwitch 내에서 암호화를 수행하는 코드가 바이너리에 컴파일해야합니다. 소피아에서 더 높은 수준의 디버그를 활성화 (Sofia Loglevel All 9 또는 Sofia Loglevel Tport 9는 일반적으로 충분히 제공) 및 콘솔에서 문제를 디버깅하고 핸드 셰이크 문제를 도울 수 있습니다.
TLS 협상 오류 ‘일치하는 암호 없음’
‘일치하지 않는 암호’오류 메시지를받는 경우 먼저 인증서 키를 상담원에 연결했는지 확인하십시오.PEM 파일. 여전히 오류를받는 경우 키와 인증서를 모두 재생하고 새로운 에이전트를 만들어.새로운 키와 인증서가 포함 된 PEM, 다시 시도하십시오.
추가 디버깅 단계
TLS를 실행하는 데 여전히 문제가있는 경우 다음이 제안됩니다
- ) Sofia loglevel을 9로 설정합니다 ( < param name="log-level" value="9"/>) autoload _ configs/sofia에서.콘크리트.XML
- ) Freeswitch 콘솔 로그 레벨 설정 디버그 (F8)
- ) Mod Reload _ SOFIA를 검토하고 로그를 검토하십시오
- ) 서버 측에서 모든 것이 잘 보이면 FreeSwitch 또는 FSClient 또는 FSComm과 같은 FreeSwitch 기반 소프트 폰을 사용해보십시오. 이를 통해 클라이언트가 가질 수있는 오류를 시도하고 볼 수 있도록 클라이언트 측 (로그 데이터를 가져 오기 위해 FS _ CLI를 포함하여)에서 동일한 작업을 수행 할 수 있습니다
- ) Last Resort는 모든 로그를 Pastebin에 넣고 도움을 요청합니다.
SSL/TLS 클라이언트로 FreeSwitch 사용
FreeSwitch는 다른 서버와 통신하고 SIP 클라이언트 역할을 할 수 있습니다 (일명 다른 게이트웨이 사용). 이렇게하려면 카파일이 있어야합니다.CA 인증서와 함께 Conf/SSL 폴더의 클라이언트에 대한 PEM. 에이전트도 필요합니다.PEM 파일 (이것은 클라이언트 인증서로 사용되는 동일한 폴더에서 무작위로 생성 된 공개/개인 키 쌍 또는 유효한 클라이언트 인증서 일 수 있음).
고급 TLS 옵션
FreeSwitch는 프로필 설정에서 일부 고급 TLS 매개 변수를 지원합니다. 자세한 내용은 Sofia 구성 파일을 참조하십시오.
SRTP를 사용한 SSLV23의 빠른 설정
서버 내부 호스트 이름이 PBX 인 경우 내부 프로필에서 빠른 설치.프리 스위치.org :
./gentls_cert 설정 -CN PBX.프리 스위치.org -alt dns : pbx.프리 스위치.org -org freeswitch.org ./gentls_cert create_server -cn pbx.프리 스위치.org -alt dns : pbx.프리 스위치.org -org freeswitch.org
고객이 서버 인증서를 지원/확인하는 경우 CA 인증서 conf/ssl/cafile을 복사하십시오.고객에게 PEM.
고객이 5060 대신 포트 5061에서 FreeSwitch에 연결하고 클라이언트에서 TLS (및 가능한 경우 SRTP)를 활성화하도록하십시오. 고객이 서버에서 위의 활성화 옵션 외에도 TLS-BIND-PARAMS에서 TRANLEART = TLS를 FreeSwitch 설정 인 경우. 마지막으로 클라이언트에 대한 통화를 위해 FreeSwitch 서버에서 rtp _ secure _ media = true를 설정하여 SRTP를 넘어갈 수 있도록하려면 (아래 5 단계를 참조하십시오.
FreeSwitch 서버 (또는 Reload Mod _ Sofia)를 다시 시작하고 클라이언트를 연결하도록하면 안전한 전화를 걸고받을 수 있어야합니다! 보안을 개선하려면 전체 TLS 옵션을 확인하고 인증서 검사를 활성화하십시오 (MITM을 중지).
5 단계 – RTP 채널 보안 (선택 사항)
전화에서 유래 한 통화 rtp _ secure _ tls가 설정된 경우 미디어 세트. 글로벌 확장을 확인하십시오. 인바운드 다리가 암호화되면 아웃 바운드 다리에 SRTP가 필요하다고 언급 한 섹션이 있습니다. TLS를 지원하지 않기 때문에 대부분의 ITS에 문제가됩니다.
FreeSwitch에서 유래 (또는 라우팅 된) 호출의 경우 사용자/ Endpoint (e)에서 종료됩니다.g., 전화로 전화), 다음 변경은 종료점이 TLS에 등록 된 경우 SRTP를 가능하게합니다. TLS에 등록하는 것은 유효한 구성이지만 SRTP가 필요하지 않습니다. 사용자/ 엔드 포인트에 대한 유효한 구성 옵션이 비활성화됩니다. 또한 TLS와 연결되는 사용자/ 엔드 포인트에서 ZRTP를 지원하려면 추가 개선이 필요합니다. 이 경우 더 나은 접근 방식은 지원할 RTP 암호화를 지정하는 사용자 디렉토리 항목에 무언가를 설정하는 것입니다. (즉, 이것이 기본 설정이 아닌 이유가 있습니다.))
conf/directory/default 편집.XML과 변경 다이얼 스트링 param to :
좋은 생각 인 이유
위의 SIP 암호화 프라이머에서 RTP 데이터를 암호화하는 이유에 대해 논의했습니다. 이것은 DialPlan에서 주로 수행되며 기능 전용 자체 페이지가 있습니다.
TLS가없는 SRTP 자체는 키가 SIP 오버 SIP의 두 엔드 포인트 사이에서 교환되기 때문에 안전하지 않습니다.
SRTP를 배포하는 방법은 보안 RTP 페이지를 참조하십시오.
sip_secure_media 매개 변수가 더 이상 구현되지 않았으며 RTP_SECURE_MEDIA를 설정해야합니다
완전히 안전한 연결 (신호 + 미디어)을 위해 TLS + SRTP 사용. SRTP가없는 TLS는 SIP를 보호합니다. TLS가없는 SRTP는 실제로 RTP를 보호하지 않습니다!
6 단계 -DNS NAPTR & SRV 레코드 (선택 사항)
TLS 용 DNS NAPTR 및 SRV 구성
TLS가 작동하지 않으면 작동하기 때문에 필요하지는 않지만 권장됩니다. TLS를 설정하려면 올바른 DNS SRV 및 NAPTR 레코드를 설정하는 데 시간이 걸릴 수 있습니다.
다음은 필요한 NAPTR 레코드의 예입니다 ( “도메인에 대한 서브 타이션 작성.com “필요에 따라) :
도메인.com. NAPTR 10 0 “S” “SIPS+D2T” “”_sips._TCP.도메인.com.
도메인.com. NAPTR 20 0 “S” “SIP+D2T” “”_SIP._TCP.도메인.com.
도메인.com. NAPTR 30 0 “S” “SIP+D2U” “”_SIP._udp.도메인.com.
-enable-sctp로 구성하고 Linux에 SCTP를로드 한 경우이 레코드를 추가 할 수 있습니다
도메인.com. NAPTR 10 0 “S” “SIPS+D2S” “”_SIP._SCTP.도메인.com.
그런 다음 위의 NAPTR 외에이 SRV 레코드를 설정하려고합니다
_sips._TCP.도메인.com. SRV 10 0 5061 SIP.도메인.com.
_한모금._udp.도메인.com. SRV 10 0 5060 SIP.도메인.com.
_한모금._TCP.도메인.com. SRV 10 0 5060 SIP.도메인.com.
-enable-sctp로 구성하고 Linux에 SCTP를로드 한 경우이 레코드를 추가 할 수 있습니다
_한모금._SCTP.도메인.com. SRV 10 0 5060 SIP.도메인.com.
예 : SNOM 전화는 FreeSwitch에서 비롯된 아웃 바운드 통화의 Sofia-Sip과 마찬가지로 NAPTR과 SRV를 모두 전적으로 존중합니다.