User Tools

Site Tools


Sidebar


Tags Cloud
openvpn_cert_auth

Настройка аутентификации по сертификатам openvpn в CentOS 5.2

Понадобилось установить на CentOS 5.2 сервер openvpn и сделать авторизацию по сертификатам.
В стандартных репозиториях центоса openvpn нет, поэтому подключаем репозиторий от rpmforge:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Эта команда подключит репозиторий через файл /etc/yum.repos.d/rpmforge.repo, в котором на текущий момент находится версия openvpn 2.0.9
Делаем, соглашаясь во всем с менеджером пакетов:

yum check-update
yum install openvpn

Копируем скрипты для генерации сертификатов:

cp -a /usr/share/openvpn/easy-rsa/ /etc/openvpn/

Создаем директорию для хранения серверных сертификатов и ключа:

mkdir /etc/openvpn/keys

Заходим в /etc/openvpn/easy-rsa/

cd /etc/openvpn/easy-rsa/

и выполняем команду

chmod +x build-* clean-all

В файле /etc/openvpn/easy-rsa/vars содержатся данные, которые используются при создании сертификата.
Если нет желания, то можно их не редактировать, а вот считывать - обязательно:

source /etc/openvpn/easy-rsa/vars

Создаем сертификаты, не забывая вписывать в Common ip-адрес вашего сервера.

./clean-all
./build-ca
./build-key-server vpnserver
./build-dh

Копируем получившиеся сертификаты и ключи в директорию, где они будут храниться:

cd /etc/openvpn/easy-rsa/keys/
cp ca.crt dh1024.pem vpnserver.crt vpnserver.key /etc/openvpn/keys/

Создаем конфиг для сервера /etc/openvpn/myserver.conf со следующим содержимым:
В данном примере параметры, относящиеся к протоколированию, отключены.

local SERVER-IP
port 11940
proto tcp
dev tun
duplicate-cn
script-security 2
ca keys/ca.crt
cert keys/vpnserver.crt
key keys/vpnserver.key
dh keys/dh1024.pem
server 192.168.15.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "redirect-gateway"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
#log openvpn-server-tcp.log
#status server-tcp.status
verb 3

Обращаю внимание, что в CentOS обязательно необходимо отредактировать файл /etc/init.d/openvpn, иначе демон будет вываливаться с ошибкой out of memory.
Сразу после первой строчки в этот файл дописать:

ulimit -l 10000

Создаем файл /etc/openvpn/start.sh, в который запишем правила NAT и разрешим форвардинг пакетов:

#!/bin/sh
/sbin/sysctl net.ipv4.ip_forward=1
/sbin/iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -j SNAT --to-source YOUR.SERVER.IP

Выставим разрешения для запуска, добавим скрипт в автозагрузку и запустим его:

chmod +x /etc/openvpn/start.sh
echo "/etc/openvpn/start.sh" >> /etc/rc.local
/etc/openvpn/start.sh

Установим ДНС-сервер:

yum install bind caching-nameserver

Настраиваем named через файл /etc/named.caching-nameserver.conf

комментируем строку listen-on port 53 { 127.0.0.1; };
Строку allow-query { localhost; }; приводим к виду allow-query { localhost; 192.168.15.0/24; };
Производим такие же замены везде, где есть упоминание localhost;

Добавляем named в автоматический запуск и запускаем:

chkconfig --level 2345 named on
/etc/init.d/named start

Запускаем openvpn:

/etc/init.d/openvpn start

Создаем ключи для клиентов, не оставляя Common пустым:

cd /etc/openvpn/easy-rsa
./build-key client01

Клиентский сертификат и ключ будут находиться в /etc/openvpn/easy-rsa/keys.
Пример клиентского конфига client01.ovpn для подключения к серверу:

client
tls-client
verb 3
dev tun
proto tcp
remote SERVER-IP 11940
nobind
persist-key
persist-tun
comp-lzo
ca ca.crt
cert client01.crt
key client01.key
resolv-retry infinite
redirect-gateway
push "dhcp-option DNS 8.8.8.8"
openvpn_cert_auth.txt · Last modified: 2013/12/15 16:43 by kyxap