# cd /usr/ports/security/openvpn/ # make install # rehash
Шаг 2Установите из портов re2c:
# cd /usr/ports/devel/re2c # make install clean # rehash
Шаг 3Скачайте архив http://openvpn-auth-ldap.googlecode.com/files/auth-ldap-2.0.3.tar.gz и установите:
# cd /home/krav/install/ # tar xzpf auth-ldap-2.0.3 # cd auth-ldap-2.0.3 # ./configure \ ? -–prefix=/usr/local \ ? –-with-openldap=/usr/local \ ? –-with-openvpn=/usr/ports/security/openvpn/work/openvpn-2.0.6/ # make # make install
Примечание! Это для FreeBSD 6.2. В 7-ке появился порт /usr/ports/security/openvpn-auth-ldap2. Создание сертификатовЭта часть практически полностью скопирована из статьи http://www.lissyara.su/?id=1549Шаг 1Загрузите переменные в оболочку:
# cd /usr/local/share/doc/openvpn/easy-rsa/ # sh # . ./vars
Шаг 2Запустите скрипт для создания серийного и индексного файла для новых ключей:
# ./clean-all
Шаг 3Создайте сертификат. При создании сертификата введите всю необходимую информацию:
# ./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]:UA State or Province Name (full name) [NA]:Dnepropetrovsk Locality Name (eg, city) [BISHKEK]:Dnepropetrovsk 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]:kravchenko@xxxxxx.dp.ua
Шаг 4Создайте сертификат X.509 для сервера. На вопросы отвечайте как и на предыдущем шаге, после этого введите пароль и имя организации, и подтвердите подпись:
# ./build-key-server server Generating a 1024 bit RSA private key ...........................++++++ ..........................................++++++ writing new private key to 'gamma.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
Шаг 5Создайте ключ Диффи Хельман:
# ./build-dh
Шаг 6Выйдите из оболочки sh и создайте ключ для tls-аутентификации:
# exit # openvpn --genkey --secret \ ? /usr/local/share/doc/openvpn/easy-rsa/keys/server/ta.key
Серверу достаются файлы ca.crt, dh1024.pem, server.crt, server.key, ta.key, а клиенту ca.crt.3. Настройка сервераШаг 1Создайте 2 директории:
# mkdir /usr/local/etc/openvpn # mkdir/usr/local/etc/openvpn/keys
Шаг 2Скопируйте все ключи (ca.crt, dh1024.pem, server.crt, server.key, ta.key) в /usr/local/etc/openvpn/keys.Шаг 3Создайте конфигурационный файл /usr/local/etc/openvpn/server.conf:
# Включаем плагин и в качестве аргумента - конфигурационный файл plugin /usr/local/lib/openvpn-auth-ldap.so
"/usr/local/etc/openvpn/openvpn-auth-ldap.conf" port 2000 proto tcp # На tun0 у меня провайдер PPPoE dev tun1 ca /usr/local/etc/openvpn/keys/ca.crt cert /usr/local/etc/openvpn/keys/server.crt client-cert-not-required key /usr/local/etc/openvpn/keys/server.key dh /usr/local/etc/openvpn/keys/dh1024.pem server 10.8.0.0 255.255.255.0 push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 192.168.1.1" #client-config-dir ccd route 10.8.0.0 255.255.255.252 tls-server tls-auth /usr/local/etc/openvpn/keys/ta.key 0 tls-timeout 120 auth MD5 cipher BF-CBC keepalive 10 120 comp-lzo max-clients 100 user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log verb 3
Шаг 4Создайте директории и файлы, указанные в переменных status и log:
# mkdir /var/log/openvpn/ # cd /var/log/openvpn/ # touch openvpn-status.log openvpn.log
Шаг 5В директории /usr/local/etc/openvpn/ создайте файл openvpn-auth-ldap.conf следующего содержания:<LDAP> URL ldap://192.168.1.3/ BindDN cn=manager,dc=mycompany,dc=local Password password Timeout 15 TLSEnable no FollowReferrals yes</LDAP><Authorization> BaseDN "ou=users,dc=mycompany,dc=local" SearchFilter "(&(uid=%u)(objectclass=posixAccount))" RequireGroup false# Group у меня не используется <Group> BaseDN "ou=groups,dc=vicor-ibs,dc=local" SearchFilter "(|(cn=developers)(cn=artists))" MemberAttribute uniqueMember </Group></Authorization>Шаг 6Для запуска OpenVPN внесите в файл /etc/rc.conf строки:
openvpn_enable="YES" openvpn_if="tun" openvpn_configfile="/usr/local/etc/openvpn/server.conf" openvpn_dir="/usr/local/etc/openvpn"
Шаг 7Внесите изменения в конфигурационный файл BIND, чтобы VPN-клиенты могли использовать DNS 192.168.1.1. К перечисленным сетям в переменной allow-auery добавьте сеть 10.8.0.0/24:
allow-query { 192.168.1.0/24; 127.0.0.1; 10.8.0.0/24; };
Шаг 8Добавьте правила в межсетевой экран:
${FwCMD} add allow all from any to me dst-port 2000 ${FwCMD} add allow all from 10.8.0.0/24 to ${lan_net} ${FwCMD} add allow all from ${lan_net} to 10.8.0.0/24
Шаг 9Запустите OpenVPN:
# /usr/local/etc/rc.d/openvpn start
4. Настройка клиента Windows XPШаг 1Скачайте и установите openvpn-2.0.6-gui-1.0.3-install.exeШаг 2Создайте конфигурационный файл C:\Program Files\OpenVPN\config\openvpn.ovpn. И скопируйте в эту директорию сертификат ca.crt и ключ ta.key.
auth-user-pass dev tun proto tcp # Внешний IP сервера OpenVPN remote 22.22.22.22 port 2000 client resolv-retry infinite ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" tls-client tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1 auth MD5 cipher BF-CBC ns-cert-type server comp-lzo persist-key persist-tun push "dhcp-option DNS 192.168.1.1" verb 3
Шаг 3Подключитесь к серверу OpenVPN. Для этого:1. Нажмите правой кнопкой мыши на иконке «OpenVPN GUI» --> «Connect».2. На приглашение ввести логин и пароль, введите свой логин и пароль в домене (LDAP-е).Примечание! При таких настройках клиенту не будет выдаваться шлюз по умолчанию, только IP, DNS.