Показаны сообщения с ярлыком openvpn. Показать все сообщения
Показаны сообщения с ярлыком openvpn. Показать все сообщения

четверг, 23 июля 2020 г.

NoMachine over OpenVPN windows

Устанавливаем OpenVPN под Windows
OpenVPN 2.4.9 
 
Обратитить внимание что последняя версия для XP 2.3.18 !!!
Ссылки есть в описании странице по ссылке выше. 
 
Подкладываем ключи.
 
Проверяем настройки.
 
Альтернативные загрузки 
 
Устанавливаем NoMachine
Загрузка NoMachine
Использование ПО NoMachine для удаленного доступа к компьютеру через локальную сеть 
NoMachine (бесплатная версия) - Руководство по установке и настройке 
Руководство по функциональности в панели меню в Windows 
 
В файлах конфигурации сервера (server.cfg)
C:\Program files (x86)\NoMachine\etc\server.cfg

Измените:
EnableUPnP

На
EnableUPnP none

Затем перезапустите NoMachine.

Сделать файл openvpn_start.bat
Для запуска в планировщике, при входе пользователя в систему
с наивысшими правами

@echo off
start /b "" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect client1.ovpn
CALL ping 127.0.0.1 -n 60
CALL "c:\Program Files (x86)\NoMachine\bin\nxserver.exe" --restart

суббота, 22 февраля 2020 г.

Перенос OpenVPN в lxd

Настройка OpenVPN c stunnel Ubuntu 16.04 хостера DO  
 
lxc launch ubuntu:16.04 ovpn 
lxc stop ovpn 
 
lxc config device add ovpn myport2194 proxy listen=tcp:0.0.0.0:2194 \
connect=tcp:localhost:2194 
 
lxc config set ovpn raw.lxc 'lxc.cgroup.devices.allow = c 10:200 rwm' 
lxc config device add ovpn tun unix-char path=/dev/net/tun 
lxc start ovpn 
lxc exec ovpn -- sudo --user ubuntu --login 
 
sudo nano /etc/hosts
Изменить:
127.0.0.1 localhost ovpn
Сохранить. 
 
mknod /dev/net/tun c 10 200 
sudo apt update 
sudo apt upgrade -y 
sudo apt install mc cadaver -y 
sudo locale-gen en_US ru_RU en_US.UTF-8 ru_RU.UTF-8 
sudo timedatectl set-timezone Europe/Moscow 
sudo apt install openvpn -y 
 
#Центр сертификации ставить не будем, но поскольку не переносим старый
#больше сертификатов мы выпустить тоже не сможем
#sudo apt install openvpn easy-rsa -y
 
 
Скачать настройки OpenVPN
  
cadaver https://web2.domen.info/remote.php/webdav/
dav:/remote.php/webdav/> get openvpn.tar.gz
dav:/remote.php/webdav/> get openvpn.tar.gz
dav:/remote.php/webdav/> quit 
 
Скопируем из архива:


ccd ca.crt  ca.key  ccd  dh2048.pem  ipp.txt
server.conf  server.crt  server.key  ta.key  update-resolv-conf


в /etc/openvpn/
 
 
sudo nano /lib/systemd/system/openvpn@.service
Закомментируем:
#LimitNPROC=10
Сохранить.
sudo systemctl daemon-reload
sudo systemctl enable openvpn@server.service
sudo systemctl start openvpn@server.service
 
 
nano start.sh
#!/bin/bash
#Небольшой тюнинг:
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
sudo  systemctl restart networking.service
Сохранить.

sudo sh start.sh

Делаем сеть 10.8.20.0/24 
 
Если нужна маршрутизация интернета делаем nat 
sudo nano /etc/rc.local

добавляем строки до exit 0

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

сохраняем

sudo nano/etc/openvpn/server.conf

Заменить:
port 2194
server 10.8.20.0 255.255.255.0

Для проброса интернета:

Раскомментировать:
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Сохранить.

Для задания статического ip
в файлах клиентов:
sudo nano /etc/openvpn/ccd/client1
заменить ip
ifconfig-push 10.8.20.2 255.255.255.0
Сохранить.

sudo poweroff

lxc start ovpn

В файле клиента
remote 188.130.240.10 2194
dev-node 'Ethernet 5' 


mkdir ~/backup/
nano ~/backup_ovpn_lxd.sh 

Добавить:

#!/usr/bin/env bash
set -ex
lxc stop ovpn
BACKUP_DIR=/home/user/backup
#HOSTS=$(lxc list -c n --format csv)
HOSTS=ovpn
for HOST in ${HOSTS}

do
    BACKUP_NAME=${HOST}-$(date +"%Y-%m-%d")

    lxc snapshot ${HOST} auto-backup
    lxc publish ${HOST}/auto-backup --alias ${BACKUP_NAME}
    #lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz
    lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}
    lxc image delete ${BACKUP_NAME}
    lxc delete ${HOST}/auto-backup
done
lxc start ovpn

Сохранить.

chmod +x ~/backup_ovpn_lxd.sh
./backup_ovpn_lxd.sh


backup контейнера
ovpn-2020-02-22.tar.gz
 
Теперь на другой сервер будет переноситься очень просто:
 
Перенос на другой сервер
lxc image import ovpn-2020-02-22.tar.gz --alias ovpn-ip
lxc launch ovpn-ip ovpn-ip
lxc image delete ovpn-ip
lxc stop ovpn-ip
lxc config device add ovpn-ip myport2194 proxy listen=tcp:0.0.0.0:2194 connect=tcp:localhost:2194
lxc config set ovpn-ip raw.lxc 'lxc.cgroup.devices.allow = c 10:200 rwm'
lxc config device add ovpn-ip tun unix-char path=/dev/net/tun
lxc start ovpn-ip
 

Установка и настройка Pure-FTPD (Pure FTP) внутри контейнера

 
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
sudo passwd ftpuser
12345
12345
sudo mkdir /home/ftpuser/
sudo chown -R ftpuser:ftpgroup /home/ftpuser
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir -p /home/ftpuser/test/client
sudo mkdir -p /home/ftpuser/test/buh
sudo mkdir -p /home/ftpuser/test1
sudo chown -R ftpuser:ftpgroup /home/ftpuser
sudo pure-pw useradd test -u ftpuser -d /home/ftpuser/test
sudo pure-pw useradd test1 -u ftpuser -d /home/ftpuser/test1
#FTP, порты пассивного режима (иначе случайные):
#указать два порта на одного клиента. 
sudo su -c 'echo "50000 50010" > /etc/pure-ftpd/conf/PassivePortRange'
#Порты открываются независимо от ufw! (и iptables? )
#Работаем только по ip4
sudo su -c 'echo "yes" > /etc/pure-ftpd/conf/IPV4Only'
#"Человеческий лог после отладки убрать"
sudo su -c 'echo "yes" > /etc/pure-ftpd/conf/VerboseLog'
#В логе ip адреса вместо имен.
sudo su -c 'echo yes > /etc/pure-ftpd/conf/DontResolve'
!!! # echo "YOUR_EXTERNAL_IP_HERE" > /etc/pure-ftpd/conf/ForcePassiveIP 
sudo pure-pw mkdb
sudo service pure-ftpd restart
netstat -ln | grep :21
#копируем файлы на ftp
sudo chown -R ftpuser:ftpgroup /home/ftpuser  
 

среда, 8 мая 2019 г.

Совместная работа OpenConnect и OpenVPN в среде Windows

Для совместной работы  OpenConnect и OpenVPN нужно учитывать следующие особенности:

>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 2' {500EBB39-0CC1-4CBB-A1AA-7DECD679C5D5}
'Ethernet 3' {879AEEC2-87B6-4F0B-BFC6-78046DC6A513}
'Ethernet 4' {D64B1550-D033-4810-8F13-03B18992A20C}
'Ethernet 5' {CA18A6B2-4FAF-4247-9A12-17080869463C}
'Ethernet 6' {361E1C54-5E8F-4450-AD13-6FCAF8E9100A}
'Ethernet 7' {D0C959D0-694C-4984-96A9-A6A8869052A8}

Для совместной работы OpenVPN c OpenConnect через gui совет наделать много tap, (по числу соединений), для OpenVPN с конца, указывая в конфигах:

вместо
;dev-node MyTap
конретную сеть, например:
dev-node 'Ethernet 7'

Для OpenConnect tap от 'Ethernet 2' и далее.



В момент установки OpenConnect клиент привязывается к конкретному  tap
это видно в логфайле (в данном случае неудачно):

2019-05-08 16:50:31 | 192c | Failed to open \\.\Global\{87A61E79-B01E-47EA-8A3B-900EEAE0C706}.tap
2019-05-08 16:50:31 | 192c | Error setting up the TUN device



>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}


Мы видим это  'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}

Для нормальной работы мы должны освободить
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
 от других соединений OpenVPN
 
Manual configuration of the TAP-Windows adapter 

Необходимо создать столько адаптеров TAP, сколько возможно разных соединений OpenVPN и OpenConnect (одновременных или нет)

Помним, что подсети должны быть разные, например:

10.8.0.X, 10.8.1.X и т.п. !!!


Добавляем адаптеры:

1. Посмотрим адаптеры TAP:
  openvpn --show-adapters

'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}

2. Добавим столько сколько нужно адаптеров TAP (от администратора):
"C:\Program Files\TAP-Windows\bin\addtap.bat"
"C:\Program Files\TAP-Windows\bin\addtap.bat"

Добавим столько сколько нужно:

>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}


Для того что бы не было конфликта, в конфигурационных файлах соединений клиента следует выполнить привязку к конкретному имени адаптера (TAP-Win32 adapter name)

'Ethernet 3', пропускаем для OpenConnect

Пример изменений в конфигурационном файле клиента:


c:\Program Files\OpenVPN\config\client.ovpn


# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
dev-node 'Ethernet 2'

Сохранить.

После запуска этого соединения в логе будет сообщение:


Wed May 08 16:30:19 2019 NETSH: C:\WINDOWS\system32\netsh.exe interface ip set address Ethernet 2 dhcp


Каждое соединение OpenVPN привязываем к своему адаптеру,
'Ethernet 3', пропускаем для OpenConnect


Под  windows OpenConnect лучше запускать бантником в планировщике, так как
gui не обеспечивает reconnect после перезагрузки сервера OpenConnect :

start.bat

:again
"c:\Program Files (x86)\OpenConnect-GUI\openconnect.exe" vpn.com -c client.p12 --key-password=password --reconnect-timeout 2
goto again



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

Connect to OpenVPN over Shadowsocks

Connect to OpenVPN over Shadowsocks
How to tunnel OpenVPN over Shadowsocks
Как легко повысить производительность сети Ubuntu 16.04 / 17.10 с помощью TCP BBR
Как настроить сервер FAST Shadowsocks
Как настроить прокси-сервер Shadowsocks-libev в Ubuntu 16.04 / 17.10
ss+v2ray with tls behind nginx over cf


Стенд

Для Ubuntu 16.04:

$ sudo apt update && sudo apt upgrade -y && sudo apt install software-properties-common nano git -y && sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev && sudo apt update && sudo apt install shadowsocks-libev -y

$ wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.1.0/v2ray-plugin-linux-amd64-v1.1.0.tar.gz
$ tar -xf v2ray-plugin-linux-amd64-v1.1.0.tar.gz
$ sudo mv v2ray-plugin_linux_amd64 /etc/shadowsocks-libev/v2ray-plugin
$ sudo chmod +x  /etc/shadowsocks-libev/v2ray-plugin
$ sudo setcap 'cap_net_bind_service=+ep' /etc/shadowsocks-libev/v2ray-plugin
$ sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server

$ sudo nano /etc/shadowsocks-libev/config.json

{
    "server":"XXX.XXX.XXX.XXX",
    "server_port":80,
    "local_port":1080,
    "password":"JichOihoga",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open":true,
    "plugin":"/etc/shadowsocks-libev/v2ray-plugin",
    "plugin_opts":"server",
    "nameserver":"8.8.8.8",
    "reuse_port": true,
    "mode":"tcp_and_udp"
}


$ sudo systemctl restart shadowsocks-libev.service

Работает.

$ sudo nano /etc/stunnel/stunnel.conf

Комментируем:

#[ovpn]
#accept = 53
#connect = 127.0.0.1:1194

Сохранить.

$ sudo /etc/init.d/stunnel4 restart
 
$  sudo ufw allow 80
$ sudo ufw disable && sudo ufw enable


Установка на клиенте.

Установка на клиенте Ubuntu 18.04

shadowsocks-libev на клиенте под линуксом сразу запустить не смог, собирал несколько раз, пока не выяснил, что есть фича - серверный порт должен совпадать с локальным !!!

$ sudo apt install shadowsocks-libev
======================================================================
для Ubuntu 16.04 заменяем  sudo apt install shadowsocks-libev на :

$ sudo apt update && sudo apt upgrade -y && sudo apt install software-properties-common nano git -y && sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev && sudo apt update && sudo apt install shadowsocks-libev -y

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

$ wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.1.0/v2ray-plugin-linux-amd64-v1.1.0.tar.gz
$ tar -xf v2ray-plugin-linux-amd64-v1.1.0.tar.gz
$ sudo mv v2ray-plugin_linux_amd64 /etc/shadowsocks-libev/v2ray-plugin
$ sudo chmod +x  /etc/shadowsocks-libev/v2ray-plugin
$ sudo setcap 'cap_net_bind_service=+ep' /etc/shadowsocks-libev/v2ray-plugin
#$ sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server
$ sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-local

Обратить внимание на Ubuntu серверный порт должен совпадать с локальным портом!!!
 

$ sudo nano /etc/shadowsocks-libev/config.json

{
    "server":"XXX.XXX.XXX.XXX",
    "server_port":80,
    "local_port":1080,
    "password":"JichOihoga",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open":true,
    "plugin":"/etc/shadowsocks-libev/v2ray-plugin",
    "plugin_opts":"server",
    "nameserver":"8.8.8.8",
    "reuse_port": true,
    "mode":"tcp_and_udp"
}


Сохранить.

$ sudo systemctl stop shadowsocks-libev.service && sudo systemctl disable shadowsocks-libev.service



Проверяем клиент

#$ sudo  systemctl stop ss-local.service

Проверяем:

$ ss-local -s "XXX.XXX.XXX.XXX" -p 80 -l 80 -k "JichOihoga" -m "aes-256-cfb" --plugin "/etc/shadowsocks-libev/v2ray-plugin"  -v


Делаем сервис для запуска:

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

[Unit]
Description=Daemon to start Shadowsocks Client
Wants=network-online.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-libev/config.json

[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo systemctl daemon-reload && sudo systemctl enable ss-local.service && sudo systemctl restart ss-local.service
$ sudo  systemctl status ss-local.service
$ sudo journalctl --unit=ss-local.service





$ sudo nano /etc/openvpn/client.conf

Добавляем:

socks-proxy 127.0.0.1 80
;route SHADOWSOCKS_SERVER_IP 255.255.255.255 net_gateway

Сохранить.

Проверяем:
$ sudo openvpn --config /etc/openvpn/client.conf


Делаем сервис для запуска:

$ sudo nano /etc/systemd/system/ovpn.service

[Unit]
Description=Daemon to start OpenVPN Client
Wants=network-online.target
After=network.target

[Service]
Type=simple
ExecStart=openvpn --config /etc/openvpn/client.conf

[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo systemctl daemon-reload && sudo systemctl enable ovpn.service && sudo systemctl restart ovpn.service
$ sudo  systemctl status ovpn.service
$ sudo journalctl --unit=ovpn.service

Оптимизация сервера и настройка ядра.

$ sudo nano /etc/security/limits.conf

Добавить:
 
* soft nofile 51200
* hard nofile 51200

Сохранить

$ sudo nano /etc/sysctl.conf

Добавить в конец:

fs.file-max = 51200

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

Сохранить.

$ sudo sysctl -p

понедельник, 29 апреля 2019 г.

Настройка OpenVPN c stunnel Ubuntu 16.04 хостера DO

Верифицировано 01.05.2019 г. !!!
Бывает необходимо подключить к вебсерверу на котором опубликованы
информационные базы 1С клиентов через интернет.
А так же организован ftp для обмена файлами.

Initial Server Setup with Ubuntu 16.04

Как настроить сервер OpenVPN в Ubuntu 16.04

DO создать пользоватателя user с сертификатом

1. Создать droplet пароль root придет на регистрационный email,  ip увидим при создании

На рабочей машине:
 На рабочей машине:
$ ssh user@ip

$ sudo apt install openvpn easy-rsa -y

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano start.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
#Небольшой тюнинг:
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 /bin/su -c "echo 'vm.swappiness=30' >> /etc/sysctl.conf"
sudo sysctl -p
sudo  systemctl restart networking.service


# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf

#Добавим swap file to an Ubuntu 16.04:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

#Зададим ip для клиентов внутри vpn
sudo mkdir -p /etc/openvpn/ccd
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.2 255.255.255.0' >> /etc/openvpn/ccd/client1"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.3 255.255.255.0' >> /etc/openvpn/ccd/client2"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.4 255.255.255.0' >> /etc/openvpn/ccd/client3"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.5 255.255.255.0' >> /etc/openvpn/ccd/client4"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.6 255.255.255.0' >> /etc/openvpn/ccd/client5"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.7 255.255.255.0' >> /etc/openvpn/ccd/client6"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.8 255.255.255.0' >> /etc/openvpn/ccd/client7"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.9 255.255.255.0' >> /etc/openvpn/ccd/client8"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.10 255.255.255.0' >> /etc/openvpn/ccd/client9"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.11 255.255.255.0' >> /etc/openvpn/ccd/client10"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.12 255.255.255.0' >> /etc/openvpn/ccd/client11"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.13 255.255.255.0' >> /etc/openvpn/ccd/client12"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.14 255.255.255.0' >> /etc/openvpn/ccd/client13"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.15 255.255.255.0' >> /etc/openvpn/ccd/client14"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.16 255.255.255.0' >> /etc/openvpn/ccd/client15"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.17 255.255.255.0' >> /etc/openvpn/ccd/client16"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.18 255.255.255.0' >> /etc/openvpn/ccd/client17"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.19 255.255.255.0' >> /etc/openvpn/ccd/client18"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.20 255.255.255.0' >> /etc/openvpn/ccd/client19"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.21 255.255.255.0' >> /etc/openvpn/ccd/client20"


# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart

Сохраним файл start.sh
$ sudo sh start.sh

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

#добавляем строки до exit 0

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

#сохраняем

$ sudo reboot

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


$ sudo reboot
На рабочей машине:
$ ssh user@ip
Если sudo работает запретим входить root по ssh
$ sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
Можно посмотреть:
$ sudo nano /etc/ssh/sshd_config
Должно быть: PermitRootLogin no
$ sudo reboot

На рабочей машине:
$ ssh user@ip

Генерация ключей
$ cd ~
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ source vars
$ ./clean-all
$ ./build-ca
$ ./build-key-server server
....
Certificate is to be certified until Sep  4 14:15:23 2028 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-dh
$ openvpn --genkey --secret keys/ta.key

Генерация ключей для клиента
$ cd ~/openvpn-ca
$ source vars
$ ./build-key client1
.....
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 client2
...............................
$ ./build-key client20

Скопируем ключи:
$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
$ sudo cp /etc/openvpn/server.conf /etc/openvpn/server.conf.bak

Настройка сервера:
$ sudo nano /etc/openvpn/server.conf

Скопируем настройки server.conf и вставим (заменим) в /etc/openvpn/server.conf:

port 1194
#port 443 port-share 127.0.0.1 4443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.55.0 255.255.255.0
;ifconfig-pool-persist ipp.txt
client-config-dir ccd
# раскоментировать push "redirect-gateway def1"  и строки красным для маршрутизации интернета
;push "redirect-gateway def1"
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
;cipher none # шифрование stunnel
auth SHA256
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
;mute 20

Сохранить.

Запуск:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
$ sudo systemctl status openvpn@server
$ sudo systemctl restart openvpn@server
 -------------------------------------------------------------------------------------------------------------------------
Упакуем сертификаты
$ mkdir -p ~/client-configs/files
$ chmod 700 ~/client-configs/files
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ cp ~/client-configs/base.conf ~/client-configs/base.conf.bak

Настроим базовые настройки клиента, XXX.XXX.XXX.XXX ip адрес сервера:
# Для работы через stunnel 127.0.0.1 !!!
$ nano ~/client-configs/base.conf
Заменить на: 
client
dev tun
proto tcp
;proto udp
remote 127.0.0.1 1194
;remote XXX.XXX.XXX.XXX 1194
;remote my-server-1 1194
;remote my-server-2 1194
resolv-retry infinite
nobind
;user nobody
;group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-128-CBC
;cipher none # шифрование stunnel 
auth SHA256
key-direction 1
comp-lzo
verb 3
;mute 20

Сохранить.

$ nano ~/client-configs/make_config.sh
Добавить:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn
Сохранить.
Убедиться что нет пустых строчек!!!
$ chmod 700 ~/client-configs/make_config.sh
$ cd ~/client-configs
$ ./make_config.sh client1
.........................................
$ ./make_config.sh client20

Подключиться по csp и скачать конфигурационные файлы для openvpn из  /home/user/client-configs/files
$ mkdir -p  /home/user/test/vu
Первый раз:
$ scp user@XXX.XXX.XXX.XXX:/home/user/client-configs/files/* /home/user/test
Настроить  vpn клиента
S sudo reboot

Затем подключиться по vpn
-------------------------------------------------------------------------------------------
$ scp user@10.8.55.1:/home/user/client-configs/files/* /home/user/test

$ sudo openvpn --config /etc/openvpn/client1.ovpn
-------------------------------------------------------------------------------------------

Перед настройкой stunnel4, OpenVPN должен быть настроен и проверен!!!

После проверки необходимо сделать изменеия на сервере:
OpenVPN and Obfsproxy network problems

$ sudo nano /etc/openvpn/server.conf

Добавить:
local 127.0.0.1

Закоментировать:
;push "redirect-gateway def1"

Добавить где XXX.XXX.XXX.XXX , ip адрес сервера:
push "redirect-gateway local"
push "route XXX.XXX.XXX.XXX 255.255.255.255 net_gateway"

Полный файл:

local 127.0.0.1
port 1194
#port 443 port-share 127.0.0.1 4443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.55.0 255.255.255.0
;ifconfig-pool-persist ipp.txt
client-config-dir ccd
# раскоментировать push "redirect-gateway def1" для маршрутизации интернета
;push "redirect-gateway def1"
#push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway local"
push "route XXX.XXX.XXX.XXX 255.255.255.255 net_gateway"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
auth SHA256
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
;mute 20
 
Установка  stunnel4 на сервере:
Для проверки можно использовать:
How To Set Up an SSL Tunnel Using Stunnel on Ubuntu

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install stunnel4 -y

$ sudo nano /etc/stunnel/stunnel.conf

; Указываем PID файл работающего сервиса.
pid = /var/run/stunnel.pid

; Отключим отладочные режимы - 0
debug = 7
output = /var/log/stunnel.log
cert = /etc/stunnel/stunnel.pem

; Полностью отключим уязвимые протоколы SSL версии 2 и 3.
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1
ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256

[ovpn]
accept = 53
connect = 127.0.0.1:1194



Сохранить.

$ sudo nano /etc/default/stunnel4

# Change to one to enable stunnel automatic startup
#ENABLED=0
ENABLED=1

Сохранить.

$ sudo openssl genrsa -out /etc/stunnel/key.pem 2048
$ sudo openssl req -new -x509 -key /etc/stunnel/key.pem -out /etc/stunnel/cert.pem -days 3650
$ sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem"

sudo /etc/init.d/stunnel4 restart

Установка  stunnel4 на клиенте:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install stunnel4 -y

#<IP_server> = XXX.XXX.XXX.XXX

$ sudo nano /etc/stunnel/stunnel.conf
; Указываем PID файл работающего сервиса.
pid = /var/run/stunnel.pid

; Отключим отладочные режимы - 0
debug = 7
output = /var/log/stunnel.log
cert = /etc/stunnel/stunnel.pem

[ovpn]
client = yes
accept = 127.0.0.1:1194
connect = XXX.XXX.XXX.XXX:53


Сохранить.

Переносим с сервера файл с сертификатами в /etc/stunnel/stunnel.pem

$ sudo nano /etc/default/stunnel4

# Change to one to enable stunnel automatic startup
#ENABLED=0
ENABLED=1

Сохранить.
 
sudo /etc/init.d/stunnel4 restart

 -------------------------------------------------------------------------------------------------------------------------
Перед настройкой ufw, OpenVPN должен быть настроен и проверен!!!
Доступ к серверу по ssh будет только через OpenVPN через stunnel !!!
Можно будет зайти только через Access console панели управления!

$ sudo ufw  reset
---------------------------------------------------------------------------------------------------------------------------
Настройка ufw
$ sudo nano /etc/ufw/before.rules

 Добавляем после:
# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

комментируем:
#-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

Сохранить.

#$ sudo ufw disable && sudo ufw enable
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ sudo ufw allow out on tun0
$ sudo ufw allow in on tun0
$ sudo  ufw allow 53/tcp
#$ sudo  ufw allow 443/tcp
#$ sudo ufw allow from x.x.x.x proto tcp to any port 22
$ sudo ufw disable && sudo ufw enable
$ sudo ufw status verbose

$ sudo reboot

Если предполагается  одновременная работа с прокси:

$ sudo ufw  reset
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw default allow forward
$ sudo ufw allow out on tun0
$ sudo ufw allow in on tun0
$ sudo  ufw allow 53/tcp
#$ sudo  ufw allow 443/tcp
$ sudo  ufw allow 35732/tcp
$ sudo ufw allow from x.x.x.x proto tcp to any port 22
$ sudo ufw disable && sudo ufw enable
$ sudo ufw status verbose
#$ sudo ufw status numbered
#$ sudo ufw delete 30


Можно подключать 1С-ки.

----------------------------------------------------------------------------------------------------
Под linux точно работает!
Под windows похоже нужно допиливать маршрутизацию!

$ apt list --all-versions openvpn
Listing... Done
openvpn/xenial-updates,xenial-security,now 2.3.10-1ubuntu2.1 amd64 [installed]
Для windows
Клиента качаем отсюда, версия 2.3.18
OpenVPN 2.3.18 (old stable)


Установка клиента OpenVPN ubuntu 16.04 desktop
Для контролируемого доступа службу не запускаем! 
Настройка на ручной запуск
$ sudo apt-get install openvpn -y
$ sudo reboot
$ sudo systemctl disable openvpn.service
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

How can I run OpenVPN as root in the background, in a script?

Ручной запуск:
# Настройки не здесь /etc/openvpn/client.conf  тут будет автоматически запускаться!!!
Запустить до перезагрузки:
$ sudo openvpn --config /home/user/client.conf --daemon

Прервать соединение:
$ sudo killall openvpn

$ sudo systemctl status openvpn.service
[sudo] пароль для user:
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
--- 10.8.55.1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5101ms
$ sudo openvpn --config /home/user/client.conf --daemon
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
64 bytes from 10.8.55.1: icmp_seq=1 ttl=64 time=53.8 ms
^C
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead) 
----------------------------------------------------------------------------------------------------
Автозапуск:
Автоматический запуск:
Кладем /home/user/clien1.ovpn по csp
Переименуем:
$ sudo mv /home/user/client1.ovpn /etc/openvpn/client.conf
Запускаться будет в любом  случае после однократного запуска
без настройки /etc/default/openvpn
$ sudo nano /etc/default/openvpn
Раскоментировать:
# AUTOSTART="all"
AUTOSTART="all"
Сохранить.

$ sudo reboot

Проверяем:
$ sudo openvpn --config /etc/openvpn/client.conf

---------------------------------------------------------------------------------------------------- 
Делаем сервис для запуска:

$ sudo nano /etc/systemd/system/ovpn.service

[Unit]
Description=Daemon to start OpenVPN Client
Wants=network-online.target
After=network.target

[Service]
Type=simple
ExecStart=openvpn --config /etc/openvpn/client.conf

[Install]
WantedBy=multi-user.target

Сохранить.

$ sudo systemctl daemon-reload && sudo systemctl enable ovpn.service && sudo systemctl restart ovpn.service
$ sudo  systemctl status ovpn.service
$ sudo journalctl --unit=ovpn.service
---------------------------------------------------------------------------------------------------- 

Серврер будет по ssh 10.8.55.2

Узнать внешний ip (без настройки маршрутизации ip не изменяется!)
$ wget -O - -q icanhazip.com

---------------------------------------------------------------------------------------------------------------------------------------------
На плохих каналах нужно обеспечить перезапуск после падения канала:

$ ping -c 1 8.8.8.8 || sudo service openvpn stop && sudo service openvpn start
$ ping -c 1 10.8.55.1 || sudo service openvpn stop && sudo service openvpn start
 
$ sudo su - root
# mkdir /etc/scripts/
# nano /etc/scripts/openvpn.sh 
Вставитьв файл: 
#!/bin/bash
# Проверка OpenVPN соединения
ping -c 1 10.8.55.1 || service openvpn stop && service openvpn start
Сохранить:
# chmod +x /etc/scripts/openvpn.sh 
# nano /etc/crontab 
Добавить в конец
*/5 *  *  *  *   root    /etc/scripts/openvpn.sh
 
И теперь каждые 5 мин будет проверяться наличие канала, по пингу
и если пинга нет, то происходит попытка его поднятия.

воскресенье, 14 октября 2018 г.

OpenVPN сервер ubuntu 16.04 на виртуальной машине VBOX

Создаем виртуальную машину vbox
ubuntu 16.04.5 HWE
1 ядро 512Мб
сетевой мост
без своп раздела

sudo apt update -y
sudo apt upgrade -y
sudo apt install mc ssh samba -y

Зайдем по ssh 

sudo apt install openvpn easy-rsa -y

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano start.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
#Небольшой тюнинг:
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 /bin/su -c "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
sudo sysctl -p
sudo  systemctl restart networking.service

# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf

#Добавим swap file to an Ubuntu 16.04:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

#Зададим ip для клиентов внутри vpn
sudo mkdir -p /etc/openvpn/ccd
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.2 255.255.255.0' >> /etc/openvpn/ccd/client1"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.3 255.255.255.0' >> /etc/openvpn/ccd/client2"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.4 255.255.255.0' >> /etc/openvpn/ccd/client3"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.5 255.255.255.0' >> /etc/openvpn/ccd/client4"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.6 255.255.255.0' >> /etc/openvpn/ccd/client5"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.7 255.255.255.0' >> /etc/openvpn/ccd/client6"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.8 255.255.255.0' >> /etc/openvpn/ccd/client7"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.9 255.255.255.0' >> /etc/openvpn/ccd/client8"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.10 255.255.255.0' >> /etc/openvpn/ccd/client9"

Сохраним файл start.sh$ sudo sh start.sh

$ sudo reboot

Генерация ключей
$ cd ~
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ source vars
$ ./clean-all
$ ./build-ca
$ ./build-key-server server
....
Certificate is to be certified until Sep  4 14:15:23 2028 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-dh
$ openvpn --genkey --secret keys/ta.key

Генерация ключей для клиента
$ cd ~/openvpn-ca
$ source vars
$ ./build-key client1
.....
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 client2
...............................
$ ./build-key client20

Скопируем ключи:
$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
$ sudo cp /etc/openvpn/server.conf /etc/openvpn/server.conf.bak

Настройка сервера:
$ sudo nano /etc/openvpn/server.conf

Скопируем настройки server.conf и вставим (заменим) в /etc/openvpn/server.conf:

#port 443
port 443 port-share 127.0.0.1 4443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.55.0 255.255.255.0
;ifconfig-pool-persist ipp.txt
client-config-dir ccd
# раскоментировать push "redirect-gateway def1" для маршрутизации интернета
;push "redirect-gateway def1"
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
auth SHA256
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
;mute 20

Сохранить.

Запуск:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
$ sudo systemctl status openvpn@server
   -------------------------------------------------------------------------------------------------------------------------
Упакуем сертификаты
$ mkdir -p ~/client-configs/files
$ chmod 700 ~/client-configs/files
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ cp ~/client-configs/base.conf ~/client-configs/base.conf.bak

Для проверки установим внутри локальной сети
$ ip a
192.168.1.231
Вместо 192.168.1.231 должен быть внешний ip
порт 443 сервера OpenVPN должен быть проброшен на роутере во вне по tcp

Настроим базовые настройки клиента, 192.168.1.231 ip адрес сервера:
$ nano ~/client-configs/base.conf
Заменить на: 
client
dev tun
proto tcp
;proto udp
remote 192.168.1.231 443
;remote my-server-1 1194
;remote my-server-2 1194
resolv-retry infinite
nobind
;user nobody
;group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-128-CBC
auth SHA256
key-direction 1
comp-lzo
verb 3
;mute 20

Сохранить.

$ nano ~/client-configs/make_config.sh
Добавить:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn
Сохранить.
$ chmod 700 ~/client-configs/make_config.sh
$ cd ~/client-configs
$ ./make_config.sh client1
.........................................
$ ./make_config.sh client20

Подключиться по csp и скачать конфигурационные файлы для openvpn из  /home/user/client-configs/files
$ mkdir -p  /home/user/test/vu
Первый раз:
$ scp user@XXX.XXX.XXX.XXX:/home/user/client-configs/files/* /home/user/test
Настроить  vpn клиента
S sudo reboot

Затем подключиться по vpn
-------------------------------------------------------------------------------------------
$ scp user@10.8.55.1:/home/user/client-configs/files/* /home/user/test

$ sudo openvpn --config /etc/openvpn/client1.ovpn
-------------------------------------------------------------------------------------------


 -------------------------------------------------------------------------------------------------------------------------
Перед настройкой ufw, OpenVPN должен быть настроен и проверен!!!Доступ к серверу по ssh будет только через OpenVPN!!!
Можно будет зайти только через Access console панели управления!

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

#добавляем строки до exit 0

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

#сохраняем
#$ sudo reboot

$ sudo ufw  reset
---------------------------------------------------------------------------------------------------------------------------
Настройка ufw
$ sudo ufw allow out on tun0
$ sudo ufw allow in on tun0
$ sudo  ufw allow 443/tcp
$ sudo ufw allow from 192.168.0.0/24 proto tcp to any port 22
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ sudo ufw disable
$ sudo ufw enable
$ sudo ufw status verbose



Удаление правил:
$ sudo ufw status numbered
......... 
$ sudo ufw delete 2

$ sudo reboot

Можно подключать 1С-ки.

----------------------------------------------------------------------------------------------------
$ apt list --all-versions openvpn
Listing... Done
openvpn/xenial-updates,xenial-security,now 2.3.10-1ubuntu2.1 amd64 [installed]
Для windows
Клиента качаем отсюда, версия 2.3.18
OpenVPN 2.3.18 (old stable)


Установка клиента OpenVPN ubuntu 16.04 desktop
Для контролируемого доступа службу не запускаем! 
Настройка на ручной запуск
$ sudo apt-get install openvpn -y
$ sudo reboot
$ sudo systemctl disable openvpn.service
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

How can I run OpenVPN as root in the background, in a script?

Ручной запуск:
# Настройки не здесь /etc/openvpn/client.conf  тут будет автоматически запускаться!!!
Запустить до перезагрузки:
$ sudo openvpn --config /home/user/client.conf --daemon

Прервать соединение:
$ sudo killall openvpn

$ sudo systemctl status openvpn.service
[sudo] пароль для user:
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
^C
--- 10.8.55.1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5101ms
$ sudo openvpn --config /home/user/client.conf --daemon
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
64 bytes from 10.8.55.1: icmp_seq=1 ttl=64 time=53.8 ms
^C
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead) 
----------------------------------------------------------------------------------------------------
Автозапуск:
Автоматический запуск:
Кладем /home/user/clien1.ovpn по csp
Переименуем:
$ sudo mv /home/user/client1.ovpn /etc/openvpn/client.conf
Запускаться будет в любом  случае после однократного запуска
без настройки /etc/default/openvpn
$ sudo nano /etc/default/openvpn
Раскоментировать:
# AUTOSTART="all"
AUTOSTART="all"
Сохранить.

$ sudo reboot

Серврер будет по ssh 10.8.55.2

Узнать внешний ip (без настройки маршрутизации ip не изменяется!)
$ wget -O - -q icanhazip.com

---------------------------------------------------------------------------------------------------------------------------------------------
На плохих каналах нужно обеспечить перезапуск после падения канала:

$ ping -c 1 8.8.8.8 || sudo service openvpn stop && sudo service openvpn start
$ ping -c 1 10.8.2.1 || sudo service openvpn stop && sudo service openvpn start
 
$ sudo su - root
# mkdir /etc/scripts/
# nano /etc/scripts/openvpn.sh 
Вставитьв файл: 
#!/bin/bash
# Проверка OpenVPN соединения
ping -c 1 10.8.2.1 || service openvpn stop && service openvpn start
Сохранить:
# chmod +x /etc/scripts/openvpn.sh 
# nano /etc/crontab 
Добавить в конец
*/5 *  *  *  *   root    /etc/scripts/openvpn.sh
 
И теперь каждые 5 мин будет проверяться наличие канала, по пингу
и если пинга нет, то происходит попытка его поднятия.

пятница, 7 сентября 2018 г.

Начальная настройка сервера OpenVPN c Ubuntu 16.04 хостера DO


Верифицировано 07.09.2018 г. !!!
Бывает необходимо подключить к вебсерверу на котором опубликованы информационные базы 1С клиентов через интернет. Для этого хорошо подходит DO.

Initial Server Setup with Ubuntu 16.04
Как настроить сервер OpenVPN в Ubuntu 16.04

1. Создать droplet пароль root придет на регистрационный email,  ip увидим при создании

На рабочей машине:
$ ssh root@ip
Сменим пароль root

# apt update -y
# apt upgrade -y
# apt install mc openvpn easy-rsa -y
# adduser user
# usermod -aG sudo user
# Пинг отключать не будем!
###Еще отключим ping :
### nano /etc/rc.local

###Добавляем строки до exit 0

###/bin/su -c "echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all"

###Сохраняем
# reboot

На рабочей машине:
$ ssh user@ip

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano start.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
#Небольшой тюнинг:
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 /bin/su -c "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
sudo sysctl -p
sudo  systemctl restart networking.service


# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf

#Добавим swap file to an Ubuntu 16.04:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

#Зададим ip для клиентов внутри vpn
sudo mkdir -p /etc/openvpn/ccd
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.2 255.255.255.0' >> /etc/openvpn/ccd/client1"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.3 255.255.255.0' >> /etc/openvpn/ccd/client2"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.4 255.255.255.0' >> /etc/openvpn/ccd/client3"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.5 255.255.255.0' >> /etc/openvpn/ccd/client4"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.6 255.255.255.0' >> /etc/openvpn/ccd/client5"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.7 255.255.255.0' >> /etc/openvpn/ccd/client6"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.8 255.255.255.0' >> /etc/openvpn/ccd/client7"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.9 255.255.255.0' >> /etc/openvpn/ccd/client8"
sudo /bin/su -c "echo 'ifconfig-push 10.8.55.10 255.255.255.0' >> /etc/openvpn/ccd/client9"

# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart

Сохраним файл start.sh
$ sudo sh start.sh

$ sudo reboot
На рабочей машине:
$ ssh user@ip
Если sudo работает запретим входить root по ssh
$ sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
Можно посмотреть:
$ sudo nano /etc/ssh/sshd_config
Должно быть: PermitRootLogin no
$ sudo reboot

На рабочей машине:
$ ssh user@ip


Генерация ключей
$ cd ~
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ source vars
$ ./clean-all
$ ./build-ca
$ ./build-key-server server
....
Certificate is to be certified until Sep  4 14:15:23 2028 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-dh
$ openvpn --genkey --secret keys/ta.key

Генерация ключей для клиента
$ cd ~/openvpn-ca
$ source vars
$ ./build-key client1
.....
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 client2
...............................
$ ./build-key client20

Скопируем ключи:
$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
$ sudo cp /etc/openvpn/server.conf /etc/openvpn/server.conf.bak

Настройка сервера:
$ sudo nano /etc/openvpn/server.conf

Скопируем настройки server.conf и вставим (заменим) в /etc/openvpn/server.conf:

#port 443
port 443 port-share 127.0.0.1 4443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.55.0 255.255.255.0
;ifconfig-pool-persist ipp.txt
client-config-dir ccd
# раскоментировать push "redirect-gateway def1" для маршрутизации интернета
;push "redirect-gateway def1"
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
auth SHA256
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
;mute 20

Сохранить.

Запуск:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
$ sudo systemctl status openvpn@server
   -------------------------------------------------------------------------------------------------------------------------
Упакуем сертификаты
$ mkdir -p ~/client-configs/files
$ chmod 700 ~/client-configs/files
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ cp ~/client-configs/base.conf ~/client-configs/base.conf.bak

Настроим базовые настройки клиента, XXX.XXX.XXX.XXX ip адрес сервера:
$ nano ~/client-configs/base.conf
Заменить на: 
client
dev tun
proto tcp
;proto udp
remote XXX.XXX.XXX.XXX 443
;remote my-server-1 1194
;remote my-server-2 1194
resolv-retry infinite
nobind
;user nobody
;group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-128-CBC
auth SHA256
key-direction 1
comp-lzo
verb 3
;mute 20

Сохранить.

$ nano ~/client-configs/make_config.sh
Добавить:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn
Сохранить.
$ chmod 700 ~/client-configs/make_config.sh
$ cd ~/client-configs
$ ./make_config.sh client1
.........................................
$ ./make_config.sh client20

Подключиться по csp и скачать конфигурационные файлы для openvpn из  /home/user/client-configs/files
$ mkdir -p  /home/user/test/vu
Первый раз:
$ scp user@XXX.XXX.XXX.XXX:/home/user/client-configs/files/* /home/user/test
Настроить  vpn клиента
S sudo reboot

Затем подключиться по vpn
-------------------------------------------------------------------------------------------
$ scp user@10.8.55.1:/home/user/client-configs/files/* /home/user/test

$ sudo openvpn --config /etc/openvpn/client1.ovpn
-------------------------------------------------------------------------------------------


 -------------------------------------------------------------------------------------------------------------------------
Перед настройкой ufw, OpenVPN должен быть настроен и проверен!!!Доступ к серверу по ssh будет только через OpenVPN!!!
Можно будет зайти только через Access console панели управления!

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

#добавляем строки до exit 0

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

#сохраняем
#$ sudo reboot

$ sudo ufw  reset
---------------------------------------------------------------------------------------------------------------------------
Настройка ufw
$ sudo ufw allow out on tun0
$ sudo ufw allow in on tun0
$ sudo  ufw allow 443/tcp
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ sudo ufw disable
$ sudo ufw enable
$ sudo ufw status verbose


$ sudo reboot

Можно подключать 1С-ки.

----------------------------------------------------------------------------------------------------
$ apt list --all-versions openvpn
Listing... Done
openvpn/xenial-updates,xenial-security,now 2.3.10-1ubuntu2.1 amd64 [installed]
Для windows
Клиента качаем отсюда, версия 2.3.18
OpenVPN 2.3.18 (old stable)


Установка клиента OpenVPN ubuntu 16.04 desktop
Для контролируемого доступа службу не запускаем! 
Настройка на ручной запуск
$ sudo apt-get install openvpn -y
$ sudo reboot
$ sudo systemctl disable openvpn.service
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

How can I run OpenVPN as root in the background, in a script?

Ручной запуск:
# Настройки не здесь /etc/openvpn/client.conf  тут будет автоматически запускаться!!!
Запустить до перезагрузки:
$ sudo openvpn --config /home/user/client.conf --daemon

Прервать соединение:
$ sudo killall openvpn

$ sudo systemctl status openvpn.service
[sudo] пароль для user:
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
^C
--- 10.8.55.1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5101ms
$ sudo openvpn --config /home/user/client.conf --daemon
$ ping 10.8.55.1
PING 10.8.55.1 (10.8.55.1) 56(84) bytes of data.
64 bytes from 10.8.55.1: icmp_seq=1 ttl=64 time=53.8 ms
^C
$ sudo systemctl status openvpn.service
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; disabled; vendor preset: enabled)
   Active: inactive (dead) 
----------------------------------------------------------------------------------------------------
Автозапуск:
Автоматический запуск:
Кладем /home/user/clien1.ovpn по csp
Переименуем:
$ sudo mv /home/user/client1.ovpn /etc/openvpn/client.conf
Запускаться будет в любом  случае после однократного запуска
без настройки /etc/default/openvpn
$ sudo nano /etc/default/openvpn
Раскоментировать:
# AUTOSTART="all"
AUTOSTART="all"
Сохранить.

$ sudo reboot

Серврер будет по ssh 10.8.55.2

Узнать внешний ip (без настройки маршрутизации ip не изменяется!)
$ wget -O - -q icanhazip.com

---------------------------------------------------------------------------------------------------------------------------------------------
На плохих каналах нужно обеспечить перезапуск после падения канала:

$ ping -c 1 8.8.8.8 || sudo service openvpn stop && sudo service openvpn start
$ ping -c 1 10.8.2.1 || sudo service openvpn stop && sudo service openvpn start
 
$ sudo su - root
# mkdir /etc/scripts/
# nano /etc/scripts/openvpn.sh 
Вставитьв файл: 
#!/bin/bash
# Проверка OpenVPN соединения
ping -c 1 10.8.2.1 || service openvpn stop && service openvpn start
Сохранить:
# chmod +x /etc/scripts/openvpn.sh 
# nano /etc/crontab 
Добавить в конец
*/5 *  *  *  *   root    /etc/scripts/openvpn.sh
 
И теперь каждые 5 мин будет проверяться наличие канала, по пингу
и если пинга нет, то происходит попытка его поднятия.

понедельник, 6 августа 2018 г.

Перезапуск openvpn при падении

Скрипт для перезапуска VPN соединения при исчезновении пинга
Автоматический подъем канала на клиентах, при его падении

$ ping -c 1 8.8.8.8 || sudo service openvpn stop && sudo service openvpn start
$ ping -c 1 10.8.2.1 || sudo service openvpn stop && sudo service openvpn start
 
$ sudo su - root
# mkdir /etc/scripts/
# nano /etc/scripts/openvpn.sh 
Вставитьв файл: 
#!/bin/bash
# Проверка OpenVPN соединения
ping -c 1 10.8.2.1 || service openvpn stop && service openvpn start
Сохранить:
# chmod +x /etc/scripts/openvpn.sh 
# nano /etc/crontab 

Добавить в конец
*/5 *  *  *  *   root    /etc/scripts/openvpn.sh
 
И теперь каждые 5 мин будет проверяться наличие канала,
и если его нет, то происходит попытка его поднятия.
 

понедельник, 15 января 2018 г.

Игнорирование перенаправления шлюза

Ignoring redirect-gateway

Добавляем в конфигурацию клиента:

route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway

Здесь мы просто добавим маршруты, которые переопределяют --redirect-gateway. Это будет работать так же, как и флаг def1 для -redirect-gateway. Это может быть другим, если сервер использует флаг def1 для опции -redirect-gateway или нет (путем проверки журнала при подключении). Обратите внимание: net_gateway является внутренней переменной openvpn и не нуждается ни в каких изменениях. Если вы не знаете, использует ли ваш сервер def1 и не хочет проверять журналы, чтобы понять это, просто предположите, что они используют def1 и используют 4 маршрута.

пятница, 12 января 2018 г.

Windows 10. Несколько соединений OpenVPN одновременно.

Manual configuration of the TAP-Windows adapter 
Необходимо создать столько адаптеров TAP, сколько возможно разных соединений (одновременных или нет).

Помним, что подсети должны быть разные, например:

10.8.0.X, 10.8.1.X и т.п. !!!


1. Посмотрим адаптеры TAP:
  openvpn --show-adapters


2. Добавим адаптер TAP (от администратора):
 "C:\Program Files\TAP-Windows\bin\addtap.bat"

Добавим столько сколько нужно:





>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}


Для того что бы не было конфликта, в конфигурационных файлах клиента следует выполнить привязку к конкретному имени адаптера (TAP-Win32 adapter name)

'Ethernet 2', пропускаем для непривязанных.

Пример изменений в конфигурационном файле клиента:


c:\Program Files\OpenVPN\config\client.ovpn


# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
dev-node 'Ethernet 3'

Сохранить.

После запуска будет сообщение в логе:


Wed May 08 16:30:19 2019 NETSH: C:\WINDOWS\system32\netsh.exe interface ip set address Ethernet 3 dhcp


Каждое соединение привязываем к своему адаптеру!

пятница, 17 ноября 2017 г.

Начальная настройка сервера OpenVPN c Ubuntu 16.04 хостера DO

Верифицировано 15.01.2018 г. !!!
Бывает необходимо подключить к вебсерверу на котором опубликованы информационные базы 1С клиентов через интернет. Для этого хорошо подходит DO.
Initial Server Setup with Ubuntu 16.04
Как настроить сервер OpenVPN в Ubuntu 16.04

1. Создать droplet пароль root придет на регистрационный email,  ip увидим при создании

На рабочей машине:
$ ssh root@ip
Сменим пароль root

# apt update -y
# apt upgrade -y
# apt install mc openvpn easy-rsa -y
# adduser user
# usermod -aG sudo user
Еще отключим ping :
# nano /etc/rc.local

Добавляем строки до exit 0

/bin/su -c "echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all"

Сохраняем
# reboot

На рабочей машине:
$ ssh user@ip

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano start.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
#Небольшой тюнинг:
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 /bin/su -c "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
sudo sysctl -p
sudo  systemctl restart networking.service


# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf

#Добавим swap file to an Ubuntu 16.04:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

#Зададим ip для клиентов внутри vpn
sudo mkdir -p /etc/openvpn/ccd
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.2 255.255.255.0' >> /etc/openvpn/ccd/client1"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.3 255.255.255.0' >> /etc/openvpn/ccd/client2"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.4 255.255.255.0' >> /etc/openvpn/ccd/client3"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.5 255.255.255.0' >> /etc/openvpn/ccd/client4"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.6 255.255.255.0' >> /etc/openvpn/ccd/client5"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.7 255.255.255.0' >> /etc/openvpn/ccd/client6"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.8 255.255.255.0' >> /etc/openvpn/ccd/client7"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.9 255.255.255.0' >> /etc/openvpn/ccd/client8"
sudo /bin/su -c "echo 'ifconfig-push 10.8.0.10 255.255.255.0' >> /etc/openvpn/ccd/client9"

# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart

Сохраним файл start.sh

Сделаем исполняем
$ chmod +x  start.sh

Выполним:

$ ./start.sh
$ sudo reboot

На рабочей машине:
$ ssh user@ip
$ sudo -i

Если sudo работает запретим входить root по ssh

Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
$ sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
Можно посмотреть:
$ sudo nano /etc/ssh/sshd_config 

Генерация ключей

$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ source vars
$ ./clean-all
$ ./build-ca
$ ./build-key-server server
$ ./build-dh
$ openvpn --genkey --secret keys/ta.key

Генерация ключей для клиента
$ cd ~/openvpn-ca
$ source vars
$ ./build-key client1
...............................
$ ./build-key client20

Скопируем ключи:
$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
$ sudo cp /etc/openvpn/server.conf /etc/openvpn/server.conf.bak

Настройка сервера:
$ sudo nano /etc/openvpn/server.conf

Скопируем настройки server.conf и вставим (заменим) в /etc/openvpn/server.conf:

#port 443
port 443 port-share 127.0.0.1 4443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
;ifconfig-pool-persist ipp.txt
client-config-dir ccd
# раскоментировать для маршрутизации интернета
push "redirect-gateway def1"
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
;cipher BF-CBC        # Blowfish (default)
cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
auth SHA256
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
;mute 20

Сохранить.

Запуск:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
$ sudo systemctl status openvpn@server
   -------------------------------------------------------------------------------------------------------------------------
Упакуем сертификаты
$ mkdir -p ~/client-configs/files
$ chmod 700 ~/client-configs/files
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ cp ~/client-configs/base.conf ~/client-configs/base.conf.bak

Настроим базовые настройки клиента, XXX.XXX.XXX.XXX ip адрес сервера:
$ nano ~/client-configs/base.conf
Заменить на: 
client
dev tun
proto tcp
;proto udp
remote XXX.XXX.XXX.XXX 443
;remote my-server-1 1194
;remote my-server-2 1194
resolv-retry infinite
nobind
;user nobody
;group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-128-CBC
auth SHA256
key-direction 1
comp-lzo
verb 3
;mute 20

Сохранить.

$ nano ~/client-configs/make_config.sh
Добавить:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn
Сохранить.
$ chmod 700 ~/client-configs/make_config.sh
$ cd ~/client-configs
$ ./make_config.sh client1
.........................................
$ ./make_config.sh client9

Подключиться по csp и скачать конфигурационные файлы для openvpn из  /home/user/client-configs/files
$ mkdir -p  /home/user/test/vu
Первый раз:
$ scp user@XXX.XXX.XXX.XXX:/home/user/client-configs/files/* /home/user/test
Затем по vpn
$ scp user@10.8.0.1:/home/user/client-configs/files/* /home/user/test

$ sudo openvpn --config /etc/openvpn/client1.ovpn


 -------------------------------------------------------------------------------------------------------------------------
Перед настройкой ufw, OpenVPN должен быть настроен и проверен!!!Доступ к серверу по ssh будет только через OpenVPN!!!
Можно будет зайти только через Access console панели управления!

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

добавляем строки до exit 0

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

сохраняем
 $ sudo reboot

$ sudo ufw  reset
---------------------------------------------------------------------------------------------------------------------------
Настройка ufwsudo ufw allow out on tun0
sudo ufw allow in on tun0
sudo  ufw allow 443/tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default allow forward
sudo ufw disable
sudo ufw enable
sudo reboot
---------------------------------------------------------------------------------------------------- 
Установить fail2ban
$ sudo apt install fail2ban
----------------------------------------------------------------------------------------------------  
Установить часовой пояс
$ sudo dpkg-reconfigure tzdata
----------------------------------------------------------------------------------------------------

Можно подключать 1С-ки.

----------------------------------------------------------------------------------------------------
$ apt list --all-versions openvpn
Listing... Done
openvpn/xenial-updates,xenial-security,now 2.3.10-1ubuntu2.1 amd64 [installed]

Клиента качаем отсюда, версия 2.3.18
OpenVPN 2.3.18 (old stable)
Безопасный OpenVPN на VPS за несколько минут