Для безопасного подключения клиентов к серверу на котором установлен Эластикс часто используют VPN.Это позволяет открыть наружу только один единственный порт .
Подключиться по VPN к серверу не имея в наличии сертификатов невозможно, плюс трафик в VPN канале невозможно перехватить, что обеспечивает полную конфиденциальность и безопасность.
Рассмотрим процесс установки сервера Openvpn на эластикс и клиента на Windows рабочую станцию.
Для установки openvpn сервера необходимо , чтобы эластикс имел выход в интернет.
yum install openvpn
на предложение скачать пакеты отвечаем "y"
пакеты автоматически скачаются и установятся
Скопируем нужные файлы
cp -a /usr/share/openvpn/easy-rsa /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/
Перейдем в нужную директорию , где будем генерировать ключи и сертификаты
cd /etc/openvpn/easy-rsa/2.0
[root@testel 2.0]# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
[root@testel 2.0]# ./clean-all
Создаем самоподписной корневой сертификат и ключ, все ответы можно оставить по умолчанию, кроме Common Name
[root@testel 2.0]# ./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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:testel
Name [changeme]:
Email Address [mail@host.domain]:
Создаем сертификат и ключ для сервера
Все ответы можно оставить по умолчанию
[root@testel 2.0]# ./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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [server]:
Name [changeme]:
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'Fort-Funston'
organizationalUnitName:PRINTABLE:'changeme'
commonName :PRINTABLE:'server'
name :PRINTABLE:'changeme'
emailAddress :IA5STRING:'mail@host.domain'
Certificate is to be certified until Mar 20 06:56:48 2023 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
Генирируем ключ Диффи-Хелмана
[root@testel 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
...................................................+.................................................................+...................+..+.........................................................................................................................................+...........+.......................................................+....+..................................................................................................+......................................................................+.................................................................................................+............................+.....................................................................+.............++*++*++*
Генерируем клиентский ключ (для каждой машины он должен быть свой)
Все ответы оставляем по умолчанию
[root@testel 2.0]# ./build-key client1
Generating a 1024 bit RSA private key
.++++++
......++++++
writing new private key to 'client1.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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [client1]:
Name [changeme]:
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'Fort-Funston'
organizationalUnitName:PRINTABLE:'changeme'
commonName :PRINTABLE:'client1'
name :PRINTABLE:'changeme'
emailAddress :IA5STRING:'mail@host.domain'
Certificate is to be certified until Mar 20 07:01:46 2023 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
Редактируем файл /etc/openvpn/server.conf , его содержимое должно быть такое :
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
server 172.19.7.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.19.7.0 255.255.255.0"
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20
Где 172.19.7.0 - VPN сеть, при этом адрес сервера будет 172.19.7.1 , а клиентские адреса будут раздаваться автоматически
Запускаем сервер
[root@testel openvpn]# service openvpn start
Starting openvpn: [ OK ]
Для автоматического запуска сервера пропишем в файл /etc/rc.d/rc.local строчку
/etc/rc.d/init.d/openvpn start
Скачиваем и ставим OpenVpn клиент на рабочую станцию.
Скачать можно тут:
http://openvpn.net/index.php/download.htmlПосле установки машину нужно перегрузить.
Далее скачиваем с сервера 3 файла : ca.crt , client1.crt , client1.key и помещаем их в папку C:\Program Files\OpenVPN\config.
Также в этой папке нужно создать файл voip.ovpn и поместить в него следующие содержимое:
client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3где xxx.xxx.xxx.xxx - внешний адрес вашего сервера.
Затем заходим в Управление комьютера --> сервисы и службы и запускаем OpenVpn , как сервис.