Перенаправление запросов на SSL

Опишу несколько вариантов перенаправления запросов с HTTP на HTTPS, первый и второй методы самые надежные:

1) Через virtual hosts.
В конфигурации сайта добавим строку Redirect, например когда на сайт установили SSL сертификат и нужно перенаправить все запросы на HTTPS:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   Redirect / https://ixnfo.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   DocumentRoot /var/www/html
   SSLEngine On
   ...
</VirtualHost>

Если нужно перенаправить только некоторые запросы:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   Redirect /forum https://forum.ixnfo.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   DocumentRoot /var/www/html
   SSLEngine On
   ...
</VirtualHost>

2) Перенаправление с использованием .htaccess.
Аналогично как и в первом варианте, в нужную директорию сайта положим файл .htaccess и добавим в него строку (чтобы веб-сервер учитывал файл .htaccess, нужно в конфигурации сайта выше указать опцию AllowOverride All):

Redirect /forum https://forum.ixnfo.com/

3) И не рекомендуемый способ, используя mod_rewrite, содержимое нужно добавить в файл .htaccess:

# Включение функции Rewrite
RewriteEngine On
# Проверяем что соединение не HTTPS
RewriteCond %{HTTPS} !=on
# Направляем в то же место, но уже HTTPS:
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Еще пример:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^ixnfo\.com$ [OR]
RewriteCond %{SERVER_NAME} ^www\.ixnfo\.com$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Header add Strict-Transport-Security "max-age=300"
</IfModule>

Чтобы разрешить некоторым страницам открываться по http и https, добавим внутри верхнего примера:

RewriteCond %{REQUEST_URI} !^/dir/
RewriteCond %{REQUEST_URI} !^/dir/file.php

Смотрите также:
Использование .htaccess
Как настроить SSL и HTTPS для WordPress
Установка Certbot в Ubuntu

Настройка места для резервных копий Hetzner.de

На тесте вошел на https://robot.your-server.de/, открыл Main functions — Servers, выбрал сервер и во вкладке Backup активировал бесплатные 100GB, так как для серверов стоимостью 39€ или более это место выделялось бесплатно.
Активировал WebDAV чтобы протестировать, samba было уже активировано, также можно подключаться по FTP, FTPS, SFTP и SCP используя имя пользователя и пароль, через SFTP/SCP можно также подключаться по ключу.
Скорость передачи данных на сервер резервного копирования зависит от количества подключенных пользователей и их трафика.
При подключении следует использовать доменное имя, например USER.your-backup.de, так как IP адрес может меняться.
Также нельзя создать директории /etc и /lib на месте для резервных копий.

На примере в Ubuntu Server смонтирую место для резервных копий через SAMBA/CIFS.
Установим необходимые утилиты и создадим директорию в которую будем монтировать:

sudo apt install cifs-utils
sudo mkdir /backup

Временно смонтировать место можно командой:

sudo mount.cifs -o user=USER,pass=PASSWORD //USER.your-backup.de/backup /backup

Для автоматического монтирования после перезапуска системы добавим в файл /etc/fstab следующую строку:

//USER.your-backup.de/backup /backup   cifs  iocharset=utf8,rw,credentials=/etc/backup-credentials.txt,uid=SYSTEM_USER,gid=SYSTEM_GROUP,file_mode=0660,dir_mode=0770 0 0

Открыть файл можно например текстовым редактором nano (CTRL+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/fstab

А в файл /etc/backup-credentials.txt добавим следующие строки:

username=USER
password=PASSWORD

Установим права только для владельца файла в целях безопасности:

sudo chmod 600 /etc/backup-credentials.txt

Если используется операционная система Windows, то нужно создать системного пользователя с такими же логином и паролем как у места для резервных копий.

Теперь для теста подключусь через WebDAV.
Установим необходимые утилиты и создадим директорию в которую будем монтировать:

sudo apt install davfs2
sudo mkdir /backup

В CentOS так:

yum install davfs2
mkdir /backup

Временно смонтировать через WebDAV место можно командой:

sudo mount -t davfs https://USER.your-backup.de /backup

Для автоматического монтирования после перезапуска системы добавим в файл /etc/fstab следующую строку:

https://USER.your-backup.de /backup davfs rw,uid=SYSTEM_USER,gid=SYSTEM_GROUP,file_mode=0660,dir_mode=0770 0 0

А в файл /etc/davfs2/secrets следующую строку:

https://USER.your-backup.de USER PASSWORD

На этом все, в моем случае можно сохранять резервные копии в директорию /backup.

Как отключить защитник Windows 10?

Опишу несколько вариантов отключения защитника Windows 10 (Windows Defender):

1) Самый простой вариант, открываем меню «Пуск«, потом «Параметры» (маленький заначек шестеренка) — «Обновление и безопасность«, слева выберем раздел «Защитник Windows» и выключим защиту в реальном времени.

2) Второй вариант, нажмём комбинацию клавиш Win+R и введем команду «gpedit.msc«, откроется редактор групповой локальной политики.
Потом перейдём в «Конфигурация компьютера» — «Административные шаблоны» — «Компоненты Windows» — «Endpoint Protection«, правой кнопкой мыши нажмем на «Выключение Endpoint Protection» и «Изменить«, в открывшемся окне выберем «Включено» и нажмем «ОК» (чтобы включить обратно нужно выбрать «Не задано»).

3) Нажмем Win+R и введем «regedit» для запуска редактора реестра.
В окне редактора реестра выберем «HKEY_LOCAL_MACHINE» — «SOFTWARE» — «Policies» — «Microsoft» — «Windows Defender«.
В правой части окна нажмем правой кнопкой мыши по «DisableAntiSpyware» и «Изменить«, укажем значение 1 (чтобы включить Защитник Windows вернем 0).
Если «DisableAntiSpyware» нет, то нажмем по «Windows Defender» правой кнопкой мыши — «Создать» — «Параметр DWORD (32 бита)», введем «DisableAntiSpyware» и укажем значение 1.

Решение ошибки dhcpd self-test failed. Please fix the config file

Заметил однажды в логах syslog ошибку:

dhcpd self-test failed. Please fix the config file

На сервере был установлен isc-dhcp-server.

Проверить правильность конфигурационного файла можно командой:

dhcpd -t
dhcpd -t -cf /dir/dhcpd.conf
/usr/sbin/dhcpd -t

Команда должна сообщить на какой строке ошибка, но заметил что если она не критическая, то может и не сообщить.
Ключ «t» выполняет тест конфигурации, а «cf» позволяет указать путь к файлу конфигурации, если он не стандартный.

В моем случае, в конфигурационном файле /etc/dhcp/dhcpd.conf кто-то совершил опечатку, в строке ниже (была лишняя буква):

authorivtative;

Из-за этого и возникала ошибка, но несмотря на ошибку dhcp работал.
Хотя когда-то встречались и критические ошибки, например неправильно написанный mac адрес, из-за такой ошибки DHCP не запускался.

Как установить и включить soap

Чтобы установить soap в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-soap

В CentOS так:

sudo yum install php-soap

Поискать имя пакета если что можно так:

apt-cache search php | grep -i soap
yum search php | grep -i soap

Активировать/деактивировать модуль можно так:

sudo phpenmod soap
sudo phpdismod soap

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли soap:

php -i | grep -i soap

Как установить и включить mcrypt

Чтобы установить mcrypt в Ubuntu/Debian необходимо выполнить команду:

sudo apt-get install php-mcrypt

В CentOS так:

sudo yum install php-mcrypt

После этого в директории PHP появится файл mcrypt.ini подгружающий расширение mcrypt.so, в моем случае появился /etc/php/7.0/mods-available/mcrypt.ini.

Активировать/деактивировать модуль можно так:

sudo phpenmod mcrypt
sudo phpdismod mcrypt

Перезапустим Apache2 чтобы применить изменения:

sudo service apache2 restart

Посмотрим активирован ли mcrypt:

php -i | grep -i mcrypt

Настройка ircd-hybrid

Допустим мы установили ircd-hybrid как я описывал в этой статье — Установка IRC сервера — ircd-hybrid
Теперь приступим к настройке.

Отредактируем текст приветственного сообщения:

sudo nano /etc/ircd-hybrid/ircd.motd

Сделаем копию конфигурационного файла на всякий случай:

sudo cp /etc/ircd-hybrid/ircd.conf /etc/ircd-hybrid/ircd_original.conf

Откроем в текстовом редакторе основной файл конфигурации, настроим параметры и закомментируем ненужные:

sudo nano /etc/ircd-hybrid/ircd.conf

В конфигурационном файле сначала идут стандартные параметры serverinfo, по желанию изменим их:

serverinfo {
        name = "hybrid8.debian.local";
        description = "test";
        network_name = "debian";
        network_desc = "This is My Network";
        hub = no;
        default_max_clients = 512;
        max_nick_length = 15;
        max_topic_length = 300;
};

Далее контакты администратора сервера, по желанию изменим их:

admin {
        name = "SYSADMIN";
        description = "Main Server Administrator";
        email = "<admin@example.com>";
};

Сетевые параметры (на каких портах будет работать ircd-hybrid, например можно изменить на один 6667):

listen {
        port = 6665 .. 6669;
};

Первый блок auth который разрешает подключаться всем с локального адреса 127.0.0.1:

auth {
        user = "*@127.0.0.1";
        spoof = "i.love.debian.org";
        class = "opers";
        flags = need_password, spoof_notice, exceed_limit, kline_exempt,
                xline_exempt, resv_exempt, no_tilde, can_flood;
};

Еще один блок auth разрешающий подключаться всем (его закомментируем или изменим под свои нужды):

auth {
        user = "*@*";
        class = "users";
        flags = need_ident;
};

Например, создадим пароль пользователю, скопируем результат команды в зашифрованном виде:

mkpasswd PASSWORD

Добавим возможность авторизации любым пользователям только с паролем и с указанной сети:

auth {
        user = "*@192.168.3.0/24";
        class = "users";
        flags = need_password;
encrypted = yes;
password = "PASSWORD_FROM_mkpasswd";
};

В блоке auth пароль будет хранится в шифрованном виде, в IRC клиенте указывается как есть.
Чтобы указать в блоке auth пароль в нешифрованном виде, нужно убрать encrypted.

В секции general отключим need_ident:

general {
...
disable_auth = yes;
...
};

Перезапустим ircd-hybrid чтобы применить изменения:

sudo /etc/init.d/ircd-hybrid restart
sudo service ircd-hybrid restart

Также можем добавить оператора:

auth {
name = "admin";
user = "admin@192.168.3.254/32";
class = "opers";
flags = need_password, spoof_notice, exceed_limit, kline_exempt;
encrypted = yes;
password = "PASSWORD_FROM_mkpasswd";
};

Блокировать IP адреса в случае необходимости можно следующим образом:

deny {
       ip = "192.168.4.4/32";
       reason = "Spam";
};

После изменений в конфигурационном файле нужно перезапустить ircd-hybrid.
В качестве клиента можно использовать например бесплатный AdiIRC.

Установка IRC сервера — ircd-hybrid

Приведу пример установки IRC сервера — ircd-hybrid.

Для установки ircd-hybrid в Ubuntu выполним команду:

sudo apt-get install ircd-hybrid

После установки ircd-hybrid будет использовать TCP порты 6665-6669.

По желанию, чтобы подключиться к IRC из терминала, можно установить например IRC клиент epic4:

sudo apt-get install epic4

И подключиться:

irc 127.0.0.1

Подключиться к каналу можно командой:

/join CHANNEL

Выйти:

/quit

Проверить запущен ли ircd-hybrid можно например так:

netstat -a | grep irc
netstat -an | grep 6667

Перезапустить ircd-hybrid можно так:

sudo /etc/init.d/ircd-hybrid restart

Если используется iptables, до нужно прописать правило:

sudo iptables -A INPUT -p tcp -m tcp -s 192.168.1.0/24 --dport 6667 -j ACCEPT

На этом установка завершена и можно переходить к настройке.
Смотрите мою статью о настройке — Настройка ircd-hybrid

Также приведу пример установки ircd-hybrid из исходников.
Скачаем ircd-hybrid с официальный сайта:

wget http://prdownloads.sourceforge.net/ircd-hybrid/ircd-hybrid-8.2.22.tgz
tar -xvf ircd-hybrid-8.2.22.tgz
cd ircd-hybrid-8.2.22

Установим необходимые компоненты:

sudo apt-get install build-essential unzip cmake

Сконфигурируем и установим ircd-hybrid:

./configure --prefix="/home/USER/ircd"
make
make install

Можно также установить Anope (для расширения функциональности):

cd /tmp/
wget https://github.com/anope/anope/archive/2.0.zip
unzip 2.0.zip
cd anope-2.0
./Config
cd build
make
make install

Установим правильного владельца:

sudo chown -R USER: ~/services ~/ircd

Устранение повторяющихся заголовков на страницах WordPress

Однажды попросили убрать на страницах одного WordPress сайта повторяющиеся заголовки.

После просмотра кода, заметил что их дописывает плагин Yoast SEO, отредактировал в его настройках Titles & Metas — Yoast SEO строки:

%%title%% %%page%% %%sep%% %%sitename%%

Но получилось не очень красиво, так как плагин иногда пропускал пробел после дефиса, по этому вернул как было.

Исправил ошибку закомментировав в коде активного шаблона (файл layout-head.php) строку:

// bloginfo( 'name' );

После этого название страниц отображалось правильно.

P.S. Если отключать плагин Yoast SEO, то указанную выше строку нужно будет обратно раскомментировать.
Если тема не самописная, то вероятно после появления и установки её обновления файл layout-head.php вернется к оригинальному состоянию.

Смотрите также:
Как убрать в wordpress rss ленте повторяющийся title

Решение ошибки /usr/sbin/ejabberdctl: line 428: 14615 Segmentation fault

Заметил однажды после установки EJabberd в Ubuntu Server 16.04 и добавлении пользователя от root командой:

ejabberdctl register USER localhost PASSWORD

Следующую ошибку:

/usr/sbin/ejabberdctl: line 428: 14615 Segmentation fault $EXEC_CMD «$CMD»

В лог файле /var/log/syslog сообщалось:

Sep 11 11:17:00 mail kernel: [4647543.535271] audit: type=1400 audit(1505117820.598:43): apparmor=»DENIED» operation=»file_mmap» profile=»/usr/sbin/ejabberdctl//su» name=»/bin/su» pid=14439 comm=»su» requested_mask=»m» denied_mask=»m» fsuid=0 ouid=0

Для решения ошибки открыл файл конфигурации apparmor:

nano /etc/apparmor.d/usr.sbin.ejabberdctl

Нашел строку:

/bin/su                                 r,

И изменил её, добавив m:

/bin/su                                 rm,

Перезапустил apparmor:

sudo service apparmor restart

Все, ошибка больше не появлялась.