В корень! | Arduino | Мини-ПК | Электрика | Меры | Цитатник | Мой календарь | Прочее ... | Time SRV | В т.ч. НДС 18%*
На работе есть машина, с которой захотелось видеть свою домашнюю локальную сеть и так, чтобы вся информация надежно шифровалась. Удаленная машина на работе находится за NAT-ом, поэтому было принято решение реализовать все с помощью OpenVPN.
Итак, приступим...
mx# cd /usr/ports/security/openvpn
mx# make config
Опции оставляем стандартными
┌────────────────────────────────────────────────────────────────────┐ │ Options for openvpn 2.1.4 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] PW_SAVE Interactive passwords may be read from a file │ │ │ │ [ ] PKCS11 Use security/pkcs11-helper │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
mx# make install clean
mx# rehash
Меняем права
mx# cd /usr/local/share/doc/openvpn/easy-rsa/
mx# chmod -R 544 2.0
mx# chmod 755 2.0
Идем в
mx# cd /usr/local/share/doc/openvpn/easy-rsa/2.0/
Меняем оболочку на sh
mx# sh
Загружаем переменные в оболочку
# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/share/doc/openvpn/easy-rsa/2.0/keys
Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей
# ./clean-all
Создаём сертификат. При создании сертификата вводим необходимую информацию. Привожу пример:
# ./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]:RU State or Province Name (full name) [CA]:RU Locality Name (eg, city) [SanFrancisco]:Moscow Organization Name (eg, company) [Fort-Funston]:Cisco Systems Organizational Unit Name (eg, section) []:Cisco Systems MSK Office Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:server Name []:Ivan Ivanov Email Address [me@myhost.mydomain]:admin@cisco.co.com
Создаем сертификат X.509 для сервера. Всё аналогично заполняем (точно так же) + cтроки в которых указываем пароль и имя организации
# ./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]:RU State or Province Name (full name) [CA]:RU Locality Name (eg, city) [SanFrancisco]:Moscow Organization Name (eg, company) [Fort-Funston]:Cisco Systems Organizational Unit Name (eg, section) []:Cisco Systems MSK Office Common Name (eg, your name or your server's hostname) [server]:server Name []:Ivan Ivanov Email Address [me@myhost.mydomain]:admin@cisco.co.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:vash_parol An optional company name []:ASY Using configuration from /usr/local/share/doc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'RU' stateOrProvinceName :PRINTABLE:'RU' localityName :PRINTABLE:'Moscow' organizationName :PRINTABLE:'Cisco System' organizationalUnitName:PRINTABLE:'Cisco Systems MSK Office' commonName :PRINTABLE:'server' name :PRINTABLE:'Ivan Ivanov' emailAddress :IA5STRING:'admin@cisco.co.com' Certificate is to be certified until Apr 27 07:22:01 2021 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
Создаём ключ для клиента
# ./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) [US]:RU State or Province Name (full name) [CA]:RU Locality Name (eg, city) [SanFrancisco]:Moscow Organization Name (eg, company) [Fort-Funston]:Cisco System Organizational Unit Name (eg, section) []:Cisco Systems MSK Office Common Name (eg, your name or your server's hostname) [client]:client Name []:Ivan Ivanov Email Address [me@myhost.mydomain]:admin@cisco.co.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:vash_parol An optional company name []:Cisco Systems Office Work Using configuration from /usr/local/share/doc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'RU' stateOrProvinceName :PRINTABLE:'RU' localityName :PRINTABLE:'Moscow' organizationName :PRINTABLE:'Cisco System' organizationalUnitName:PRINTABLE:'Cisco Systems MSK Office' commonName :PRINTABLE:'client' name :PRINTABLE:'Ivan Ivanov' emailAddress :IA5STRING:'admin@cisco.co.com' Certificate is to be certified until Apr 27 07:24:24 2021 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
Будьте внимательны при заполнени данных сертификатов, поле Common Name обязательно к заполнению, причем для сервера оно должно быть одно, а для клиента другое. Например в поле Common Name при генерации сертификата X.509 для сервера можно написать server, а для клиента соотвественно client.
Создаем ключ Диффи Хельман, после чего выходим из sh
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ....................+.......................................+................. ............+.............................................+...................
# exit
Создаем ключ для tls-аутификации
mx# openvpn --genkey --secret keys/ta.key
Создаем 3 директории
mx# mkdir /usr/local/etc/openvpn/ mx# mkdir /usr/local/etc/openvpn/keys/ mx# mkdir /usr/local/etc/openvpn/ccd/
Копируем ключи в /usr/local/etc/openvpn/keys/
mx# cd /usr/local/share/doc/openvpn/easy-rsa/2.0/keys/ mx# cp ca.crt /usr/local/etc/openvpn/keys/ mx# cp dh1024.pem /usr/local/etc/openvpn/keys/ mx# cp server.crt /usr/local/etc/openvpn/keys/ mx# cp server.key /usr/local/etc/openvpn/keys/ mx# cp ta.key /usr/local/etc/openvpn/keys/
Создаем файл конфигурации
mx# touch /usr/local/etc/openvpn/server.conf
Редактируем его
#порт на котором работает сервер port 2000 # протокол proto tcp # - используемый тип устройства и номер 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 172.16.200.0 255.255.255.0 #задаем МАРШРУТ который передаём клиентту # и маску подсети для того чтобы он "видел" # сеть за опенвпн сервером (сеть 172.16.100.0/8) push "route 172.16.100.0 255.255.255.0" # указываем где хранятся файлы с # настройками IP-адресов клиентов client-config-dir ccd # добавляем маршрут сервер-клиент route 172.16.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 # логгирование status /var/log/openvpn-status.log log /var/log/openvpn.log # Уровень информации для отладки verb 3
Не забываем открыть указанный порт в IPFW и разрешить трафик по интерфейсу tun0!!!
Пример открытия порта и разрешение всего трафика по интерфейсу приведены в статье Настройка Kernel (IPFW) NAT
В дирректории /usr/local/etc/openvpn/ccd создаем файл client
mx# touch /usr/local/etc/openvpn/ccd/client
Приводим его к такому виду
ifconfig-push 172.16.200.2 172.16.200.1
Для автостарта OpenVPN добавляем в rc.conf
openvpn_enable="YES" openvpn_if="tun" openvpn_configfile="/usr/local/etc/openvpn/server.conf" openvpn_dir="/usr/local/etc/openvpn"
Настройка серевера завершена.
Качаем клиент. Создадим конфигурационный файл openvpn.ovpn в папке config (Например, C:\Program Files\OpenVPN\config).
Скопируем туда же все необходимые ключи для работы (ca.crt, dh1024.pem, client.crt, client.key, ta.key)
из /usr/local/share/doc/openvpn/easy-rsa/2.0/keys/.
Файл openvpn.ovpn приводим к такому виду, указав IP вашего сервера с FreeBSD
dev tun proto tcp remote 109.87.94.120 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
В Windows, в службах ставим тип запуска "Авто" для службы OpenVPN. После этого ребутим сервер с FreeBSD и винду.
Можно и не перегружаться, а стартануть openvpn сервер и перезапустить службу OpenVPN в винде.
mx# /usr/local/etc/rc.d/openvpn start
Starting openvpn.
На этом настройка клиента завершена. Можно проверять работоспособность!!!
Настраиваем WEB-сервер
Apache2 + PHP5 + MySQL + phpMyAdmin
Пример для виртуальных хостов
Последовательное соединение проводников Параллельное соединение проводников |
darktango.xml emacs-darkslategrey.xml |
2:5020/1209.12@FidoNet
Copyright © 2004 - 2024 MSK VAO-IX GROUP • ЗАО "Сумма технологий" - Сделано двумя руками!