26.06.2011

Установка OpenVPN (client-to-site) с авторизацией внешних клиентов по LDAP (Debian)

От этой статьи много пользы не будет, так как таких миллион по Тырнету. Но я для себя свой вариант законспектирую. Все удобнее, чем у других по крупицам собирать.

Обзор сети
Например у нас есть подсеть 10.0.1.0/24, в которой находятся серверы внутри офиса компании.
Есть сервер gate.nodesquad.com со следующими адресами:
eth0 10.0.1.1 - этим интерфейсом он соединен с офисной подсетью.
eth1 123.45.67.89 - этим интерфейсом он соединен с Интернетом.
tun0 10.0.2.1 - этого интерфейса пока нет. Но он будет смотреть в сторону VPN-клиентов.

И есть клиенты извне, которые будут подцепляться через Интернет к адресу 123.45.67.89 и получать адрес из новой подсети 10.0.2.1/24. Их трафик внутрь сети будет идти таким образом:
Пакет выходит с их внутрннего интерфейса (например 10.0.2.123), идти на VPN-сервер 10.0.2.1, затем раутиться на 10.0.1.1 и уже дальше доходить до любого узла внутри офисной сети.

Тут нужно знать разницу между TUN и TAP. TUN используется для раутинга (а мы как раз планируем раутинг сделать соответственно схеме в предыдущем абзаце), а TAP нам не понадобится, потому что он для вариантов с бриджами.

Предварительная подготовка
Для начала проверим, установлены ли у нас виртуальные драйверы TUN/TAP:
modprobe tun; lsmod | grep tun

Проверяем установлен ли у нас LZO:
dpkg -l | grep lzo

Первое, что требует сделать - поставить пакеты. Пакет самого OpenVPN, пакет его модуля для авторизации в LDAP и пакет, конвертирующий регулярные выражения в C/C++ :
aptitude install openvpn openvpn-auth-ldap re2c

24.06.2011

Извлечение ключей CRT/KEY из JKS (keystore) и наоборот

Изначальные данные: JKS-файл, ПАРОЛЬ и АЛИАС.
Например у нас есть:
имя ключа (keystore): nodesquad.com.jks
пароль: FDs6aGh7
алиас: server
=========

Загрузите Java-программу, которая распаковывает .KEY-файл из.JKS: ExportPrivateKey.zip

Вытащите .KEY-файл (обратите внимание, что ExportPrivateKey.zip должен быть расположен в той же директории, где работаем):
java -jar ExportPrivateKey.zip jks-file-name.jks JKS 'ПАРОЛЬ' АЛИАС key-file-name.key
Например:
java -jar ExportPrivateKey.zip nodesquad.com.jks JKS 'FDs6aGh7' server nodesquad.com.key


Вытащите .CRT-файл:
keytool -export -alias ALIAS -keystore jks-file-name.jks > der-file-name.der
openssl x509 -in der-file-name.der -inform DER -out crt-file-name.crt -outform PEM
Например:
keytool -export -alias server -keystore nodesquad.com.jks > nodesquad.com.der
openssl x509 -in nodesquad.com.der -inform DER -out nodesquad.com.crt -outform PEM

**************************


А теперь тоже самое, только наоборот. Имея ключи .crt и .key соберем один .jks
Кстати, если у Вас нету .key-файла, то скорее всего Вы просто обновили сертификат. В таком случае нужно взять .key файл от старого сертификата. Но уж если он не сохранился, то его можно либо выбрать из старого .jks, по схеме как описано выше либо сделать re-key в трастовой компании, где получали сертификат.

Соберем .pkcs12 сертификат из двух разобранных:
openssl pkcs12 -export -out nodesquad.com.pkcs12 -in nodesquad.com.crt -inkey nodesquad.com.key
И импортируем его в keystore:
keytool -importkeystore -srckeystore nodesquad.com.pkcs12 -srcstoretype PKCS12 -keystore nodesquad.com.jks


21.06.2011

Установка RedMine на Debian Squeeze

В качестве СУБД будем использовать MySQL. В качестве вэб-сервера - Apache. Поэтому подразумевается, что они уже установлены на сервер.

Ввиду предостережения (не помню где увиденного), что лучше использовать пакеты мейнтенеров Debian, чем gem, то будем работать только с aptitude.

Вообще все нижеперечисленное можно поставить одной командой, так как все вышеперечисленное - есть зависимости для пакета Redmine, но мы сделаем по порядку, чтобы было понятно что и к чему в этой Ruby-кухне.

Итак ставим самое главное: интерпретатор языка Ruby:
aptitude install ruby libdbd-mysql-ruby libmysql-ruby

Так как система Redmine написана на фреймворке Ruby on Rails, то нам понадобятся и он тоже. Он будет лежать отдельно от сайта Redmine (и вообще никак его не касаться), а все приложения (в том числе и Redmine) будут пользоваться его библиотеками:
aptitude install rails

09.06.2011

Как быстро перевести сайт на самоподписанный SSL в Apache на Debian

Создаем директорию под сертификат:
mkdir /etc/apache2/ssl

Включаем SSL:
a2enmod ssl

Генерируем сертификат и ключ (3650 дней = 10 лет):
openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/example.com.pem -keyout /etc/apache2/ssl/example.com.pem

Изменяем виртхост нужного нам сайта:
vim /etc/apache2/sites-available/example.com

<VirtualHost :443>

...

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/example.com.pem
    SSLCertificateKeyFile /etc/apache2/ssl/example.com.pem
</VirtualHost>

Перезагружаем Apache:
invoke-rc.d apache2 restart

08.06.2011

Как приинклудить .schema-файлы в Squeeze/Ubuntu, если в них уже нет slapd

Ввиду того, что от slapd отказались (в Lenny он еще присутствует), то добавлять можно только в базу данных напрямую. Include'ы больше не используются. Поэтому все добавляемые схемы должны быть в .ldif формате, а не .schema. Если у Вас есть только .schema, то можно преобразовать их по этому методу. Итак приступим:

Например так добавляются GOsa схемы:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/gosa/example.ldif

Причем если добавлять именно GOsa, то следует делать это в заданной последовательности. Сначала добавить gosystem.ldif, затем goto.ldif, и уже затем gosa-samba3.ldif

А вот такой командой можно просмотреть какие схемы уже импортированы:
ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
А вот такой список всех objectclass'ов:
ldapsearch -s base -b "cn=Subschema" -LLL -Y EXTERNAL -H ldapi:/// objectclass=subschema objectclasses  | grep NAME | awk -F "NAME" {'print $2'} | awk -F "'" {'print $2'}