LINUX.ORG.RU
ФорумAdmin

Bacula TLS создание самоподписаного CA openssl


0

1

Здравствуйте, столкнулся с проблемой создания РАБОЧИХ ключей и сертификатов.
Что я использовал:
1) готовые скрипты в /usr/share/doc/openvpn/examples/easy-rsa/2.0/
source ./vasr
./clean-all
biuld-ca
biuld-key-server
biuld-key

2) настраивал вот по этой доке http://www.devco.net/pubwiki/Bacula/TLS/
но пока удалось только сделать рабочее соединение bconsole с удаленной машины.
3) гдето читал что нужно создавать сертификаты и ключи на одной машине а использовать их на совсем других. Я создавал ключи и сертификаты на том же серваке где и использую Bacula.

получал много видов ошибок, вот основные
29-Фев 16:47 komp-dir JobId 63: Start Backup JobId 63, Job=test-fd.2012-02-29_16.47.55_04
29-Фев 16:47 komp-dir JobId 63: Fatal error: TLS negotiation failed with SD at «komp:9103»
29-Фев 16:47 komp-dir JobId 63: Error: openssl.c:86 Connect failure: ERR=error:140940F5:SSL routines:SSL3_READ_BYTES:unexpected record
29-Фев 16:47 komp-dir JobId 63: Error: Bacula komp-dir 5.0.2 (28Apr10): 29-Фев-2012 16:47:57
29-Фев 16:46 komp-dir JobId 0: Fatal error: TLS negotiation failed with SD at «komp:9103»
29-Фев 16:46 komp-dir JobId 0: Error: tls.c:92 Error with certificate at depth: 0, issuer =
29-Фев 16:46 komp-dir JobId 0: Fatal error: TLS negotiation failed with FD at «mail:9102».
29-Фев 16:47 komp-dir JobId 0: Fatal error: TLS negotiation failed with SD at «komp:9103»

Что меня интересует:
1)Общий АЛГОРИТМ создания САМОПОДПИСАНЫХ СЕРТИФИКАТОВ
т.е. 1.на сколько я понял нужно создать свой корневой сертификат. 2. создать ключ для клиента подписаный первым корневым сертификатом и так для каждого клиента.
НО так как это не работает есть предположение что я просто не знаю ПРАВИЛЬНОГО алгоритма как это должно настраиваться ВООБЩЕ и в Bacula в частности (((
2)рабочий шаблон openssl.cnf
вот тут чувак вроде грамотно объясняет но у меня его конфиг не заработал
http://www.sys-adm.org.ua/security/ssl-howto.php

Заранее спасибо!

Создавать можешь где угодно. Главное скопируй потом на директора и на клиента нужные сертификаты.

Zapekankin ()
Ответ на: комментарий от Zapekankin

делал статус слиент=имя клиента, в bconsole говорит что клиент файлед неможет законектиться с ним ((( вот я и думаю что дело в сертификатах.

vanek82 ()
Ответ на: комментарий от vanek82

Когда сертификаты создаешь, надо очень быть внимательным и указывать CN правильный (hostname или IP адрес).

И потом в конфиге на клиенте:

FileDaemon { FDAddress = «CN_client» ... }

Director { TLS Allowed CN = «CN_director» ... }

В общем смотри ошибки в логе, потом по ошибке гугли, смотри где делаешь неправильно.

У тебя все получится. Нужно только время.

Zapekankin ()
Ответ на: комментарий от Zapekankin

Хотел спросить про расширение .pem почему именно его в документации используют???

TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
TLS Certificate = /usr/local/etc/ssl/server1/cert.pem
TLS Key = /usr/local/etc/ssl/server1/key.pem

vanek82 ()
Ответ на: комментарий от AGUtilities

Эта ссылка http://wiki.wayround.org/Как стать X.509 CA (Сертификационным Авторитетом)
расказывает, но конфиги опять не рабочие... достали статьи с кучей ошибок как в написании, так и в корректности самих конфигурационных фалов...
...в итоге придется самому изобретать велосипед...

vanek82 ()
Ответ на: комментарий от Zapekankin

хочу попробовать свой лесапед в стиле /usr/share/doc/openvpn/examples/easy-rsa/2.0/

теперь нужно определиться с алгоритмом
План А
1) build-ca
2)build-key n-раз по коллчеству необходмых ключей
3)sign-req n-раз по коллчеству необходмых ключей
План Б
1) build-ca
2)build-inter
3)build-key n-раз по коллчеству необходмых ключей
4)sign-req n-раз по коллчеству необходмых ключей

..а по поводу статьи чтото я уже перестаю им верить, пишут складно и типа умно а когда начинаешь тестить то ни хрена не получается...

Zapekankin, а ты как создавал и подписывал сертификаты?

vanek82 ()
Ответ на: комментарий от Zapekankin

Вопрос:
Если работает TLS director ------ bconsole НО не работает TLS director ----- client
ТО:
1) Где-то некорректно настроены конфиги?
ИЛИ
2) Все-таки неправильно созданы сертификаты?

vanek82 ()
Ответ на: комментарий от vanek82

1) Да, скорее всего на клиенте неправильно настроен конфиг. Если bconsole работает, то вероятно дело в настройке клиента.

Покажи конфиг клиента. И CN сертификата клиента тоже.

Zapekankin ()
Ответ на: комментарий от Zapekankin

У меня проблема: ВСЕ ЗАРАБОТАЛО НО Я НЕ ЗНАЮ КАК!!!!! ((((((
Вот конфиги:
Дано:
Bacula server (dir+sd, одна тачка) komp
/etc/bacula/server/
ca.crt
komp.crt
komp.csr
komp.key
mail.crt
mail.csr
mail.key
z.crt
z.csr
z.key
======================
Bacula bconsole z
/etc/bacula/client/
ca.crt
z.crt
z.csr
z.key
======================
Bacula client (fd) mail
/etc/bacula/client/
ca.crt
mail.crt
mail.csr
mail.key
================================================================================================
dir
Director { # define myself
Name = komp-dir
DirAddress = komp
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/server/komp.crt
TLS Key = /etc/bacula/server/komp.key
TLS CA Certificate File = /etc/bacula/server/ca.crt
TLS Verify Peer = yes
TLS Allowed CN = «komp»
TLS Allowed CN = «mail»
TLS Allowed CN = «z»
TLS Allowed CN = «1ok» # CN который я ввел при создании ca.crt
}
Client {
Name = test-fd
Address = mail
FDPort = 9102
Catalog = «MyCatalog»
File Retention = 30 days # Период, на протяжении которого в каталоге будет храниться инфа о файлах этого клиента
AutoPrune = yes # Удалять из каталога данные о файлах и заданиях, срок хранения которых истек.
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bacula/server/ca.crt
TLS Certificate = /etc/bacula/server/komp.crt
TLS Key = /etc/bacula/server/komp.key
}
Storage {
Name = Storage_test_day
Address = komp
SDPort = 9103
Device = Dev_test_day
Media Type = File
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/server/komp.crt
TLS Key = /etc/bacula/server/komp.key
TLS CA Certificate File = /etc/bacula/server/ca.crt
}
===========================================================
sd
Storage { # definition of myself
Name = komp-sd
SDPort = 9103 # Director's port
WorkingDirectory = «/var/lib/bacula»
Pid Directory = «/var/run/bacula»
Maximum Concurrent Jobs = 20
SDAddress = komp
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
TLS Certificate = /etc/bacula/server/komp.crt
TLS Key = /etc/bacula/server/komp.key
TLS CA Certificate File = /etc/bacula/server/ca.crt
}
Director {
Name = komp-dir
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/server/komp.crt
TLS Key = /etc/bacula/server/komp.key
TLS CA Certificate File = /etc/bacula/server/ca.crt
}
=============================================================
client bacula-fd

Director {
Name = komp-dir
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
TLS Allowed CN = «komp»
TLS Allowed CN = «mail»
TLS Allowed CN = «z»
TLS Allowed CN = «1ok»
TLS Certificate = /etc/bacula/client/mail.crt
TLS Key = /etc/bacula/client/mail.key
TLS CA Certificate File = /etc/bacula/client/ca.crt
}
FileDaemon { # this is me
Name = test-fd
FDport = 9102 # where we listen for the director
PKI Signatures = Yes # Enable Data Signing
PKI Encryption = Yes # Enable Data Encryption
PKI Keypair = «/etc/bacula/fd-example.pem» # Public and Private Keys
PKI Master Key = «/etc/bacula/master.cert» # ONLY the Public Key
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/client/mail.crt
TLS Key = /etc/bacula/client/mail.key
TLS CA Certificate File = /etc/bacula/client/ca.crt
}
========================================================================
Bacula bconsole z
Director {
Name = komp-dir
DIRport = 9101
address = komp
TLS Enable = yes
TLS Require = yes
TLS Certificate = /etc/bacula/client/z.crt
TLS Key = /etc/bacula/client/z.key
TLS CA Certificate File = /etc/bacula/client/ca.crt
}
================================================================
Теперь о том как я создавал сами ключи и сертификаты:
1) пробовал создавать с помощью скриптов openvpn
./build-req
./sign-req
НЕ ЗАРАБОТАЛО
2) создал ключи с помощью ./build-inter
после этой команды файлики стали содержать такую инфу:

openssl x509 -in ./keys/komp.crt -noout -purpose
Certificate purposes:
SSL client : Yes
SSL client CA : Yes
SSL server : Yes
SSL server CA : Yes
Netscape SSL server : Yes
Netscape SSL server CA : Yes
S/MIME signing : Yes
S/MIME signing CA : Yes
S/MIME encryption : Yes
S/MIME encryption CA : Yes
CRL signing : Yes
CRL signing CA : Yes
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : Yes
==========================
Вопрос: правильно ли созданы эти ключи и сертификаты?(с точки зрения безопасности)
Нужно разбираться дальше или оставить все как есть?

vanek82 ()
Ответ на: комментарий от vanek82

Ну раз работает, то не трогай. :)) Обычно проблема с TLS в бакуле возникает из-за неправильного CN или неправильного конфига.

1. TLS Allowed CN = «komp» только оставь везде, другие TLS Allowed CN не нужны (впрочем проверь).

2. Еще советую разделить один конфиг на несколько: # Jobs @/etc/bacula/jobs.conf # FileSets @/etc/bacula/filesets.conf # Schedules @/etc/bacula/schedules.conf # Clients (file services) @/etc/bacula/clients.conf # Storages @/etc/bacula/storages.conf # Pools @/etc/bacula/pools.conf

Потому что замучаешься, если все в одном файле будет у тебя.

3. Я смотрю ты используешь один storage. И он у тебя на директоре. Да еще и шифруется. А прикинь, если машина с директором и стораджем умрет. У тебя все бэкапы умрут сразу же и ты их не восстановишь. :)) Потом заново придется все настраивать...

Storage лучше вынести на другую машину. Или два стораджа иметь. :)) А вообще смотри какая тема. Если ты будешь бэкапить базу бакулы и шифровать, а потом складывать на storage (не важно где). И умрет director. Ты потом из стораджа не достанешь данные через bextract, потому что в нем нет поддержки восстановления зашифрованных данных. :) Вот такой вот привет.

Так что советую не шифровать бэкап базы данных бакулы. Чтобы можно было потом (в случае умирания директора) восстановить со стораджа (если он тоже не умер :)) через bextract. А остальное конечно все шифруй. Кстати, еще обязательно бэкапь /etc/bacula на всех машинах. Сэкономишь время потом, когда что-то будешь восстанавливать.

Вообще когда все настроишь. То советую записать все пошагово как ты будешь восстанавливать данные в случае того или иного происшествия. Распечатать эти пошаговые инструкции и положить в ящик. Не раз пригодятся. :) Особенно если ты используешь шифрование.

Zapekankin ()
Ответ на: комментарий от vanek82

По поводу сертификата. У меня вывод: openssl x509 -in ./director.pem -noout -purpose

Certificate purposes:
SSL client : Yes
SSL client CA : No
SSL server : Yes
SSL server CA : No
Netscape SSL server : Yes
Netscape SSL server CA : No
S/MIME signing : Yes
S/MIME signing CA : No
S/MIME encryption : Yes
S/MIME encryption CA : No
CRL signing : Yes
CRL signing CA : No
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : No

По поводу генерации сертификатов могу скинуть скрипт как делаю, только позже. Сейчас до этой машины не добраться, на которой сертификаты генерятся.

Zapekankin ()
Ответ на: комментарий от Zapekankin

2. Еще советую разделить один конфиг на несколько: # Jobs @/etc/bacula
/jobs.conf # FileSets @/etc/bacula/filesets.conf # Schedules @/etc/bacula
/schedules.conf # Clients (file services) @/etc/bacula/clients.conf # Storages
@/etc/bacula/storages.conf # Pools @/etc/bacula/pools.conf

я делаю по другому, dir а в нем отдельные фалики для клиентских тачек
@/etc/bacula/client1.conf
@/etc/bacula/client2.conf

3. Я смотрю ты используешь один storage. И он у тебя на директоре. Да >еще и шифруется. А прикинь, если машина с директором и стораджем >умрет. У тебя все бэкапы умрут сразу же и ты их не восстановишь. :)) >Потом заново придется все настраивать...

Тут много вариантов для реализации, все зависит от возможностей и потребностей. Есть понимание что вечного ничего нет, и RAID в помощь. А по поводу шифрования, как говорится «меньше знаешь крепче спишь»

Storage лучше вынести на другую машину. Или два стораджа иметь. :)) А вообще смотри какая тема. Если ты будешь бэкапить базу бакулы и шифровать, а потом складывать на storage (не важно где). И умрет director. Ты потом из стораджа не достанешь данные через bextract, потому что в нем нет поддержки восстановления зашифрованных данных. :) Вот такой вот привет.

Алгоритм бекапа самой базы данных директора я сейчас пока продумываю )

Так что советую не шифровать бэкап базы данных бакулы. Чтобы можно было потом (в случае умирания директора) восстановить со стораджа (если он тоже не умер :)) через bextract. А остальное конечно все шифруй. Кстати, еще обязательно бэкапь /etc/bacula на всех машинах. Сэкономишь время потом, когда что-то будешь восстанавливать.

А есть в бакуле вариант когда данные с клиента можно разбить как бы на 2 файлсета в одном список фалов шифруется а в другом нет?

Вообще когда все настроишь. То советую записать все пошагово как ты будешь восстанавливать данные в случае того или иного происшествия. Распечатать эти пошаговые инструкции и положить в ящик. Не раз пригодятся. :) Особенно если ты используешь шифрование.

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

По поводу генерации сертификатов могу скинуть скрипт как делаю, только позже. Сейчас до этой машины не добраться, на которой сертификаты генерятся.

Скинь плиз, ОООчень хочетса посмотреть как реализован скрипт )

vanek82 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.