ejabberd starttls_required in c2s/s2s and disable SSLv3 + unsecure Ciphers

7,010

Solution 1

Requiring StartTLS:

{s2s_use_starttls, require}. instead of {s2s_use_starttls, true}. (keep in mind this will currently make you unable to connect to gmail.com and all domains they host).

Weak ciphers:

See http://www.process-one.net/docs/ejabberd/guide_en.html#sec27. I think this means doing something like adding {ciphers, "..."} to the ejabberd_c2s options. Check with openssl ciphers -V '...' to see what ciphers a cipher string will enable.

As far as I can tell, it's not possible to disable SSLv3 without recompiling ejabberd yourself. See some discussion here.

Solution 2

This is an old question, but I wanted to add an updated answer for anyone searching and finding this, but using a more modern version of ejabberd (14.12 at the time of this writing). The following options (in the new YAML configuration format) should make starttls required, change the ciphers list to something decent, and disable legacy SSL support for s2s connections:

s2s_use_starttls: required
s2s_ciphers: "HIGH:!3DES:!aNULL:!SSLv2:@STRENGTH"
s2s_protocol_options:                                                            
  - "no_sslv2"                                                                   
  - "no_sslv3" 

for c2s connections you can do something similar, except that it goes under the c2s listen directive:

-
  port: 5222
  module: ejabberd_c2s
  protocol_options:                                                            
    - "no_sslv2"                                                               
    - "no_sslv3" 
  ciphers: ...                                                              
Share:
7,010

Related videos on Youtube

pythonimus
Author by

pythonimus

Updated on September 18, 2022

Comments

  • pythonimus
    pythonimus almost 2 years

    I'm using ejabberd on Ubuntu. My configuration looks like this:

      {5269, ejabberd_s2s_in, [
                           {shaper, s2s_shaper},
                           {max_stanza_size, 131072},
                           starttls_required
                          ]},
      {5222, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        starttls_required,
                        starttls, {certfile, "./xmpp.pem"}
                       ]},
      {s2s_use_starttls, true}.
      {s2s_certfile, "./xmpp.pem"}.
    

    Still xmpp.net is showing that s2s TLS is not "required" but only "allowed". In addition SSLv3 is enabled for c2s and s2s and some insecure ciphers like RC4.

    How can I disable SSLv3 and RC4, and force starttls on all connections?

    Thanks!

  • xnyhps
    xnyhps over 8 years
    Though not explicitly asked by the question, it's also a good idea to set the dhfile option to your own DH parameters.