sysmerge IT

21 нояб. 2020 г.

Apache2 - VirtualDocumentRoot + DocumentRoot

VirtualDocumentRoot используется для того, чтобы вебсервер мог по имени хоста определить коренную директорию домена. В общем случае достаточно такой строки:

VirtualDocumentRoot /var/www/%0

 %0 интерпретируется в полное имя хоста ( domen.ru / sub.domen.ru и тд). Соответственно, при запросе domen.ru мы попадем в  /var/www/domen.ru.

А теперь представим, что у нас есть определенный домен, для которого нужны уникальные правила обработки. К примеру, wildcard сабдомены без создания непосредственно директорий сабдоменов - отправлять все запросы с сабдомена на основной домен.

Сразу приведу готовый сниппет:

VirtualDocumentRoot /var/www/%0

<VirtualHost *:80>

    ServerAlias *.custom-domain.ru

     ServerAlias custom-domain.ru

    UseCanonicalName Off

    DocumentRoot /var/www/custom-domain.ru/

    VirtualDocumentRoot none

</VirtualHost>

Стоит объяснить  -  VirtualDocumentRoot в глобальном конфиге будет переопределять все значения для DocumentRoot, если не указать VirtualDocumentRoot none ( для каждого VirtualHost, где нужно отключить VirtualDocumentRoot ).  

В итоге все работает как и ожидалось - все домены обрабатываются через VirtualDocumentRoot, а custom-domain.ru и все его сабдомены работают через определенный DocumentRoot

12 июл. 2020 г.

Centos 8: Firewalld правила для сервера Wireguard

Большое количество мануалов по настройке Wireguard на Сentos 8 используют для настройки форвардинга и маскарадинга правила Iptables. Но с firewalld это сделать даже проще, выглядеть рабочий конфиг будет так:
# cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51386
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ
PostUp = firewall-cmd --zone=public --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-port 51820/udp; firewall-cmd --zone=public --remove-masquerade

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА
AllowedIPs = 10.0.0.0/24

Аналогичные PostUp и PostDown для iptables выглядеть будут уже посложнее:
PostUp = iptables -A INPUT -p udp -m udp --dport 51820  -j ACCEPT; iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp -m udp --dport 51820  -j ACCEPT; iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
 

22 июн. 2020 г.

Exim 4.94-1: Tainted filename for search: '/etc/exim/domains/DOMAIN/aliases' BOX@DOMAIN cannot be resolved at this time

После последнего обновления Exim до версии 4.94 на Centos 7 сломалась обратная совместимость и, что самое печальное, при работе с панелями VESTA / Directadmin / Ispmanager почта перестала работать. В логе exim можно видеть такие ошибки
Tainted filename for search: '/etc/exim/domains/DOMAIN/aliases'
BOX@DOMAIN cannot be resolved at this time: failed to expand "${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}}}}": NULL

Пока единственным решением является а) не обновляться, б) откатиться обратно.
Откатить версию exim до 4.93-3 можно такой командой:
# wget https://ca1.dynanode.net/exim-4.93-3.el7.x86_64.rpm 
# rpm -Uvh --oldpackage exim-4.93-3.el7.x86_64.rpm 
 
6 июн. 2020 г.

Exim: Failed to create spool file /var/spool/exim/input//1eFi0K-0008KX-WD-D: Permission denied ( Failed setting ownership on spool file )

При попытке отправить письмо получаем следующие ошибки в логе почтового сервера:
[Fri Nov 17 17:52:29.000002 2017] [cgi:error] [pid 30087] [client *:44626] AH01215: 2017-11-17 17:52:28 1eFi0K-0008KX-WD Failed to create spool file /var/spool/exim//input//1eFi0K-0008KX-WD-D: Permission denied
[Fri Nov 17 17:52:39.405894 2017] [cgi:error] [pid 30084] [client *:44628] AH01215: 2017-11-17 17:52:39 1eFi0V-0008Kw-D4 Failed setting ownership on spool file /var/spool/exim//input//1eFi0V-0008Kw-D4-D: Operation not permitted

Проблем с правами на /var/spool/exim нет, проверим флаги на самом бинарнике exim
 
# ls -la /usr/sbin/exim -rwxr-xr-x 1 root root 1233384 авг 18 18:21 /usr/sbin/exim

Выглядит довольно странно, так как отсутствует флаг s ( suid ). Отсюда и проблема с правами при попытке создать spool файл. Исправляем:
# chmod +s /usr/sbin/exim # ls -la /usr/sbin/exim -rwsr-sr-x 1 root root 1233384 авг 18 18:21 /usr/sbin/exim

Wordpress - /wp-admin/ циклический редирект https

Для исправления проблемы с циклическим редиректом в админку /wp-admin/ сайта на wordpress можно попробовать следующее решение. В конфиг файл wp-config.php добавляет следующие 2 строчки:

define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS']='on';

21 мая 2020 г.

MacOS: нарезать flac на треки по CUE + кодировка в alac

Для начала установим нужные нам утилиты, я предпочитаю использовать для этого homebrew.
brew install cuetools flac ffmpeg shntool

Разбиваем на треки
shnsplit -o flac -f file.cue file.flac

Заполняем мета информацию 
cuetag file.cue split-track*.flac

Скрипт cuetag.sh можно взять отсюда https://github.com/gumayunov/split-cue/blob/master/cuetag

Готово. Flac разбит на отдельный треки по CUE. 
Если нужна конвертация в ALAC, то можно выполнить такую команду

$ for i in *.flac; do ffmpeg -i "$i" -acodec alac "`basename "$i" .flac`.m4a"; done;
27 апр. 2020 г.

MacOS Catalina Chrome NET::ERR_CERT_INVALID

В недавних пор в MacOS Catalina для браузера Chrome в частности ошибка NET::ERR_CERT_INVALID не позволяет продолжить использования сайта, нет возможности принять риск и продолжить.

Но есть небольшой трюк - достаточно набрать на клавиатуре слово "thisisunsafe" и все заработает.

PS: используйте это только для ваших личных проектов с самоподписанными сертификатами, не стоит использовать такой метод для сайтов, которым вы не доверяете

rkhunter: Update failed

При обновлении базы rkhunter получаем ошибку   [ Update failed ] на ряд пунктов обновления, выглядит так:
# rkhunter --update
[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ Skipped ]
  Checking file programs_bad.dat                             [ Update failed ]
  Checking file backdoorports.dat                            [ Update failed ]
  Checking file suspscan.dat                                 [ Update failed ]
  Checking file i18n versions                                [ Update failed ]

Please check the log file (/var/log/rkhunter.log)
Чтобы обновить rkhunter делаем следующее:
В файле "/etc/rkhunter.conf" заменить:
UPDATE_MIRRORS=0
на
UPDATE_MIRRORS=1

MIRRORS_MODE=1
на
MIRRORS_MODE=0

WEB_CMD="/bin/false"
на
WEB_CMD=""

Сохраняем изменения и запускаем:
# rkhunter --update
[ Rootkit Hunter version 1.4.2 ]
Checking rkhunter data files...
  Checking file mirrors.dat                                  [ No update ]
  Checking file programs_bad.dat                             [ Updated ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n/cn                                      [ Skipped ]
  Checking file i18n/de                                      [ Skipped ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ Skipped ]
  Checking file i18n/tr.utf8                                 [ Skipped ]
  Checking file i18n/zh                                      [ Skipped ]
  Checking file i18n/zh.utf8                                 [ Skipped ]

Обновление прошло успешно. 
7 апр. 2020 г.

Установка JRE для запуска Java Web Start приложений .jnlp на Mac OS Catalina 10.15

Старые ipmi/ipkvm требуют запуска .jnlp приложений ( на более свежих все работает через html5 ) . IcedTea на маке не особо работает, для наших целей необходимо будет установить JRE. Но, как оказалось, и это не так-то просто, тот же Homebrew ставит JDK. Который, по идее, должен содержать в себе JRE, только javaws так и отсутствует.

В итоге поставил так. Отдельно скачать JRE можно либо тут https://www.oracle.com/java/technologies/javase-downloads.html в разделе Java SE 8u241 либо тут https://www.oracle.com/java/technologies/javase/javase9-archive-downloads.html на странице архивных загрузок. Я скачал со второго url эту сборку jre-9.0.4_osx-x64_bin.dmg.

Имейте в виду, что для загрузки нужно будет завести акаунт на сайте oracle, но это довольно просто и данные не проверяются, можно воспользоваться временной почтой ( туда подтверждение приходит ) и все остальные поля вбить рандомно.

После установки Java из dmg файла файлы jnlp успешно запускаются и все прекрасно работает.


Для удаление необходимо вручную удалить директорию /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin 
30 мар. 2020 г.

Debian: Speedtest cli клиент - проверка скорости с консоли

У speedtest'а есть удобный cli клиент для тестирования скорости соединения до нужных серверов.
Для установки на Debian воспользуемся следующей последовательностью команд:

# sudo apt-get install gnupg1 apt-transport-https dirmngr
# export INSTALL_KEY=379CE192D401AB61
# export DEB_DISTRO=$(lsb_release -sc)
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
# echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | sudo tee  /etc/apt/sources.list.d/speedtest.list
# sudo apt-get update
# sudo apt-get install speedtest
Установка утилиты на других дистрибутивах описана на официальном сайте.
Для дефолтной проверки достаточно запустить просто командой speedtest, но при этом утилита выберет ближайшие сервера для проверки и в случае необходимости проверки соединения глобально с другой точкой света толку будет мало.

Для этого необходимо использовать ключ -s и указать ID сервера для проверки. Посмотреть ID сервера можно тут https://www.speedtestserver.com/. Итого, команда для теста соединения с сервером в Пекине от провайдера Beijing Unicom будет такой:
# speedtest -s 5145
Результат теста
# speedtest -s 5145
   Speedtest by Ookla
     Server: Beijing Unicom - Beijing (id = 5145)
        ISP: Some-Italian Ltd.
    Latency:   236.42 ms   (4.43 ms jitter)
   Download:    91.23 Mbps (data used: 132.9 MB)
     Upload:    50.51 Mbps (data used: 78.3 MB)
Packet Loss:    20.0%
 Result URL: https://www.speedtest.net/result/c/0e27272e-9283-459f-a578-a7fb2e3d3bb2

 
 
29 мар. 2020 г.

nginx редирект всех запросов на Index.html

Данный кусок конфига будет редиректить абсолютно все запросы на index.html  xthtp rewrite

location @redirect {
    rewrite ^\/.+$ /index.html permanent;
}
location / {
    try_files $uri $uri/ @redirect;
}

Vesta: permission denied в /home/admin/conf ( mkdir: невозможно создать каталог : Отказано в доступе )

Появилась надобность создать вручную в /home/admin/conf/ директорию с dns и скопировать туда из бекапа .db файлы зон. Но при попытке выполнить эту операция появилась ошибка "mkdir: невозможно создать каталог «dns»: Отказано в доступе".

Как оказалось, раньше этого я не замечал, VESTA ставит на conf/ директорию атрибут +i ( immutable ), который запрещает изменение содержимого директории.

Соответственно решением будет убрать атрибут:
# chattr -i /home/admin/conf/
После чего можно вносить правки. Флаг immutable после этого лучше вернуть на место.
 chattr +i /home/admin/conf/