Установка и настройка Сервера Ejabberd
Повышаем права
sudo -s
затем выполняем
aptitude install ejabberd -y
Проинсталировали, теперь поставим нужные программы для удобства
aptitude install htop mc trafshow traceroute
Переходим в директорию /etc/ejabberd/
Находим ejabberd.cfg и редактируем его
И приводим к виду (пример этого файла снизу)
% Cимвол «%» говорит Erland”у, что данная строка это комментарий
% а комментарии пропускаются при чтении параметров из файла конфигурации
% Имя машины сервера
{hosts, [“jabber”]}.
% Уроень логирования
{loglevel, 4}.
%% Слушать порты
% Слушать порт для подключения клиентов к серверу (c2s)
{listen,
[
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls, {certfile, “/etc/ejabberd/ejabberd.pem”}
]},
% Слушать Web панель администратора
{5280, ejabberd_http, [
http_bind,
http_poll,
web_admin
]}
]}.
%% Авторизация
% Метод авторизации внутренний
{auth_method, internal}.
%% Трафик Шейпера (профили)
% Создн нормальный шейпер он ограничивает до 1000 B/s
{shaper, normal, {maxrate, 1000}}.
% Быстрый Шейпер ограничивает до 50000 B/s
{shaper, fast, {maxrate, 50000}}.
%%% Лист Контроля Доступа
% Кто админ
{acl, admin, {user, “admin”, “jabber”}}.
{acl, admin, {user, “kvin”, “jabber”}}.
% Локальные пользователи (не редактировать эти строки)
{acl, local, {user_regexp, “”}}.
%% Правила доступа
% Максимально кол-во одновременно открытых сессий одним клиентом
{access, max_user_sessions, [{1, all}]}.
% Иаксимальное кол-во офлайн сообщений
{access, max_user_offline_messages, [{10, all}]}.
% Доступ только локальным пользователям
{access, local, [{allow, local}]}.
% Только не заблокированые пользователи могут соединятся с сервером
{access, c2s, [{deny, blocked},
{allow, all}]}.
% Все кроме админов используют нормальный шейпер
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
% А вот соединения Сервер к Серверу (s2s) используют быстрый шейпер
{access, s2s_shaper, [{fast, all}]}.
% Только админы могут создавать широковешятельные сообщения
{access, announce, [{allow, admin}]}.
% Только админы могут использовать интерфейс конфигурирования
{access, configure, [{allow, admin}]}.
% Админы сервера так же админы и конференций
{access, muc_admin, [{allow, admin}]}.
% Всем пользоваетелям разрешено пользоватся конференциями
{access, muc, [{allow, all}]}.
% Кто угодно может создавать конференции
{access, pubsub_createnode, [{allow, all}]}.
% Опредеяет параметры сервера
{host_config, “jabber”,
[
% Разрешить соединения c2s админам и всем остальным
{access, c2s, [{allow, admin}, {allow, all}]},
% Самовольная регистрация на сервере запрещена
{access, register, [{deny, all}]}
]
}.
%% Языки по умолчанию
% Сообщения сервера
{language, “ru”}.
% Для каждого виртуального сервера определить язык
{host_config, “jabber”,
[{language, “ru”}]
}.
%% Модули
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % requires mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_admin_extra, []},
{mod_disco, []},
%%{mod_echo, [{host, “echo.localhost”}]},
{mod_irc, []},
{mod_last, []},
{mod_muc, [
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin},
{max_users, 500}
]},
{mod_offline, [{access_max_user_messages, max_user_offline_messages}]},
{mod_privacy, []},
{mod_private, []},
{mod_proxy65, [
{access, local},
{shaper, c2s_shaper}
]},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{pep_sendlast_offline, false},
{last_item_cache, false},
%%{plugins, [“default”, “pep”]}
{plugins, [“flat”, “hometree”, “pep”]} % pep requires mod_caps
]},
{mod_roster, []},
% Тут добавлен Общий Список Контактов (редактируется в WEB панели)
{mod_shared_roster,[]},
{mod_stats, []},
{mod_time, []},
{mod_vcard, []},
{mod_version, []},
% Этот модуль будет записывать все разговоры
{mod_log_chat, [{path, “/var/log/ejabberd/chat”}, {format, html}]}
]}.
% Конец файла ejabberd.conf
Переходим на сайт модуля log_chat
Выкачиваем все папки, как там, в папку mod_log_chat на свой компьютер
Находим — mod_log_chat/trunk/src/mod_log_chat.erl
Вот этот файл нам надо откомпилировать в формат – beam
Я скинул в домашнюю директорию администратора создав папку «1»
Копируем из папки «src» файл «mod_log_chat.erl» в «../trunk» то есть на уровень выше
Туда же копируем необходимые для компилирования файлы из – /usr/lib/ejabberd/
А именно «ejabberd.hl1» и «jlib.hl1»
И выполняем команду находясь в директории
./trunk – “erl -pa mod_log_chat.erl -pz ebin -make”
Он выдаст не критическую ошибку
Warning: behavior gen_mod undefined
Теперь в директории ./trunk появился файл mod_log_chat.beam
Копируем его в “/usr/lib/ejabberd/ebin”
Переходим в директорию «/var/log/ejabberd» создаём там папку «chat» и выставляем на неё полные права
sudo chmod 777 chat
пишем
reboot
После перезагрузки заводим нашего админа
sudo ejabberdctl register admin jabber 123
Теперь можем зайти в веб панель администратора
Набираем в браузере
http://IP-JABBER:5280/admin
Где «IP-JABBER» IP нашего сервера
Вводим admin@jabber и пароль 123
В этой панели очень удобно администрировать
Настройка Iptables
Итак теперь нужно обеспечить безопасность сервера
Переходим в /etc/
Ищем файл rc.local
Дописываем перед строчкой exit 0
/etc/Firewall.sh
Создаём в /etc файл «Firewall.sh»
#!/bin/sh
########## Clear all tables ##########
iptables -t nat -F
iptables -t filter -F
iptables -t mangle -F
########## Default Rules ##########
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
########## Open Ports ##########
# Open SSH
iptables -t filter -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
# Jabber Web Panel
iptables -t filter -A INPUT -i eth0 -p tcp –dport 5280 -j ACCEPT
# Client XMPP
iptables -t filter -A INPUT -i eth0 -p tcp –dport 5222 -j ACCEPT
########## Allow by state ##########
iptables -t filter -A INPUT -i eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT
########## Allow loopback ##########
iptables -t filter -A INPUT -s localhost -d localhost -j ACCEPT
iptables -t filter -A FORWARD -s localhost -d localhost -j ACCEPT
########## Allow ICMP ##########
iptables -t filter -A INPUT -i eth0 -p icmp -j ACCEPT
exit 0
Выставляем права на файл
chmod 700 /etc/Firewall.sh