Установка Jabber сервера c авторизацией через AD
Поднимаем свой собственный корпоративный jabber-сервер. Что очень удобно для организации внутри компании независимой системы обмена сообщениями, с точки зрения безопасности и отказаустойчивости (что ни скажешь на примере ICQ).
А так как у нас используется AD, то логичным показалось задействовать его для аутентификации пользователей и управления учётными записями.
Ставим:
$ apt-get install ejabberd
Находим конфиг /etc/ejabberd/ejabberd.cfg и правим его под себя:
$ cp /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg_back
$ nano /etc/ejabberd/ejabberd.cfg
%%% ===================================
%%% OVERRIDE OPTIONS STORED IN DATABASEoverride_global.
override_local.
override_acls.%%% =========
%%% DEBUGGING
%%
%% loglevel: Verbosity of log files generated by ejabberd.
%% 0: No ejabberd log at all (not recommended)
%% 1: Critical
%% 2: Error
%% 3: Warning
%% 4: Info
%% 5: Debug
%%
{loglevel, 4}.%%% ================
%%% SERVED HOSTNAMES
%%
%% hosts: Domains served by ejabberd.
%% You can define one or several, for example:
{hosts, ["localhost", "srv", "srv.int.by"]}.
%% {hosts, ["localhost"]}.%%% ===============
%%% LISTENING PORTS
%% Порт на который будут подключаться клиенты
%% достаточно для организации нешифрованных соединений клиентов и отдельно стоящего сервера.
{listen,
[
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}
]},%% To enable the old SSL connection method (deprecated) in port 5223:
%% Порт на который будут подключаться клиенты, но весь трфик будет шифроваться. SSL
%%{5223, ejabberd_c2s, [
%% {access, c2s},
%% {shaper, c2s_shaper},
%% {max_stanza_size, 65536},
%% tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
%% ]},%% веб-администрирование этого сервера
{5280, ejabberd_http, [
http_poll,
web_admin
]}]}.
%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
%% Allowed values are: true or false.
%% You must specify a certificate file.
%%
{s2s_use_starttls, true}.%%
%% s2s_certfile: Specify a certificate file.
%%
{s2s_certfile, «/etc/ejabberd/ejabberd.pem»}.%%% ==============
%%% AUTHENTICATION
%% Authentication using LDAP
%%%% Выбираем метод авторизации ldap
{auth_method, ldap}.
%% Адрес LDAP-сервера
{ldap_servers, ["192.168.XXX.XXX"]}.
%% Порт подключения
{ldap_port, 389}.
{ldap_base, «dc=domen,dc=by»}.
{ldap_uids, [{"sAMAccountName"}]}.
%% Кем подключаемся, нужно иметь алмин права, в моем случаи
{ldap_rootdn, «cn=Administrator,cn=Users,dc=domen,dc=by»}.
{ldap_password, «ПАРОЛЬ_Administrator»}.
%%% Группа, в которую входят пользователи для jabber
{ldap_group, «cn=Jabber,cn=Users,dc=domen,dc=by»}.%%% ==============
%%% DATABASE SETUP
%%%Я ни трогал вообще
%%% ==============%%% ===============
%%% TRAFFIC SHAPERS{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.%%% ====================
%%% ACCESS CONTROL LISTS%% The ‘admin’ ACL grants administrative privileges to Jabber accounts.
%% You can put as many accounts as you want.
%% имя пользывателя и наш хост
{acl, admin, {user, «ceval», «host»}}.
{acl, admin, {user, «Administrator», «host»}}.
{acl, local, {user_regexp, «»}}.%%% ============
%%% ACCESS RULES%% Define the maximum number of time a single user is allowed to connect:
{access, max_user_sessions, [{10, all}]}.%% This rule allows access only for local users:
{access, local, [{allow, local}]}.%% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.%% For all users except admins used «normal» shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.%% For all S2S connections used «fast» shaper
{access, s2s_shaper, [{fast, all}]}.%% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.%% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.%% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.%% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.%% No username can be registered via in-band registration:
%% To enable in-band registration, replace ‘deny’ with ‘allow’
% (note that if you remove mod_register from modules list then users will not
% be able to change their password as well as register).
% This setting is default because it’s more safe.
{access, register, [{deny, all}]}.%% Everybody can create pubsub nodes
{access, pubsub_createnode, [{allow, all}]}.%%% ================
%%% DEFAULT LANGUAGE
%%
%% language: Default language used for server messages.
%%
{language, «ru»}.%%% ==========
%%% MODULES
%%
%% Modules enabled in all ejabberd virtual hosts.
%%
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % recommends mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco, []},
%%{mod_echo, [{host, "echo.localhost"}]},
{mod_irc, []},
{mod_last, []},
{mod_muc, [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin}
]},
%%{mod_muc_log,[]},
{mod_offline, []},
{mod_privacy, []},
{mod_private, []},
%%{mod_proxy65,[]},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
%%
%% After successful registration, the user receives
%% a message with this subject and body.
%%
{welcome_message, {«Welcome!»,
«Hi\nWelcome to this Jabber server.»}},%%
%% When a user registers, send a notification to
%% these Jabber accounts.
%%
%%{registration_watchers, ["admin1@example.org"]},{access, register}
]},
{mod_roster, []},
%%{mod_service_log,[]},
{mod_shared_roster,[]},
{mod_stats, []},
{mod_time, []},
%% нужно указать IP сервера Active Directory
{mod_vcard_ldap,
[{host, «users.@192.168.XXX.XXX@»},
{ldap_vcard_map,
[{«NICKNAME», «%u», []},
{«GIVEN», «%s», ["givenName"]},
{«MIDDLE», «%s», ["initials"]},
{«FAMILY», «%s», ["sn"]},
{«FN», «%s», ["displayName"]},
{«EMAIL», «%s», ["mail"]},
{«ORGNAME», «%s», ["company"]},
{«ORGUNIT», «%s», ["department"]},
{«CTRY», «%s», ["c"]},
{«LOCALITY», «%s», ["l"]},
{«STREET», «%s», ["streetAddress"]},
{«REGION», «%s», ["st"]},
{«PCODE», «%s», ["postalCode"]},
{«TITLE», «%s», ["title"]},
{«URL», «%s», ["wWWHomePage"]},
{«DESC», «%s», ["description"]},
{«TEL», «%s», ["telephoneNumber"]}]},
{ldap_search_fields,
[{"User", "%u"},
{"Name", "givenName"},
{"Family Name", "sn"},
{"Email", "mail"},
{"Phone", "telephoneNumber"}
]},
{ldap_search_reported,
[{"Full Name", "FN"},
{"Nickname", "NICKNAME"},
{"Email", "EMAIL"}]}
]},{mod_version, []}
]}.%%% $Id: ejabberd.cfg.example 1178 2008-02-08 18:28:36Z badlop $
%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8:
Запускаем сервер
/etc/init.d/ejabberd start
посмотрите в лог /var/log/ejabberd/sasl.log
если там последняя запись =CRASH REPORT==== то произошла ошибка во время запуска сервера
=PROGRESS REPORT==== - то все нормально
Продолжения следует ….. после выходных, а пока пЫво