понедельник, 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 г.

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

How to Create SSH Keys with PuTTY  
Начальная настройка сервера c Ubuntu 16.04  
puttygen 
 
# apt update
# apt upgrade

# apt install mc
 
 
(root уже с сертификатом)

Создадим сертификаты на сервере

# adduser user
# usermod -aG sudo user


От пользователя!!!

# su user
$ cd ~
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.

#$ mkdir ~/.ssh
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
#$ cp ~/.ssh/user.pub ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit



# nano /etc/ssh/sshd_config

Проверить:

PasswordAuthentication no
.....

PubkeyAuthentication yes
ChallengeResponseAuthentication no

Сохранить.


$ sudo systemctl reload sshd
Скачать и использовать для входа /home/user/.ssh/id_rsa
 
После проверки входа и sudo

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

$ sudo nano /etc/ssh/sshd_config

Исправить:

PermitRootLogin no

Сохранить.

$ sudo systemctl reload sshd

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

PostgreSQL 10 — Потоковая репликация

PostgreSQL 10 — Потоковая репликация с отработкой фейловера
Потоковая репликация в PostgreSQL и пример фейловера
Потоковая репликация в PostgreSQL 9.6
How to Set-Up Master-Slave Replication for PostgreSQL 9.6 on Ubuntu 16.04
Еще пара слов о потоковой репликации в postgres…
Отладка и устранение проблем в PostgreSQL Streaming Replication
Потоковая репликация в PostgreSQL 9.6
How to Set-Up Master-Slave Replication for PostgreSQL 9.6 on Ubuntu 16.04

Есть два сервера:
1. master ud1804 192.168.1.251/24

2. slave ud1804s 192.168.1.249/24

 

Настроим master

$ sudo su postgres
$ psql
postgres=# CREATE USER replica REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD 'pass';


$ sudo nano /etc/postgresql/10/main/pg_hba.conf

Добавим:
host    replication     replica         192.168.1.249/32        md5
Сохранить.

Мы указываем что репликация разрешена пользователю с именем replica, подключающемуся с адреса 192.168.1.249 с авторизацией по паролю


$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:



hot_standby = on
max_wal_senders = 10
wal_level = replica
wal_keep_segments = 32

# Для настройки архивного резервного копирования разкомментировать:
#archive_mode = on
#archive_command = 'pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

 

Настроим slave:

$ sudo systemctl stop postgresql.service

$ sudo rm -R /var/lib/postgresql/10/main/


$ sudo su postgres
$ pg_basebackup -P -R -X stream -c fast -h 192.168.1.251 -U replica -D /var/lib/postgresql/10/main/
Пароль:
23693/23693 КБ (100%), табличное пространство 1/1



$ sudo systemctl start postgresql.service

$ sudo cat /var/lib/postgresql/10/main/recovery.conf
standby_mode = 'on'
primary_conninfo = 'user=replica password=pass host=192.168.1.251 port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres target_session_attrs=any'

На master

$ sudo su postgres
$ psql -l
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 50 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"



Тоже увидим на slave

$ sudo su postgres
$ psql -l
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
 
Другие фишки можно допилить
в соответствии с приведенными в начале статьи ссылками.

PostgreSQL 10 — Потоковая репликация с отработкой фейловера








Установка PostgreSQL версия 10.5-24.1C 1С 8.3.13.1690 Ubuntu 18.04.2

pg_probackup описание 
В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu 18.04.2 на виртуальную машину.
Нам потребуется (все 64 бит):
1. ubuntu 18.04.2
2. 1С берем на сайте 8.3.13.1690 при наличии договора ИТС
3. PostgreSQL версия 10.5-24.1C дистрибутивдополнительные модули при наличии договора ИТС 
4. Драйверы hasp берем etersoft

1. Устанавливаем ubuntu 18.04.2

Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера test, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y
Прверить синхранизацию NTP synchronized: yes, если нет настроить.
$ timedatectl

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb

Установка СУБД PostgreSQL версия 10.5-24.1C

После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test
В папку /test положить файл:
postgresql_10.5_24.1C_amd64_deb.tar.bz2

Файл postgresql_10.5_24.1C_amd64_addon_deb.tar.bz2 не устанавливаем - проблемы с зависимостями

$ wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
$ sudo sudo dpkg -i libicu55_55.1-7_amd64.deb
# libicu55 помечен как зафиксированный.
$ dpkg -l | grep libicu55 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
$ sudo apt-get install postgresql-common  -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ mkdir -p /tmp/post$ cp /home/user/test/postgresql_10.5_24.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.5_24.1C_amd64_deb.tar.bz2
$ cd  postgresql-10.5-24.1C_amd64_deb
#(libpq5_10.5-11.1C_amd64.deb  postgresql-10_10.5-11.1C_amd64.deb  postgresql-client-10_10.5-11.1C_amd64.deb)
$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.5-24.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log

$ sudo pg_dropcluster --stop 10 main
$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main --  --data-checksums


$ sudo pg_ctlcluster 10 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log


$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
$ sudo systemctl status postgresql.service
$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
-------------------------------------------------------------------------------------------------------

Установка pg_probackup 

pg_probackup описание
$ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list" 
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -" 
$ sudo apt-get update 
$ sudo apt-get install pg-probackup-10

Инициализация каталога резервных копий 
$ sudo mkdir /backup 
$ sudo pg_probackup-10 init -B /backup 
$ sudo chown -R postgres:postgres /backup
Определение копируемого экземпляра 
$ sudo /bin/su postgres -c "pg_probackup-10 add-instance -B /backup -D /var/lib/postgresql/10/main --instance main"

$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:

max_wal_senders = 10
wal_level = replica
unix_socket_directories='/var/run/postgresql'
# Для настройки архивного резервного копирования разкомментировать:
archive_mode = on
archive_command = 'pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl stop postgresql.service
$ sudo systemctl start postgresql.service

Создание полной автономной резервной копии: 

$ sudo /bin/su postgres -c "pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired"




Просмотр:
$ sudo /bin/su postgres -c "pg_probackup-10 show -B /backup"

Проверка backup:
$ sudo /bin/su postgres -c "pg_probackup-10 validate -B /backup"

Настройка политики сохранения резервных копий

sudo nano /backup/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=1

Сохранить

Можно сделать еще один экземпляр для автономных копий:
Идея в одном экземпляре с retention-redundancy=5 организуем непрерывное wal архивирование, в другом экземпляре с retention-redundancy=30 организуем собрание автономных копий за месяц, хранилища могут быть на разных дисках.






суббота, 27 апреля 2019 г.

Ubuntu 18.04.2 установка VirtualBox

$ sudo apt install virtualbox
$ sudo usermod -a -G vboxusers $USER
$ sudo reboot

Ubuntu 18.04.2 — XRDP Server за 1 минуту

!! Script version fixing issue in Ubuntu 18.04.2 – option to use unofficial xRDP packages!!
Сам много раз делал
Griffon's IT Library/XRDP 
Ubuntu 18.04 — RDP Server за 5 минут

Ubuntu 18.04.2
Настраиваем по:
!! Script version fixing issue in Ubuntu 18.04.2 – option to use unofficial xRDP packages!! 

$ wget http://www.c-nergy.be/downloads/Std-Xrdp-Install-0.5.3.zip
$ unzip Std-Xrdp-Install-0.5.3.zip
$ chmod +x Std-Xrdp-Install-0.5.3.sh

Стандартная установка:
$ sudo ./Std-Xrdp-Install-0.5.3.sh
$ sudo reboot

По xrdp переключение клавиатуры стандартное WIN+SPACE
Звук не работает.

============================================
Не пробовал. Устроила стандартная установка.
Возможно работает звук.
Вариант с использованием неофициальных пакетов:
$ sudo ./Std-Xrdp-Install-0.5.3.sh -u yes
другие ключи описаны по ссылке
$ sudo reboot
=============================================

После реконнекта не переключается клавиатура на русский
Пример xrdp_keyboard.ini для русской клавиатуры

 
Настройка клавиатуры
Посмотреть настройки:

$ cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT=","
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"

BACKSPACE="guess"
user@ud1804:~$


$ sudo nano /etc/xrdp/xrdp_keyboard.ini
 
Добавить в конец
 
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru


[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru 
 
Сохранить.
 
$ sudo reboot
 
Переключение клавиатуры по alt+shift
или win + пробел

Добавить кнопки:



Создание терминальных пользователей: 
 
# netstat -lntp |grep 3389 
Создаем терминальных пользователей



# adduser t01

....

# adduser t10



Для того что бы пользователь мог выйти из сессии

нужно добавить пользователя в группу adm



# usermod -aG adm t01

....

# usermod -aG adm t10



Для каждого пользователя настраиваем

Параметры системы -> Раскладка клавиатуры

добавить раскладку "русская", здесь же параметры

Клавиша(и) для смены раскладки Alt + Shift



Параметры системы -> Яркость и блокировка

При бездействии выключать экран через: Никогда

Блокировать экран через : ЗО минут
 
Снятие терминальной сессии пользователя в XRDP (Linux) и 1C  

Astra Linux Орёл 2.12 КриптоПро 4.0.9963 госзакупки и площадки

Плагин IFCPlugin-3.0.0-x86_64.deb.zip работать перестал!!!
Данная статья ремейк
Информация о необходимости проведения настройки рабочего места пользователя

А также требованием установить свежую КриптоПро 4.0.9963

Astra Linux Орёл 2.12 КриптоПро 4.0.9944 госзакупки и площадки
Astra Linux
Еще 
Орёл 2.12 wiki
astralinux доступ к госзакупкам
Работа с КриптоПро CSP
Инструкция по настройке и работе с Крипто-Про для государственных порталов
Установка и настройка КриптоПро CSP в Porteus Linux
Вход с помощью электронной подписи на портал Госуслуг на Linux.


$ sudo apt update
$ sudo apt upgrade
$ sudo apt install samba ssh
$ sudo systemctl  enable ssh
$ sudo systemctl  start ssh

Два варианта либо ставим xrdp

$ sudo apt install xrdp

либо

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

Установка дополнений VirtualBox $ sudo apt install gcc make perl linux-headers-generic linux-headers-`uname -r`
Подключить образ диска Дополнений гостевой ОС
$ sudo mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
$ sudo bash /mnt/VBoxLinuxAdditions.run

$ sudo reboot

Проверка:
$ sudo modinfo vboxguest
filename:       /lib/modules/4.15.3-1-generic/kernel/ubuntu/vbox/vboxguest/vboxguest.ko
version:        5.2.8_KernelUbuntu r120774
license:        GPL
description:    Oracle VM VirtualBox Guest Additions for Linux Module
author:         Oracle Corporation
srcversion:     F2E5886E3B0544500D404A1
alias:          pci:v000080EEd0000CAFEsv00000000sd00000000bc*sc*i*
depends:       
retpoline:      Y
intree:         Y
name:           vboxguest
vermagic:       4.15.3-1-generic SMP mod_unload
signat:         PKCS#7
signer:        
sig_key:       
sig_hashalgo:   md4

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

$ cat /etc/astra_version
CE 2.12.8 (orel)

Загружаем  КриптоПро 4.0.9963

Устанавливаем КриптоПро 4.0.9963
$ tar -zxf linux-amd64_deb.tgz
$ cd linux-amd64_deb
$ sudo ./install_gui.sh

Ставим все галки, лицензию позднее.

Ставим лицензию на Крипто-Про при наличии
$ sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set *****-*****-*****-*****-*****

Если при установке не ввели лицензию, установится demo лицензия
$ /opt/cprocsp/sbin/amd64/cpconfig -license -view
License validity:
4040E-G0037-EK8R3-C6K4U-*****
Expires: 3 month(s) 2 day(s)
License type: Server.


Проверяем версию:
$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 9196739
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC2 CSP
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,020 sec
[ErrorCode: 0x00000000]

==================================================================================
Сертификат сайта госзакупок, кривой:


Не должно быть тут русских букв???
Реакция:


Отключаем реакцию на кривой сертификат госзакупок
Предварительная проверка:

$ sudo  /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosave
HSECPKG_ATTR_PACKAGE_INFO not supported.
Error 0x800b010f (CERT_E_CN_NO_MATCH) returned by CertVerifyCertificateChainPolicy!
An error occurred in running the program.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/WebClient.c:769:Error authenticating server credentials!
Error number 0x800b010f (2148204815).
CN-имя сертификата не совпадает с полученным значением.
Total: SYS: 0,060 sec USR: 0,060 sec UTC: 0,350 sec
[ErrorCode: 0x800b010f] 
Отключение:
$ sudo  /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add bool Rfc6125_NotStrict_ServerName_Check true

Проверка отключения:
$ sudo  /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosave
SECPKG_ATTR_PACKAGE_INFO not supported.
DEContext expired: OK if file is completely downloaded
Reply status: HTTP/1.1 200 OK
1 connections, 589 bytes in 1.735 seconds;
Total: SYS: 0,300 sec USR: 0,180 sec UTC: 1,780 sec
[ErrorCode: 0x00000000]

Какой результат будет?


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

$ export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"


$ sudo apt install alien
$ cd ~/
Скачать плагин  в /home/user (автоматическая загрузка версии плагина, соответствующей Вашей ОС)

$ tar -zxf cades_linux_amd64.tar.gz
$  cd ~/cades_linux_amd64

Установить плагин:
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-cades.rpm
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-plugin.rpm
$ sudo dpkg -i cprocsp-pki-cades_2.0.0-2_amd64.deb cprocsp-pki-plugin_2.0.0-2_amd64.deb


Сертификаты которые ставит Crypto-Pro:

$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Certmgr 1.1 (c) "Crypto-Pro",  2007-2018.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer              : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва, STREET="125375 г. Москва, ул. Тверская, д. 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Subject             : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва, STREET="125375 г. Москва, ул. Тверская, д. 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Serial              : 0x34681E40CB41EF33A9A0B7C876929A29
SHA1 Hash           : 8cae88bbfd404a7a53630864f9033606e1dc45e2
SubjKeyID           : 8b983b891851e8ef9c0278b8eac8d420b255c95d
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 20/07/2012  12:31:14 UTC
Not valid after     : 17/07/2027  12:31:14 UTC
PrivateKey Link     : No
2-------
Issuer              : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject             : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Serial              : 0x4E6D478B26F27D657F768E025CE3D393
SHA1 Hash           : 4bc6dc14d97010c41a26e058ad851f81c842415a
SubjKeyID           : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before    : 06/07/2018  12:18:06 UTC
Not valid after     : 01/07/2036  12:18:06 UTC
PrivateKey Link     : No
3-------
Issuer              : OGRN=1037700085444, INN=007717107991, C=RU, S=Moscow, L=Moscow, O="LLC ""Crypto-Pro""", CN=CryptoPro GOST Root CA
Subject             : OGRN=1037700085444, INN=007717107991, C=RU, S=Moscow, L=Moscow, O="LLC ""Crypto-Pro""", CN=CryptoPro GOST Root CA
Serial              : 0x4056ED0099A9D6AF49C9FF98B9C70E70
SHA1 Hash           : 34e21fc04d3576b0ada81fd081955e2778291cc5
SubjKeyID           : c2364dcc24260a439625305b67579b2ac9439cd5
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before    : 15/11/2018  14:14:09 UTC
Not valid after     : 15/11/2033  14:14:09 UTC
PrivateKey Link     : No
=============================================================================

[ErrorCode: 0x00000000]


Установка личного сертификата выданного казначейством:

Копируем контейнер в
$ cd /var/opt/cprocsp/keys/user

$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 40317331
\\.\HDIMAGE\PRIZMA1
OK.
Total: SYS: 0,000 sec USR: 0,010 sec UTC: 0,140 sec
[ErrorCode: 0x00000000]

или

$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10339523
\\.\HDIMAGE\test
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,100 sec
[ErrorCode: 0x00000000]


Установить скопированный контейнер:

$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\PRIZMA1'

или

$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\test'


Просмотор личных сертификатов:

$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy

Установить расширение firefox на страничке с проверкой плагина:

Проверка плагина

Дожаться сообщения:



Проверить подпись.


Сертификат головного удостверящего центра центра уже установлен в mRoot

Просмотр:
$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot




Если случайно удалили:
Скачаем и установим в mRoot
Если нужно удалить:
#$ sudo /opt/cprocsp/bin/amd64/certmgr -delete -all -store mRoot
Сертификаты zakupki.gov.ru
Качаем:
Сертификат Минкомсвязи России (Головного удостверяющего центра) ГОСТ Р 34.102012-2012
Сертификат Удостоверяющего центра Федерального казначейства ГОСТ Р 34.102012-2012

или wget

$ cd ~

Этот сертификат уже стоит, ставить не нужно:
#$ wget http://www.roskazna.ru/upload/iblock/7e3/guts_2012.cer
#$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file guts_2012.cer -store mRoot

$ wget http://www.roskazna.ru/upload/iblock/acb/fk_2012.cer
$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file fk_2012.cer -store mRoot

Просмотр:
$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot

~$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Certmgr 1.1 (c) "Crypto-Pro",  2007-2018.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer              : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject             : E=uc_fk@roskazna.ru, S=г. Москва, INN=007710568760, OGRN=1047797019830, STREET="Большой Златоустинский переулок, д. 6, строение 1", L=Москва, C=RU, O=Федеральное казначейство, CN=Федеральное казначейство
Serial              : 0x00B5F132D300000000015A
SHA1 Hash           : ab0e24e9a206877ab7dc4625dfcceb9c18b0cb0d
SubjKeyID           : c0d6d60a7d6b7ec98e39bcda89faaf942c585a8d
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before    : 19/11/2018  15:56:01 UTC
Not valid after     : 19/11/2033  15:56:01 UTC
PrivateKey Link     : No
CA cert URL         : http://reestr-pki.ru/cdp/guc_gost12.crt
CDP                 : http://reestr-pki.ru/cdp/guc_gost12.crl
CDP                 : http://company.rt.ru/cdp/guc_gost12.crl
CDP                 : http://rostelecom.ru/cdp/guc_gost12.crl
2-------
Issuer              : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject             : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Serial              : 0x4E6D478B26F27D657F768E025CE3D393
SHA1 Hash           : 4bc6dc14d97010c41a26e058ad851f81c842415a
SubjKeyID           : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before    : 06/07/2018  12:18:06 UTC
Not valid after     : 01/07/2036  12:18:06 UTC
PrivateKey Link     : No
3-------
Issuer              : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва, STREET="125375 г. Москва, ул. Тверская, д. 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Subject             : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва, STREET="125375 г. Москва, ул. Тверская, д. 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Serial              : 0x34681E40CB41EF33A9A0B7C876929A29
SHA1 Hash           : 8cae88bbfd404a7a53630864f9033606e1dc45e2
SubjKeyID           : 8b983b891851e8ef9c0278b8eac8d420b255c95d
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 20/07/2012  12:31:14 UTC
Not valid after     : 17/07/2027  12:31:14 UTC
PrivateKey Link     : No
4-------
Issuer              : OGRN=1037700085444, INN=007717107991, C=RU, S=Moscow, L=Moscow, O="LLC ""Crypto-Pro""", CN=CryptoPro GOST Root CA
Subject             : OGRN=1037700085444, INN=007717107991, C=RU, S=Moscow, L=Moscow, O="LLC ""Crypto-Pro""", CN=CryptoPro GOST Root CA
Serial              : 0x4056ED0099A9D6AF49C9FF98B9C70E70
SHA1 Hash           : 34e21fc04d3576b0ada81fd081955e2778291cc5
SubjKeyID           : c2364dcc24260a439625305b67579b2ac9439cd5
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before    : 15/11/2018  14:14:09 UTC
Not valid after     : 15/11/2033  14:14:09 UTC
PrivateKey Link     : No
=============================================================================

[ErrorCode: 0x00000000]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
В принципе установивки контейнера с личным сертификтом может быть достаточно.
Проверить можно:
Проверка цепочек
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Смотрим: 
CN='Фёдорова Галина Борисовна'
#$ /opt/cprocsp/bin/amd64/cryptcp -sign -dn mail@vt.com -errchain /tmp/test /tmp/test.sgn
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn  mail@vt.com -df ~/t.cer
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN='Фёдорова Галина Борисовна' -df ~/t.cer
.....
.....
.....
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]
 Если  в CN много кавычек, можно смотреть по e-mail из сертификата
CN="ООО ""РОМАШКА"""

$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn  mail@vt.com -df ~/t.cer
.....
.....
.....
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]

 
Отмеченное до крестиков можем не делать:

Установка головного сертификата удостверяющего центра (из сертификата Калуга-Астрал):

В личном сертификате есть:
CA cert URL         : http://www.dp.keydisk.ru/root/833/astral-833-2017n.cer

$ mkdir  ~/CAs
$ wget -P ~/CAs $(/opt/cprocsp/bin/amd64/certmgr -list -store uMy | awk '/CA cert URL/ { print $5 }')
for cert in $(ls -1 ~/CAs/*.cer); do sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file $cert; done

или
можно посмотреть в личном сертификате
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
...
CA cert URL         : http://www.dp.keydisk.ru/root/833/astral-833-2017n.cer
....
Скачать
$ wget http://www.dp.keydisk.ru/root/833/astral-833-2017n.cer
Установить.
$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file astral-833-2017n.cer -store mRoot


Проверка цепочек
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Смотрим: 
CN='Фёдорова Галина Борисовна'
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn  mail@vt.com -df ~/t.cer
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN='Фёдорова Галина Борисовна' -df ~/t.cer
.....
.....
.....
Certificate chains are checked.
Certificate's been copied.
[ReturnCode: 0]

или

Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Для работы будем пользоваться chromium : 
$ sudo apt install chromium

Для работы с сайтом госуслуг используем инструкцию ниже:
Вход с помощью электронной подписи на портал Госуслуг на Linux.

Плагин IFCPlugin-3.0.0-x86_64.deb.zip работать перестал!!!

Скачаем и установим плагин
Плагин качаем при входе в личный кабинет госуслуг по ЭЦП.
Прямая ссылка
Plugin для работы с электронной подписью
прямая ссылка в данный момент версия 3.0.6.0

Установим плагин:
$ cd ~
$ wget https://ds-plugin.gosuslugi.ru/plugin/upload/assets/distrib/IFCPlugin-x86_64.deb
#$ sudo apt install libccid pcscd
$ sudo dpkg -i IFCPlugin-x86_64.deb
$ sudo apt install -f

Также установим расширение chrom для сайта госуслуг.
Установить Расширение для gosuslugi.ru  в браузере chromium
Перейти в меню - Дополнительные инструменты - Расширения и включить плагин

Загрузить файл конфигурации для IFCPlugin ( x64) в домашнюю директорию текущего пользователя.
$ cd ~
$ wget https://www.cryptopro.ru/sites/default/files/public/faq/ifcx64.cfg
$ sudo rm /etc/ifc.cfg
$ sudo cp ~/ifcx64.cfg /etc/ifc.cfg
$ /opt/cprocsp/bin/amd64/csptestf -absorb -certs -autoprov
Match: HDIMAGE\\test.000\2EF8
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,350 sec
[ErrorCode: 0x00000000]


создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина
$ sudo cp /etc/opt/chrome/native-messaging-hosts/ru.rtlabs.ifcplugin.json /etc/chromium/native-messaging-hosts


Войти на госуслуги с помощью сертификата

Вход на госуслуги

Выйти.

После этого успешно заходим на сайт госзакупок браузером chromium

zakupki.gov.ru

После этого можно заходить на основные торговые площадки.
 

Проверено подписывает:
rts-tender.ru

Проверено подписывает:
Единая электронная торговая площадка


Проверно подписывает:
Сбербанк-АСТ


Электронная площадка  Березка с авторизацией на госуслугах

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

Скрипты от Ingvar Vilkman

Скрипты от Ingvar Vilkman

"Задеплойка" (Vanessa-Deployka)

deployka forked from silverbulleters/deployka


Скачать OneScript
opm install deployka

Ставишь http://oscript.io/ убеждаешься что в PATH путь есть и он активен, иногда нужен перезапуск сеанса, и opm можешь использовать.
https://github.com/oscript-library тут список всех пакетов упакованных в opm. 

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

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз

https://habr.com/ru/post/444018/

random_page_cost = 0.1
seq_page_cost = 0.05

Вся правда об индексах в PostgreSQL, Олег Бартунов, Александр Коротков PostgreSQL
19.7.1. Конфигурация методов планировщика


По умолчанию произвольный доступ оценивается в 4 раза дороже, чем последовательный, но вы можете уменьшить значение, random_page_costчтобы оно было таким же или равным, seq_page_costе сли ваша база данных находится на SSD. Это уменьшит предполагаемую стоимость планов запросов, которые включают много произвольного доступа, поэтому планировщик будет выбирать их чаще.


Тест  pgbench

$ psql -c "SHOW random_page_cost;"
$ psql -c "SHOW seq_page_cost;"

random_page_cost = 1.1
seq_page_cost = 1

 
$ psql -c "ALTER TABLESPACE pg_default SET ( seq_page_cost = 1,  random_page_cost = 1.1);"
#$ psql -c "ALTER TABLESPACE pg_default RESET ( seq_page_cost, random_page_cost);"
$ psql -c "SELECT * FROM pg_tablespace;"



$ sudo su postgres
$ psql -l
$ psql -c "DROP DATABASE example;"
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 500 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
$ pgbench -c 10 -j 10 -t 10000 example

postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.395 ms
tps = 2945.848586 (including connections establishing)
tps = 2946.945923 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.422 ms
tps = 2922.406968 (including connections establishing)
tps = 2923.713944 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.443 ms
tps = 2904.094852 (including connections establishing)
tps = 2905.384501 (excluding connections establishing)


random_page_cost = 0.1
seq_page_cost = 0.05

$ psql -c "ALTER TABLESPACE pg_default SET ( seq_page_cost = 0.05,  random_page_cost = 1);"
#$ psql -c "ALTER TABLESPACE pg_default RESET ( seq_page_cost, random_page_cost);"
$ psql -c "SELECT * FROM pg_tablespace;"

#$ sudo systemctl restart postgresql.service

$ sudo su postgres
$ psql -l
$ psql -c "DROP DATABASE example;"
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 500 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
$ pgbench -c 10 -j 10 -t 10000 example

postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.401 ms
tps = 2940.382654 (including connections establishing)
tps = 2941.634033 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.442 ms
tps = 2905.657711 (including connections establishing)
tps = 2907.422695 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.569 ms
tps = 2802.127880 (including connections establishing)
tps = 2803.643751 (excluding connections establishing)


Без настройки:
random_page_cost =4
seq_page_cost =1

$ psql -c "ALTER TABLESPACE pg_default SET ( seq_page_cost = 1,  random_page_cost = 4);"
#$ psql -c "ALTER TABLESPACE pg_default RESET ( seq_page_cost, random_page_cost);"
$ psql -c "SELECT * FROM pg_tablespace;"
 
#$ sudo systemctl restart postgresql.service

$ sudo su postgres
$ psql -l
$ psql -c "DROP DATABASE example;"
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 500 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
$ pgbench -c 10 -j 10 -t 10000 example

postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.430 ms
tps = 2915.430306 (including connections establishing)
tps = 2916.868949 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.379 ms
tps = 2959.319011 (including connections establishing)
tps = 2961.047933 (excluding connections establishing)
postgres@mtest:/home/user$ pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 3.543 ms
tps = 2822.239973 (including connections establishing)
tps = 2823.544875 (excluding connections establishing)


Шпаргалка PostgreSQL

Выжимки по администрированию postgres 

 Как посмотреть размер базы demo postgresql?

Самый простой способ:
postgres=# \l+

Как переключиться на конкретную базу:


postgres-# \c demo
demo-#

Как посмотреть размер 20 самых больших таблиц


postgres=# \c demo
Вы подключены к базе данных "demo" как пользователь "postgres".
demo=#
Выполнить запрос:

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20;


 

Как посмотреть текущие конфигурационные настройки:


postgres=# SHOW shared_buffers;
 shared_buffers
----------------
 512MB
(1 row)


Как перегрузить конфигурационные настройки:


postgres=# select pg_reload_conf();

Вывести результат запроса в файл

$ psql
postgres=# \o out.txt
postgres=# show all;
postgres=# \q

$ psql
postgres=# \o out1.txt
postgres=#  SELECT pg_show_all_settings();
postgres=# \q

Удалить базу:
$ psql -c "DROP DATABASE example;"