Заметки в категории How To

How To: Сборка Nginx со сторонней версией OpenSSL на Fedora 14

Есть у нас один старый сервер на Fedora 14 (о нем я уже писал в заметке о закрытии уязвимости в bash). В связи с последними уязвимостями в OpenSSL и жутко древнего OpenSSL в системе было решено поставить Nginx перед Apache и термнировать SSL трафик на нем.

Установили и настроили Nginx:

$ sudo yum install nginx

Но вот незадача, системный Nginx оказался древним (0.8.54) и многого не умел из коробки. Было принято решение собрать последний Nginx (1.9.1) и установить его поверх системного. Это позволит не заморачиваться со скриптами инициализации.

Делается это довольно просто. Для начала ставим необходимые пакеты:

$ sudo yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

Теперь скачиваем Nginx и собираем его:

$ cd /usr/src
$ wget http://nginx.org/download/nginx-1.9.1.tar.gz
$ tar -vxf nginx-1.9.1.tag.gz
$ cd nginx-1.9.1
$ ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre
$ make

Для установки требуются root права:

$ sudo make install

Рестарт Nginx показал, что все работает как положено, но системная библиотека openssl очень старая и не поддерживает TLSv1.2. Пришлось собирать nginx со свежей версией openssl:

$ cd /usr/src
$ wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz
$ tar -vxf openssl-1.0.2a.tar.gz
$ cd /usr/src/nginx-1.9.1
$ make clean
$ ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre --with-openssl=/usr/src/openssl-1.0.2a/
$ make

Процесс сборки nginx с новой библиотекой openssl несколько дольше, чем без нее, но проходит все гладко. Устанавливаем:

$ sudo make install
$ sudo /etc/init.d/nginx restart

How To: Восстановление случайно поврежденной таблицы разделов GPT

Представим ситуацию, что у вас на сервере заменили вышедший из строя диск и вам необходимо восстановить работу RAID. Но у вас на "живом" диске таблица разделов не MBR, а Gе вы перепишете таблицу разделов и можете потерять данные.

Именно "можете", но еще не потеряли. Восстановить таблицу разделов еще можно.

Первое, что необходимо сделать - это сохранить текущую используемую таблицу разделов из памяти, на всякий случай:

# gdisk /dev/sda

Нажимаем 'b' и пишем имя файла "/part.bin". Теперь пробуем восстановить таблицу на второй диск, чтоб не потерять данные:

# gdisk /dev/sdb

Нажимаем 'r', затем 'l' и пишем имя нашего файла '/part.bin'. После этого смотрим, что у нас получилось нажав на 'p'.

Если данные похожи на правду, то можно проделать ту же операцию с sda. Но для начала я бы рекомендовал перестраховаться и ввести разделы в RAID, дождаться синхронизации и потом записать таблицу на диск sda.

Но если вы не боитесь потерять данные, то можно попробовать сразу восстановить таблицу разделов из резервной копии GPT:

# gdisk /dev/sda

Далее нажимаем 'r' и 'b'. Утилита восстановит таблицу разделов GPT из ее копии на диске. Проверить можно нажав 'p'.

Таким образом, GPT гораздо надежнее MBR в плане защиты от потери данных и резервирования информации о таблице разделов.

How To: Создание нового пользователя в MySQL

Для начала подключаемся к базе данных:

mysql -u root -p

Вводим пароль и получаем доступ к коммандной строке базы данных.

Создаем пользователя

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

После этого у нас будет пользователь newuser без права доступа к каой либо базе данных.

Теперь необходимо дать права на доступ к базе данных. Создаем базу:

CREATE DATABASE test;

и все права доступа:

GRANT ALL PRIVILEGES ON test.* TO 'newuser'@'localhost';

Или же можно выдать права на все базы и все таблицы:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

Как только мы закончили, необходимо перечитать права:

FLUSH PRIVILEGES;

Теперь изменения применились.
Читать далее...

How To: ошибка Amavis Can’t locate Mail/SpamAssassin...

Сегодня после рестарта и допиливания Amavis в логах появилась такая ошибка:

07 Oct 10:13:48 mail amavis[66684]: (!)_DIE: Cant locate Mail/SpamAssassin/CompiledRegexps/body_0.pm in @INC (@INC contains: /var/db/spamassassin/compiled/5.008/3.003000 /var/db/spamassassin/compiled/5.008/3.003000/auto lib /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8) at (eval 875) line 1.
07 Oct 10:13:48 mail amavis[66684]: (!)_DIE: Cant locate Mail/SpamAssassin/CompiledRegexps/body_0.pm in @INC (@INC contains: /var/db/spamassassin/compiled/5.008/3.003000 /var/db/spamassassin/compiled/5.008/3.003000/auto lib /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8) at (eval 875) line 1.\nBEGIN failedcompilation aborted at (eval 875) line 1.

После чего Amavis падает. Решается просто:

sudo sa-compile
sudo sa-update -D
sudo service amavis restart

Как изменить MAC адрес bluetooth устройства

Для начала посмотрим какие устройства у нас есть в системе:

$ sudo -i
# hcitool dev
Devices:
  hci0 00:11:22:33:44:55

Теперь надо собрать утилиту для смены MAC:

# pushd /tmp
# git clone https://github.com/DmitriyLyalyuev/bdaddr.git
# cd bdaddr
# make

Проверяем, видит ли утилита устройства:

# ./bdaddr

Меняем MAC:

# ./bdaddr -i hci0 11:11:11:11:11:11
# popd

Отключаем dongle и подключаем назад. Проверяем:

# hcitool dev
Devices:
  hci0 11:11:11:11:11:11

Клонирование дисков по сети

Заметка больше для себя, чтоб на память не надеяться. :) Все действия с LiveCD

Машина 2 (куда копируем):

nc -l 10000 > /dev/sda

Машина 1 (откуда копируем):

nc 192.168.1.2 10000 < /dev/sda

Куищще машин с HDD и все. ;)