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

вторник, 12 мая 2020 г.

Установка stunnel для apache вебсервера 1С:Предпритие 8.3 Ubuntu 20.04 с авторизацией


 Установка  stunnel4 на сервере Ubuntu 20.04:

sudo apt install stunnel4 -y

Нам нужны пары сертификат/ключ для сервера и каждого клиента.
Для сервера:
sudo openssl genrsa -out /etc/stunnel/server-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/server-key.pem -out /etc/stunnel/server-cert.pem -days 36500
##sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem" 

Создадим пару для клиента client01:

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

Файлы client01-cert.pem  client01-key.pem  server-cert.pem
скопируем на машину с клиентом client01 (windows)

Создадим еще пару для клиента client02:

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

И т.д.

На сервере настриваем (ниже):accept = 4443 - порт на сервере который нужно открыть во внешнюю сеть или пробросить
connect = 127.0.0.1:80 - 80 порт вебсервера от которого строим туннель tls

sudo nano /etc/stunnel/stunnel.conf

chroot = /var/lib/stunnel4
pid = /stunnel4.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;Отключим отладочные режимы - 0
;debug = 7
#cert = /etc/stunnel/stunnel.pem
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
cert = /etc/stunnel/server-cert.pem
key = /etc/stunnel/server-key.pem
CAfile = /etc/stunnel/clients.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-AES256-SHA384

[apache]
accept = 4443
connect = 127.0.0.1:80

Сохранить

Штатный запуск:

sudo su -c "echo 'ENABLED=1' >> /etc/default/stunnel4"

Можно проверить:

cat /etc/default/stunnel4
.....
ENABLED=1
==========================================
Можно просто:
sudo reboot
==========================================
или без перезагрузки:
sudo systemctl enable stunnel4.service
sudo systemctl start stunnel4.service
==========================================


sudo systemctl status stunnel4.service


Лог в chroot  /var/lib/stunnel4/stunnel.log

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


---------------------------------------------------------------------------------------------------------------------------
Установка stunnel под windows
download stunnel
stunnel-5.56-win64-installer.exe
Все версии 32 и 64 здесь

1. Установить  stunnel-5.56-win64-installer.exe
(для 32 бит   stunnel-5.49-win32-installer.exe )


Подключаться к 1с будем  127.0.0.1:8080

К серверу  по внешнему ip 192.168.1.233:4443 через интернет.

2. Скопировать с сервера сертификат:
/etc/stunnel/stunnel.pem
в 
c:\Program Files (x86)\stunnel\config\stunnel.pem

3. Настройить stunnel.conf
(все строки можно удалить)

c:\Program Files (x86)\stunnel\config\stunnel.conf

cert = client01-cert.pem
key = client01-key.pem
CAfile = server-cert.pem
client = yes
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
[apache]
accept = 127.0.0.1:8080
connect = 192.168.1.233:4443

Сохранить.

Есть ярлык, установить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install

Есть ярлык, запустить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start


Проверить:
http://localhost:8080/demo/ru_RU/ 


Прочие команды.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -stop
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -uninstall

==========================================
Альтернативный вариант с systemd не делаем!

sudo nano /lib/systemd/system/stunnel.service


[Unit]
Description=SSL tunnel
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/pkill stunnel
WorkingDirectory=/etc/stunnel
TimeoutSec=600
Restart=always
PrivateTmp=false

Сохранить.


sudo systemctl enable stunnel.service
sudo systemctl start stunnel.service
sudo systemctl status stunnel.service

воскресенье, 10 мая 2020 г.

Установка stunnel для apache вебсервера 1С:Предпритие 8.3 Ubuntu 20.04

Stunnel + OpenVPN Server on Ubuntu 18.04
Авторизация для stunnel с помощью сертификатов openvpn

Установка  stunnel4 на сервере Ubuntu 20.04:

sudo apt install stunnel4 -y
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" 

Фйайл /etc/stunnel/stunnel.pem скачаваем для установки на клиента

sudo chmod 600 /etc/stunnel/stunnel.pem
sudo rm /etc/stunnel/key.pem  /etc/stunnel/cert.pem 

На сервере настриваем (ниже):
accept = 4443 - порт на сервере который нужно открыть во внешнюю сеть или пробросить
connect = 127.0.0.1:80 - 80 порт вебсервера от которого строим туннель tls

sudo nano /etc/stunnel/stunnel.conf

chroot = /var/lib/stunnel4
pid = /stunnel4.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
#Отключим отладочные режимы - 0
#debug = 7
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-AES256-SHA384

[apache]
accept = 4443
connect = 127.0.0.1:80

Сохранить



Штатный запуск:

sudo su -c "echo 'ENABLED=1' >> /etc/default/stunnel4"

Можно проверить:

cat /etc/default/stunnel4
.....
ENABLED=1
==========================================
Можно просто:
sudo reboot
==========================================
или без перезагрузки:
sudo systemctl enable stunnel4.service
sudo systemctl start stunnel4.service
==========================================


sudo systemctl status stunnel4.service


Лог в chroot  /var/lib/stunnel4/stunnel.log

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


---------------------------------------------------------------------------------------------------------------------------
Установка stunnel под windows
download stunnel
stunnel-5.56-win64-installer.exe
Все версии 32 и 64 здесь

1. Установить  stunnel-5.56-win64-installer.exe
(для 32 бит   stunnel-5.49-win32-installer.exe )


Подключаться к 1с будем  127.0.0.1:8080

К серверу  по внешнему ip 192.168.1.233:4443 через интернет.

2. Скопировать с сервера сертификат:
/etc/stunnel/stunnel.pem
в 
c:\Program Files (x86)\stunnel\config\stunnel.pem

3. Настройить stunnel.conf
(все строки можно удалить)

c:\Program Files (x86)\stunnel\config\stunnel.conf

cert = stunnel.pem
client = yes
[apache]
accept = 127.0.0.1:8080
connect = 192.168.1.233:4443


Сохранить.

Есть ярлык, установить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install

Есть ярлык, запустить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start


Проверить:
http://localhost:8080/demo/ru_RU/ 


Прочие команды.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -stop
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -uninstall

==========================================
Альтернативный вариант с systemd не делаем!

sudo nano /lib/systemd/system/stunnel.service


[Unit]
Description=SSL tunnel
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/pkill stunnel
WorkingDirectory=/etc/stunnel
TimeoutSec=600
Restart=always
PrivateTmp=false

Сохранить.


sudo systemctl enable stunnel.service
sudo systemctl start stunnel.service
sudo systemctl status stunnel.service

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

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

How To Set Up an SSL Tunnel Using Stunnel on Ubuntu

Настройка Squid для начинающих (squid proxy acl) 
SQUID Часто Задаваемые Вопросы
How To Set Up an SSL Tunnel Using Stunnel on Ubuntu
Установка Squid


$ sudo apt install squid
$ sudo nano /etc/squid/squid.conf

Меняем:
 
#http_access deny all
http_access allow all

Сохранить.

$ sudo service squid restart

проверяем прокси
http <IP_server>:3128

После проверки прокси

На сервере запрещаем доступ кроме localhost
и меняем адрес порта  http_port:

$ sudo nano /etc/squid/squid.conf

Меняем:

#http_port 3128 
http_port 35732

http_access deny all
#http_access allow all

Сохранить.

$ sudo service squid restart

Установка  stunnel4 на сервере:


$ 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

# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

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

[squid]
accept = 443
connect = 127.0.0.1:35732

[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

# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

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

[squid]
client = yes
accept = 127.0.0.1:3128
connect = XXX.XXX.XXX.XXX:443

[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

На клиенте проверяем прокси

проверяем прокси
http  127.0.0.1:3128


На сервере отключаем внешний интерфейс:

$ sudo nano /etc/squid/squid.conf

Меняем:

http_access deny all
#http_access allow all

Сохранить.

$ sudo service squid 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 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 8888/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



КриптоПро stunnel

понедельник, 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 мин будет проверяться наличие канала, по пингу
и если пинга нет, то происходит попытка его поднятия.

воскресенье, 28 апреля 2019 г.

Stunnel

Stunnel
Install Stunnel4 for openvpn connection
Как поднять свой VPN настроить OpenVPN и stunnel
Tunneling OpenVPN with HTTPS with Stunnel and Ubuntu
How To Set Up an SSL Tunnel Using Stunnel on Ubuntu
Создание SSL-туннеля при помощи Stunnel в Ubuntu
Use Stunnel as an HTTPS-proxy for your OpenVPN connection
Stunnel на сервере и клиенте
StealthVPN on Linux (OpenVPN & stunnel)
Делаем свой VPN на Streisand
FrootVPN: Stunnel + OpenVPN Installation Guide for Ubuntu 16.04
Hiding OpenVPN traffic from network opponents
StreisandEffect/streisand
Как установить и настроить VPN Streisand
Применяем stunnel для защиты сервисов
Интеграция с внешней системой защиты от потери данных
OpenVPN with SSL tunnel
Board index Projects Networking and servers [How to] using stunnel + openvpn from China or Syria
Hiding OpenVPN traffic from network opponents

Про маршрутизацию:

OpenVPN and stunnel and redirect-gateway
OpenVPN and Obfsproxy network problems.
OpenVPN tunneling on secure transport obfsproxy
How to hide OpenVPN traffic using Obfsproxy on a Windows PC and Linux EC2 server
Опыт маскировки OpenVPN-туннеля с помощью obfsproxy
Configuring your Linux server to hide OpenVPN traffic
There are instruction for setting up Obsfproxy with OpenVPN
OpenVPN Sheathing