воскресенье, 5 мая 2019 г.

Совместимый с CISCO AnyClient VPN сервер OpenConnect на Linux

Самая адекватная статья:
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/18.04 with Let’s Encrypt
Вариант с самоподписанным сертификатом
--request-ip option to explicitly request a specific IPv4 addresses
How to Configure a Built-in VPN Client for Linux 
Pseudo-Bridge setup with Proxy ARP
Вариант с псевдомостом
Настройка OCServ на CentOS 7 в качестве псевдомоста с использованием прокси ARP
Пример подготовки сертификатов
Recipes for Openconnect VPN


Install OpenConnect Server on Ubuntu 16.04 (самоподписанный сертификат)
Настройка OpenConnect VPN Server (ocserv) на Ubuntu 16.04 / 17.10 с Let’s Encrypt
Настройка аутентификации по сертификату в OpenConnect VPN Server (ocserv)
Use TLS1.3 with Ocserv anyconnect on Debian
Install Cisco anyconnect VPN on Debian 9 with SSL ready

Совместимый с CISCO AnyClient VPN сервер на Linux
Бесплатный аналог AnyConnect VPN Server
Инсталляция и настройка клиента Cisco VPN на Windows 10
Download latest Cisco AnyConnect Mobility Client
Install OpenConnect Server on Ubuntu 16.04


Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками



# sudo apt update
# sudo apt upgrade
# sudo apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
Скачать и использовать для входа /home/user/.ssh/id_rsa
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub
$ exit
# nano /etc/ssh/sshd_config

Проверить:

PasswordAuthentication no
.....

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Сохранить.

$ sudo systemctl reload sshd

После проверки входа и sudo

Отключть вход root по ssh

$ sudo nano /etc/ssh/sshd_config

Исправить:

PermitRootLogin no

Сохранить.

$ sudo systemctl reload sshd
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p

=========================================================
#Еще добавим nat (если нужна маршрутизация интернет-трафика) :
# Обратить внимание что бы была одна сеть !!!
$ sudo nano /etc/rc.local



#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

iptables -A FORWARD -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

exit 0

Сохранить.


$ sudo chmod +x /etc/rc.local

$ sudo nano /etc/systemd/system/rc-local.service


[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo chmod +x /etc/rc.local

$ sudo systemctl enable rc-local
$ sudo systemctl start rc-local
$ sudo systemctl status rc-local | head -n5 

#$ sudo reboot

$ sudo iptables -t nat -L POSTROUTING

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.10.10.0/24        anywhere

=========================================================

$ sudo apt install ocserv
$ sudo systemctl status ocserv
# Ниже закомментировано для 18.04
#$ sudo apt install software-properties-common
#$ sudo add-apt-repository ppa:certbot/certbot
#$ sudo apt update
$ sudo apt install certbot
$ certbot --version
certbot 0.31.0

$ sudo apt install apache2
$ sudo nano /etc/apache2/sites-available/vpn.example.com.conf


<VirtualHost *:80>       
        ServerName vpn.example.com

        DocumentRoot /var/www/vpn.example.com
</VirtualHost>

Сохранить.

$ sudo mkdir /var/www/vpn.example.com
$ sudo chown www-data:www-data /var/www/vpn.example.com -R
$ sudo a2ensite vpn.example.com
$ sudo systemctl reload apache2
$ sudo certbot certonly --webroot --agree-tos --email your-email-address -d vpn.example.com -w /var/www/vpn.example.com


$ sudo nano /etc/ocserv/ocserv.conf

Изменить:
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem
ca-cert = /etc/letsencrypt/live/vpn.example.com/chain.pem
max-clients = 16
max-same-clients = 0
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1"
try-mtu-discovery = true
default-domain = vpn.example.com
ipv4-network = 10.10.10.0
ipv4-netmask = 255.255.255.0
tunnel-all-dns = true
dns = 1.1.1.1
route = default
#no-route = 192.168.5.0/255.255.255.0

Сохранить. 

$ sudo systemctl restart ocserv

$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service

[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket

[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
#Also=ocserv.socket

Сохранить.

$ sudo systemctl daemon-reload

$ sudo systemctl stop ocserv.socket
$ sudo systemctl disable ocserv.socket
$ sudo systemctl restart ocserv.service
$ systemctl status ocserv

$ sudo ocpasswd -c /etc/ocserv/ocpasswd username


Можно проверерять вход с клиента

На клиенте:

$ sudo apt install openconnect
$ sudo apt install net-tools

$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 enp0s3
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3

$ sudo openconnect -b vpn.example.com:443


$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 tun0
default         _gateway        0.0.0.0         UG    100    0        0 enp0s3
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 tun0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp0s3
XXX.XXX.XXX.XXX  _gateway        255.255.255.255 UGH   0      0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3

user@ud1804:~$ wget -O - -q icanhazip.com
XXX.XXX.XXX.XXX

Комментариев нет:

Отправить комментарий