search
top

Настройка ejabberd на работу с Active Directory.

logoКонфигурация сервера производится через файл .cfg находящийся в директории /opt/-2.1.0/conf. Основные настройки делаются автоматически при установке сервера, но очень многие параметры нам не понадобятся поэтому я сделал укороченный вариант настроек. Настроить можно практически все параметры сервера, метод авторизации, задействованные порты, уровни доступа, параметры модулей и многое другое. Не буду подробно объяснять каждый параметр файла конфигурации, вместо этого выложу свой .cfg с краткими пояснениями. Перед тем как начать конфигурировать сервер сделаете группу в вашей и внесите в нее пользователей которые будут иметь доступ к данному сервису (у меня назвется Jabber User). Вот теперь можно двигаться дальше.

Пример .cfg  :

%%% доменное имя или IP адрес вашего сервера
{hosts, ["jabber.domen.lan"]}.

%%% В логи будет писаться вся информация в последующем можно поставить 2 (только ошибки)
{loglevel, 4}.

%%% Здесь указано на каких портах будет работать сервер в режимах c2s, c2s, http
{listen,
[
%%% c2s - client to server клиент передает сообщение на свой сервер
{5222, ejabberd_c2s, [
{certfile, "/opt/-2.1.0/conf/server.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},

{5223, ejabberd_c2s, [
{certfile, "/opt/-2.1.0/conf/server.pem"}, tls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
%%% s2s - server to server сообщение от одного сервера при необходимости шифруется и передается на другой сервер,
%%% а на другом сервере происходит соединение s2c
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},

{5280, ejabberd_http, [
captcha,
http_bind,
http_poll,
web_admin
]}

]}.

%%% Использовать объединение серверов. Нужен сертификат
{s2s_use_starttls, true}.
%%% Сертификат для S2S
{s2s_certfile, “/opt/-2.1.0/conf/server.pem”}.
%% Разрешить или запретить общение с серверам.
%%{{s2s_host, “goodhost.org”}, allow}.
%%{{s2s_host, “badhost.org”}, deny}.

%%% какой метод авторизации пользователей используется
{auth_method, }.
%%% основной сервер
{ldap_servers, ["kontroller.domen.lan"]}.
%%% Параметр по которому будет находится пользователь в
{ldap_uids, [{"userPrincipalName", "%u@domen.lan"}]}.
%%% Основной домен
{ldap_base, “dc=domen,dc=lan”}.
%%% Имя администратора (здесь имя админа jabber в контейнере Users, основной домен domen.lan)
{ldap_rootdn, “CN=jabber,CN=Users,DC=domen,DC=lan”}.
%%% Пароль администратора
{ldap_password, “password”}.
%%% Нормальное ограничение скорости до 1.000 B/s
{shaper, normal, {maxrate, 1000}}.
%%% Быстрое ограничения скорости до 50.000 б / с
{shaper, fast, {maxrate, 50000}}.
%%% Назначаем админа для сервера (тут доменный админ jabber)
{acl, admin, {user, “jabber”, “jabber.buh.lan”}}.
{acl, local, {user_regexp, “”}}.

%%% Дальше какая то хрень )))
{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, muc_create, [{allow, local}]}.
{access, register, [{allow, all}]}.
{access, pubsub_createnode, [{allow, local}]}.

%%% Основной язык
{language, “ru”}.
%%% Подключаем модули
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % requires mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco, []},
{mod_http_bind,[]},
{mod_irc, []},
{mod_last, []},
{mod_muc, [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc_create},
{access_persistent, muc_create},
{access_admin, muc_admin}
]},
{mod_offline, []},
{mod_privacy, []},
{mod_private, []},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{ignore_pep_from_offline, true},
{last_item_cache, false},
{plugins, ["flat", "hometree", "pep"]}
]},
{mod_roster, []},
{mod_shared_roster,[]},
{mod_time, []},
{mod_vcard, []},
{mod_version, []},

%%% тут подключаем mod_log_chat логи будут записаны в html формате в папу web сервера /var/www/html/jabberlog и будут доступны
%%% через веб интерфейс, в корень папки jabberlog помещаем файлик .htaccess в нем укажем с каких IP адресов будет возможен
%%% просмотр логов. Например
%%% Order Deny,Allow
%%% # запрет для всех на доступ к ресурсу
%%% Deny from all
%%% # разрешаем только следующим
%%% Allow from local.
%%% Allow from 192.168.0.1 192.168.0.2
{mod_log_chat, [{path, "/var/www/html/jabberlog"}, {format, html}]},
%%% Основной модуль с помощью которого будет происходить авторизация через
{mod_shared_roster_ldap,
[
%%%
{ldap_groupattr,"cn"},
%%%
{ldap_groupdesc,"description"},
%%%
{ldap_rfilter, "(&(memberOf=CN=Jabber User,CN=Users,DC=domen,DC=lan) (|(userAccountControl=66050)(userAccountControl=66048)))"},
%%%
{ldap_memberattr,"sAMAccountName"},
%%%
{ldap_userdesc,"cn"}
]
},
{mod_version, []}
]}.

Можете скачать готовый файл конфигурации и поместите в папку conf, перед запуском исправьте в строках 1,36,37,38,39,40,45,97,103 параметры на свои.

Пробуем запускать сервер:

# /opt/-2.1.0/bin/ejabberdctl start

Запускаем любой джабер клиент и пробуем подключатся к серверу. Если подключится не получается, то внимательно курите логи из папки /opt/-2.1.0/logs.

Внимание! Пользователь для подключения будет иметь вид:
user@jabber.domen.lan
где user это ваш доменный пользователь, а jabber.domen.lan адрес вашего сервера.

Самый нужные команды для запуска (остальные вы можете узнать запустив ejabberdctl без команды):

start - Стартовать в режиме сервера
stop - Стоп
restart - Рестарт
status - Получить статус сервера
live - Стартовать в интерактивном режиме (будет видно весь процесс загрузки сервера, удобно для отслеживания ошибок)

Клиент для джабера это отдельная песня, опробовав несколько вариантов остановился на PSI, но это уже совсем другая история :-)

Связанные записи

  • Анатолий

    Спасибо за статью, очень помогла в настройке.
    К сожалению не получилось настроить ростер, а точнее получается так, в контакт листе каждому пользователю создается группа с именем пользователя и как это победить не пойму.
    Предполагаю что зависит это вот от этой настройки {ldap_groupattr,”cn”}.

  • http://privats.ru Безумный Админ

    Да действительно если оставить параметр CN то будет так. Я сделал так: допустим есть IT отдел, значит у всех работников этого отдела в поле Office пишем IT, в конфиге сервера правим вместо
    {ldap_groupattr,”cn”}. пишем{ldap_groupattr,”physicalDeliveryOfficeName”},
    вот собственно и все теперь группа будет называться IT. То есть параметр можно ставить какой вам удобно, главное что бы он у всех членов группы совпадал!!

  • Алексей

    Единственные непонятки, это можно ли делать в группах подгруппы таким образом?

  • ant0xa

    Можно ли сделать полные имена в списке контактов ?

    {ldap_groupattr,”department”},
    {ldap_groupdesc,”department”},
    {ldap_rfilter, “(memberOf=CN=Jabber,CN=Users,DC=domain,DC=local)”},
    {ldap_memberattr,”sAMAccountName”},
    {ldap_userdesc,”cn”}

    если заменить {ldap_userdesc,”cn”} на {ldap_userdesc,”displayName”} то всё равно ничего не происходит.

  • http://nvrsk.org pawa

    как проще всего засунуть ejabberd в автозагрузку?

  • http://privats.ru/ Безумный Админ

    у меня запуск ejabberd прописан в /etc/rc.local
    /opt/ejabberd-2.1.0/bin/ejabberdctl start

blog comments powered by Disqus
top