Установка openvpn на Linux mint

Прежде всего уясните себе что машина с easy-rsa это машина которая только подписывает ключи. И по логике безопасности должна быть отдельной машиной. Не стоит хранить генератор ключей и в особенности приватный CA на самом VPN сервере.

1) ставим openvpn на VPN сервере

# apt-get install openvpn

2) ставим easy-rsa на станции подписей

# apt-get install easy-rsa

3) создаём каталог куда скопируем easy-rsa и там будем изменять настройки, создавать и подписывать сертификаты

# mkdir -p /root/sign-host/easy-rsa
# cd /root/sign-host/easy-rsa
# cp /usr/share/easy-rsa/* ./

Continue reading Установка openvpn на Linux mint

Скрипт удаления старых томов для bacula

Я уже писал о том как вручную удалять старые тома из базы и с диска. Казалось что это однократная операция. Однако пришлось делать это во второй раз. Попутно выявилась проблема с приоритетом команды restore. Диск с бэкапами заполнился, задания застряли в очереди и команда restore создала задание которое послушно встало в хвост очереди. Приоритеты очереди работают только в том случае если очередь движется. Bacula не приостанавливает ткущее задание чтобы выполнить задание с более высоким приоритетом. А оно стоит в очереди и не может выполниться изза нехватки места на диске. Гугл не смог найти ответ как же запустить рестор вне очереди. Пришлось очистить очередь, при помощи команды cancel в bconsole после чего отработал рестор.

Это всё отступления, вернёмся-же к автоматизации:
Continue reading Скрипт удаления старых томов для bacula

Оператор цикла for в bash

Великая магия оператора for о которую приходится биться каждый раз пока не усвоишь урок, кроется в том что он рубит входные данные по символам разделителям которые перечислены в переменной IFS=

Не менее странным является и то, что этой переменной невозможно присвоить один байт-символ CR (возврат каретки) 0xA.
Никакие танцы с бубнами и операторы echo не дают этой возможности.
Два символа можно

IFS=$(echo -en "\n\b") # работает
echo -en "$IFS" | hexdump -C
00000000  0a 08                                             |..|
00000002

но один или много \n — не получается.

IFS=$(echo -en "\n\n\n\n\n") # не работает. Переменная будет пустой.
echo -en "$IFS" | hexdump -C # да говорю же следующая строка будет пустой

IFS=$(echo -en "A" | tr 'A' '\n') # не пойдёт!
IFS="\
\
" # тоже не будет работать

Continue reading Оператор цикла for в bash

ssh внутри while цикла который получает данные из stdin

Наткнулся я на то что скрипт запущенный локально — работает, а если его запустить на удалённой машине он вываливается из цикла while

#!/bin/bash

  SERVERS="10.10.1.6\n10.15.4.240"

  echo -e "${SERVERS}" | while read SERVER ; do
    echo -e "${SERVER}"
    ssh root@${SERVER} "uptime"
  done

Как оказалось проблема в том что ssh съедает stdin в первой итерации цикла.
Для меня это было неожиданно, однако лечится либо опцией -n либо перенаправлением stdin на < /dev/null .

#!/bin/bash

  SERVERS="10.10.1.6\n10.15.4.240"

  echo -e "${SERVERS}" | while read SERVER ; do
    echo -e "${SERVER}"
    ssh -n root@${SERVER} "uptime"
    ssh root@${SERVER} "uptime" < /dev/null
  done

Возврат к доброму iptables вместо firewalld

В последних версиях Fedora (19) вместо iptables по умолчанию используется динамический фаервол firewalld. Чтобы вернуть всё как было нужно остановить и запретить автозапуск firewalld.

# systemctl disable firewalld 
# systemctl stop firewalld

Затем нужно установить iptables-services (если он не установлен):

# yum install iptables-services

Потом запустить сервис iptables

# touch /etc/sysconfig/iptables
# systemctl start iptables
# systemctl enable iptables

И если используете IPv6

# touch /etc/sysconfig/ip6tables
# systemctl start ip6tables
# systemctl enable ip6tables

И наконец как обычно настраивайте файлы конфигурации /etc/sysconfig/iptables и /etc/sysconfig/ip6tables.

Глобальные фильтры на аккаунты Thunderbird

Mozilla-thunderbird-logo

За долгие годы использования почтового клиента у меня накопилось большое количество фильтров в Thunderbird которые автоматически обрабатывают почту раскладывая её по каталогам, сохраняя файлы, формируя автоответы и т д. Фильтры в Thunderbird привязываются к конкретным папкам, что лично для меня создаёт неудобства с управлением. Например письмо от Васи Пупкина я хочу положить в папку Васи Пупкина независимо на какой из моих емейлов оно пришло. Поэтому я сделал один общий файл фильтров которые привязал ко всем папкам симлинками. А для того чтобы объединить их написал пару скриптов которые облегчили обработку суммарно нескольких мегабайт фильтров.

Прежде всего нужно закрыть Thunderbird.

На первом шаге получаем все фильтры которые у нас есть в один каталог и нумеруем их. Этот однострочный скрипт запускается из каталога выбранного профиля Thunderbird.

$ i=0; find . -name msgFilterRules.dat -print0 | tr -s '\000' '\n' | while read file ; do cp "${file}" "${HOME}/Filters_Thunderbird/${file##*/}.${i}.txt" ; i=$((i+1)); done

Continue reading Глобальные фильтры на аккаунты Thunderbird

Fast HDD Eraser – Быстрое стирание дисков

Мне часто приходится затирать жёсткие диски пачками, например при модернизации стораджей, и мне был очень необходим скоростной источник потока данных которыми затирается целевой диск. Чтобы более менее надёжно затереть данные на диске неразрушив сам диск, недостаточно затереть его нулями из /dev/zero. В тоже время поток данных из /dev/urandom слишком медленный чтобы быстро затирать современные жёсткие диски.
Поскольку необходимый мне уровень стирания не претендовал на уровень военной разведки то я решил выкрутиться через большой массив случайных (псевдослучайных) чисел. А чтобы массив этот быстро работал я решил закинуть его в память. И /dev/shm – идеальное место.
Для стирания я использовал raid контроллер чтобы затирать сразу множество дисков. А для автоматизации процесса написал bash-скрипт. Скрипт имеет свой счётчик продвижения и его можно прервать Ctrl+C и затем продожить с той позиции где он был прерван.
Continue reading Fast HDD Eraser – Быстрое стирание дисков

qemu-img очень медленно конвертирует

Запустил конвертацию 4G диска из lv в qcow2.

qemu-img convert -O qcow2 /dev/VM_POOL/v01.sitea.com_disk0 v01.sitea.com_disk0.qcow2

Почему-то всё шло очень медленно. Посмотрел top – процессор свободен. Посмотрел iostat – также всё свободно и никакой большой активности нет. Оказывается, что после каждой записи qemu-img зачем-то вызывает fsync.

К сожалению qemu-img не поддерживает работу через stdin.

Значительно ускорить процесс получилось простым копирование lv в файл и далее конвертацией файла в qcow2.

dd if=/dev/VM_POOL/v01.sitea.com_disk0 of=v01.sitea.com_disk0.raw bs=2M
(4.5 GB) copied, 103.564 s, 43.5 MB/s

И за пару минут прошла ковертация

qemu-img convert -O qcow2 v01.sitea.com_disk0.raw v01.sitea.com_disk0.qcow2

Обнаружено на:
qemu-img-0.12.5-1.fc13.x86_64
Linux v01-b 2.6.34.8-68.fc13.x86_64 #1 SMP Thu Feb 17 15:03:58 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

Похоже это был этот баг.

OTRS + Centos 6.5

При установке системы OTRS на Centos 6.5 Final обнаружилось что автостарт OTRS Scheduler не работает.

Первое что выяснилось сервис  otrs  почему-то не прописался в  chkconfig , хотя сам файл скрипта в  /etc/init.d/  положил.

[root@testit ~]# chkconfig | grep otrs
[root@testit ~]#

Что ж, прописываем руками

[root@testit ~]# chkconfig --add otrs
[root@testit ~]# chkconfig otrs on
[root@testit ~]# chkconfig | grep otrs
otrs            0:off   1:off   2:on    3:on    4:on    5:on    6:off

После перезапуска системы видим на консоли или в файле  /var/log/boot.log 

Starting httpd: [ OK ]
Starting crond: [ OK ]
Starting OTRS..
 Checking httpd ...  failed!
  --> Please start the web server first! (service httpd start) <--

Несмотря на то что httpd нормально стартует, otrs вываливается считая, что httpd не запущен.
Continue reading OTRS + Centos 6.5

muCommander SFTP с авторизацией по ключу

Знакомый работающий на MAC обратился с вопросом. При попытке соединиться на SFTP сервер muCommander выдаёт ошибку “Invalid private key file or passphrase”. После недолгих боданий пришли к выводу что видимо проблема с паролем в ключе, независимо от того какой ключ RSA или DSA.

Просто снимите парольную защиту приватного ключа.

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

или интерактивно

$ ssh-keygen -p [-f keyfile]