sysmerge IT

17 сент. 2019 г.

ISPManager 5 - вернуть общий лог /var/log/nginx/access.log

В ispmanager5 общий лог /var/log/nginx/access.log сервера по-умолчанию не пишется, все логи разбиты по доменам и пишутся в соответствующие /var/log/httpd-log/site.ru.access.log . Но иногда бывается очень полезно посмотреть общий лог сервера. И внезапно оказывается, что включить его через глобальный конфиг nginx не выйдет. А чтобы включить логгирование сделать нужно следующее: в директории /etc/nginx/vhosts-includes/ создаем файл log.conf (название файла может быть любым, главное, чтобы он оканчивался на conf ), а в него добавляем:
access_log /var/log/nginx/access.log main;
Сохраняем, делает рестарт сервиса nginx и проверяем лог с помощью tail -f /var/log/nginx/access.log 
4 сент. 2019 г.

Ошибка: Пакет: php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64 (remi-php56) Необходимо: libzip5(x86-64) >= 1.5.1

При обновлении php с версии php5.3 до php5.6 в Centos 6 возникает следующая ошибка
# yum update php
Загружены модули: fastestmirror, security
Подготовка к обновлению
Loading mirror speeds from cached hostfile
 * base: mirrors.daticum.com
 * epel: epel.uni-sofia.bg
 * extras: mirrors.daticum.com
 * remi-php56: mirrors.uni-ruse.bg
 * updates: mirrors.daticum.com
Разрешение зависимостей
--> Проверка сценария
---> Package php.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php.x86_64 0:5.6.40-13.el6.remi will be an update
--> Обработка зависимостей: php-common(x86-64) = 5.6.40-13.el6.remi для пакета: php-5.6.40-13.el6.remi.x86_64
--> Обработка зависимостей: php-cli(x86-64) = 5.6.40-13.el6.remi для пакета: php-5.6.40-13.el6.remi.x86_64
--> Проверка сценария
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-cli.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-common.x86_64 0:5.3.3-49.el6 will be для обновления
--> Обработка зависимостей: php(api) = 20090626 для пакета: php-mcrypt-5.3.3-5.el6.x86_64
--> Обработка зависимостей: php(zend-abi) = 20090626 для пакета: php-mcrypt-5.3.3-5.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-pdo-5.3.3-49.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-mbstring-5.3.3-49.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-mysql-5.3.3-49.el6.x86_64
---> Package php-common.x86_64 0:5.6.40-13.el6.remi will be an update
--> Обработка зависимостей: php-pecl-jsonc(x86-64) для пакета: php-common-5.6.40-13.el6.remi.x86_64
--> Обработка зависимостей: php-pecl-zip(x86-64) для пакета: php-common-5.6.40-13.el6.remi.x86_64
--> Проверка сценария
---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-mbstring.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-mcrypt.x86_64 0:5.3.3-5.el6 will be для обновления
---> Package php-mcrypt.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be как недействительный
---> Package php-mysqlnd.x86_64 0:5.6.40-13.el6.remi will be obsoleting
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-pdo.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-pecl-jsonc.x86_64 0:1.3.10-2.el6.remi.5.6 will be для установки
---> Package php-pecl-zip.x86_64 0:1.15.4-1.el6.remi.5.6 will be для установки
--> Обработка зависимостей: libzip5(x86-64) >= 1.5.1 для пакета: php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64
--> Обработка зависимостей: libzip.so.5()(64bit) для пакета: php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64
--> Проверка зависимостей окончена
Ошибка: Пакет: php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64 (remi-php56)
            Необходимо: libzip5(x86-64) >= 1.5.1
Ошибка: Пакет: php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64 (remi-php56)
            Необходимо: libzip.so.5()(64bit)
 Вы можете попробовать --skip-broken чтобы обойти проблему
 Вы можете попробовать запустить: rpm -Va --nofiles --nodigest
То есть нужен libzip5.
Устанавливаем его вручную
yum --enablerepo=remi install libzip5

И пробуем еще раз обновление php
# yum update php
Загружены модули: fastestmirror, security
Подготовка к обновлению
Loading mirror speeds from cached hostfile
 * base: mirrors.daticum.com
 * epel: epel.uni-sofia.bg
 * extras: mirrors.daticum.com
 * remi-php56: mirrors.uni-ruse.bg
 * updates: mirrors.daticum.com
Пробуем другое зеркало.
Разрешение зависимостей
--> Проверка сценария
---> Package php.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php.x86_64 0:5.6.40-13.el6.remi will be an update
--> Обработка зависимостей: php-common(x86-64) = 5.6.40-13.el6.remi для пакета: php-5.6.40-13.el6.remi.x86_64
--> Обработка зависимостей: php-cli(x86-64) = 5.6.40-13.el6.remi для пакета: php-5.6.40-13.el6.remi.x86_64
--> Проверка сценария
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-cli.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-common.x86_64 0:5.3.3-49.el6 will be для обновления
--> Обработка зависимостей: php(api) = 20090626 для пакета: php-mcrypt-5.3.3-5.el6.x86_64
--> Обработка зависимостей: php(zend-abi) = 20090626 для пакета: php-mcrypt-5.3.3-5.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-pdo-5.3.3-49.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-mbstring-5.3.3-49.el6.x86_64
--> Обработка зависимостей: php-common(x86-64) = 5.3.3-49.el6 для пакета: php-mysql-5.3.3-49.el6.x86_64
---> Package php-common.x86_64 0:5.6.40-13.el6.remi will be an update
--> Обработка зависимостей: php-pecl-jsonc(x86-64) для пакета: php-common-5.6.40-13.el6.remi.x86_64
--> Обработка зависимостей: php-pecl-zip(x86-64) для пакета: php-common-5.6.40-13.el6.remi.x86_64
--> Проверка сценария
---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-mbstring.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-mcrypt.x86_64 0:5.3.3-5.el6 will be для обновления
---> Package php-mcrypt.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be как недействительный
---> Package php-mysqlnd.x86_64 0:5.6.40-13.el6.remi will be obsoleting
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be для обновления
---> Package php-pdo.x86_64 0:5.6.40-13.el6.remi will be an update
---> Package php-pecl-jsonc.x86_64 0:1.3.10-2.el6.remi.5.6 will be для установки
---> Package php-pecl-zip.x86_64 0:1.15.4-1.el6.remi.5.6 will be для установки
--> Проверка зависимостей окончена

Зависимости разрешены

===============================================================================================
 Пакет                  Архитектура    Версия                         Репозиторий        Размер
===============================================================================================
Установка:
 php-mysqlnd            x86_64         5.6.40-13.el6.remi             remi-php56         280 k
     замена  php-mysql.x86_64 5.3.3-49.el6
Обновление:
 php                    x86_64         5.6.40-13.el6.remi             remi-php56         2.7 M
Установка зависимостей:
 php-pecl-jsonc         x86_64         1.3.10-2.el6.remi.5.6          remi-php56          52 k
 php-pecl-zip           x86_64         1.15.4-1.el6.remi.5.6          remi-php56          54 k
Обновление зависимостей:
 php-cli                x86_64         5.6.40-13.el6.remi             remi-php56         4.0 M
 php-common             x86_64         5.6.40-13.el6.remi             remi-php56         1.1 M
 php-mbstring           x86_64         5.6.40-13.el6.remi             remi-php56         973 k
 php-mcrypt             x86_64         5.6.40-13.el6.remi             remi-php56          52 k
 php-pdo                x86_64         5.6.40-13.el6.remi             remi-php56         122 k

Результат операции
===============================================================================================
Установить     3 пакет(а,ов)
Обновить     6 пакет(а,ов)

Объем загрузки: 9.2 M
Продолжить? [y/N]: y
Загрузка пакетов:
(1/9): php-5.6.40-13.el6.remi.x86_64.rpm                                | 2.7 MB     00:01    
(2/9): php-cli-5.6.40-13.el6.remi.x86_64.rpm                            | 4.0 MB     00:02    
(3/9): php-common-5.6.40-13.el6.remi.x86_64.rpm                         | 1.1 MB     00:00    
(4/9): php-mbstring-5.6.40-13.el6.remi.x86_64.rpm                       | 973 kB     00:00    
(5/9): php-mcrypt-5.6.40-13.el6.remi.x86_64.rpm                         |  52 kB     00:00    
(6/9): php-mysqlnd-5.6.40-13.el6.remi.x86_64.rpm                        | 280 kB     00:00    
(7/9): php-pdo-5.6.40-13.el6.remi.x86_64.rpm                            | 122 kB     00:00    
(8/9): php-pecl-jsonc-1.3.10-2.el6.remi.5.6.x86_64.rpm                  |  52 kB     00:00    
(9/9): php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64.rpm                    |  54 kB     00:00    
-----------------------------------------------------------------------------------------------
Общий размер                                                   1.5 MB/s | 9.2 MB     00:06    
Запуск rpm_check_debug
Проверяем сценарий
Проверка сценария прошла успешно
Запускается сценарий
  Установка   : php-pecl-jsonc-1.3.10-2.el6.remi.5.6.x86_64                               1/16
  Установка   : php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64                                 2/16
  Обновление  : php-common-5.6.40-13.el6.remi.x86_64                                      3/16
warning: /etc/php.ini created as /etc/php.ini.rpmnew
  Обновление  : php-cli-5.6.40-13.el6.remi.x86_64                                         4/16
  Обновление  : php-pdo-5.6.40-13.el6.remi.x86_64                                         5/16
  Установка   : php-mysqlnd-5.6.40-13.el6.remi.x86_64                                     6/16
  Обновление  : php-5.6.40-13.el6.remi.x86_64                                             7/16
  Обновление  : php-mbstring-5.6.40-13.el6.remi.x86_64                                    8/16
  Обновление  : php-mcrypt-5.6.40-13.el6.remi.x86_64                                      9/16
  Удаление    : php-mysql-5.3.3-49.el6.x86_64                                            10/16
  Очистка     : php-5.3.3-49.el6.x86_64                                                  11/16
  Очистка     : php-cli-5.3.3-49.el6.x86_64                                              12/16
  Очистка     : php-pdo-5.3.3-49.el6.x86_64                                              13/16
  Очистка     : php-mcrypt-5.3.3-5.el6.x86_64                                            14/16
  Очистка     : php-mbstring-5.3.3-49.el6.x86_64                                         15/16
  Очистка     : php-common-5.3.3-49.el6.x86_64                                           16/16
=====================================================================

  WARNING : PHP 5.6 have reached its "End of Life" in
  January 2019. Even, if this package includes some of
  the important security fix, backported from 7.1, the
  UPGRADE to a maintained version is very strongly RECOMMENDED.

=====================================================================
  Verifying   : php-5.6.40-13.el6.remi.x86_64                                             1/16
  Verifying   : php-common-5.6.40-13.el6.remi.x86_64                                      2/16
  Verifying   : php-mbstring-5.6.40-13.el6.remi.x86_64                                    3/16
  Verifying   : php-pecl-jsonc-1.3.10-2.el6.remi.5.6.x86_64                               4/16
  Verifying   : php-mcrypt-5.6.40-13.el6.remi.x86_64                                      5/16
  Verifying   : php-cli-5.6.40-13.el6.remi.x86_64                                         6/16
  Verifying   : php-mysqlnd-5.6.40-13.el6.remi.x86_64                                     7/16
  Verifying   : php-pecl-zip-1.15.4-1.el6.remi.5.6.x86_64                                 8/16
  Verifying   : php-pdo-5.6.40-13.el6.remi.x86_64                                         9/16
  Verifying   : php-pdo-5.3.3-49.el6.x86_64                                              10/16
  Verifying   : php-mbstring-5.3.3-49.el6.x86_64                                         11/16
  Verifying   : php-mysql-5.3.3-49.el6.x86_64                                            12/16
  Verifying   : php-mcrypt-5.3.3-5.el6.x86_64                                            13/16
  Verifying   : php-cli-5.3.3-49.el6.x86_64                                              14/16
  Verifying   : php-5.3.3-49.el6.x86_64                                                  15/16
  Verifying   : php-common-5.3.3-49.el6.x86_64                                           16/16

Установлено:
  php-mysqlnd.x86_64 0:5.6.40-13.el6.remi                                                     

Зависимости установлены:
  php-pecl-jsonc.x86_64 0:1.3.10-2.el6.remi.5.6   php-pecl-zip.x86_64 0:1.15.4-1.el6.remi.5.6 

Обновлено:
  php.x86_64 0:5.6.40-13.el6.remi                                                             

Зависимости обновлены:
  php-cli.x86_64 0:5.6.40-13.el6.remi             php-common.x86_64 0:5.6.40-13.el6.remi      
  php-mbstring.x86_64 0:5.6.40-13.el6.remi        php-mcrypt.x86_64 0:5.6.40-13.el6.remi      
  php-pdo.x86_64 0:5.6.40-13.el6.remi           

Заменено:
  php-mysql.x86_64 0:5.3.3-49.el6  
15 авг. 2019 г.

Автообновление wildcard letsencrypt сертификата

Получить wildcard сертификат бесплатно сейчас довольно легко, через Letsencypt. С помощью подтверждения через DNS записи. Проблема лишь в том, что для продления сертификата оперцию придется повторить. У "больших" игроков на рынке есть специальные плагины для автообновления, как то certbot-dns-cloudflare или certbot-dns-digitalocean.  Сегодня же мы рассмотрим для этих целей плагин https://github.com/joohoi/acme-dns-certbot-joohoi .

Скрипт очень прост в использовании. Качаем его:
 # curl -o /etc/letsencrypt/acme-dns-auth.py https://raw.githubusercontent.com/joohoi/acme-dns-certbot-joohoi/master/acme-dns-auth.py
# chmod 0700 /etc/letsencrypt/acme-dns-auth.py
В случае необходимости настройки в скрипте можно отредактировать ( в частности ACMEDNS_URL ).

Теперь нужно выпустить сертификат. Для этого помимо стандартных опций для получения wildcard letsencrypt сертификата добавляется --manual-auth-hook , который указывает на этот самый скрипт, и который будет запомнен в качестве хука для домена на будущее продление.
 # certbot certonly --manual --manual-auth-hook /etc/letsencrypt/acme-dns-auth.py    --preferred-challenges dns --debug-challenges  -d example.org -d \*.example.org

Уточняем, что опция  --debug-challenges тут так же важна, она позволяет приостановить выполнение скрипта до момента, когда вы будете готовы к валидации CNAME записи.

Далее необходимо со стороны днс настроить запрашиваемую CNAME запись, подождать пока запись обновится, продолжить выполнение скрипта и получить сертификат.

Дальнейшее обновление может выполняться с помощью обычного крона и certbot renew.
20 июн. 2019 г.

Centos VestaCP - exim - Malformed value "unlimitedM" (expansion of "${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}M") in local_delivery transport

На одном из серверов возникла проблема с получением писем. В логах почтового сервера наблюдаем следующее:
2019-06-20 14:36:37 1hdvMr-0000Iu-Fm DKIM: d=sender.net s=dkim c=relaxed/relaxed a=rsa-sha256 b=1024 [verification failed - signature did not verify (headers probably modified in transit)]
2019-06-20 14:36:37 1hdvMr-0000Iu-Fm <= sender@sender.net H=mail.sender.net [185.14.28.86] P=esmtps X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=no K S=1527 id=0d4f9076-6cfb-6cfe-90f4-30ca6341e609@sender.net
2019-06-20 14:36:37 1hdvMr-0000Iu-Fm == admin@site.com.ua R=localuser T=local_delivery defer (-1): Malformed value "unlimitedM" (expansion of "${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}M") in local_delivery transport

Решением будет правка скрипта пересборки почтовых конфигов.
Нужно отредактировать скрипт  /usr/local/vesta/func/rebuild.sh. Ищем там функцию rebuild_mail_domain_conf() и добавляем в конец:
if [ "$QUOTA" = 'unlimited' ]; then
       QUOTA=0
fi
После чего пересобираем конфиги
v-rebuild-mail-domains admin
 Готово, прием почты должен работать корректно.
11 июн. 2019 г.

Критическая уязвимость в Exim CVE-2019-10149 ( версии 4.87 по 4.91 )

6 июня стало известно о критический уязвимости почтового сервера Exim CVE-2019-10149.
Уязвимости подвержены версии с 4.87 по 4.91.
Фрагменты вирусов, эксплуатирующих данную уязвимость могут быть обнаружены в директориях:
/etc/cron.daily/cronlog
/etc/cron.d/root
/etc/cron.d/.cronbus
/etc/cron.hourly/cronlog
/etc/cron.monthly/cronlog
/var/spool/cron/root
/var/spool/cron/crontabs/root
/etc/cron.d/root
/etc/crontab
/root/.cache/
/root/.cache/a
/usr/local/bin/nptd
/root/.cache/.kswapd
/usr/bin/[kthrotlds]
/root/.ssh/authorized_keys
/.cache/*
/.cache/.sysud
/.cache/.a
/.cache/.favicon.ico
/.cache/.kswapd
/.cache/.ntp
Так же могут присутствовать ключи ssh, скрипты автозапуска в  /etc/rc.local .

Для быстрой очистки и обновления Firstvds выкатил небольшой скрипт, который чистит все файлы, вышеперечисленные, обновляет Exim, делает реинсталл curl'а.

Запустить скрипт можно так:
wget http://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh

5 июн. 2019 г.

Firefox - после обновление пропали скрипты greasemonkey

После очередного обновления Firefox все скрипты greasemonkey (включая его самого) стали недоступны.
Речь идет об обновлении с версии Mozilla до 57 на версию выше.
Чтобы достать свои скрипты нужно полезть по следующему пути:
root@debian:/home/user# ls -la.mozilla/firefox/sbza604q.default/gm_scripts/MyUserScript/MyUserScript.user.js

Оттуда его можно выдернуть и перенести на новый greasmonkey
19 мая 2019 г.

Debian: Release file for http://archive.debian.org/debian/dists/jessie-backports/InRelease is expired (invalid since 88d 16h 32min 47s). Updates for this repository will not be applied.

На Debian 8 после переключения на архивный репозиторий ftp.debian.org на archive.debian.org запуск обновления пакетов командой apt-get update может завершиться ошибкой
E: Release file for http://archive.debian.org/debian/dists/jessie-backports/InRelease is expired (invalid since 88d 16h 32min 47s). Updates for this repository will not be applied.
Error executing command, exiting
Для решения этой проблемы apt можно запустить с ключем '' -o Acquire::Check-Valid-Until=false"
apt-get -o Acquire::Check-Valid-Until=false update
Сделать эту опцию перманентной можно так
echo 'Acquire::Check-Valid-Until "0";' > /etc/apt/apt.conf.d/10no-check-valid-until
после чего apt-get update будет работать в штатном режиме.