суббота, 12 ноября 2011 г.

OpenVPN c аутентификацией по логину и паролю


OpenVPN в качестве шлюза для VPN клиентов
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret ./keys/ta.key
/etc/openvpn/server.conf
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
local 172.16.0.10 # здесь указываем IP адрес сервера
port 1194
proto tcp
dev tun
ca /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ca.crt
cert /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/server.crt
key /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/server.key
dh /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/dh1024.pem
client-cert-not-required
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push «route 10.8.0.0 255.255.255.0″
keepalive 10 120
tls-server
tls-auth /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ta.key 0
tls-timeout 120
auth MD5
cipher BF-CBC
comp-lzo
max-clients 100
user nobody # для debian'а (для centos - openvpn)
group nogroup # для debian'а (для centos - openvpn)
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 5
VPN-клиент под Windows: http://openvpn.se/download.html
Копируем с сервера два файла: ca.crt, ta.key на рабочую станцию VPN-клиент в папку c:/program files/openvpn/config
Cоздаем там же файл-конфиг openvpn.ovpn
auth-user-pass
dev tun0
proto tcp
remote 172.16.0.10 # здесь указываем IP адрес VPN сервера
port 1194
redirect-gateway def1
client
resolv-retry infinite
ca ca.crt
tls-client
tls-auth ta.key 1
auth MD5
cipher BF-CBC
ns-cert-type server
comp-lzo
nobind
persist-key
persist-tun
verb 3
Включаем на сервере форвардинг
/etc/sysctl.conf:
net.ipv4.ip_forward = 1

/sbin/sysctl -w net.ipv4.ip_forward=1
Настройка фаерволла
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source <внешний IP сервера>
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Теперь можно создавать VPN аккаунты, OpenVPN при подключении VPN клиента будет запрашивать пароль и логин системного пользователя
useradd -s /usr/sbin/nologin vpnuser1
passwd vpnuser1
На рабочих станциях с Windows XP учетная запись с которой пользователь работает с OpenVPN должна обязательно состоять в группе "Администраторы"
а на компьютерах с Windows Vista или Windows 7 требуется в клиентский конфиг openvpn.ovpn добавить эти два параметра
route-method exe
route-delay 2

4 комментария:

  1. Пытаюсь поднять на Ubuntu 12.04 server. Сделал все по инструкции, потом перегрузил сервер, почему то не подключается клиент с windows 7,в файле openvpn.log пусто. Thu Aug 09 13:04:15 2012 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
    Thu Aug 09 13:04:25 2012 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file
    Thu Aug 09 13:04:25 2012 Outgoing Control Channel Authentication: Using 128 bit message hash 'MD5' for HMAC authentication
    Thu Aug 09 13:04:25 2012 Incoming Control Channel Authentication: Using 128 bit message hash 'MD5' for HMAC authentication
    Thu Aug 09 13:04:25 2012 LZO compression initialized
    Thu Aug 09 13:04:25 2012 Control Channel MTU parms [ L:1540 D:164 EF:64 EB:0 ET:0 EL:0 ]
    Thu Aug 09 13:04:25 2012 Data Channel MTU parms [ L:1540 D:1450 EF:40 EB:135 ET:0 EL:0 AF:3/1 ]
    Thu Aug 09 13:04:25 2012 Local Options hash (VER=V4): 'e6beeeed'
    Thu Aug 09 13:04:25 2012 Expected Remote Options hash (VER=V4): '9183b24b'
    Thu Aug 09 13:04:25 2012 Attempting to establish TCP connection with 89.179.126.9:1194
    Thu Aug 09 13:04:26 2012 TCP: connect to 89.179.126.9:1194 failed, will try again in 5 seconds
    Thu Aug 09 13:04:32 2012 TCP: connect to 89.179.126.9:1194 failed, will try again in 5 seconds

    Вот лог с клиента.
    Подскажите пожалуйста что делаю не так, куда смотреть чтобы понять в чем ошибка. И как это исправить.

    ОтветитьУдалить
    Ответы
    1. > Thu Aug 09 13:04:26 2012 TCP: connect to 89.179.126.9:1194 failed, will try again in 5 seconds
      > Thu Aug 09 13:04:32 2012 TCP: connect to 89.179.126.9:1194 failed, will try again in 5 seconds

      Проверь что на стороне сервера прослушивается именно адрес 89.179.126.9 и tcp порт 1194 и фаервол не блокирует подключения. Для проверки попробуй с клиента подключиться телнетом к серверу по используемому адресу и порту.

      > в файле openvpn.log пусто

      Убедись что пользователю из под которого работает OpenVPN хватает прав выполнять запись в файл /var/log/openvpn/openvpn.log

      Удалить
  2. Настроил всё как описанно здесь. Устанавливаю VPN соединение на клиенте под windows, конектится всё ок., иду в браузер - интернет не работает. Отключаю vpn инет есть. Как настроить чтобы сайты в браузере открывались и VPN работал.

    ОтветитьУдалить
    Ответы
    1. Разобрался сам в конфиг клиента нужно добавить строку dhcp-option DNS 8.8.8.8

      Удалить