- Linux для человеков!
- Обзоры
- Фотогалереи
- Помощь при использовании сайта
- Новое из блога
- Бесплатные SSL сертификаты и их установка в nginx postfix dovecot и ejabberd
- Ejabberd: полезные советы
- 1. Безопасность.
- 2. Удобство пользования.
- 3. Скорость
- FreeBSD. Установка и настройка сервера ejabber 2
- Установка
- Генерация ключей
- Настройка
- Создание конференций (они же чаты)
- Настройка DNS для домена example.org
- Запуск сервера
- Административный веб-интерфейс и добавление пользователей
- Общение голосом и видео
- Настройка клиента
- Что еще почитать?
- Комментарии
- Ejabberd ssl сертификат как настроить
- Re: Ejabberd - настройка собственного jabber-сервера
- Re: Ejabberd - настройка собственного jabber-сервера
Linux для человеков!
Обзоры
Фотогалереи
Помощь при использовании сайта
Новое из блога
Бесплатные SSL сертификаты и их установка в nginx postfix dovecot и ejabberd
Сейчас SSL сертификаты можно получить бесплатно и те кому интересна данная тема без труда найдут информацию о получении бесплатных сертификатов StartSSL. Есть хорошая статья по этому поводу на Хабре, поэтому я не буду останавливаться подробно на процессе получения самих ключей и сертификатов, а перейду сразу к процессингу настройки почтового сервера,веб сервера. для работы с SSL.
Итак. Подразумевается, что уже имеете секретный ключ и сертификат подписанный StartSSL. Сразу хочу сказать, что все ключи и сертификат нужно надежно сохранить как минимум до момента, когда вы убедились, что все сертификаты корректно работают на сервере, а лучше всего до окончания срока их действия (1 год).
Введу некоторые обозначения:
- ssl.key — Приватный ключ
ssl.crt — Сертификат подписанный StartSSL
ssl_enc.key — Публичный ключ
sub.class1.server.ca.pem — Сертификат промежуточного CA
ca-bundle.pem — Цепочка сертификатов
ca.pem — Сертификат корневого CA
Скачать недостающие сертификаты можно здесь
Начнем с самого простого
Nginx
Сначала создадим файл сертификата который будет понимать nginx:
Далее очень рекомендую изучить мою небольшую заметку по сертификатам, потому как если не следовать инструкции описаной в ней — работать ничего не будет. Данное правило справедливо для всех сертификатов (dovecot,postfix,nginx,ejabberd)
Установим нужного владельца и права на ключи и сертификаты
Теперь настроим сам nginx путем добавления некоторых строк в конфиг. Добавлять нужно в директиву server
Показал только строки которые нужно добавить.
Проверяем валидность конфига:
И стартуем сервер.
Теперь проверим работу всего этого:
Видим примерно такой листинг:
Если ошибок нет, то значит все работает как надо
Postfix
Создадим нужные файлы и для постфикса.
Сменим права и владельца файлов:
Открываем конфиг постфикса
И добавляем в него следующее если еще не включено:
Закрываем конфиг и переходим к Dovecot
Dovecot
Все делаем по аналогии:
Теперь откроем конфиг ssl dovecot
Рестартим постфикс и довкот, а потом проверяем работу сертификатов:
Опять же если ошибок нет — то все работает как надо.
Ejabberd
Сменим права и пользователя:
Само собой chown делаем на того пользователя и группу от которого запускается Ejabberd. В моем случае (Debian 7) это ejabberd.
Теперь открываем конфиг и включаем tls на сервере ejabberd:
Не советую копировать отсюда куски конфига ejabberd — могут быть тяжелые последствия. Ищем соответствующие переменные в существующем конфиге.
На этом все, предложения и замечания в коментариях.
Источник
Ejabberd: полезные советы
Поскольку про настройку самого сервера, включая создание общих ростеров и подключение транспортов, написано видимо-невидимо, я затрону вопросы, менее освещенные в отечественной прессе — безопасность, удобство, скорость.
1. Безопасность.
Начнём с самого простого и самого важного — обезопасим себя!
Сперва включим на клиенте шифрование соединения через ssl, чтобы враги, которые непременно пытаются выкрасть секретный пароль, потерпели своё первое поражение.
С включением шифрования соединения можно разрешить передавать пароль в открытом виде.
Я исхожу их того, что на серверной стороне сертификат уже есть.
Если же случилось досадное упущение, и сертификат сгенерирован не был, это можно сделать вот так:
cd /var/lib/ssl/; openssl req -newkey rsa:1024 -keyout server.pem -nodes -x509 -days 3650 -out server.cer
echo «» >> server.pem; cat server.cer >> server.pem
Как видите, это проще, чем установка Gentoo (как известно, требуется выполнить всего три команды, чтобы поставить Gentoo).
Не забудем про права на сертификат: chown ejabberd:ejabberd server.pem; chmod 0400 server.pem
Итак, у нас остаётся последний участок, где пароли передаются в достаточно открытом виде — админка! Это совсем негоже, поэтому будем включать шифрование и здесь.
Возвращаемся в секцию listen и ищем запись для порта 5280.
Исправляем примерно так:
Здесь можно возрадоваться и наслаждаться уютной админкой, вход в которую будет теперь тут — jabber.tld:5280/admin/
2. Удобство пользования.
Чтобы сделать общение с сервером по-настоящему удобным, щедрой рукой добавим ему сторонних мордулей.
В зависимости от дистрибутива, для этого придётся делать разные приседания. К слову, в Альте всё уже сделано за вас ^_^
Итак, на своих инсталляциях я добавляю
— mod_statsdx: расширенная статистика, показывающая разблюдовку по клиентам, ОС, типу соединения подключенных пользователей, количество оффлайновых сообщений и многое-многое другое. (+ mod_stats2file, который сохраняет всю статистику в файл в указанное место). Родной mod_stats можно отключить.
— mod_ctlextra: множество дополнительных команд для ejabberdctl. Операции с ростером, операции с группами для shared роостера и т.д. Более чем полезное полезное расширение.
— mod_http_bind и mod_http _fileserver, чтобы можно использовать web-клиенты.
— mod_rest / mod_xmlrpc — по вкусу и по надобности. Здесь надо помнить о необходимости отдельно защитить точки входа для указанных модулей.
Собирать модули достаточно просто — либо вручную с помощью erlc, либо запуская build.sh (предварительно проверив пути).
Готовый модуль надо поместить к остальным модулям (обычно, /usr/lib<,64>/ejabberd/ebin/) и внести необходимые изменения в конфиг.
Пример таких изменений можно посмотреть тут.
3. Скорость
Во-первых, надо пересмотреть необходимость таких тяжелых модулей, как mod_shared_roster_ldap — при 5ти сотнях пользователей в AD ростер будет забираться с сервера перу-тройку минут для каждого подключающегося клиента.
Возможно, будет лучше заполнять ростер новых пользователей вручную — «Поиск->Найти всех->Добавить всех». У такого варианта, впрочем, есть свой большой минус — т.к. уволенные или по иным причинам отключенные записи по-прежнему будут висеть в ростерах, столько любимые секретаршами рассылки «всем», не через MOTD, будут неуклонно забивать базу с оффлайновыми сообщениями и её придётся чистить по крону.
Можно отключить pubsub, если вы не используете подписки.
Источник
FreeBSD. Установка и настройка сервера ejabber 2
Для внутренних нужд, понадобилось организовать защищенный обмен сообщениями между пользователями, был выбран протокол XMPP и сервер ejabber 2. Так как имелся свободный сервер на FreeBSD, было решено развернуть всё именно там.
ejabber написан на замечательном языке Erlang, в том числе и его конфигурационный файл, однако знаний языка для редактирования конфигурационного файла не требуется, он достаточно читабельный.
Сервер ejabberd является лидером среди Jabber-серверов. Его использует Facebook, Vkontakte, Yandex, Google и многие другие компании для своих сервисов. Часто используется для обмена данными по XMPP для всевозможных онлайн игр и т.д.
Для примера мы будем использовать домен для jabber-сервера jabber.example.org, а домен для конференций будет conference.jabber.example.org. IP-адрес сервера будет 203.0.113.42.
Установка
Обновим дерево портов:
И установим ejabberd:
Генерация ключей
Для защиты трафика будем использовать SSL, создадим подкаталог для хранения ключей ejabberd:
Где:
- C — Country Name (2 letter code);
- ST — State or Province Name (full name);
- L — Locality Name (eg, city);
- O — Organization Name (eg, company);
- OU — Organizational Unit Name (eg, section);
- CN — Common Name (eg, YOUR name). В нашем случае «jabber.example.org»;
- emailAddress — Email Address. В нашем случае «info@example.org».
Теперь перейдем к настройке.
Настройка
Необходимо войти в каталог настроек /usr/local/etc/ejabberd и скопировать примеры в реальные конфигурационные файлы:
После чего отредактируйте файл ejabberd.cfg (строки начинающиеся с символа «%» это комментарий):
Далее мы ещё добавим в файл дополнительные настройки для MUC, так что пока не запускайте сервер.
Создание конференций (они же чаты)
За это отвечает протокол MUC (Multi-users conference), который дает возможность создавать комнаты для группового общения пользователей. В ejabberd за это отвечает модуль muc_module, ну и все остальные модули с префиксом «muc_».
Одна из проблем, с которой вы можете столкнуться это ограничение на количество сообщений, которое хранится пока пользователь находится в офлайне. По умолчанию это 20 сообщений, т.е. если вы отсутствовали более чем 20 сообщений в чате, то вам достануться только последние 20. Можно указать другое значение, для этого измените опцию history_size, в конечном итоге это будет выглядить так:
Также, мы расскоментировали строку , которая регистрирует имя домена для конференций, т.е. у нас получится "conference.jabber.example.org".
Настройка DNS для домена example.org
Необходимо добавить следующие A и SRV-записи. В качестве примера DNS-сервера выступает Bind9, но вы можете использовать любой другой, совместимый с его конфигурационным файлом:
После чего можете проверить записи с помощью утилиты dig, пример:
В результате должны получить ANSWER-секцию следующего содержания:
Запуск сервера
Запустите ejabberd:
Если запуск не удался, то возможно у вас проблема с .erlang.cookie, укажите нужные права на файл /var/spool/ejabberd/.erlang.cookie (т.е. в домашнем каталоге должен храниться этот файл, посмотреть домашний каталог можно так pw usershow ejabberd). Устанавливаем права:
Если сервер никак не запускается (у меня такое было однажды), то я просто ребутнул сервак и после ребута все само поднялось.
Административный веб-интерфейс и добавление пользователей
После старта ejabberd у нас станет доступен TCP-порт 5280, по которому будет отвечать веб-сервер ejabberd, войдите в него:
Можно также создать Nginx-конфиг и проксировать на порт 5280, прикрутив дополнительно поддержку SSL:
Не забываем сгенерировать сертификат для веб-интерфейса:
Пользователей можно добавлять в консоли, через ejabberdctl. Первого пользователя (которого мы указали в качестве админа в конфигурационном файле) вам придется обязательно добавить таким способом, так как вам надо пройти авторизацию в веб-интерфейсе, а без учетной записи это не получится сделать:
Общение голосом и видео
Сервер ejabberd напрямую не предоставляет таких услуг. Это реализуется за счет протокола Jingle и конкретных реализаций на стороне клиента. Данные обменивают по принципу P2P и поэтому могут встречаться проблемы у пользователй, которые работают из-под NAT. Для этих целей следует использовать STUN-сервер.
Я не настраивал Jingle, но если это когда-нибудь сделаю, то обязательно напишу об этом. А пока смотрите:
Настройка клиента
Для примера возьмем Pidgin, так как это простой для настроек клиент и доступен на многих платформах. Установите этот клиент, после чего нажмите на Accounts -> Manage Accounts -> Add. . И примерно так заполните форму Add Account:
После чего пробуйте подключиться, все у вас должно получиться!
Что еще почитать?
Комментарии
Подсказали как сделать общие группы ростера, надо подключить "mod_shared_roster". После чего, в веб-админке вашего виртуально хоста появится меню "Shared Roster Groups", в котором вы можете заводить группы, пользователи которых будут видны всем участникам вашего хоста
Источник
Ejabberd ssl сертификат как настроить
Понадобилось как-то организовать защищенный обмен сообщениями между пользователями небольшого офиса и работающими удаленно сотрудниками. В качестве Jabber-сервера на этот раз решено использовать ejabberd (статья по настройке Jabber-сервера Openfire).
Стоит отметить тот факт, что ejabberd является лидером среди Jabber-серверов. Его используют Facebook, Vkontakte, Yandex, Google, etc.
Ключевыми особеностями ejabberd являются:
- веб-консоль администрирования и инструменты командной строки обеспечивают простоту настройки
- поддерживается шифрование соединений для обеспечения безопасной связи
- множество встроенных сервисов, в том числе Jabber User Directory и Multi-User Chat
- стандартный Jabber-транспорт позволяет обеспечивать связь с другими сетями мгновенного обмена сообщениями
- автоматический сбор статистики для отчетности и анализа системы
- виртуальный хостинг, что позволяет ejabberd поддерживать несколько виртуальных доменов в одном екземпляре ejabberd
- общие списки, так что пользователи могут иметь предопределенные контакты в списках контактов
- поддерживаются внешние хранилища
- большое количество поддерживаемых протоколов
- многоязычный интерфейс веб-администрирования
- полная поддержка IPv6
ejabberd написан на языке Erlang и конфигурационный файл в том числе, однако знаний языка для правки конфигурационного файла не нужно - он интуитивно понятен.
Перед установкой и настройкой ejabberd, внесем необходимые изменения в DNS, чтобы потом на это не отвлекаться. Для полноценной работы jabber-сервера, необходимо внести A- и SRV-записи. Если используется DNS-сервер BIND9, то записи будут выглядеть примерно так:
Ну и соответственно, нужно проследить, чтобы изменения DNS вступили в силу.
Итак, вернемся непосредственно к ejabberd. Установку ejabberd выполним из системы портов:
# cd /usr/ports/net-im/ejabberd && make install && rehash |
Поскольку всю информацию будем хранить в MySQL, то среди опций установки необходимо отметить ODBC (Open DataBase Connectivity):
ejabberd-2.1.13
Во время установки ejabberd будет установлена зависимость - язык Erlang, среди опций установки также необходимо выбрать поддержку ODBC.
По завершению установки, отобразились короткие рекомендации относительно дальнейшей настройки.
Ознакомимся с рекомендациями, начиная "с хвоста".
Согласно месседжа, изменились UID и GID демона ejabberd. Однако, поскольку мы не обновляем ejabberd, а выполняем новую установку, то нас это предупреждение не касается. Кстати, в текущей версии 2.1.13 используется UID и GID с идентификаторами 543.
Домашний каталог - /var/spool/ejabberd. Что ж, в случае чего - заглянем.
А вот информация о том, что есть примеры конфигурационных файлов порадовала. Создадим конфигурационные файлы копированием примеров, установим владельцем файлов пользователя ejabberd:
# cd /usr/local/etc/ejabberd # cp ejabberd.cfg.example ejabberd.cfg # cp ejabberdctl.cfg.example ejabberdctl.cfg # chown ejabberd:ejabberd *.cfg |
В принципе, можно уже приступать к редактированию конфигурационного файла, но чтобы не возвращаться к нему повторно, выполним несколько предварительных действий.
Создадим БД в MySQL и пользователя:
mysql> create database ejabberd;
Query OK, 1 row affected (0,01 sec)
mysql> grant all on ejabberd.* to ejabberd@localhost identified by ' password_here ';
Query OK, 0 rows affected (0,00 sec)
Создаем структуру таблиц, воспользовавшись sql-дампом, который идет в комплекте с установочными файлами ejabberd (там же можно обнаружить варианты для альтернативных поддерживаемых БД):
# cd /usr/ports/net-im/ejabberd/work/ejabberd- 2.1.13 /src/odbc # mysql -u ejabberd -p ejabberd Unknown system variable 'table_type' |
Как оказалось, проблема была в устаревшем синтаксисе дампа MySQL. Проблема в строке 21 - SET table_type=InnoDB;. Данная переменная удалена в MySQL 5.5.3. Вместо нее необходимо использовать storage_engine либо же default_storage_engine. В моем случае переменная default_storage_engine была установлена в значение InnoDB.
Соответственно, для решения проблемы достаточно было удалить либо закомментировать содержимое строки 21. После этого дамп БД корректно создал структуру таблиц:
Продвигаемся дальше. Поскольку планируется работа с поддержкой SSL, займемся сертификатом. Создадим каталог для сертификатов (если такового нету), сгенеруем сертификат и выставим права доступа на файл сертификата:
# mkdir /etc/ssl/certs && cd /etc/ssl/certs # openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 -keyout privkey.key -out ejabberd.pem \ -subj "/C= UA /ST=/L= Kiev /O= Company LLC /OU=/CN= jabber.example.org /emailAddress= email [at] domain [dot] com " # cat privkey.key >> ejabberd.pem # rm privkey.key # chown ejabberd:ejabberd ejabberd.pem # chmod 600 ejabberd.pem |
C - Country Name (2 letter code)
ST - State or Province Name (full name)
L - Locality Name (eg, city)
O - Organization Name (eg, company)
OU - Organizational Unit Name (eg, section)
CN - Common Name (eg, YOUR name)
emailAddress - Email Address
Кажется пора заняться конфигурационным файлом ejabberd.cfg. Наведу все полотно конфигурационного файла - с комментариями все же удобнее. Его синтаксис, такой же как и языка Erlang. Основы синтаксиса детально описаны в начале конфигурационного файла.
%%% The parameters used in this configuration file are explained in more detail
%%% in the ejabberd Installation and Operation Guide.
%%% Please consult the Guide in case of doubts, it is included with
%%% your copy of ejabberd, and is also available online at
%%% http://www.process-one.net/en/ejabberd/docs/
%%% This configuration file contains Erlang terms.
%%% In case you want to understand the syntax, here are the concepts:
%%%
%%% - The character to comment a line is %
%%%
%%% - Each term ends in a dot, for example:
%%% override_global.
%%%
%%% - A tuple has a fixed definition, its elements are
%%% enclosed in <>, and separated with commas:
%%%
%%%
%%% - A list can have as many elements as you want,
%%% and is enclosed in [], for example:
%%% [http_poll, web_admin, tls]
%%%
%%% - A keyword of ejabberd is a word in lowercase.
%%% Strings are enclosed in "" and can contain spaces, dots, .
%%%
%%%
%%%
%%% - This term includes a tuple, a keyword, a list, and two strings:
%%%
%%%
%%
%% Override the old values stored in the database.
%%
%%
%% Override global options (shared by all ejabberd nodes in a cluster).
%%
%%override_global.
%%
%% Override local options (specific for this particular ejabberd node).
%%
%%override_local.
%%
%% Remove the Access Control Lists before new ones are added.
%%
%%override_acls.
%%
%% 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
%%
%%
%% watchdog_admins: Only useful for developers: if an ejabberd process
%% consumes a lot of memory, send live notifications to these XMPP
%% accounts.
%%
%%
%%
%% route_subdomains: Delegate subdomains to other XMPP servers.
%% For example, if this ejabberd serves example.org and you want
%% to allow communication with an XMPP server called im.example.org.
%%
%%
%%
%% listen: The ports ejabberd will listen on, which service each is handled
%% by and what options to start it with.
%%
%%
%% If TLS is compiled in and you installed a SSL
%% certificate, specify the full path to the
%% file and uncomment this line:
%%
%%
%% To enable the old SSL connection method on port 5223:
%%
%%
%% ejabberd_stun: Handles STUN Binding requests
%%
%%<<3478, udp>, ejabberd_stun, []>,
%%
%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
%% Allowed values are: false optional required required_trusted
%% You must specify a certificate file.
%%
%%
%%
%% S2S whitelist or blacklist
%%
%% Default s2s policy for undefined hosts.
%%
%%
%%
%% Outgoing S2S options
%%
%% Preferred address families (which to try first) and connect timeout
%% in milliseconds.
%%
%%
%%
%% auth_method: Method used to authenticate the users.
%% The default method is the internal.
%% If you want to use a different method,
%% comment this line and enable the correct ones.
%%
%%
%%
%% Store the plain passwords or hashed for SCRAM:
%%
%%
%%
%% Define the FQDN if ejabberd doesn't detect it:
%%
%%
%% Authentication using ODBC
%% Remember to setup a database in the next section.
%%
%%
%% ejabberd by default uses the internal Mnesia database,
%% so you do not necessarily need this section.
%% This section provides configuration examples in case
%% you want to use other database backends.
%% Please consult the ejabberd Guide for details on database creation.
%%
%% Number of connections to open to the database for each virtual host
%%
%%
%%
%% Interval to make a dummy SQL request to keep the connections to the
%% database alive. Specify in seconds: for example 28800 means 8 hours
%%
%%
%%
%% This option specifies the maximum number of elements in the queue
%% of the FSM. Refer to the documentation for details.
%%
%% Maximum number of simultaneous sessions allowed for a single user:
%% This rule allows access only for local users:
%% For C2S connections, all users except admins use the "normal" shaper
%% Only admins can use the configuration interface:
%% Admins of this server are also admins of the MUC service:
%% Only accounts of the local ejabberd server can create rooms:
%% All users are allowed to use the MUC service:
%% Only accounts on the local ejabberd server can create Pubsub nodes:
%% In-band registration allows registration of any possible username.
%% To disable in-band registration, replace 'allow' with 'deny'.
%% By default the frequency of account registrations from the same IP
%% is limited to 1 account every 10 minutes. To disable, specify: infinity
%%
%%
%% language: Default language used for server messages.
%%
%%
%% Host for the URL and port where ejabberd listens for CAPTCHA requests.
%%
%%
%%
%% Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
%%
%%
%%
%% Set the minimum informational entropy for passwords.
%%
%%
%%
%% After successful registration, the user receives
%% a message with this subject and body.
%%
%%
%% Local c2s or remote s2s users cannot register accounts
%%
%%
%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker:
Изменения в конфигурации (выделенные красным) минимальные.
Включим сервис, добавив необходимую строку в /etc/rc.conf:
# echo '# Jabber server' >> /etc/rc.conf # echo 'ejabberd_enable="YES"' >> /etc/rc.conf |
После этого стартуем сервис:
# sh /usr/local/etc/rc.d/ejabberd start |
Проверяем, все ли в порядке.
В логах обнаружил следующие записи:
# cat /var/log/ejabberd/ejabberd.log =ERROR REPORT==== 2014-03-25 12:25:31 === Ага. Кажется Erlang еще "не научился" работать с mysql. Нужно научить 🙂
После этого повторно запускаем ejabberd:
После этого сервис корректно запустился в штатном режиме, что можно проверить следующей командой:
Кстати, еще один момент. При тестировании обнаружил, что ejabberd 2.1.13 не работает с MySQL 5.6. При этом в логи сыпались следующие ошибки: =INFO REPORT==== 2014-03-28 01:39:31 === =INFO REPORT==== 2014-03-28 01:39:31 === =INFO REPORT==== 2014-03-28 01:39:31 === Разбираться более детально в чем проблема не стал, проверил только на совместимость ejabberd 2.1.13 с MySQL 5.0, MySQL 5.1 и MySQL 5.5. Возможно это пофиксят в следующих релизах. Итак, продолжим. Создадим пользователя, которого мы в конфигурационном файле указали администратором:
После этого можно логиниться в web-админку, которая доступна по адресу http:// jabber.example.org :5280/admin/ . Выполнив авторизацию в админке, остальных пользователей можно будет добавлять уже прямо в админ-панели. Сервер работает, подключены конференции, общие контакты. Остальное уже допиливается под определенные задачи. Re: Ejabberd - настройка собственного jabber-сервераДобрый день ! подскажите как в CentOS провернуть ту же операцию : Проверяем, все ли в порядке. # cat /var/log/ejabberd/ejabberd.log =ERROR REPORT==== 2014-03-25 12:25:31 === Ага. Кажется Erlang еще "не научился" работать с mysql. Нужно научить 🙂 # cd /usr/ports/databases/erlang-mysql && make install clean && rehash пробовал yum install erlang-mysql - не находит Re: Ejabberd - настройка собственного jabber-сервераВ комментариях не подскажу 🙂 Создавайте тему на форуме, и попробуем разобраться. Источник |