Ejabberd: получаем grade A на xmpp.net
Дело было вечером, делать было нечего. И решил я заполучить вот такую плашку:
С дефолтными настройками получается максимум класс C, что как бы стыдно. Обнаруженные недостатки связаны с использованием небезопасных протоколов (SSLv3) и алгоритмов шифрования. Порывшись в документации, удалось настроить следующее:
c2s config:
listen: - ... starttls_required: true protocol_options: - "no_sslv2" - "no_sslv3" tls_compression: false dhfile: "/usr/local/etc/ejabberd/dh.pem" ciphers: "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:CAMELLIA256-SHA:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-SEED-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:AES128-GCM-SHA256:SEED-SHA:CAMELLIA128-SHA:AES128-SHA256:AES128-SHA:IDEA-CBC-SHA"
s2s config:
s2s_use_starttls: optional s2s_protocol_options: - "no_sslv2" - "no_sslv3" s2s_tls_compression: false s2s_dhfile: "/usr/local/etc/ejabberd/dh.pem" s2s_ciphers: "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:CAMELLIA256-SHA:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-SEED-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:AES128-GCM-SHA256:SEED-SHA:CAMELLIA128-SHA:AES128-SHA256:AES128-SHA:IDEA-CBC-SHA"
Файл dh.pem создается командой openssl dhparam -out dh.pem 2048
Из соображений совместимости пришлось сделать необязательным starttls для s2s. Также отвалились некоторые старые клиенты, не умеющие TLS. Например, старая миранда. Как костыль, можно поднять для них слушатель на другом порту, но это уже по желанию админа.