Устанавливать мы его будем на Centos 5.5, потому что это очень популярная система для серверов. Она перебьет по популярности на серверах что угодно, потому что это собранная из исходных кодов RHEL 5 свободная система, полностью совместимая с ним бинарно, и она стабильна, как ископаемые экскременты мамонтов. Поэтому даже openvpn в ее стандартных репозиториях нет. Поэтому вам нужно подключить себе EPEL или RPMForge.
Для нашей конфигурации нужны два пакета:
# yum install openvpn pam-devel
Первый это и есть openvpn, второй позволит работать плагину авторизации openvpn через PAM.
Создадим конфигурационный файл /etc/openvpn/openvpn.conf:
# OpenVPN server configuration file (/etc/openvpn/openvpn.conf) port 1194 # Я предпочитаю UDP для OpenVPN, потому что он больше похож на # IP в надежности доставки и не будет вызывать странные эффекты, # как это делает tcp. Зато udp не даст пользоваться http-proxy # для туннеля OpenVPN, так что думайте сами. proto udp dev tun # Здесь будем хранить список тех, кто подключен status /tmp/openvpn-status.log # Подсеть для клиентов server 192.168.128.0 255.255.255.0 user nobody group nobody # А сюда будет писаться лог. Добавьте это в ваш logrotate. log /var/log/openvpn.log comp-lzo # Путь к ключам сервера - их мы будем генерировать чуть позже ca keys/ca.crt cert keys/server.crt key keys/server.key dh dh1024.pem persist-key persist-tun keepalive 10 30 # Скажем, чтобы openvpn авторизовался через pam с именем сервиса openvpn plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so openvpn #END
Теперь для сервиса openvpn в pam нужна хотя-бы какая-то конфигурация. Копирую ее из дефолтной системной, но это можно менять, как захочется.
# cp /etc/pam.d/system-auth-ac /etc/pam.d/openvpn
А вот так можно добавлять пользователей
# useradd -d /dev/null -s /sbin/nologin username
И менять им пароли
# passwd username
Далее нам требуется создать (хотя у кого-то он уже есть) собственный Certificate authority. Для этого можно просто взять готовые скрипты в /usr/share/doc/openvpn/easy-rsa. Их лучше скопировать в другое местечко (каталог целиком), а потом отредактировать несколько файлов. Во-первых, это файлик vars, в котором в конце есть некоторые умолчательные поля для сертификатов, их лучше подменить на что-то более близкое к реальности сразу. Также стоит заметить, что organizationName у всех сертификатов должен быть одинаков, а commonName, напротив, различаться. Все сертификаты клиентов и сервера должны быть подписаны нашим CA.
Итак, начнем.
Перейдем в каталог easy-rsa
# cd /root/easy-rsa
Загрузим конфигурацию easy-rsa
# . vars
Теперь мы готовы. Нам нужен файлик DH, ключ и сертификат CA.
# sh clean-all # sh build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time (много точек и плюсиков) # sh build-ca Generating a 1024 bit RSA private key writing new private key to 'ca.key' Country Name (2 letter code) [UA]: State or Province Name (full name) [DP]: Locality Name (eg, city) [Dnipropetrovs'k]: Organization Name (eg, company) [OpenVPN-TEST]: Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:OpenVPN CA Email Address [admin@example.com]:
Теперь сгенерируем RSA-сертификат для сервера
# sh build-req server Country Name (2 letter code) [UA]: State or Province Name (full name) [DP]: Locality Name (eg, city) [Dnipropetrovs'k]: Organization Name (eg, company) [OpenVPN-TEST]: Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:OpenVPN server Email Address [admin@example.com]:
Подписываем сертификат сервера:
# sh sign-req server
отвечаем y.
Сертификаты клиентов генерируются точно так же как и сертификат для сервера. Главное не забыть находиться в каталоге easy-rsa и загружать переменные из vars. Каждому клиенту нужен свой сертификат со своим Common name. Можно даже указывать в common name имя пользователя.
Полученные файлы нужно положить в /etc/openvpn/keys/ , как это указано в openvpn.conf:
# cp keys/dh1024.pem /etc/openvpn # mkdir /etc/openvpn/keys # cp keys/server.{crt,key} /etc/openvpn/keys # cp keys/ca.crt /etc/openvpn/keys
Заметим, что все файлы, кроме .key файлов, можно не держать в огромном секрете.
Конфигурационный файл для Windows-клиента не очень сложен :)
# OpenVPN client configuration file (c:\Program Files\OpenVPN\conf\client1.ovpn) # May vary for each client, as they required to use different RSA certs for better security port 1194 proto udp dev tun comp-lzo remotepull tls-client # Эти файлы нужно поместить в тот же каталог что и конфигурационный файл ca ca.crt # Сгенерированный и подписанный easy-rsa ключ и сертификат клиента key client1.key cert client1.crt # Это заставит пользователя вводить имя и пароль auth-user-pass # Опция, которая решает проблемы с mtu mssfix 1400 #END
Очень не советую rpmforge. Вот EPEL практически musthave, и фиксы безопасности выходят очень быстро.
ОтветитьУдалитьRHEL, например, даже не смнимают с саппорта, если ставить пакеты из EPEL, так как они никогда не заменяют базовые, даже без настроенных приоритетов репозиториев.
Есди подключается rpmforge, это уже какая-то Fedora получается :)
[shaggycat@gw03u ~]$ rpm -qi openvpn
Name : openvpn Relocations: (not relocatable)
Version : 2.1.1 Vendor: Fedora Project
Release : 2.el5 Build Date: Tue 26 Jan 2010 05:30:57 PM MSK
Install Date: Fri 11 Jun 2010 03:57:35 AM MSD Build Host: x86-02.phx2.fedoraproject.org
Group : Applications/Internet Source RPM: openvpn-2.1.1-2.el5.src.rpm
Size : 791296 License: GPLv2
Signature : DSA/SHA1, Tue 26 Jan 2010 08:45:55 PM MSK, Key ID 119cc036217521f6
Packager : Fedora Project
URL : http://openvpn.net/
Summary : A full-featured SSL VPN solution
Description :
OpenVPN is a robust and highly flexible tunneling application that uses all
of the encryption, authentication, and certification features of the
OpenSSL library to securely tunnel IP networks over a single UDP or TCP
port. It can use the Marcus Franz Xaver Johannes Oberhumer's LZO library
for compression.
[shaggycat@gw03u ~]$
Странно, что я его в EPEL5 не заметил
ОтветитьУдалить