rkhunter – cacciatore di rootkits e software malevole – debian 9.xx ( stretch )

rkhunter è uno script che analizza il filesytem alla ricerca di applicazioni malevole: rootkits, backdoors (cavalli di troia)  e altri rischi per la sicurezza. Un rootkits consente all’attaccante di avere  un accesso di tipo privilegiato al computer/server. rkhunter permette di capire se il computer/server è stato compromesso.  E’ buona norma ultilizzare anche  altri software di controllo ad esempio: chkrootkit .

Tra i controlli effettuati :

  • compazione delle impronte dei files importanti con quelle contenute in database online,
  • ricerca di directory e files dei rootkits conosciuti,
  • ricerca di  errori nei permessi nei file binari,
  • ricerca di  file e cartelle nascoste,
  • ricerca di stringhe sospette nei moduli kernel,
  • controllo dei file di configurazione di SSHD

rkhunter si installa al solito con

sudo apt install rkhunter

Per evitare warning inutili è opportuno modificare il file di configurazione /etc/rkhunter.conf.local  indicando il package manager

In debian 9.xx cambiare il valore di default NONE in DPKG

...
#PKGMGR=NONE
...

in

PKGMGR=DPKG

aggiornare anche il file database delle proprietà con i comandi

sudo rkhunter --propupd

e

sudo rkhunter --update

Lo scanner si avvia manualmente con

sudo rkhunter -c

Per informazioni più dettagliate sul controllo effettuato è possible consultare  il file .log in /var/log/rkhunter.log

Per quanto attiene ai warning va considerato che rkhunter

 

esempio di listato generato da rkhunter

maurizio# rkhunter -c
[ Rootkit Hunter version 1.4.2 ]

Checking system commands...

  Performing 'strings' command checks
    Checking 'strings' command                               [ OK ]

  Performing 'shared libraries' checks
    Checking for preloading variables                        [ None found ]
    Checking for preloaded libraries                         [ None found ]
    Checking LD_LIBRARY_PATH variable                        [ Not found ]

  Performing file properties checks
    Checking for prerequisites                               [ OK ]
    /usr/sbin/adduser                                        [ OK ]
    /usr/sbin/chroot                                         [ OK ]
    /usr/sbin/cron                                           [ OK ]
    /usr/sbin/groupadd                                       [ OK ]
    /usr/sbin/groupdel                                       [ OK ]
    /usr/sbin/groupmod                                       [ OK ]
    /usr/sbin/grpck                                          [ OK ]
    /usr/sbin/nologin                                        [ OK ]
    /usr/sbin/pwck                                           [ OK ]
    /usr/sbin/rsyslogd                                       [ OK ]
    /usr/sbin/sshd                                           [ OK ]
    /usr/sbin/tcpd                                           [ OK ]
    /usr/sbin/useradd                                        [ OK ]
    /usr/sbin/userdel                                        [ OK ]
    /usr/sbin/usermod                                        [ OK ]
    /usr/sbin/vipw                                           [ OK ]
    /usr/sbin/unhide                                         [ OK ]
    /usr/sbin/unhide-linux                                   [ OK ]
    /usr/sbin/unhide-posix                                   [ OK ]
    /usr/sbin/unhide-tcp                                     [ OK ]
    /usr/bin/awk                                             [ OK ]
    /usr/bin/basename                                        [ OK ]
    /usr/bin/chattr                                          [ OK ]
    /usr/bin/curl                                            [ OK ]
    /usr/bin/cut                                             [ OK ]
    /usr/bin/diff                                            [ OK ]
    /usr/bin/dirname                                         [ OK ]
    /usr/bin/dpkg                                            [ OK ]
    /usr/bin/dpkg-query                                      [ OK ]
    /usr/bin/du                                              [ OK ]
    /usr/bin/env                                             [ OK ]
    /usr/bin/file                                            [ OK ]
    /usr/bin/find                                            [ OK ]
    /usr/bin/GET                                             [ OK ]
    /usr/bin/groups                                          [ OK ]
    /usr/bin/head                                            [ OK ]
    /usr/bin/id                                              [ OK ]
    /usr/bin/killall                                         [ OK ]
    /usr/bin/last                                            [ OK ]
    /usr/bin/lastlog                                         [ OK ]
    /usr/bin/ldd                                             [ OK ]
    /usr/bin/less                                            [ OK ]
    /usr/bin/logger                                          [ OK ]
    /usr/bin/lsattr                                          [ OK ]
    /usr/bin/lsof                                            [ OK ]
    /usr/bin/mail                                            [ OK ]
    /usr/bin/md5sum                                          [ OK ]
    /usr/bin/newgrp                                          [ OK ]
    /usr/bin/passwd                                          [ OK ]
    /usr/bin/perl                                            [ OK ]
    /usr/bin/pgrep                                           [ OK ]
    /usr/bin/pkill                                           [ OK ]
    /usr/bin/pstree                                          [ OK ]
    /usr/bin/rkhunter                                        [ OK ]
    /usr/bin/runcon                                          [ OK ]
    /usr/bin/sha1sum                                         [ OK ]
    /usr/bin/sha224sum                                       [ OK ]
    /usr/bin/sha256sum                                       [ OK ]
    /usr/bin/sha384sum                                       [ OK ]
    /usr/bin/sha512sum                                       [ OK ]
    /usr/bin/size                                            [ OK ]
    /usr/bin/sort                                            [ OK ]
    /usr/bin/ssh                                             [ OK ]
    /usr/bin/stat                                            [ OK ]
    /usr/bin/strings                                         [ OK ]
    /usr/bin/sudo                                            [ OK ]
    /usr/bin/tail                                            [ OK ]
    /usr/bin/test                                            [ OK ]
    /usr/bin/top                                             [ OK ]
    /usr/bin/touch                                           [ OK ]
    /usr/bin/tr                                              [ OK ]
    /usr/bin/uniq                                            [ OK ]
    /usr/bin/users                                           [ OK ]
    /usr/bin/vmstat                                          [ OK ]
    /usr/bin/w                                               [ OK ]
    /usr/bin/watch                                           [ OK ]
    /usr/bin/wc                                              [ OK ]
    /usr/bin/wget                                            [ OK ]
    /usr/bin/whatis                                          [ OK ]
    /usr/bin/whereis                                         [ OK ]
    /usr/bin/which                                           [ OK ]
    /usr/bin/who                                             [ OK ]
    /usr/bin/whoami                                          [ OK ]
    /usr/bin/mawk                                            [ OK ]
    /usr/bin/lwp-request                                     [ OK ]
    /usr/bin/mail.mailutils                                  [ OK ]
    /usr/bin/x86_64-linux-gnu-size                           [ OK ]
    /usr/bin/x86_64-linux-gnu-strings                        [ OK ]
    /usr/bin/w.procps                                        [ OK ]
    /sbin/depmod                                             [ OK ]
    /sbin/fsck                                               [ OK ]
    /sbin/ifconfig                                           [ OK ]
    /sbin/ifdown                                             [ OK ]
    /sbin/ifup                                               [ OK ]
    /sbin/init                                               [ OK ]
    /sbin/insmod                                             [ OK ]
    /sbin/ip                                                 [ OK ]
    /sbin/lsmod                                              [ OK ]
    /sbin/modinfo                                            [ OK ]
    /sbin/modprobe                                           [ OK ]
    /sbin/rmmod                                              [ OK ]
    /sbin/route                                              [ OK ]
    /sbin/runlevel                                           [ OK ]
    /sbin/sulogin                                            [ OK ]
    /sbin/sysctl                                             [ OK ]
    /bin/bash                                                [ OK ]
    /bin/cat                                                 [ OK ]
    /bin/chmod                                               [ OK ]
    /bin/chown                                               [ OK ]
    /bin/cp                                                  [ OK ]
    /bin/date                                                [ OK ]
    /bin/df                                                  [ OK ]
    /bin/dmesg                                               [ OK ]
    /bin/echo                                                [ OK ]
    /bin/egrep                                               [ OK ]
    /bin/fgrep                                               [ OK ]
    /bin/fuser                                               [ OK ]
    /bin/grep                                                [ OK ]
    /bin/ip                                                  [ OK ]
    /bin/kill                                                [ OK ]
    /bin/less                                                [ OK ]
    /bin/login                                               [ OK ]
    /bin/ls                                                  [ OK ]
    /bin/lsmod                                               [ OK ]
    /bin/mktemp                                              [ OK ]
    /bin/more                                                [ OK ]
    /bin/mount                                               [ OK ]
    /bin/mv                                                  [ OK ]
    /bin/netstat                                             [ OK ]
    /bin/ping                                                [ OK ]
    /bin/ps                                                  [ OK ]
    /bin/pwd                                                 [ OK ]
    /bin/readlink                                            [ OK ]
    /bin/sed                                                 [ OK ]
    /bin/sh                                                  [ OK ]
    /bin/su                                                  [ OK ]
    /bin/touch                                               [ OK ]
    /bin/uname                                               [ OK ]
    /bin/which                                               [ OK ]
    /bin/kmod                                                [ OK ]
    /bin/systemd                                             [ OK ]
    /bin/systemctl                                           [ OK ]
    /bin/dash                                                [ OK ]
    /lib/systemd/systemd                                     [ OK ]

[Press  to continue]


Checking for rootkits...

  Performing check of known rootkit files and directories
    55808 Trojan - Variant A                                 [ Not found ]
    ADM Worm                                                 [ Not found ]
    AjaKit Rootkit                                           [ Not found ]
    Adore Rootkit                                            [ Not found ]
    aPa Kit                                                  [ Not found ]
    Apache Worm                                              [ Not found ]
    Ambient (ark) Rootkit                                    [ Not found ]
    Balaur Rootkit                                           [ Not found ]
    BeastKit Rootkit                                         [ Not found ]
    beX2 Rootkit                                             [ Not found ]
    BOBKit Rootkit                                           [ Not found ]
    cb Rootkit                                               [ Not found ]
    CiNIK Worm (Slapper.B variant)                           [ Not found ]
    Danny-Boy's Abuse Kit                                    [ Not found ]
    Devil RootKit                                            [ Not found ]
    Dica-Kit Rootkit                                         [ Not found ]
    Dreams Rootkit                                           [ Not found ]
    Duarawkz Rootkit                                         [ Not found ]
    Enye LKM                                                 [ Not found ]
    Flea Linux Rootkit                                       [ Not found ]
    Fu Rootkit                                               [ Not found ]
    Fuck`it Rootkit                                          [ Not found ]
    GasKit Rootkit                                           [ Not found ]
    Heroin LKM                                               [ Not found ]
    HjC Kit                                                  [ Not found ]
    ignoKit Rootkit                                          [ Not found ]
    IntoXonia-NG Rootkit                                     [ Not found ]
    Irix Rootkit                                             [ Not found ]
    Jynx Rootkit                                             [ Not found ]
    KBeast Rootkit                                           [ Not found ]
    Kitko Rootkit                                            [ Not found ]
    Knark Rootkit                                            [ Not found ]
    ld-linuxv.so Rootkit                                     [ Not found ]
    Li0n Worm                                                [ Not found ]
    Lockit / LJK2 Rootkit                                    [ Not found ]
    Mood-NT Rootkit                                          [ Not found ]
    MRK Rootkit                                              [ Not found ]
    Ni0 Rootkit                                              [ Not found ]
    Ohhara Rootkit                                           [ Not found ]
    Optic Kit (Tux) Worm                                     [ Not found ]
    Oz Rootkit                                               [ Not found ]
    Phalanx Rootkit                                          [ Not found ]
    Phalanx2 Rootkit                                         [ Not found ]
    Phalanx2 Rootkit (extended tests)                        [ Not found ]
    Portacelo Rootkit                                        [ Not found ]
    R3dstorm Toolkit                                         [ Not found ]
    RH-Sharpe's Rootkit                                      [ Not found ]
    RSHA's Rootkit                                           [ Not found ]
    Scalper Worm                                             [ Not found ]
    Sebek LKM                                                [ Not found ]
    Shutdown Rootkit                                         [ Not found ]
    SHV4 Rootkit                                             [ Not found ]
    SHV5 Rootkit                                             [ Not found ]
    Sin Rootkit                                              [ Not found ]
    Slapper Worm                                             [ Not found ]
    Sneakin Rootkit                                          [ Not found ]
    'Spanish' Rootkit                                        [ Not found ]
    Suckit Rootkit                                           [ Not found ]
    Superkit Rootkit                                         [ Not found ]
    TBD (Telnet BackDoor)                                    [ Not found ]
    TeLeKiT Rootkit                                          [ Not found ]
    T0rn Rootkit                                             [ Not found ]
    trNkit Rootkit                                           [ Not found ]
    Trojanit Kit                                             [ Not found ]
    Tuxtendo Rootkit                                         [ Not found ]
    URK Rootkit                                              [ Not found ]
    Vampire Rootkit                                          [ Not found ]
    VcKit Rootkit                                            [ Not found ]
    Volc Rootkit                                             [ Not found ]
    Xzibit Rootkit                                           [ Not found ]
    zaRwT.KiT Rootkit                                        [ Not found ]
    ZK Rootkit                                               [ Not found ]

[Press  to continue]


  Performing additional rootkit checks
    Suckit Rookit additional checks                          [ OK ]
    Checking for possible rootkit files and directories      [ None found ]
    Checking for possible rootkit strings                    [ None found ]

  Performing malware checks
    Checking running processes for suspicious files          [ None found ]
    Checking for login backdoors                             [ None found ]
    Checking for suspicious directories                      [ None found ]
    Checking for sniffer log files                           [ None found ]
    Suspicious Shared Memory segments                        [ None found ]

  Performing Linux specific checks
    Checking loaded kernel modules                           [ OK ]
    Checking kernel module names                             [ OK ]

[Press  to continue]


Checking the network...

  Performing checks on the network ports
    Checking for backdoor ports                              [ None found ]
    Checking for hidden ports                                [ None found ]

  Performing checks on the network interfaces
    Checking for promiscuous interfaces                      [ None found ]

Checking the local host...

  Performing system boot checks
    Checking for local host name                             [ Found ]
    Checking for system startup files                        [ Found ]
    Checking system startup files for malware                [ None found ]

  Performing group and account checks
    Checking for passwd file                                 [ Found ]
    Checking for root equivalent (UID 0) accounts            [ None found ]
    Checking for passwordless accounts                       [ None found ]
    Checking for passwd file changes                         [ None found ]
    Checking for group file changes                          [ None found ]
    Checking root account shell history files                [ OK ]

  Performing system configuration file checks
    Checking for an SSH configuration file                   [ Found ]
    Checking if SSH root access is allowed                   [ Not allowed ]
    Checking if SSH protocol v1 is allowed                   [ Not allowed ]
    Checking for a running system logging daemon             [ Found ]
    Checking for a system logging configuration file         [ Found ]
    Checking if syslog remote logging is allowed             [ Not allowed ]

  Performing filesystem checks
    Checking /dev for suspicious file types                  [ None found ]
    Checking for hidden files and directories                [ Warning ]

[Press  to continue]

System checks summary
=====================

File properties checks...
    Files checked: 144
    Suspect files: 0

Rootkit checks...
    Rootkits checked : 378
    Possible rootkits: 0

Applications checks...
    All checks skipped

The system checks took: 6 minutes and 46 seconds

All results have been written to the log file: /var/log/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter.log)

Checking for hidden files and directories [ Warning ]

dettagli relativi al warning file /var/log/rkhunter.log

Viene evidenziata la presenza della cartella nascosta  .java che non rappresenta in questo caso non rappresenta un fattore critico.

 

rkhunter lista dei tests

 rkhunter --list tests

Current test names:
    additional_rkts all apps attributes avail_modules deleted_files
    filesystem group_accounts group_changes hashes hidden_ports hidden_procs
    immutable known_rkts loaded_modules local_host malware network
    none os_specific other_malware packet_cap_apps passwd_changes ports
    possible_rkt_files possible_rkt_strings promisc properties rootkits running_procs
    scripts shared_libs shared_libs_path startup_files startup_malware strings
    suspscan system_commands system_configs trojans

Grouped test names:
    additional_rkts => possible_rkt_files possible_rkt_strings 
    group_accounts  => group_changes passwd_changes 
    local_host      => filesystem group_changes passwd_changes startup_malware system_configs 
    malware         => deleted_files hidden_procs other_malware running_procs suspscan 
    network         => hidden_ports packet_cap_apps ports promisc 
    os_specific     => avail_modules loaded_modules 
    properties      => attributes hashes immutable scripts 
    rootkits        => avail_modules deleted_files hidden_procs known_rkts loaded_modules other_malware possible_rkt_files possible_rkt_strings running_procs suspscan trojans 
    shared_libs     => shared_libs_path 
    startup_files   => startup_malware 
    system_commands => attributes hashes immutable scripts shared_libs_path strings 

 

Risorse:

Annunci

Installare WINE 4.0 in debian 9.xx ( Stretch )

   E’ stato rilasciata  il 22 gennaio 2019 la versione stable di Wine 4.0.   Wine,  dall’acronimo  Wine is Not an Emulator,  è il noto programma per Linux  che consente di eseguire programmi per Windows sotto Linux appunto, MAC e altri SO.  Questa nuova versione che ha richiesto un anno di sviluppo introduce miglioramenti significativi in ambito grafico che si faranno apprezzare nei giochi. Supporto alle API  Vulcan, migliorato il supporto OpenGL, avviato supporto Direct3D 12,… Phoronix evidenzia miglioramenti nella compatibilità con il software a 64 bit.  E’ possibile riscontrare i miglioramenti di questa nuova versione al seguente indirizzo WineHQ release notes.

Se si desidera installare la nuova versione Wine 4.0 in Debian 9.xx e necessario abilitare il repository specifico di WineHQ. In dicembre ( 19-12-2018 ) è stata cambiata la chiave del repository. Quindi è necessario scaricare e installare la nuova key.

Installazione

Conviene iniziarel procedura di installazione passando a root con

su  oppure sudo su

Abilitare l’architettura a 32 bit

dpkg --add-architecture i386

Scaricare e installare la nuova repository key.

wget -nc https://dl.winehq.org/wine-builds/winehq.key
apt-key add winehq.key

Una volta installata la nuova key aggiungere il repository winehq per debian stretch alla lista dei repository.
Questo può essere conseguito creando uno specifico file di tipo  .list in /etc/apt/sources.list con

echo "### winehq  repository" > /etc/apt/sources.list.d/winehq.list
echo "deb https://dl.winehq.org/wine-builds/debian/ stretch main" > /etc/apt/sources.list.d/winehq.list

 

Il repository può essere aggiunto anche  inserendo la riga seguente nel file principale per gli archivi dei pacchetti: /etc/apt/sources.list

deb https://dl.winehq.org/wine-builds/debian/ stretch main

Considerato che viene utilizzzato un repository https potrebbe essere necessaria l’installazione del pacchetto  apt-transport-https.

in fase di uptade il messaggio che segue richiamerà la necessità di installare apt-trasport-https :

 
Reading package lists... Done
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: Failed to fetch https://dl.winehq.org/wine-builds/debian/dists/stretch/InRelease

apt install

Per poter scaricare i pacchetti del nuovo repository aggiornare al solito con

apt install apt-transport-https

Wine 4.0 è disponibile in 3 varianti. In genere è consigliabile installare la versione stable  con

apt install --install-recommends winehq-stable

Se si verificano problemi per dipendenza mancanti.
Installare i pacchetti mancanti e ripetere i due ultimi passaggi (apt update) e  (apt install –install-recommends winehq-stable)
Esempi di dipendenze mancanti

 
The following packages have unmet dependencies:
winehq-stable : Depends: wine-stable (= 3.0.4~stretch)
E: Unable to correct problems, you have held broken packages.

root@deb35b2:/home/maurizio# apt-get install wine-stable
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
wine-stable : Depends: wine-stable-i386 (= 3.0.4~stretch)
E: Unable to correct problems, you have held broken packages.
root@deb35b2:/home/maurizio# sudo apt-get install wine-stable-i386
...

Uscire da livello super user root

exit

 

Winecfg

Avviando da terminale winecfg lo strumento di configurazione di Wine l’aspettativa è che risulti selezionata la versione Windows 7

winecfg

Alcuni degli strumenti principali di Wine come wine-mono e wine-gecko verranno installati al momento dell’installazione di una applicazione.

Wine-Mono

Wine-Mono è  l’implementazione open source di NET. Framework.

 

Wine-Gecko

Wine-Gecko browser web utile per le applicazioni che accedono e visualizzano un sito internet. E’ la versione propria di wine di Internet Explorer  browser basata su una versione custmo di Mozilla’s Gecko Layout Engine.

 

 

Installare Fonts Windows in Wine

Per avere disponibili in WINE i fonts Windows è possibile copiare
ad esempio i fonts di windows 7 nella seguente cartella della home

.wine/drive_c/windows/Fonts

 

Fonts Windows 7 sono disponibili anche all’url https://www.w7df.com/7/download.html

 

Risorse:

 

Prime video su debian 9.xx

Aggiornato 5-2019

Nel visualizzare i video di Primevideo utilizzando Sistemi Operativi Linux come Debian è piuttosto frequente incorrere nell’errore:

I video presenti in primevideo  fanno uso dell Encrypted Media Extensions ( EME), una forma di Digital Right Management (DRM).
In assenza  di questa estensione si ottiene questo warning relativo ai diritti digitali che evidenzia l’assenza del modulo Widevine Content Decryption.

Questa l’estensione Widevine in Firefox una volta installata.

Può capitare che anche premendo il pulsante [Enable DRM] non si riesca ad installare l’estensione per un problema di compatibiltà legato alla versione del browser.

In genere se si dispone della versione più recente dei browser Firefox l’installazione dell’estensione Widevine avviene automaticamente e l’abilitazione DRM avviene senza problemi.  Per questo motivo potrebbe essere conveniente utilizzare la versione più recente del browsers Firefox che è disponibile nel hub snap. Snappy sistema per la gestione di pacchetti e di distribuzione del software

Inconveniente è che snappy mangia spazio disco e l’avvio delle applicazioni risulta più lento. Questo si verifica perchè uno snap  utilizza un processo che risulta isolato dagli altri processi. Se da un lato si evitano così i  conflitti di dipendenza tra le applicazioni dall’altro si potranno avere, in snaps diversi, più copie  delle stesse librerie e/o programmi e le dimensioni dei pacchetti risulteranno in media decisamente più grandi.

Tuttavia in più di qualche occasione questi svantaggi possono essere compensati anche dalla comodità di avere due versioni diverse dello stesso browser.

installato snap con

apt install snapd

firefox si installa facilmente con

snap install firefox

 

Al termine dell’istallazione si avrà a disposizione oltre alla versione Firefox ESF ad esempio 60.6 ( Debian stretch stable  )

anche la Firefox 66.0.3 ( Hub snap )

una volta loggati su primevideo al primo avvio di un video apparirà il alto la barra gialla con il pulsante per l’abilitazione DRM

Premuto il pulsante enable DRM  verrà visualizzato il messaggio di installazione in corso

Se si utilizza la procedura descritta in Add-onn avremo due plugins: OpenH264 Video Codec e Widevine Content Decription.

Il plugin risulta già impostato come Always Activate.ò premendo preferences si ottiene

Il plugin widevine, utilizzato anche da altri servizi ad esempio Netflix, come si legge nella description abilità il playback dei media crittografatia in accordo con l’Encrypted Media Extensions (EME).   Maggiori informazioni nel sito http://www.W3.org

 

Risorse:

 

Debian 9.xx (Stretch) Nvidia drivers

Le schede grafiche Nvidia in Debian utilizzano il driver open nouveau.
Può capitare qualora si acquisti una scheda Nvidia recente che il driver noveau non riesca a gestire al meglio la stessa e pertanto è necessario utilizzare i drivers proprietari.

  • Nel caso di Debian 9.0  la modalità da privilegiare consiste nell’abilitazione dei repository contrib e non-free e nell’installazione del pacchetto  nvidia-driver.
  • In subordine è possibile installare la versione più recente presente nel repository backports.
  • E’ possibile anche scaricare e installare  il driver rilasciato da nvidia nel proprio sito.

Per determinare il modello della scheda grafica si può utilizzare nvidia-detect oppure lspci :

:~$ apt install nvidia-detect 


:~$ sudo nvidia-detect 
Detected NVIDIA GPUs:
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP108 [10de:1d01] (rev a1)

Checking card: NVIDIA Corporation GP108 (rev a1)
Your card is supported by the default drivers.
It is recommended to install the
        nvidia-driver
package.

con lspci

:~$ lspci -nn | egrep -i "3d|display|vga"
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP108 [10de:1d01] (rev a1)

utilizzando inxi

:~$inxi -Gxx
Graphics: Card: NVIDIA GP108 bus-ID: 03:00.0 chip-ID: 10de:1d01
Display Server: X.org 1.19.2 driver: nvidia tty size: 153x43 Advanced Data: N/A for root

il chip-ID (10de:1d01)  composto di Vendor ID (10de)  e  Product ID ( 1d01) consente di ottenere altre informazioni relative al prodotto.  Diversi sono i siti che forniscono questo tipo di servizio.

Vendor ID:Device ID

 

Unix Driver Archive

Gli elenchi completi dei dispositivi nvidia supportati dalle varie versioni dei driver nvidia sono disponibili agli

https://www.nvidia.com/object/unix.html

altro elenco

https://us.download.nvidia.com/XFree86/Linux-x86_64/375.66/README/supportedchips.html

 

nvidia-driver versione 390.87

Il driver nvidia attualmente disponibile in debian 9.0 Stretch stable è la versione 390.87.

Per installare i nvidia-driver  aggiungere i repositori “contrib”  e  “non-free” a /etc/apt/sources.list

:~$ su 
:~$ echo "deb http://httpredir.debian.org/debian/ stretch main contrib non-free"  > /etc/apt/sources.list

al solito effettuare l’update della package cache  con

:~$ apt update

quindi installare nvidia-driver e i linux-headers per il kernel in uso con

:~$ apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

diversi i pacchetti in genere che verranno installati

The following additional packages will be installed: 
glx-alternative-mesa glx-alternative-nvidia glx-diversions libegl-nvidia0 libegl1-glvnd-nvidia libgl1-glvnd-nvidia-glx libgl1-nvidia-glvnd-glx
libgles-nvidia1 libgles-nvidia2 libgles1-glvnd-nvidia libgles2-glvnd-nvidia libglvnd0-nvidia libglx-nvidia0 libglx0-glvnd-nvidia libnvidia-cfg1
libnvidia-eglcore libnvidia-glcore libnvidia-ml1 libopengl0-glvnd-nvidia libvulkan1 libxnvctrl0 nvidia-alternative nvidia-driver-bin
nvidia-driver-libs nvidia-egl-common nvidia-egl-icd nvidia-installer-cleanup nvidia-kernel-common nvidia-kernel-dkms nvidia-kernel-support nvidia-legacy-check nvidia-modprobe nvidia-persistenced nvidia-settings nvidia-support nvidia-vdpau-driver nvidia-vulkan-common nvidia-vulkan-icd update-glx xserver-xorg-video-nvidia 
0 upgraded, 41 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.2 MB of archives.
After this operation, 124 MB of additional disk space will be used.

Il Dynamic Kernel Module Support (  DKMS  ) che genera i moduli del kernel i cui sorgenti non sono generalemente disponibili consentirà l’installazione del nuovo driver compilando il modulo nvidia grazie al pacchetto nvidia-kernel-dkms.

 

...
...
Setting up nvidia-driver (390.87-8~deb9u1) 
...
Building for 4.9.0-8-amd64
Building initial module for 4.9.0-8-amd64
Done.

nvidia-current:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.9.0-8-amd64/updates/dkms/

nvidia-current-modeset.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.9.0-8-amd64/updates/dkms/

nvidia-current-drm.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.9.0-8-amd64/updates/dkms/

nvidia-current-uvm.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.9.0-8-amd64/updates/dkms/

...
...

DKMS: install completed.
Setting up nvidia-driver (390.87-8~deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Processing triggers for update-glx (0.8.8~deb9u2) ...
Processing triggers for glx-alternative-nvidia (0.8.8~deb9u2) ...
update-alternatives: using /usr/lib/nvidia to provide /usr/lib/glx (glx) in auto mode
Processing triggers for glx-alternative-mesa (0.8.8~deb9u2) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
Processing triggers for initramfs-tools (0.130) ...
update-initramfs: Generating /boot/initrd.img-4.9.0-8-amd64

 

:~$ exit

Riavviare il sistema. Con il riavvio  il driver nouveau verrà automaticamente  disattivato e inserito in blacklist.

Nel menu System sarà disponibile il programma di configurazione specifico

 

 

Installare da stretch-backport

Se si desidera installare l’ultimo dirver si dovrebbe installare la versione presente nel repository backports in questo caso aggiungere

il repository backports repository a source list  sources.list con:
# echo “deb http://httpredir.debian.org/debian stretch-backports main contrib non-free” > /etc/apt/sources.list
rimuovere i driver nvidia installati con
apt purge nvidia-*
Aggiornare con :
# apt update
Installare/aggiornare i Linux headers per il kernel in uso con :
# apt install linux-headers-$(uname -r|sed ‘s/[^-]*-[^-]*-//’)
Installare il pacchetto  nvidia-driver dal  backports repository:
# apt-get install -t stretch-backports nvidia-driver

 

lnstallazione del driver nvidia dal sito del produttore
Per un utilizzatore di Debian non mi sento di consigliarla.

pagina per il download del driver

https://www.nvidia.it/Download/index.aspx?lang=it

il file scaricato sarà di tipo .run

la disabilitazione del driver nouveau andrà fatta manualmente.

informazioni aggiuntive in   https://wiki.debian.org/it/NvidiaGraphicsDrivers

 

Risorse:

 

 

Installare manualmente WordPress 4.6.9 in debian 9.xx da zero – una o più installazioni

wordpress-logo-s

Di seguito la procedura per installare velocemente WordPress 4.6.9 in Debian 9.xx. Viene presa in considerazione una installazione da zero che contempla pertanto  anche l’installazione del webserver Apache di  php e del database MariaDB un fork di mysql. Così da avere a disposizione un classico ambiente LAMP. L’installazione può essere applicata anche in Ubuntu

La procedura può essere utilizzata per effettuare in successione più installazioni di wordpress.

Installare dapprima  il server database MariaDB  e il web server Apache2.

sudo apt install apache2 mariadb-server

per procedere più velocemente al momento non si imposta la password per il mysql-server.
Alla richiesta si lascia in bianco: enter su OK.

Abilitare il riavvio automatico dei servizi apache e mysql:

systemctl start apache2 
systemctl enable apache2 
systemctl start mysql
systemctl enable mysql

Installare PHP 

per installare php installare il modulo

apt install libapache2-mod-php

verranno installati anche i seguenti pacchetti :

libapache2-mod-php7.0 php-common php7.0-cli php7.0-common php7.0-json
php7.0-opcache php7.0-readline

Quindi installare

apt install php-cgi php-gd php-json php-mysql php-curl php-intl
apt install php-zip php-mbstring php-mcrypt php-imagick

riavviare apache2

sudo service apache2 status
sudo service apache2 restart

Configurare MariaDB

Creare il database mysql per wordpress

# sudo su - 

# echo 'CREATE DATABASE wordpress;' | mysql

impostare lo user per il database wordpress  usando il  comando: echo “GRANT ALL PRIVILEGES ON wordpress.* TO ‘user’@’localhost’ IDENTIFIED BY ‘password’;” | mysql

Nell’esempio viene utilizzato   “wordpress” come nome user e “wordpress” come password

echo "GRANT ALL PRIVILEGES ON wordpress.* TO wordpress'@'localhost' IDENTIFIED BY  'wordpress';"|mysql 

echo "FLUSH PRIVILEGES;" | mysql

Scaricare l’ultima versione di wordpress disponibile al momento la 4.6.9

#  cd /var/www/html
#  wget http://wordpress.org/latest.tar.gz 
tar -zxvf latest.tar.gz

Impostare  le directory necessarie per wordpress e assegnare  il permesso di scrittura da parte del webserver ( user:group -> www-data:www-data)

# cd wordpress
# mkdir wp-content/uploads wp-content/cache 
# chown www-data:www-data wp-content/uploads wp-content/cache

copiare la configurazione di default

# cp wp-config-sample.php wp-config.php

Se abbiamo usato:
nome database -> “wordpress”
user ->  “wordpress”
password -> “wordpress”

possiamo modificare direttametne da terminale il file di configiurazione usando i comandi seguenti

# sed -i -e 's@database_name_here@wordpress@' wp-config.php 
# sed -i -e 's@username_here@wordpress@' wp-config.php 
# sed -i -e 's@password_here@wordpress@' wp-config.php

uscire da root

exit
cd ~

adesso avviare la pagina di installazione wordpress dove si dovranno indicare il nome del blog, lo username e la password che userà l’amminstratore del blog

http://localhost/wordpress/wp-admin/install.php

http://localhost/wordpress/

Wordpress configurazione iniziale

 

wordpress configurazione iniziale success

per il login

http://localhost/wordpress/wp-admin/

L’interfaccia di amminsitrazione di wordpress 4.6.9

wordpress interfaccia di amministrazione

Utilizzare URL in formato amichevole

 

https://codex.wordpress.org/Using_Permalinks

WordPress consente l’utilizzo di URL in formato “amichevole” ( Human Readable Urls)  più gradite ai motori e più facili da ricordare del tipo

https://mauriziosiagri.wordpress.com/postgresql-comandi-utili/

piuttosto che il formato di default

https://mauriziosiagri.wordpress.com/?p=123

Questa modalità necessità di alcune ulteriori modifiche nella directory di wordpress e  a livello di server apache.

Per utilizzare  necessario utilizzare la pagina Permalinks in Setting

Permalink Setting

In basso nella pagina permalink vengono evidenziate le regole (rules) per il modulo di rewrite del webserver e che devono essere presenti nel file .htaccess.

wordpress permalink rules

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

Perchè le impostazioni siano operative è tuttavia necessario apportare alcune modifiche al web server Apache.

Consentire il rewrite delle url abilitando il modulo a2enmod

sudo a2enmod rewrite

Quindi è necessario attivare il rewrite via .htaccess files. Agire sul file 000-default.conf di configurazione di Apache.
Utilizzando l’editor nano

sudo nano /etc/apache2/sites-available/000-default.conf

modificare il file consentendo .htaccess  ovverrides.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    <Directory /var/www/html/>
        AllowOverride All
    </Directory>
    . . .

Riavviare apache2

sudo service apache2 restart

creare il file .htaccess che verrà posizionato nella directory root di wordpress .

touch /var/www/html/.htaccess
sudo chown :www-data /var/www/html/wordpress/.htaccess

quindi copiare in .htaccess le rules che wordpress ha evidenziato in permalinks

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /html/wp_422/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /html/wordpress/index.php [L]
</IfModule>

Volendo è possibile che wordpress scriva direttamente le rules in .htaccess. Per consentire a WordPress di modificare e upgradare automaticamente il file adeguare i permessi

chmod 664 /var/www/html/wordpress/.htaccess

Ritengo che sia preferibile la modfica manuale. In questo caso i permessi di .htaccess devono essere impostati con

chmod 644 /var/www/html/wordpress/.htaccess

 

WordPress seconda e successive installazioni

Scegliamo la nuova directory, di conseguenza il nuovo database e il suo user principale con password. Ad esempio: possiamo usare una nuova dir

– wp_496

quindi il database potrebbe essere

wp_496

il suo user principale

wp_496 con password

%8Wp_496

Installare eseguendo in sequenza

sudo su -

echo 'CREATE DATABASE wp_496;' | mysql

echo "GRANT ALL PRIVILEGES ON wp_96.* TO 'wp_496'@'localhost' IDENTIFIED BY '%8Wp_496';"|mysql
echo "FLUSH PRIVILEGES;" | mysql

cd /var/www/html/
mkdir tmp  
wget http://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz -C tmp
mv tmp/wordpress/* wp_496

cd wp_496
mkdir wp-content/uploads wp-content/cache
chown www-data:www-data wp-content/uploads wp-content/cache
cp wp-config-sample.php wp-config.php
sed -i -e 's@database_name_here@wp_496@' wp-config.php 
sed -i -e 's@username_here@wp_496@' wp-config.php 
sed -i -e 's@password_here@%8Wp_496@' wp-config.php

completiamo l’installare via web con

http://numero-ip/wp_496/

per il login

http://numero-ip/wp_496/wp-admin/

Completata l’installazione è opportuno impostare la password di root di mysql.

Valutare anche l’installazione di phpmyadmin.

 

Risorse nel blog

Testare la configurazione di avvio presente su hard disk con qemu senza riavviare

L’emulatore QEMU consente di testare agevolmente le ISO delle distribuzioni linux e anche una chiavetta usb avviabile.

L’emulatore  Qemu  – KVM consente anche di testare la configurazione di boot degli hard disk presenti nel sistema senza la necessita di procedere al riavvio.

 

per testare il disco sda  digitare ad esempio

kvm -hda /dev/sda

o

qemu-system-x86_64 -hda /dev/sda






qemu può essere installato con:

sudo apt-get install qemu

oppure

sudo apt-get install qemu-kvm

 

Testare una chiavetta usb di avvio

Nella stessa modalità può essere per testata una chiavetta usb di avvio.

kvm -hda /dev/sdc

oppure

qemu-system-x86_64 -hda /dev/sdc


Provare una distro live con qemu

 

L’emulatore Qemu – kvm consente anche di provare distro linux direttamente dal file .iso.

Ad esempio una live antiX su potrà essere eseguita  con  :

kvm -cdrom antiX-16.2_x64-base.iso -m 512

Con -m viene specificata la RAM da dedicare.

 

Se il PC presenta qualche GB di RAM ( ad esempio 4GB)  L’avvio di ISO con qemu risultarà senz’altro efficace.

Volendo è possibile anche indicare il disco immagine  IDE hard disk 0.
Per creare il disco immagine

qemu-img create  qemu_hda.img 2G

Quindi il comando per lanciare la ISO diventa

kvm  -cdrom antiX-16.2_x64-base.iso  -hda qemu_hda.img   -m 512

oppure

kvm  -cdromantiX-16.2_x64-base.iso  -hda qemu_hda.img   -m 512 -boot d

 

Nota: Il formato di default per il disco immagine è raw volendo si può precisare anche il formato vmdk di vmware :    qemu-img create  -f vmdk qemu_hda.vmdk 2G

Risorse:

 

 

Installare nextcloud: installazione completa in debian 9.xx – versione 13.xx

Di seguito i passi per l’installazione completa di NextCloud su macchina Virtuale debian 9.xx.

Trattandosi di installazione da zero dopo il passaggio a superuser è  opportuno aggiornare il sistema

su
apt update && apt upgrade

Next cloud necessita di un server di tipo  LAMP cioè con installati  Apache – MySQL o MariaDB) e PHP.

prima, per semplificarci le operazioni, installiamo: sudo,  unzip, wget ed un editor vim, mcedit, nano o altro

installiamo sudo e per comodità aggiungiamo il nostro user al gruppo sudoers, che sarà disponibile al prossimo login

apt install sudo  

adduser tuo-user sudo
apt install wget unzip vim -y

Installare i componenti per il server LAMP 

apt install apache2 mariadb-server -y

Installare PHP 

apt install libapache2-mod-php

verranno installati anche i seguenti pacchetti :

libapache2-mod-php7.0 php-common php7.0-cli php7.0-common php7.0-json
php7.0-opcache php7.0-readline

Quindi installare

apt install php-cgi php-gd php-json php-mysql php-curl php-intl
apt install php-zip php-mbstring php-mcrypt php-imagick
apt install php-xmlwriter php-xmlreader php-xml php-simplexml

Configurare MariaDB

Configurare mysql per l’avvio al boot debian 9 usa systemd come init quindi

systemctl start mysql
systemctl enable mysql

Di default MariaDB il fork opensource di mysql non è sicuro per passare all’installazione sicura avviare:

mysql_secure_installation
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Creare il database per nextcloud  (scegliamo: nextclouddb)  e lo specifico user in MariaDB (mysql ):

entrare  in  myslq

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextclouddb;

Creare utente e password per NextCloud

MariaDB [(none)]> CREATE user 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud-DBpassword';

Garantire allo user nexcloud i privilegi al database creato nextclouddb

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost';

Per attivare i permessi con

MariaDB [(none)]> FLUSH PRIVILEGES;

uscire da mysql con

MariaDB [(none)]>  \q

Configurare apache

Configurare apache per l’avvio al boot debian 9 usa systemd come init quindi

systemctl start apache2
systemctl enable apache2

Abilitare i moduli aggiuntivi

a2enmod rewrite 
a2enmod headers 
a2enmod env 
a2enmod dir 
a2enmod mime

Riavviare apache con

systemctl restart apache2

Installare nextcloud da terminale

Configurata la basedati  installare l’ultima versione dell’applicativo nextcloud. La versione corrente è nextcloud ver. 13.0.2. rilasciata a fine aprile.

wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mv nextcloud/ /var/www

Per procedere  all’installazione usano il terminale spostarsi nella cartella di nextcloud  ( installing from command line

cd /var/www/nextcloud/

impostare i permessi della cartella con.

chown www-data:www-data . -R

installare con

sudo -u www-data php occ maintenance:install –database “mysql” –database-name “nextclouddb” –database-user “nextcloud” –database-pass “nextcloud-DBpassword” –admin-user “ncadmin” –admin-pass “ncadmin-password”

 
# sudo -u www-data php occ maintenance:install --database "mysql" 
--database-name "nextclouddb" --database-user "nextcloud" 
--database-pass "xxxxxx" --admin-user "ncadmin"  
--admin-pass "xxxxx"

Nextcloud is not installed - only a limited number of commands are available

Nextcloud was successfully installed

E’ necessario ora aggiungere l’indirizzo ip e/o il nome di dominio (fwdn)  tra i domini sicuri nella sezione ‘trusted domain’ nel file di configurazione:

/var/www/nextcloud/config/config.php

Editare il file di configurazione ad esempio con vi o nano è possibile aggiungere più domini che dovranno essere preceduti da un numero progressivo.

vi /var/www/nextcloud/config/config.php
...
'trusted_domains' => 
 array (
0 => 'localhost',
1 => '192.168.1.189',
2 => 'cloud.example.com', 
3 => 'cloud.internal',
 ),
...

Firewall ufw

Installazione e configurazione del firewall ufw

E’ sufficiente rendere disponibile la porta 80 di seguito le istruzioni per rendere disponibili anche la porta 443 per il protocollo https e la porta 22 per il protocollo ssh.

apt install ufw   # installazione firewall 
ufw allow http    # apertura porta 80 
ufw allow https   # apertura porta 443 
ufw allow ssh     # opzionale apertura porta 22 

ufw enable        # abilitazione firewall ufw

Avviare Next Cloud

Per poter avviare Nextcloud è necessario ora  definire  un virtual host file per apache.
In questa fase abilitiamo all’utilizzo del solo protocollo http: .
In un secondo momento verrà configurato apache affinche risponda alla porta https:

creare il file nextcloud.conf

vi  /etc/apache2/sites-available/nextcloud.conf

del tipo

<VirtualHost *:80>
   ServerAdmin admin@example.com
   DocumentRoot "/var/www/nextcloud"
   ServerName 192.168.1.189
   <Directory "/var/www/nextcloud/">
     Options MultiViews FollowSymlinks
     AllowOverride All
     Order allow,deny
     Allow from all
   </Directory>
   TransferLog /var/log/apache2/nextcloud_access.log
   ErrorLog /var/log/apache2/nextcloud_error.log
</VirtualHost>

quindi disabilitare il virtual host file di default che reindirizza alla classica pagina Apache2 Debian Default Page 

a2dissite 000-default

e abilitare il virtual host file che farà puntare apache a Nextcloud

a2ensite nextcloud

E riavviare apache

systemctl restart apache2

Rendere sicuro l’accesso a Nextcloud con SSL

Oramai gli standard di accesso alle applicazioni web prevedono l’utilizzo del protocollo https. Quindi risulta necessario creare i certificati SSL per il server apache.
Se non si dispone di un certificato rilasciato da un authority a seconda delle esigenze si può procedere con la creazione di un certificato auto-firmato. Oppure si può utilizzare il servizio online gratuito let’s encrypt per la generazioni di un certificato associato ad un proprio dominio.

Generazione di certificato auto firmato per apache

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

generare le chiavi SSL

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

abilitare il modulo ssl di apache e la configurazione di default per il protocollo https

a2enmod ssl  
a2ensite default-ssl

creare il file nextcloud-s.conf per configurare l’accesso https

vi  /etc/apache2/sites-available/nextcloud.conf

del tipo

<IfModule mod_ssl.c>
<VirtualHost *:80>
#   ServerName cloud.example.com
#   Redirect permanent / https://cloud.example.com/
</VirtualHost>
   
 <VirtualHost *:443>
   DocumentRoot "/var/www/nextcloud"
   
   # ServerName cloud.example.com  
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   <Directory /var/www/nextcloud/>
     Options +FollowSymlinks
     AllowOverride All

     SetEnv HOME /var/www/nextcloud
     SetEnv HTTP_HOME /var/www/nextcloud
     Satisfy Any
   </Directory>
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/apache.pem
   SSLCertificateKeyFile /etc/apache2/ssl/apache.key

   <IfModule mod_headers.c>
     Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
   </IfModule>
 </VirtualHost>
</IfModule>

abilitare il virtual host https  nextcloud-s con

a2ensite nextcloud-s

E riavviare apache

systemctl restart apache2

In questo momento nexcloud risponde sia sulla porta 80 che sulla porta 443 dell’indirizzo locale 192.168.1.189.
Per questioni di sicurezza nexcloud invita ad utilizzare il protocollo https

  • You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our security tips.

pertanto la porta 80 andrebbe reindirizzata verso la porta 443 modificando il file di configurazione nexcloud.conf  e aggiungendo la riga in verde con il Redirect permanent /  verso https

<VirtualHost *:80>
    ServerAdmin admin@example.com
    Redirect permanent / https://192.168.1.189/
    
    ...

Let’s Encrypt Certificato SSL/TLS gratuito

Il certificato utilizzato essendo auto firmato  farà si che i browser qualifichino la connessione come non sicura per evitare il warning si può generare il certificato facendo ricorso a Let’s Encrypt .  Let’s Encrypt consente di generare certificati per domini  pubblico gratuitamente. Per utilizzare questo serivizio online in Debian  installare letsencrypt

apt install letsencrypt

ed   apt install python-certbot-apache

generare il certificato con

certbot

perchè letsencrypt possa generare il certificato il dominio indicato dovrà essere esposto sulla rete internet. Per completare il rilascio letsencrypt chiederà infatti di pubblicare in una cartella specifica del dominio un piccolo file con inserita una stringa che verrà verificata dal servizio stesso.

Generato il certificato i file di configurazione di apache andranno modificati sostituendo l’indirizzo ip presente nel parametro ServerName  con il nome del dominio utilizzato per generare il certificato

 

Schermata di login di Nextcloud 13.0.2

Rendere sicura e personalizzare installazione di nextcloud

Prima di procedere alla personalizzazione dell’installazione si può generare una  copia di backup di nextcloud. Così da poter ripristinare l’installazione da questo punto in caso di errori. Si può generare il backup con tar procedere ad una semplice copia

tar zcvf  nextcloudxx.tar.gz /var/www/nexcloud/

oppure

cp -a /var/www/nextcloud   /var/www/nexcloud01

Spostare la cartella data di nextcloud

Per Nextcloud può essere opportuno utilizzare una data directory  diversa da quella default, localizzata nello spazio web.

/var/www/nextcloud/data

ad esempio i dati potrebbero essere spostati  /var/nc-data (  o /opt/nc-data )

/var/nc-data

Muovere la cartella data con

 mv /var/www/nextcloud/data /var/nc-data

ora è necessario precisare il nuovo percorso nel file di configurazione

modificare il file di configurazione con

 vi /var/www/nextcloud/config/config.php

cambiare il valore di datadirectory

'datadirectory' => '/var/www/nextcloud/data',

in

'datadirectory' => '/var/nc-data',

Rendere sicura l’installazione di Nextcloud

Per rendere sicura l’installazione di nextcloud può essere conveniente utilizzare lo script proposto da SyS0p3r  in https://help.nextcloud.com/t/complete-nc-installation-on-debian-9-stretch-and-manual-update/21881

salvare lo script di seguito riportato in /var/www/nc_perm.sh  facendo attenzione che le variabili evidenziate siano correttamente impostate

vi  /var/www/nc_perm.sh
#!/bin/bash
ncpath='/var/www/nextcloud'
ncdata='/var/nc-data'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ncpath/data
mkdir -p $ncpath/updater

printf "chmod Files and Directories\n"
find ${ncpath} -type f -print0 | xargs -0 chmod 0640
find ${ncpath} -type d -print0 | xargs -0 chmod 0750
find ${ncdata} -type f -print0 | xargs -0 chmod 0640
find ${ncdata} -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ncpath}
chown -R ${htuser}:${htgroup} ${ncpath}/apps/
chown -R ${htuser}:${htgroup} ${ncpath}/config/
chown -R ${htuser}:${htgroup} ${ncdata}/
chown -R ${htuser}:${htgroup} ${ncpath}/themes/
chown -R ${htuser}:${htgroup} ${ncpath}/updater/

chmod +x ${ncpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ncpath}/.htaccess ]
then
        chmod 0644 ${ncpath}/.htaccess
        chown ${rootuser}:${htgroup} ${ncpath}/.htaccess
fi
if [ -f ${ncdata}/.htaccess ]
then
        chmod 0644 ${ncdata}/.htaccess
        chown ${rootuser}:${htgroup} ${ncdata}/.htaccess
fi
## END SCRIPT

Cambiare i permessi del file script con

chmod 750 /var/www/nc_perm.sh

eseguire con

./nc_perm.sh

Primo accesso in Nextcloud 13

Nextcloud 13 dashboard

Configurare PHP OPcache

Al primo avvio Nexcloud nella sezione basic setting  evidenzia che PHPOcache non è configurato in modo appropriato.

* The PHP OPcache is not properly configured. For better performance it is recommended to use the following settings in the php.ini:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Aprire il file di configurazione php.ini per apache modificare le voci specifiche della sezione opcache oppure incollare il blocco di voci al termine della sezione stessa.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

riavviare apache2

systemctl restart apache2

In setting si evidenzia che le performance migliorano con la configurazione di una cache come memcache.

Nextcloud è un’ applicazione  matura con molte funzionalità, Molte le apps/plugin disponibili.

Alcune apps della sezione multimedia

User Manual disponibile nella sezione help

 

Risorse: