Strumenti Utente

Strumenti Sito


documentazione_3di_riservata:manuali_sysadmin:openvpnautossh

Questa è una vecchia versione del documento!


abilito il login da root sulla vm da console

sed -i s/without-password/yes/g /etc/ssh/sshd_config && systemctl restart ssh

Installo il software

Per installare i servizi necessari lanciare il comando

apt-get install openvpn autossh -y

OPENVPN:

Presupponendo presente sulla vm la cartella Vpn con all'interno le configurazioni openvpn, passo a copiare i file per l'avvio:

cp -rv /root/Vpn/openvpn/apv/* /etc/openvpn
cp /root/Vpn/openvpn/apv/client.ovpn /etc/openvpn/apv.conf
systemctl daemon-reload

vim /etc/systemd/system/openvpn@apv.service

[Unit]
Description=OpenVPN connection to %i
PartOf=openvpn.service
ReloadPropagatedFrom=openvpn.service

[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target

Abilito il servizio all'avvio:

systemctl enable openvpn@apv.service

AUTOSSH:

aggiungo l'utente:

useradd -m -s /bin/false autossh

* creo il file config di ssh (esempio preso da apv): *

Host autportven-prod
HostName 10.0.20.30
Port 22
User extraway
Localforward 8080 localhost:8080
Localforward 5432 localhost:5432
Localforward 19080 10.0.20.31:8080
Localforward 13306 10.0.20.31:3306

creo le chiavi:

su -s /bin/bash autossh
ssh-keygen -t rsa

copio le chiavi sul server prod del cliente:

scp id_rsa.pub extraway@10.0.20.30:/tmp

aggiungo in coda la chiave fra quelle autorizzate:

cat /tmp/id_rsa.pub » /home/extraway/.ssh/authorized_keys

cancello la chiave copiata:

rm -f /tmp/id_rsa.pub

configuro il mapping delle porte ssh:

su -s /bin/bash autossh vim .ssh/config

Host autportven-prod
HostName 10.0.20.30
Port 22
User extraway
Localforward 8080 localhost:8080
Localforward 5432 localhost:5432
Localforward 19080 10.0.20.31:8080
Localforward 13306 10.0.20.31:3306

controllo che il collegamento funzioni e mappi le porte regolarmente:

su -s /bin/bash autossh
ssh -g extraway@autportven-prod
root@VPN-APV:~# netstat -an |egrep '8080|5432|19080|13306'|egrep -v tcp6
tcp        0      0 0.0.0.0:9080            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN     

creo il file di avvio di autossh in systemd:

root@VPN-APV:/etc/systemd/system# vim /etc/systemd/system/3dautossh.service (root deve avere la sua chiave presso il cliente)

[Unit]
Description=AutoSSH service 
Wants=sys-devices-virtual-net-tun0.device
After=sys-devices-virtual-net-tun0.device

[Service]
ExecStart=/usr/bin/autossh -M 0 -v -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" extraway@autportven-prod -i /home/autossh/.ssh/id_rsa -g

[Install]
WantedBy=multi-user.target

Questo il significato delle opzioni scelte per lo start di autossh:

-M port[echo:port] specifies the base monitoring port to use. Without the echo port, this port and the port immediately above it ( port + 1) should be something nothing else is using. autossh will send test data on the base monitoring port, and receive it back on the port above. For example, if you specify “-M 20000”, autossh will set up forwards so that it can send data on port 20000 and receive it back on 20001. Setting the monitor port to 0 turns the monitoring function off, and autossh will only restart ssh upon ssh's exit. In pratica è più consono disabilitare la funzione e usare altri strumenti come ServerAliveInterval e ServerAliveCountMax per controllare se il tunnel è up.

-v [verbose] Causes ssh to print debugging messages about its progress. This is helpful in debugging connection, authentication, and configuration problems.Multiple -v options increase the verbosity.The maximum is 3. Ho scoperto che in mancanza di questa opzione il tunnel si avviava solo da cli e non da systemd.

-q [quiet] Causes most warning and diagnostic messages to be suppressed. Consigliato nel readme e inserito nonostante la precedente opzione -v sia inserita.

-o [ServerAliveInterval] -o [ServerAliveCountMax] Opzioni consigliate nel readme che permettono il restart del tunnel nel caso in cui la connessione ssh non sia funzionante controllando il TTL con ServerAliveInterval 60 (dove 60 sono secondi) e dopo 3 tentativi nel caso in cui ServerAliveCountMax sia impostato a 3.

-i [identity file] Selects a file from which the identity (private key) for public key authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2. Identity files may also be specified on a per-host basis in the configuration file. It is possible to have multiple -i options (and multiple identities specified in configuration files). In mancanza di questa opzione autossh avviato da systemd non riesce a collegarsi.

-g [global] Allows remote hosts to connect to local forwarded ports. If used on a multiplexed connection, then this option must be specified on the master process. In mancanza di queste opzioni tutte le porte forwardate sono bindate solo su localhost.

testo lo script prima di abilitarlo:

root@VPN-APV:/etc/openvpn# systemctl start 3dautossh.service 
root@VPN-APV:/etc/openvpn# systemctl status 3dautossh.service -l
● 3dautossh.service - AutoSSH service
   Loaded: loaded (/etc/systemd/system/3dautossh.service; enabled)
   Active: active (running) since gio 2016-03-31 15:25:50 CEST; 12s ago
 Main PID: 778 (autossh)
   CGroup: /system.slice/3dautossh.service
           ├─778 /usr/lib/autossh/autossh -M 8080 -q -N -o ServerAliveInterval 60 -o ServerAliveCountMax 3 extraway@autportven-prod -i /home/autossh/.ssh/id_rsa -g
           └─781 /usr/bin/ssh -L 8080:127.0.0.1:8080 -R 8080:127.0.0.1:8081 -q -N -o ServerAliveInterval 60 -o ServerAliveCountMax 3 -i /home/autossh/.ssh/id_rsa -g extraway@autportven-prod

mar 31 15:25:50 VPN-APV autossh[778]: starting ssh (count 1)
mar 31 15:25:50 VPN-APV autossh[778]: ssh child pid is 781

controllo le porte:

 netstat -an |egrep '8080|5432|19080|13306'|egrep -v tcp6
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:13306           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:19080           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN 

abilito il servizio in autostart:

systemctl enable 3dautossh
/data/attic/documentazione_3di_riservata/manuali_sysadmin/openvpnautossh.1459499756.txt.gz · Ultima modifica: 2017/09/08 10:59 (modifica esterna)