Четверг, 25.05.2017, 15:41
# FreeBSD ГлавнаяРегистрацияВход
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [167]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
 Каталог статей 
Главная » Статьи » Мои статьи

openvpn FreeBSD
Настройка ВПН-сервера для доступа из внешнего мира к корпоративной сети

Настройка Openvpn-сервера (со статическими ключами и сертификатами) и Windows-клиента (Openvpn-gui)

Имеем:
FreeBSD 7.2,
em0=10.0.2.15/24 - сетевая карта смотрящая к провайдеру
em1=192.168.5.1/24 - сетевая смотрящая внутрь локальной сети за FreeBSD 7.2

1. Устанавливаем и конфигурируем OpenVPN

наиболее простой и "правильный" метод - ставим всё из портов

#cd /usr/ports/security/openvpn20

#make

#make install

Всё необходимое поставлено, переходим к конфигурированию. Необходимо создать сертефикаты и ключи.Заходим в /usr/local/share/doc/openvpn/easy-rsa/ и изменяем файл vars. Я оставил все параметры дефолтовыми, кроме директории куда складывать сгенерированные ключи - изменил в этом файле строку «export KEY_DIR=$D/keys» на «export KEY_DIR=$D/keys/server», соответственно создав такую же дирректорию /usr/local/share/doc openvpn/easy-rsa/keys/server. Собственно создаём сертификаты и ключи

# cd /usr/local/share/doc/openvpn/easy-rsa/

Внимание! Если у вас по умолчанию не баш, то перед следующими операциями нужно набрать в консоли "sh". Загружаем переменные в оболочку:

#sh

#. ./vars

Очищаем от старых сертификатов и ключей папку keys/server и создаем серийный и индексные файлы для новых ключей

#./clean-all

Создаём сертификат. При создании сертификата вводим необходимую информацию.
Привожу листинг с консоли

#./build-ca (Создаем Certificate Authority для сервера)

Generating a 1024 bit RSA private key

....................++++++

...++++++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

#Страна

Country Name (2 letter code) [RU]:RU

#Провинция

State or Province Name (full name) []:Moscow

#Город

Locality Name (eg, city) []:Moscow

#Название компании(!)

Organization Name (eg, company) [x]:server

#Отделение компании

Organizational Unit Name (eg, section) []:server

#ВОТ ТУТ ВНИМАТЕЛЬНО - ЭТО ИМЯ МАШИНЫ ДЛЯ КОТОРОЙ

# ГЕНЕРИРУЕМ СЕРТИФИКАТ (имя не в полном смысле -имя как идентификатор)

Common Name (eg, your name or your server's hostname) []:server

#Почт адрес

Email Address [root@localhost]:

 

Не факт что у всех, но встречал подобное: при попытке создать сертификат - была ругня на отсутствующие файлы index.txt и serial. В /usr/local/share/doc/openvpn/easy-rsa/keys/server - создаём файлы (пустой и с "нулевым" содержимым соответственно)

#echo "">/usr/local/share/doc/openvpn/easy-rsa/keys/server/index.txt

#echo "00">/usr/local/share/doc/openvpn/easy-rsa/keys/server/serial

Создаем сертификат X.509 для сервера. Всё аналогично заполняем(точно так же) + cтроки в котрых указываем пароль и имя организации (!)

#./build-key-server server

# Страна

Country Name (2 letter code) [RU]:RU

# Провинция

State or Province Name (full name) []:Moscow

# Город

Locality Name (eg, city) []:Moscow

# Название компании(!)

Organization Name (eg, company) [x]:server

# Отделение компании

Organizational Unit Name (eg, section) []:server

# ВОТ ТУТ ВНИМАТЕЛЬНО - ЭТО ИМЯ МАШИНЫ

Common Name (eg, your name or your server's hostname) []:server

# Почт адрес

Email Address [root@localhost]:

Please enter the following 'extra' attributes to be sent with your certificate request

# пароль

A challenge password []:123456789

# название организации

# (как и в создании корневого сертификата)

An optional company name []:server

В конце соглашаемся и подписываем сертификат, отвечая "yes" :-)

Создаём ключ для клиента

#./build-key client

Generating a 1024 bit RSA private key

.........++++++

.......++++++

writing new private key to 'client.key'

-----

You are about to be asked to enter information that will be incorporated into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [RU]:RU

State or Province Name (full name) []:Moscow

Locality Name (eg, city) []:Moscow

Organization Name (eg, company) [server]:server

Organizational Unit Name (eg, section) []:server

Common Name (eg, your name or your server's hostname) []:client

Email Address [root@localhost]:

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:123456789

An optional company name []:client

 

Будьте внимательны при заполнени данных сертификатов, поле Common Name обязательно к заполнению, причем для сервера оно должно быть одно, а для клиента другое. Например в поле Common Name при генерации сертификата X.509 для сервера можно написать server, а для клиента соотвественно client

Создаем ключ Диффи Хельман

# ./build-dh

И в конце создаем ключ для tls-аутификации

# openvpn --genkey --secret keys/server/ta.key

 

Теперь выходим из sh написав команду "exit".

 

После всех этих манипуляций в папке keys/server получается много файлов:

  *

  ca.crt - Главный CA сертификат, этот файл нужен и клиенту и серверу

  *

  dh1024.pem - ключ Диффи Хельман, этот файл нужен только серверу

  *

  server.crt - Сертификат сервера, нужен только серверу

  *

  server.key - Ключ сервера, нужен только серверу (СЕКРЕТНЫЙ файл)

  *

  client.crt - Сертификат клиента, нужен только клиенту

  *

  client.key - Ключ клиента, нужен только клиенту (СЕКРЕТНЫЙ файл)

  *

  ta.key - TLS-ключ, нужен и клиенту и серверу


Следовально серверу достаются файлы ca.crt, dh1024.pem, server.crt, server.key, ta.key,

а клиенту ca.crt, dh1024.pem,client.crt, client.key, ta.key

Настраиваем сервер

Создаём 3 директории
/usr/local/etc/openvpn
/usr/local/etc/openvpn/keys
/usr/local/etc/openvpn/ccd

Так же для удобства скопируем все ключи в /usr/local/etc/openvpn/keys (ca.crt, dh1024.pem, server.crt, server.key, ta.key).

Создаем конфигурационный файл server.conf следующего содержимого:

#порт на котором работает сервер

port 2000

# протокол - советую udp

proto udp

# - используемый тип устройства и номер

dev tun0

#указываем файл CA

ca /usr/local/etc/openvpn/keys/ca.crt

#указываем файл с сертификатом сервера

cert /usr/local/etc/openvpn/keys/server.crt

#указываем файл с ключем сервера

key /usr/local/etc/openvpn/keys/server.key

#указываем файл Диффи Хельман

dh /usr/local/etc/openvpn/keys/dh1024.pem

#задаем IP-адрес сервера и маску подсети

# (виртуальной сети) - можно произвольную, (я выбрал такую)

server 10.10.200.0 255.255.255.0

#задаем МАРШРУТ который передаём клиентту и маску подсети для того чтобы #он "видел" # сеть за опенвпн сервером (сеть 192.168.1.0/24)

push "route 192.168.5.0 255.255.255.0"

# указываем где хранятся файлы с настройками IP-адресов клиентов

client-config-dir ccd

# добавляем маршрут сервер-клиент

route 10.10.200.0 255.255.255.252

# включаем TLS аутификацию

tls-server

# указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента

tls-auth keys/ta.key 0

# таймаут до реконекта

tls-timeout 120

auth MD5 #

# включаем шифрацию пакетов

cipher BF-CBC

keepalive 10 120

# сжатие трафика

comp-lzo

# максимум клиентов

max-clients 100

user nobody

group nobody

# Не перечитывать ключи после получения

# SIGUSR1 или ping-restart

persist-key

# Не закрывать и переоткрывать TUN\TAP устройство, после получения

# SIGUSR1 или ping-restart

persist-tun

# логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)

status /var/log/openvpn/openvpn-status.log

log /var/log/openvpn/openvpn.log

# Уровень информации для отладки

verb 3

 

В дирректории /usr/local/etc/openvpn/ccd создаем файл client (имя файла - имя которому выдан сертификат) следующего содержания

#echo "ifconfig-push 10.10.200.2 10.10.200.1" > /usr/local/etc/openvpn/ccd/client

 

Сервер готов
Для автостарта при загрузке Openvpn-сервера внесём в /etc/rc.conf

openvpn_enable="YES" # YES or NO

openvpn_if="tun" # driver(s) to load, set to "tun", "tap" or "tun tap"

openvpn_configfile="/usr/local/etc/openvpn/server.conf" # --config file

openvpn_dir="/usr/local/etc/openvpn" # --cd directory

 

Настраиваем клиента под Windows
Качаем клиента. Создадим конфигурационный файл openvpn.ovpn в папке config (Например C:\Program Files\OpenVPN\config). И скопируем туда же все необходимые ключи для работы (ca.crt, dh1024.pem, client.crt, client.key, ta.key).
Содержимое файла openvpn.ovpn

dev tun

proto udp

remote 10.0.2.15#(реальный айпи вашего сервера)

port 2000 #(порт к которому устанавливать соединение

client

resolv-retry infinite

ca ca.crt

cert client.crt

key client.key

tls-client

tls-auth ta.key 1

auth MD5

cipher BF-CBC

ns-cert-type server

comp-lzo

persist-key

persist-tun

verb 3

 

НЬЮАНС!
В /usr/local/etc/openvpn/ccd при создании файла с настройками для клиента помните:
ifconfig-push 10.10.200.2 10.10.200.1
этой сторокой организовуем езернет-тун с сеткой 10.10.200.0, 2-мя тачками с айпишнегами 10.10.200.2 и 10.10.200.1 и бродкастом 10.10.200.3
соответственно при создании 2-го, 3-го и т.д. клиента - строка должна принимать вид
ifconfig-push 10.10.200.6 10.10.200.5
ifconfig-push 10.10.200.10 10.10.200.9
и т.д
Категория: Мои статьи | Добавил: Admin (28.10.2011)
Просмотров: 1300 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1  
При попытке подключиться наблюдаю в логах
UDPv4: Connection reset by peer (WSAECONNRESET)(code=10054).Куда копать?

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2017Сделать бесплатный сайт с uCoz