Настройка ejabberd на работу с Active Directory.
Конфигурация ejabberd сервера производится через файл ejabberd.cfg находящийся в директории /opt/ejabberd-2.1.0/conf. Основные настройки делаются автоматически при установке сервера, но очень многие параметры нам не понадобятся поэтому я сделал укороченный вариант настроек. Настроить можно практически все параметры сервера, метод авторизации, задействованные порты, уровни доступа, параметры модулей и многое другое. Не буду подробно объяснять каждый параметр файла конфигурации, вместо этого выложу свой ejabberd.cfg с краткими пояснениями. Перед тем как начать конфигурировать сервер сделаете группу в вашей Active Directory и внесите в нее пользователей которые будут иметь доступ к данному сервису (у меня назвется Jabber User). Вот теперь можно двигаться дальше.
Пример ejabberd.cfg :
%%% доменное имя или IP адрес вашего сервера
{hosts, ["jabber.domen.lan"]}.
%%% В логи будет писаться вся информация в последующем можно поставить 2 (только ошибки)
{loglevel, 4}.
%%% Здесь указано на каких портах будет работать сервер в режимах c2s, c2s, http
{listen,
[
%%% c2s - client to server клиент передает сообщение на свой сервер
{5222, ejabberd_c2s, [
{certfile, "/opt/ejabberd-2.1.0/conf/server.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
{5223, ejabberd_c2s, [
{certfile, "/opt/ejabberd-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/ejabberd-2.1.0/conf/server.pem”}.
%% Разрешить или запретить общение с серверам.
%%{{s2s_host, “goodhost.org”}, allow}.
%%{{s2s_host, “badhost.org”}, deny}.
%%% какой метод авторизации пользователей используется
{auth_method, ldap}.
%%% основной ldap сервер
{ldap_servers, ["kontroller.domen.lan"]}.
%%% Параметр по которому будет находится пользователь в Active Directory
{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}]},
%%% Основной модуль с помощью которого будет происходить авторизация через Active Directory
{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/ejabberd-2.1.0/bin/ejabberdctl start
Запускаем любой джабер клиент и пробуем подключатся к серверу. Если подключится не получается, то внимательно курите логи из папки /opt/ejabberd-2.1.0/logs.
Внимание! Пользователь для подключения будет иметь вид:
user@jabber.domen.lan
где user это ваш доменный пользователь, а jabber.domen.lan адрес вашего сервера.
Самый нужные команды для запуска ejabberd (остальные вы можете узнать запустив ejabberdctl без команды):
start - Стартовать ejabberd в режиме сервера
stop - Стоп ejabberd
restart - Рестарт ejabberd
status - Получить статус сервера ejabberd
live - Стартовать ejabberd в интерактивном режиме (будет видно весь процесс загрузки сервера, удобно для отслеживания ошибок)
Клиент для джабера это отдельная песня, опробовав несколько вариантов остановился на PSI, но это уже совсем другая история
Связанные записи
-
Анатолий
-
http://privats.ru Безумный Админ
-
Алексей
-
ant0xa
-
http://nvrsk.org pawa
-
http://privats.ru/ Безумный Админ
