NginX — установка бесплатных SSL-сертификатов для нескольких сайтов

  1. Создаем пользователя letsencrypt и необходимые директории:

  2. adduser —home /var/www/challenges \
    —shell /bin/sh \
    —disabled-password \
    —disabled-login \
    letsencrypt
    mkdir -p /etc/letsencrypt/domains

  3. Создаём основные приватные ключи:

  4. cd /etc/letsencrypt/
    openssl dhparam -out dhparam.pem 2048
    openssl genrsa 4096 > account.key

  5. Скачиваем клиент acme_tiny.py:

  6. cd /var/www/challenges
    wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

  7. Создаем сценарий /var/www/challenges/acme-tiny.sh, для автоматизации. Изменив значение переменной DOMAINS, указываем имена доменов, для которых необходимо получить сертификаты:
  8. DOMAINS=( site1.ru site2.com )
    DOMAIN_ROOT=/etc/letsencrypt/domains
    ACCOUNT_KEY=/etc/letsencrypt/account.key
    ACME_DIR=/var/www/challenges
    ACME_TINY=${ACME_DIR}/acme_tiny.py
    
    [ -d ${DOMAIN_ROOT} ] || { echo "ERROR: DOMAIN_ROOT dir does not exists"; exit 1; }
    [ -f ${ACCOUNT_KEY} ] || { echo "ERROR: ACCOUNT_KEY not found."; exit 1; }
    [ -d ${ACME_DIR} ] || { echo "ERROR: ACME_DIR dir does not exists"; exit 1; }
    [ -f "$ACME_TINY" ] || { echo "ERROR: ACME_TINY not found."; exit 1; }
    
    wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > ${DOMAIN_ROOT}/intermediate.pem
    
    for DOMAIN in "${DOMAINS[@]}"
    do
      if [ ! -f "${DOMAIN_ROOT}/${DOMAIN}.key" ]; then
        echo "INFO: Generation private key for $DOMAIN";
        openssl genrsa 4096 > ${DOMAIN_ROOT}/${DOMAIN}.key
        openssl req -new -sha256 -key ${DOMAIN_ROOT}/${DOMAIN}.key -subj "/CN=${DOMAIN}" > ${DOMAIN_ROOT}/${DOMAIN}.csr
      fi
    
      echo "INFO: Generation cert for $DOMAIN";
      python ${ACME_TINY} --account-key ${ACCOUNT_KEY} --csr ${DOMAIN_ROOT}/${DOMAIN}.csr --acme-dir ${ACME_DIR} > ${DOMAIN_ROOT}/${DOMAIN}.crt || exit 1
      cat ${DOMAIN_ROOT}/${DOMAIN}.crt ${DOMAIN_ROOT}/intermediate.pem > ${DOMAIN_ROOT}/${DOMAIN}.pem
    done
    
    sudo service nginx reload
    
  9. Меняем права на директории:

  10. chmod 755 /etc/letsencrypt
    chown -R letsencrypt: /etc/letsencrypt /var/www/challenges

  11. Создаём файл /etc/nginx/acme:
  12. location ^~ /.well-known/acme-challenge/ {
        alias /var/www/challenges/;
        try_files $uri =404;
        allow all;
    }
    
  13. В конфигурационный файл nginx каждого сайта, в блок server, добавляем строку:

  14. include /etc/nginx/acme;

  15. Запускаем скрипт:

  16. /bin/bash /var/www/challenges/acme-tiny.sh

  17. Включаем шифрование, добавив в конфигурационные файлы nginx каждого сайта:
  18. server {
        server_name site1.ru www.site1.ru;
        listen 80;
    
        include acme;
        # включим переадресацию на https-версию сайта
        location / {
            return 301 https://$host$request_uri;
        }
    }
    
    server {
            server_name site1.ru www.site1.ru;
            listen 443 ssl;
    
            # включим шифрование
            ssl on;
            ssl_certificate /etc/letsencrypt/domains/alluborka.ru.pem;
            ssl_certificate_key /etc/letsencrypt/domains/alluborka.ru.key;
            ssl_dhparam /etc/letsencrypt/dhparam.pem;
    
            ssl_stapling on;
            ssl_stapling_verify on;
    
            # исключим возврат на http-версию сайта
            add_header Strict-Transport-Security "max-age=31536000";
    
            # явно "сломаем" все картинки с http://
            add_header Content-Security-Policy "img-src https: data:; upgrade-insecure-requests";
    
        ...
    }
    
  19. Для автоматического продления сертификатов, создадим файл /etc/cron.d/letsencrypt:
  20. SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    0 0 1 * * letsencrypt /bin/bash /var/www/challenges/acme-tiny.sh >> /var/log/acme_tiny.log
    
  21. Создадим файлы журналов:

  22. sudo touch /var/log/acme_tiny.log
    sudo chown letsencrypt: /var/log/acme_tiny.log

https://superuserdo.info/?p=747

OpenVPN: ROUTE: route addition failed using CreateIpForwardEntry

При подключении VPN туннеля, посредством OpenVPN, не происходит добавления маршрута до удалённой локальной сети (IPv4 Local network(s)). При этом, в журнале OpenVPN при установке соединения присутствует запись: route addition failed using CreateIpForwardEntry.
Скорее всего, программе не хватило прав для добавления записи в таблицу маршрутизации. Чтобы это исправить, необходимо отключить установленное соединение, и закрыть OpenVPN GUI в системном трее (ПКМ на его иконке в правом нижнем углу экрана → Выход). Далее следует выбрать и выполнить один из пунктов:

  • На ярлыке OpenVPN GUI кликаем правой кнопкой мыши → выбираем пункт Свойства → в открывшемся окне выбираем вкладку Совместимость → установливаем галочку на пункте Выполнять эту программу от имени администратора → нажимаем кнопку Ok.
  • Запускайте OpenVPN GUI не двойным кликом по ярлыку, а одинарным кликом правой кнопкой мыши по ярлыку и выбирайте пункт Запуск от имени администратора.

USB модем с HiLink и роутер — проброс портов

При использовании 4G USB модема в связке с обычным маршрутизатором, порой необходимо открыть порт для сервера во внутренней сети. При этом, по факту сеть имеет два работающих NAT: один на модеме, второй на маршрутизаторе. Что делает бесполезным работу uPnP и не даёт пробросить порты.
Во многих прошивках HiLink, WebUI содержит функцию настройки DMZ. Необходимо добавить IP-адрес WAN-порта маршрутизатора в список адресов DMZ в панели администрирования USB модема. После применения настройки, для WAN-порта маршрутизатора будет работать правило соответствия портов 1:1, благодаря чему, открытые на маршрутизаторе uPnP-клиентами порты, будут доступными извне. Также, станут доступными и порты, настроенные на маршрутизаторе вручную в разделе Port Forwarding.

RAID — статус диска Foreign

При установке в сервер диска, ранее использовавшегося в RAID-массиве на другом сервере, его статус отображается как Foreign, что не даёт использовать его для создания нового или восстановления деградировавшего массива.
Для того, чтобы иметь возможность использовать такой диск, необходимо в программе управления RAID-контроллером сканировать чужеродную конфигурацию и удалить её.
Например, в программе MegaRAID Storage Manager, необходимо:

  1. выбрать контроллер, к которому подключен требуемый диск
  2. в верхнем меню программы выбрать Go ToControllerScan Foreign Configuration
  3. в открывшемся окне выбрать Clear: Remove logical configuration froam all foreign drives и нажать кнопку Ok
  4. в новом открывшемся окне подтвердить действие, установив галку Confirm и нажав кнопку Yes
  5. появляется окно с текстом об успешной очистке, где необходимо нажать кнопку Ok.

cmd — размеры сектора диска и кластера файловой системы

Узнать размеры сектора диска и кластера файловой системы можно с помощью командной строки. Для этого, в строку поиска на панели задач вбиваем cmd → нажимаем ПКМ на результате поиска и выбираем Запустить от имени администратора → в открывшееся окно копируем команду:

fsutil fsinfo ntfsinfo C:

где С: — имя диска.

Что из себя представляет инициализация RAID-массива

Инициализация — это процесс преобразования исходного массива физических дисков в состоятельные ло­ги­че­ские тома (с целостными, внутренне непротиворечивыми данными). Выполняется для повышения про­из­во­ди­тель­но­сти и надежности хранения.
У разработчиков аппаратных и программных RAID свои алгоритмы инициализации, быстрой (затиранием данных «нулями») или полной (с проверками и исправлением целостности и чётности данных).

Прирост производительности достигается за счет обновления метаданных на физических дисках, в том числе, освобождением места под будущие операции записи.
Надежности способствует:

  • очистка всего объема дисков от «недружелюбных» метаданных — если они присутствовали на дисках;
  • обнаружение скрытого повреждения данных (Silent Data Corruption») — при полной инициализации;
  • контроль согласованности данных (проверяется четность или зеркальная копия данных) — при пол­ной ини­ци­а­ли­за­ции;
  • проверками целостности данных.

Построение RAID-массива без инициализации или с быстрой инициализацией, экономит время на старте, но чревато ошибками в будущем. Дело в том, что при первичной настройке дисков, не прошедших инициализацию, ни один из секторов логического тома на самом деле ни для чего не используется, и когда Вы записываете первую группу данных в каждый из этих секторов, RAID-контроллер сгенерирует для них и запишет правильную чётность. Таким образом, даже если информация о четности для большей части диска недействительна, она должна быть в порядке для всех секторов, которые фактически использовались для записи. Однако, при попытке запуска процедуры проверки целостности (Consistency Check) на неинициализированном виртуальном диске, будет выведено сообщение об ошибке. Что делает невозможным также и контроль за состоянием дисков в массиве, в режиме фоновой проверки чётности. Поэтому многие аппаратные контроллеры не по­зво­ля­ют создавать массивы без инициализации.

Рекомендована полная инициализация, хотя на нее может уйти несколько суток. Она может быть фоновой (back­gro­und initialization), с изменяемым приоритетом исполнения массивом основных задач над инициализацией. При нулевом приоритете инициализация выполняется в паузах активности.
http://superuserdo.info/?p=732

Windows — не подключается L2TP: ошибка 789

При попытке подключиться с Windows к VPN серверу посредством L2TP без использования протокола IpSec, в большинстве случаев соединение не устанавливается. При этом отображается ошибка:
Ошибка 789 — «Попытка L2TP-подключения не удалась из-за ошибки, произошедшей на уровне безопасности во время согласований с удаленным компьютером».
А в журнале регистрируется событие:
… пользователь установил удаленное подключение которое завершилось сбоем возвращен код ошибки 789

Причина ошибки кроется в проверке подлинности на основе предварительного ключа для подключений L2TP/IPSec, ввиду того, что по-умолчанию Windows не хочет создавать подключения по L2TP без IpSec. То есть Windows позволяет создавать L2TP тоннель только в зашифрованном соединении, даже несмотря на используемую опцию Шифрование данныхНеобязательное в настройках подключения.
В большинстве случаев, проблема решается добавлением в реестр системы ключа ProhibitIpSec со значением 1. Для этого, в строку поиска на панели задач вбиваем cmd → нажимаем ПКМ на результате поиска и выбираем Запустить от имени администратора → в открывшееся окно копируем команду:

reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v ProhibitIpSec /t REG_DWORD /d 1 /f

и нажимаем Enter.
Также, для ослабления уровня шифрования L2TP, в реестр можно добавить ключ AllowL2TPWeakCrypto со значением 1. Для этого в окно командной строки необходимо скопировать:

reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f

и нажимать Enter.
После чего необходимо перезагрузить компьютер.
http://superuserdo.info/?p=720

DISKPART — зависает при выполнении

При вводе команды diskpart в командной строке Windows, данная команда отрабатывает, запуская утилиту, но сама утилита не выдаёт никакого результата и не позволяет вводить команды для работы с дисками.
Diskpart зависает, если есть проблема доступа к одному из дисков. Это может быть вызвано блокировкой доступа к диску другой программой (например, при записи образа), или проблемой с самим диском или контроллером.
Для решения проблемы, необходимо остановить процессы, работающие с данным диском в текущий момент. Если это не помогло, переподключить диск. Если и это не помогло, то необходимо проверить работоспособность диска какой-либо программой диагностики.

Mikrotik — проблемы с RDP

При попытке подключения из локальной сети к рабочему столу удалённого сервера, по VPN-туннелю между маршрутизатором Mikrotik и удалённым сервером, процесс подключения надолго зацикливается на двух этапах:
Настройка удалённого сеанса…
Защита удалённого подключения…

Данная проблема наблюдается при активном правиле fasttrack connection фильтра фаервола. Причём, даже, если это правило расположено в таблице ниже правил, касающихся маршрутизации VPN трафика. Отключение этого правила, способствует восстановлению правильной маршрутизации пакетов и установлению RDP-подключений.

Перезагружается проводник Windows из-за PDF файла

При нажатии правой кнопкой мыши на любом PDF файле, вместо открытия контекстного меню, происходит моргание экрана и перезагрузка проводника Windows. При этом, в журнале событий регистрируются ошибки:

Имя сбойного приложения: explorer.exe, версия: 10.0.16299.15, метка времени: 0x66e02565
Имя сбойного модуля: ConvertToPDFShellExtension_x64.dll, версия: 7.2.0.424, метка времени: 0x5668fed6
Код исключения: 0xc0000005

Приложение: explorer.exe
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: код исключения c0000005, адрес исключения 00007FFC85A04532


Данная проблема наблюдается из-за некорректной работы DLL-библиотеки программы Foxit PhantomPDF. Проблема решается удалением этой программы.