venerdì 18 gennaio 2019

QNAP Entware TCPDump e comandi bash Linux

Configurando la VPN sulla QNAP, mi sono reso conto che mi avrebbe fatto comodo usare il comando TCPDUMP. Purtroppo il comando non e' disponibile in modo nativo sulla QNAP. Per risolvere il problema ci viene incontro l'app Entware che consente l'installazione di molti comandi non presenti in modo nativo.
Per installarlo occorre:
 - scaricare il qpkg
 - installarlo manualmente dall'app center della qnap
 - aprire una shell in ssh
 - andare nel percorso del programma, aggiornare la lista delle applicazioni disponibili, installare le applicazioni ed i comandi necessari ed infine usarli :).

 - Andando sul seguente link:
http://entware.zyxmon.org/binaries/other/Entware-ng_0.97.qpkg
e' possibile scaricare l'applicazione
 - Installazione Entware
Dopo aver scaricato l'app installarla manualmente dall'APP CENTER di QNAP.
 - accedere in console
Accedere alla QNAP tramite SSH
 - Usare entware
"/opt/bin/opkg update"                - aggiornamento dell'elenco dei pacchetti disponibili
"/opt/bin/opkg list"                      - elenca i pacchetti disponibili
"/opt/bin/opkg install tcpdump"  - installa un pacchetto (e le dipendenze eventuali)
 - Utilizzare i software installati
Nel mio caso, TCPDUMP, e' stato installato in /opt/sbin/tcpdump

Finito

Link:
https://forum.qnap.com/viewtopic.php?f=351&t=116737&sid=5976d6b470a1d4e541d6b543c98aa355

OPENVPN su QNAP

Bene,

eccoci ad un capitolo interessante. Configurare OPENVPN su QNAP in modo che sia accessibile anche la rete interna.
Configurare OpenVpn su QNAP non e' complesso. Essenzialmente e' sufficiente:
 - installare ed aprire l'applicazione QVPN (app center/qvpn)


 - abilitare OpenVPN, con i parametri base



 - pubblicare la nas (nel mio caso ho deciso di usare la porta TCP/1194). Cio significa che tutto il traffico proveniente dall'esterno e destinato sulla porta TCP/1194 venga redirezionato sulla NAS.

Fatto questo saremo in grado di raggiungere la QNAP dall'esterno. Per rendere raggiungibile tutta la rete interna sulla quale risiede la NAS stessa, usandola come un vero e proprio Access Server, occorre effettuare qualche piccola modifica.

 - Abilitare l'SSH.
Le modifiche che andremo a fare richiedono l'accesso in SSH alla NAS.
 - modificare il file vpn_openvpn.sh
Ogni volta che viene riavviato il servizio QVPN sulla NAS, il file "/etc/openvpn/server.conf" viene rigenerato. Per questo motivo e' inutile modificare questo file ma occorre agire sull'origine. Modificare il file: vim /share/CACHEDEV1_DATA/.qpkg/QVPN/etc/init.d/vpn_openvpn.sh.
Cercare il blocco:

                persist-tun
                duplicate-cn
                script-security 3
                client-to-client
                management localhost 7505
                #username-as-common-name
                client-cert-not-required
                auth-user-pass-verify /usr/sbin/qvpn.sauth via-env

                ca /etc/openvpn/keys/ca.crt
                dh /etc/openvpn/keys/dh1024.pem
                key /etc/openvpn/keys/myserver.key
                cert /etc/openvpn/keys/myserver.crt

                client-connect /etc/openvpn/connect.sh
                client-disconnect /etc/openvpn/disconnect.sh

                status /var/log/openvpn-status.log
                writepid /var/run/openvpn.server.pid

                port ${VPN_PORT}
                proto ${VPN_PROTO}
                max-clients ${VPN_MAXIMUM}
                server ${VPN_IP_POOL} 255.255.255.0

Ed aggiungere le due seguenti righe:

                ifconfig-pool-persist ipp.txt
                push "route 10.20.30.0 255.255.255.0"
(supponendo che questo sia l'indirizzamento della rete locale)

Salvare il file modificato e riavviare il servizio VPN con il seguente comando:

/etc/init.d/qvpn.sh restart

A questo punto siamo quasi pronti. Salvare il file di configurazione per importare il profilo sul client. Prima di importare il profilo, aprire con un editor di testo il file.ovpn ed aggiungere una riga per inserire il comando pull:


client
dev tun
script-security 3
resolv-retry infinite
nobind
auth-nocache
auth-user-pass
remote-cert-tls server
reneg-sec 0
cipher AES-128-CBC

pull

proto tcp

Il comando pull serve per consentire al client di accettare il push della route da parte del server.

Molto probabilmente l'aggiornamento dell'app QVPN o del firmware, richiederanno la reimpostazione delle modifiche fatte sopra.

E' necessario controllare anche se l'IP forwarding sulla QNAP e abilitato. Aprire il file 
vim /proc/sys/net/ipv4/ip_forward ed impostare il valore ad 1 (se fosse 0). Questo serve per abilitare l'inoltro dei pacchetti tra interfacce.

Percorsi e file utili per la configurazione
/etc/config/vpn.conf
/share/CACHEDEV1_DATA/.qpkg/QVPN/etc/init.d/vpn_openvpn.sh
/etc/openvpn/server.conf

N.B. e consigliabile fare una copia dei file di configurazione prima di modificarli.

Link:
https://openvpn.net/vpn-server-resources/site-to-site-routing-explained-in-detail/
https://openvpn.net/community-resources/how-to/#scope
https://forum.qnap.com/viewtopic.php?t=58640 (verso la fine dell'articolo)
https://forum.qnap.com/viewtopic.php?t=60189
http://blog.bobbyallen.me/2016/02/07/enabling-openvpn-clients-to-access-to-the-lan/