Безопасность Openfire jabber сервера и сертификат от Let's Encrypt

Пришлось настраивать openfire jabber сервер. Просили использовать сертификат от Let’s Encrypt, естественно его авто обновление и добиться максимальной оценки на xmpp.org. Описывать установку не буду. В моём случае это был CentOS 6.6, Openfire 4.0.2 был установлен из своего же пакета, оказался на разделе /opt. Java 8 используется интегрированная в пакет, находится там же. Для получения сертификата используем LetsEncrypt. 1 /root/letsencrypt/letsencrypt-auto certonly --webroot -w /opt/ssl -d example.com для того чтоб всё отработало нужно в конфиг виртуального хоста вэб сервера нужного домена добавить что-то такое: 1 Alias "/.well-known" "/opt/ssl/.well-known" Сами должны разобраться. Отключаем устаревшие шифры в файле /opt/openfire/jre/lib/security/java.security 1 2 jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024 jdk.tls.disabledAlgorithms=SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5, SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DH_DSS_WITH_DES_CBC_SHA, SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DH_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, SSL_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_RC4_128_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA, SSL_FORTEZZA_DMS_WITH_NULL_SHA, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA, SSL_RSA_EXPORT1024_WITH_RC4_56_SHA, SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_FIPS_WITH_DES_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_WITH_IDEA_CBC_SHA, SSL_RSA_WITH_NULL_MD5, SSL_RSA_WITH_NULL_SHA, SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5, SSL_DH_anon_WITH_RC4_128_MD5, SSL_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, SSL_DHE_DSS_WITH_RC4_128_SHA, TLS_DHE_PSK_WITH_RC4_128_SHA, TLS_ECDH_anon_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_PSK_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_KRB5_EXPORT_WITH_RC4_40_MD5, TLS_KRB5_EXPORT_WITH_RC4_40_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHA, TLS_PSK_WITH_RC4_128_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT1024_WITH_RC4_56_SHA, TLS_RSA_PSK_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSLv3 Для активации 256 битных шифров нужно перейти на сайт java и скачать обновлённые файлы. Переходим по ссылке http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html и качаем файл jce_policy-8.zip. Распаковываем содержимое в /opt/openfire/jre/lib/security/ с заменой. Для активации 2048 DH ключа нужно в самом скрипте запуска добавить в строку запуска параметр -Djdk.tls.ephemeralDHKeySize=2048. В человеческих системах, или когда люди больше разбираются, нужно это делать по другому ...

3 травня 2016 · 3 хвилин · 475 слів · dimetrius

Curl для просмотра локальных виртуальных хостов

Иногда, когда у нас целая цепочка вэб серверов, прокси и т.д., нужно обратиться непосредственно к последнему вэб серверу, что бы исключить все возможные ошибки на следующих. Для этого можно использовать curl с ключём -H для передачи необходимых заголовков. 1 curl -H 'Host: domain.com' http://127.0.0.1/something

13 квітня 2016 · 1 хвилина · 44 слів · dimetrius

FreeBSD: Добавить/удалить дополнительный IP алиасом

Добавляем дополнительный IP адрес сетевой карте во FreeBSD Обратите внимание на слово alias в конце команды. Если его не будет, то команда заменит текущий основной IP адрес тем, что мы хотим добавить. В этом примере сетевой адаптер имеет имя dc0 (# DEC/Intel 21143 или аналогичные). Имена могут быть разными. 1 ifconfig dc0 inet 192.168.0.100 netmask 255.255.255.255 alias Для того что бы этот алиасный IP адрес подтянулся после перезагрузки, отредактируйте и добавьте следующую строку в файл /etc/rc.conf: 1 ifconfig_dc0_alias0="inet 192.168.0.100 netmask 255.255.255.255" Маска подсети будет работать, если новый IP адрес в той же подсети, что и основной IP адрес. Только один IP адрес подсети на адаптере должен иметь реальную маску подсети, отличную от 255.255.255.255. Удаление алиасного IP адреса с сетевого адаптера во FreeBSD 1 ifconfig dc0 inet 192.168.0.100 -alias Теперь можете использовать ifconfig dc0 команду для того чтоб увидеть результат.

13 квітня 2016 · 1 хвилина · 139 слів · dimetrius

Защита Pure-FTPd с помощью fail2ban

На моих серверах обычно трудится FTP демон Pure-FTPd, в то же время всегда установлен fail2ban для защиты сервера по SSH. Заметил что в фильтрах fail2ban лежит файл pure-ftpd.conf, что как бы намекает: “Реализуй же ты защиту…”. Но в jail.conf о pure-ftpd упоминания небыло, заниматься было лень, а тут на днях пробило. Все действия проводились на Russian Fedora 16 (RFRemix 16). Считаем что у нас уже установлены Pure-FTPd и fail2ban. Для начала смотрим в лог pure-ftpd, есть ли в нём не удачные попытки авторизации. Если таковых нет, то попросите друга, или сами сделайте несколько ошибочных вводов пароля. Задача в том чтоб в логе появились сообщения об ошибках авторизации в нужном кол-ве, т.е. в том кол-ве, после которого клиента должно забанить. 1 cat /var/log/messages Видим попытки безуспешной авторизации? Здорово! Теперь пробуем, увидит ли их fail2ban с нынешними фильтрами 1 fail2ban-regex '/var/log/messages' '/etc/fail2ban/filter.d/pure-ftpd.conf' Скорее всего фильтр ничего не найдёт, скажет что адреса не найдены, или как-то так… Изменим фильтр, чтоб тот корректно обрабатывал современные логи pure-ftpd. # vim /etc/fail2ban/filter.d/pure-ftpd.conf Вот содержимое файла без закоментированных участков: 1 2 3 4 [Definition] __errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur) failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$ ignoreregex = Сохраним файл /etc/fail2ban/filter.d/pure-ftpd.conf и попробуем снова увидит ли ошибочные авторизации fail2ban # fail2ban-regex '/var/log/messages' '/etc/fail2ban/filter.d/pure-ftpd.conf' ...

13 квітня 2016 · 2 хвилин · 340 слів · dimetrius

Исправляем на FreeBSD ошибку ufs_dirbad: bad dir

Недавно один FreeBSD сервер начал перезагружаться в течении пары минут после запуска nginx, промежуток времени всегда отличался. Во время очередного падения я заметил на основной консоли (выводе на монитор, IPMI, или iDrac) ошибочку примерно следующего содержимого: 1 2 3 4 5 ... panic: ufs_dirbad: /usr/home: bad dir ino 37643418 at offset 10752: mangled entry cpuid = 3 KDB: stack backtrace: .... Это было странно, т.к. проверка ФС с помощью fsck -y в сингле проходила без проблем. Нужно было как-то решать эту проблему. Снова таки загружаемся в сингл, смотрим содержимое fstab 1 cat /etc/fstab в моём случае раздел /usr/home был примонтирован с устройства /dev/ada1p4. Снова запускаем проверку ФС, но немного по другому 1 fsck -t ufs -y /dev/ada1p4 В этот раз fsck находит и справляет ошибки. Выполняем 1 reboot и радуемся прекрасно работающему nginx. Совсем не обязательно чтоб это был nginx, статья была написана из личного опыта с примерами из forums.freebsd.org.

13 квітня 2016 · 1 хвилина · 150 слів · dimetrius

Как добавить пользователя в группу на FreeBSD

При добавлении пользователей в отдельные группы можно просто изменять различные параметры учётной записи. Для этого нужно использовать команду PW. С помощью этого редактора на основе командной строки суперпользователь root может изменять пользователей и их группы в стандартизированной форме на FreeBSD. Такие как добавление, изменение и удаление пользователей и групп. Root доступ необходим для редактирования системных файлов и выполнения команд. Войдите как root(su) или просто припишите sudo для всех команд, которые требуют привилегий суперпользователя. Добавить нового пользователя в группу Добавить нового пользователя vasya в систему и добавить этого пользователя в группу clients. 1 pw useradd vasya -G clients Установить пароль для нового пользователя vasya. 1 passwd vasya Добавление существующего пользователя в группу Добавить существующего пользователя vasya в группу clients. 1 pw usermod vasya -G clients Вы можете добавить пользователя в несколько групп сразу одной командой. Следующая команда добавит пользователя vasya в группы clients, www-data. 1 pw usermod vasya -G clients,www-data Перевод на основе bin63.com

13 квітня 2016 · 1 хвилина · 153 слів · dimetrius

Как установить текстовый редактор по умолчанию в Ubuntu?

Просмотреть список доступных текстовых редакторов и выбрать тот, который будет использоваться по умолчанию, можно следующим образом: 1 sudo update-alternatives --config editor Результатом выполнения этой команды будет 1 2 3 4 5 6 7 8 There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/vim.basic 30 auto mode 1 /bin/ed -100 manual mode* 2 /usr/bin/mcedit-debian 25 manual mode 3 /usr/bin/vim.basic 30 manual mode Press enter to keep the current choice[*], or type selection number: Вводите цифру соответствующую текстовому редактору, и все!

13 квітня 2016 · 1 хвилина · 87 слів · dimetrius

Количество полуоткрытых TCP соединений в Linux

В качестве заметки для себя Узнать текущее значение 1 sysctl net.ipv4.tcp_max_syn_backlog Изменить текущее значение 1 sysctl -w net.ipv4.tcp_max_syn_backlog=2048 Чтобы данное изменение сохранялось после перезагрузки, можно в /etc/sysctl.conf добавить 1 net.ipv4.tcp_max_syn_backlog=2048

13 квітня 2016 · 1 хвилина · 30 слів · dimetrius

Настройка выполнения заданий через Cron в Linux

Бывают случаи, когда вам нужно создать расписание выполнимых задач на сервере. Предположим что вы хотите сделать резервную копию на жесткий диск раз в неделю, или вы хотите запустить скрипт в 6 часов утра каждый день. Все эти задачи, которые вы хотите запустить в определённый интервал времени, могут быть настроены с помощью Cron. Демон Cron давно используется там, где нужно выполнять команды пользователя в определённые промежутки времени. Это руководство представляет собой учебник в котором шаг за шагом описывается как можно планировать такие задачи, используя программу с названием Crontab. Настройка crontab на самом деле очень проста. Для редактирования расписания crontab используйте следующую команду 1 crontab -e Если редактор по умолчанию не определен, то вы можете увидеть сообщение об ошибке: 1 2 /bin/sh: /bin/vi: No such file or directory crontab: "/bin/vi" exited with status 127 Для того чтоб определить используемый редактор по умолчанию, выполним 1 export EDITOR=vim Теперь Vim будет использоваться как редактор по умолчанию. Вы можете использовать любой редактор на ваш выбор, например (emacs, nano и т.д.). 1 2 3 4 5 6 7 * * * * * команда/которая/должна/быть/выполнена | | | | | | | | | ----- День недели (0 - 7) (Воскресение=0 или 7) | | | ------- Месяц (1 - 12) | | --------- День месяца (1 - 31) | ----------- Час (0 - 23) ------------- Минуты (0 - 59) Предположим, вы хотите запускать скрипт каждый час ...

13 квітня 2016 · 3 хвилин · 520 слів · dimetrius

Настройка даты и времени в Debian

Точное время необходимо для правильной работы системы, поэтому займемся первым делом этим вопросом. Установим пакет ntpdate 1 apt-get install ntpdate Сверим время с сервером точного времени 1 ntpdate-debian При необходимости произведем смену часового пояса через 1 tzconfig тут все по русски, выбираем необходимое. Теперь отключаем контроль разницы во времени БИОС и системы по местному времени, дело в том, что по умолчанию система считает, что время БИОС это точное международное время по Гринвичу и система должна корректировать свое время по местной разнице исходя от него, оставляя время БИОС без корректировки. Если мы хотим соответствия времени системы со временем БИОС, то заходим в /etc/default/rcS заменяем UTC=yes на UTC=no и выполняем 1 /etc/init.d/hwclock.sh restart перезапускаем сервер времени. Если у вас платформа amd64, то ваши часы наверняка убегают вперед, это происходит потому что по умолчанию работает таймер tsc, а нам нужен hpet, ибо tsc ведет себя таким вот безобразным образом в системах amd64. Как быть? Отключаем таймер tsc, а так как система не может без таймера, то она запустит следующий свободный hpet. Для этого необходимо передать ядру параметр notsc, его следует прописать в файле /boot/grub/menu.lst в строке с kernel в конце после уже прописанных параметров через пробел от последнего, сохранить и перезагрузить систему, это единственный случай, когда я не нашел варианта применить изменения без перезагрузки, суть задачи передать этот параметр ядру, но как это сделать без перезагрузки я пока не знаю, возможно есть вариант. Теперь время идет точно и соответствует нашему часовому поясу.Для синхронизации времени с интернет сервером необходимо установить ...

13 квітня 2016 · 2 хвилин · 263 слів · dimetrius