Документация по ОС FreeBSD Четверг, 25.04.2024, 02:17
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » VPN

Установка и настройка OpenVPN. Часть 1 [2010]
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах, а, в свою очередь, админы имели удаленный доступ к ПК филиалов. В общем, много чего можно из этого выжать. И, естественно, должно быть шифрование и сжатие трафика стандартными средствами OpenVPN.
Исходные данные:
+---------------+----------------+------------+
|Подразделение | Подсеть | ОС гейта |
+---------------+----------------+------------+
|Офис | 192.168.0.0/24 | FreeBSD |
|Филиал №1 | 192.168.1.0/24 | FreeBSD |
|Филиал №2 | 192.168.2.0/24 | Windows XP |
|Филиал №3 | 192.168.3.0/24 | CentOS |
+---------------+----------------+------------+


Устанавливаем OpenVPN

//> cd /usr/ports/security/openvpn
/usr/ports/security/openvpn/> make config

 +--------------------------------------------------------------------+
 | Options for openvpn 2.0.6_9 |
 | +----------------------------------------------------------------+ |
 | | [ ] PW_SAVE Interactive passwords may be read from a file | |
 | | | |
 | | | |
 | | | |
 | | | |
 +-+------v(+)------------------------------------------------------+-+
 | [ OK ] Cancel |
 +--------------------------------------------------------------------+

/usr/ports/security/openvpn/> make install clean

Далее переходим в каталог easy-rsa
//> cd /usr/local/share/doc/openvpn/easy-rsa/

/usr/local/share/doc/openvpn/easy-rsa/> ee vars

В нем меняем 1 строку
# Меняем export KEY_DIR=$D/keys/ на
export KEY_DIR=$D/keys/server

/usr/local/share/doc/openvpn/easy-rsa/> chmod +x *
/usr/local/share/doc/openvpn/easy-rsa/> mkdir keys
/usr/local/share/doc/openvpn/easy-rsa/> mkdir keys/server

Далее запускаем shell
/usr/local/share/doc/openvpn/easy-rsa/> sh

#. ./vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on 
/usr/local/share/doc/openvpn/easy-rsa/keys/server
#./clean-all

Создаем ключи для нашего сервера OpenVPN

В моем случае создаем 2 ключа и 1 сертификат для самого сервера OpenVPN.
Создаем их один раз и навсегда.

1. Создаем 1-ый ключ Certificate Authority
# ./build-ca
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) [KG]:RU
State or Province Name (full name) [NA]:Rostov-on-Don
Locality Name (eg, city) [BISHKEK]:Zernograd
Organization Name (eg, company) [OpenVPN-TEST]:server
Organizational Unit Name (eg, section) []:server
Common Name (eg, your name or your server's hostname) []:server
Email Address [me@myhost.mydomain]:root@localhost

2. Создаем сертификат X.509
# ./build-key-server server
Generating a 1024 bit RSA private key
........++++++
.......................++++++
writing new private key to 'server.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) [KG]:RU
State or Province Name (full name) [NA]:Rostov-on-Don
Locality Name (eg, city) [BISHKEK]:Zernograd
Organization Name (eg, company) [OpenVPN-TEST]:server
Organizational Unit Name (eg, section) []:server
Common Name (eg, your name or your server's hostname) []:server
Email Address [me@myhost.mydomain]:root@localhost

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Password
An optional company name []:server
Using configuration from /usr/local/share/doc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :PRINTABLE:'Rostov-on-Don'
localityName :PRINTABLE:'Zernograd'
organizationName :PRINTABLE:'server'
organizationalUnitName:PRINTABLE:'server'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'root@localhost'
Certificate is to be certified until Jan 17 18:06:10 2019 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

3. Генерируем 1024 битный ключ с помощью алгоритма Диффи Хеллмана
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
........................................+.+.................+............
.......+.................................................................
..+.......+..............................................+...............
...........................................................+.....+.......
............+.....................+......................................
.........................................................................
..................................+...........+.............+....++*++*++

Выходим из shell
# exit

Создаем ключ для tls-аутентификации (который нужен как и серверу, так и клиенту)
/usr/local/share/doc/openvpn/easy-rsa/> openvpn --genkey \
--secret keys/server/ta.key

Создаем директории для нашего OpenVPN сервера где будут храниться конфиг, ключи, сертификаты и настройки клиентов
//> mkdir /usr/local/etc/openvpn
//> mkdir /usr/local/etc/openvpn/keys
//> mkdir /usr/local/etc/openvpn/ccd

Переходим в директорию с ключами OpenVPN
//> cd /usr/local/share/doc/openvpn/easy-rsa/keys/server/

Копируем ключи их /usr/local/etc/openvpn/keys
/../../easy-rsa/keys/server/> cp ca.crt /usr/local/etc/openvpn/keys/
/../../easy-rsa/keys/server/> cp server.crt /usr/local/etc/openvpn/keys/
/../../easy-rsa/keys/server/> cp server.key /usr/local/etc/openvpn/keys/
/../../easy-rsa/keys/server/> cp dh1024.pem /usr/local/etc/openvpn/keys/
/../../easy-rsa/keys/server/> cp ta.key /usr/local/etc/openvpn/keys/

Создаем конфигурационный файл нашего OpenVPN сервера.
//> ee /usr/local/etc/openvpn/server.conf

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

# протокол - TCP или 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.100.0 255.255.255.0

# указываем внутренний DNS и WINS сервер
push "dhcp-option DNS 192.168.0.1"
push "dhcp-option WINS 192.168.0.1"

# задаем МАРШРУТ который передаём клиенту
# и маску подсети для того чтобы он "видел"
# сеть за OpenVPN сервером
# Офис
push "route 192.168.0.0 255.255.255.0"
# Филиал №1
push "route 192.168.1.0 255.255.255.0"
# Филиал №2
push "route 192.168.2.0 255.255.255.0"
# Филиал №3
push "route 192.168.3.0 255.255.255.0"

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

# добавляем маршрут сервер-клиент
route 10.10.100.0 255.255.255.252
# Филиал №1
route 192.168.1.0 255.255.255.0
# Филиал №2
route 192.168.2.0 255.255.255.0
# Филиал №3
route 192.168.3.0 255.255.255.0

# делает сервер OpenVPN основным шлюзом
#push "redirect-gateway def1"

# разрешает видеть клиентам друг друга (по виртуальным IP)
#client-to-client

# разрешать подключаться с одинаковым сертификатом/ключом
#duplicate-cn

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

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

# таймаут до реконнекта
tls-timeout 120
auth MD5

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

# проверяет активность подключения каждые 10 секунд,
# если в течении 120 сек. нет ответа, подключение закрывается
keepalive 10 120

# сжатие трафика
comp-lzo

# максимальное кол-во клиентов
max-clients 100
user nobody
group nobody

# не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key

# не закрывать и переоткрывать TUN\TAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun

# логирование
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log

# уровень информации для отладки
# 0 -- quiet except for fatal errors.
# 1 -- mostly quiet, but display non-fatal network errors.
# 3 -- medium output, good for normal operation.
# 9 -- verbose, good for troubleshooting
verb 3

# макс кол-во однотипных записей в лог
#mute 20

Создаем директорию /var/log/openvpn/ и 2 файла где будут храниться логи
//> mkdir /var/log/openvpn/
//> touch /var/log/openvpn/openvpn-status.log
//> touch /var/log/openvpn/openvpn.log

Добавляем OpenVPN в автозагрузку системы
//> ee /etc/rc.conf

openvpn_enable="YES"
openvpn_if="tun"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
openvpn_dir="/usr/local/etc/openvpn"

И запускаем OpenVPN сервер
//> /usr/local/etc/rc.d/openvpn start
Starting openvpn.
//>

Проверим в процесcах
//> ps axw | grep openvpn

2983 ?? Ss 0:00.00 /usr/local/sbin/openvpn --cd /usr/local/etc/openvpn --daemon openvpn --config /usr/local/etc/openvpn/server.conf


Часть 2



Источник: http://www.lissyara.su/articles/freebsd/security/openvpn+pkcs-12/
Категория: VPN | Добавил: oleg (04.09.2010) | Автор: Cancer
Просмотров: 1293 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024