Установка XMPP (Jabber) сервера Ejabberd на FreeBSD

1. Устанавливаем FreeBSD 10 в минимальной установке.

2. vi /etc/freebsd-update.conf
изменяем Components (удаляем src)
удаляем папку /usr/src

3. Включаем firewall:
echo ‘firewall_enable=»YES»‘ >> /etc/rc.conf
echo ‘firewall_type=»client»‘ >> /etc/rc.conf
echo ‘firewall_script=»/etc/ipfw.rules»‘ >> /etc/rc.conf
Открыть порты:
TCP
5222 Клиент
5269 Сервер
5280 WEB interface
Пример файла /etc/ipfw.rules:
ipfw -q -f flush
cmd=»ipfw -q add»
pif=»hn0″
$cmd 00050 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
$cmd 00100 allow ip from any to any via lo0
$cmd 00200 deny ip from any to 127.0.0.0/24 via $pif
$cmd 00300 deny ip from 127.0.0.0/24 to any via $pif
$cmd 00400 deny ip from any to ::1 via $pif
$cmd 00500 deny ip from ::1 to any via $pif
$cmd 00550 allow tcp from any to any 5222 in via $pif
$cmd 00551 allow tcp from any to any 5269 in via $pif
$cmd 00552 allow tcp from any to any 5280 in via $pif
$cmd 01400 allow tcp from any to any via $pif established
$cmd 01500 allow ip from any to any via $pif frag
$cmd 01700 allow tcp from me to any via $pif setup
$cmd 01800 deny tcp from any to any via $pif setup
$cmd 01900 allow udp from me to any dst-port 53 via $pif keep-state
$cmd 04310 allow icmp from any to any via $pif
$cmd 09999 deny all from any to any

4. Устанавливаем OpenSSL и Ejabberd
portsnap fetch
portsnap extract
portsnap fetch update
pkg install ejabberd
pkg install openssl

5. Регистрируем администратора:
ejabberdctl register admin company.ru securepassword
где admin — логин администратора, hostingbloger.com — имя сервера, securepassword — пароль администратора.
Регистрация может не удасться, поэтому регистрируем аккаунт администратора из любого клиента Jabber

6. Добавляем в автозагрузку:
echo ‘ejabberd_enable=»YES»‘ >> /etc/rc.conf

7. Генерируем самодописанный сертификат (если нет нормального)
cd /usr/local/etc/ejabberd
openssl req -newkey rsa:4096 -keyout ejabberd.pem -nodes -x509 -days 3650 -out server.cer
echo «» >> ejabberd.pem
cat server.cer >> ejabberd.pem
chown ejabberd:ejabberd ejabberd.pem
chmod 0400 ejabberd.pem

8. Настройка DNS (прописываем SRV записи)
_xmpp-server._tcp.company.ru. 3600 IN SRV 5 0 5269 xmpp.company.ru.
_xmpp-client._tcp.company.ru. 3600 IN SRV 5 0 5222 xmpp.company.ru.

9. Правим /usr/local/etc/ejabberd/ejabberd.yml
hosts:
— «company.ru»

acl:
##
## The ‘admin’ ACL grants administrative privileges to XMPP accounts.
## You can put here as many accounts as you want.
##
admin:
user:
— «admin»: «company.ru»

10. Усиливаем защиту (/usr/local/etc/ejabberd/ejabberd.yml):
listen:

port: 5222

ciphers:
— «ECDH+aRSA+AES256 ECDH+aRSA+AES128 AES256-SHA»
protocol_options:
— «no_sslv3»

## Custom OpenSSL options
##
s2s_ciphers:
— «ECDH+aRSA+AES256 ECDH+aRSA+AES128 AES256-SHA»
##
s2s_protocol_options:
— «no_sslv3»
— «no_tlsv1»

11. Запускаем Ejabberd
service ejabberd start

12. Обновляем систему:
Загружаем обновления:
freebsd-update fetch
Устанавливаем обновления:
freebsd-update install
Обновляем текущий часовой пояс:
tzsetup -r

13. Примечания:
Особое внимание на символы табуляции в конфиге, Ejabberd очень чувствителен к ним, при малейшем несовпадении, сервис не запустится !!!

14. Заходим в панель управления по адресу http://xmpp.company.ru:5280/admin