Configurare in Sicurezza un Web Server

Sicurezza web Server

Ormai è un fattore imperativo anche per i semplici gestori ed amministratori di web server: la sicurezza è essenziale anche per i servizi web non e non solo per i siti. No parliamo del protocollo HTTPS. Tale non è sinonimo di sicurezza nei servizi Web che gli ISP ci mettono a disposizione per amministrare in tranquillità un Web Server.

Con il periodo estivo gli attacchi ai servizi Web si intensificano in modo esponenziale. Penetrazione, SQL injection, DDoS sono solo alcuni dei tanti metodi che i malintenzionati usufruiscono per minare i nostri server. E non è una questione di livello di importanza o di utilità di un sito. Chi per grandi Compagnie, PMI o piccole realtà attive nel web, tutte possono essere sensibili ad attacchi di qualunque tipo.

Ecco perché con questo articolo vogliamo sensibilizzare gli utenti in modo attivo, facendo comprendere le regole e i metodi essenziali per alzare i livelli di sicurezza di un server web.

Il Firewall, la prima arma a nostra disposizione.

Firewall

Un Server è una macchina che gestisce servizi e come tali operano con protocolli, sfruttando le Reti configurate. Un Server web, sia su Macchina Virtuale che in qualità di macchina dedicata, è per forza di cose attivo su classi di IP pubbliche (private se dietro un NAT, ma questa è un’altra storia).

Il Firewall è il primo tool a nostra disposizione per proteggerci a basso livello. Molti ISP mettono a disposizione, in affitto o correlati nelle loro offerte, Firewall Hardware già preconfigurati, ma che spesso sono ultra dispendiosi, pregiudicando i nostri investimenti.

Se state gestendo dei servizi web su Tech Unix, per evitare di appesantire il Vostro Server e di conseguenza il vostro portafogli, sappiate che di default Linux utilizza Netfilter già integrato nel sistema. Il programma che sfrutta queste funzionalità è IPTables: il Firewall per eccellenza.

Quando acquistate o affittate un Server presso il vostro ISP, la macchina vi viene fornita con un box di Network config standard, ma a traffico aperto in qualunque direzione, su qualsiasi porta voi utilizziate. Insomma il Server è letteralmente privo di sicurezza. Spetta a voi configurarlo a dovere.

Per essere pratici potete creare una serie di regole Firewall nel INCOMING Traffic come segue:

  • Bloccare tutte le porte sul traffico INCOMING
  • Tenere aperte solo le porte di servizio necessarie, come
    80,443 (HTTP,HTTPS) 21(FTP standard), 22 (SSH per admin da remoto)…ecc (nello standard)

Ovviamente avrebbe più incidenza se tali porte fossero concesse a sorgenti di IP statici (magari per il controllo da remoto), in modo da poterne usufruire personalmente tagliando fuori chi non ne è autorizzato.

Questa particolarità operativa la affrontiamo dettagliatamente in un approfondimento contenuto nel corso “Linux Web Server Administrator“, che permette di accedere ad un Server da remoto, solo a sorgenti IP autorizzate, statiche o anche dinamiche, attraverso determinate procedure di configurazione. In questo modo potremo usufruire delle nostre priorità senza abbassare i livelli di sicurezza.

Web Application Firewall, l’agente per le nostre Web Applicatin

WAF - Web Aoolication Firewall

Molti lo confondono con il Firewall di cui abbiamo parlato precedentemente, ma sono 2 cose distinte. Mentre IPTables (Firewall) agisce sui livelli più bassi del nostro Network, su più servizi configurati, il Web Application Firewall, applica dei filtri dedicati e pre-configurati unicamente sui servizi e porte di utilizzo Web, es. come HTTP e HTTPS, siti, Web Application ecc..

Solitamente chiamato WAF, agisce in simbiosi con alcuni servizi di terze parti, spesso collegati da API o legati ad azioni esterne. Il Mod Secure di Apache non è un WAF, e nemmeno un Reverse Proxy. Stesso un Proxy non è un WAF.

Un WAF agisce sistematicamente sul traffico di layer Application (vedi TCP, ISO/OSI) cui è stato congegnato, affidandosi a regole e filtri ben precisi. Quindi per tutti i servizi associati al Web.

A meno che non si voglia disporre di alte prestazioni della macchina, infatti avviare un WAF richiede un altissimo dispendio di risorse di memoria e di accesso al disco, molti servizi WAF sono resi disponibili esternamente da compagnie di terze parti.

Per nominarne due, le più utilizzate sono Wordfence, ottimizzato per servizi Web basati su WordPress. Integra autonomamente nel CMS un sistema di regole configurabili, a seconda delle sottoscrizioni, già attivi in WordPress, del tutto Free anche se senza alcun limite eccessivo, è disponibile in versione PRO più completo.

In alternativa segnaliamo Sucuri. Leader in questo tipo di servizio offerto, si adatta benissimo su qualsiasi supporto e servizio Web, indistintamente dalla sua configurazione. Anche se limitato nelle versioni Free, tramite un sistema di abbonamento, garantisce un altro livello di stabilità su qualsiasi supporto richiesto, con la possibilità di essere personalizzato nelle sue configurazioni.

Quindi un WAF è una priorità di alto livello, per tener lontani accessi e tentativi di intrusione o iniezione di codice malevolo, accessi via web, attraverso le porte aperte che permettono al nostro Server di far fruire tutti i servizi Web di cui abbiamo bisogno.

Fail2Ban e gli Attacchi DDoS

Fail2Ban - DDos attacchi

In Linux esiste un ottimo strumento che permette di evitare le intrusioni perpetrate da agenti esterni. Gli attacchi DDoS sono una piaga del Web e della Rete. Tutti i server ne sono assoggettati, anche quelli di minore importanza. Per questo Fail2Ban è una soluzione prioritaria da installare sui nostri server Linux.

Fail2Ban è la soluzione ottimale per innalzare il nostro livello di sicurezza quando lo sfruttamento del nostro server richiede molto dispendio di traffico. Ottimo contro gli attacchi DDoS, impedisce regolarmente al traffico malevolo di incidere sulle prestazioni della nostra macchina.

Questo Tool molto semplice da gestire, permette di configurare delle regole ben precise, usufruendo anche di IPTables, per bannare autonomamente o rigettare, traffico anomalo, proveniente dall’esterno perpetrato direttamente verso i nostri servizi.

Il Backup dei dati

Backup Web server

Il Backup dei dati, non dev’essere considerata l’ultima spiaggia, o una risorsa di scarsa importanza nelle nostre regole di High Level Security. Come già affrontato in altri Post del Gruppo Facebook, l’importanza di dotare il Nostro Server di un sistema di Backup, ha una priorità essenziale.

Il backup non dev’essere attivato a senso unico, ma dev’essere configurato sistematicamente per permetterci un ripristino veloce dei dati e dei servizi del nostro server Web. Quindi dei Contenuti dati dei Siti e dei Dati di Storage (Database ecc), oltre che alle config dei servizi avviati.

Molti ISP, mettono a disposizione degli utenti una serie di servizi di Backuo on-line e/o Cloud come li chiamano loro, in modo da accorciare i tempi di ripristino. Pochi sanno però che è possibile creare una serie di comandi Bash, da attivare periodicamente sui sistemi Linux, che permettono di creare Backup ricorsivi ed aggiornati, sfruttando protocolli e tool di default Unix, come Cron e Tar, senza acquistare ulteriori licenze a discapito dei nostri investimenti IT.

Nel corso “Linux Web Server Administrator” è specificato come adottare questi sistemi di Backup, nelle proprie macchine, senza richiedere l’attivazione di ulteriori servizi da parte del vostro ISP, a vantaggio del nostro investimento e delle nostre tasche.

Aggiornamenti OS Costanti

Molti malintenzionati tendono a sfruttare determinati Bug di sistema o 0-Day come li vogliamo chiamare, che possono minare la sicurezza dei nostri server. Per ovviare a questo, è bene tenere sempre aggiornato costantemente il Sistema Operativo.

Non è una questione di tecnologia o di portanza della macchina. Periodicamente le Case di distribuzione, rilasciano non diciamo quotidianamente, degli aggiornamenti se non upgrades dei sistemi operativi.

Il Kernel Linux, poi non è mail statico e viene costantemente aggiornato. L’aggiornamento dei siatemi onerativi, dei pacchetti e delle applicazioni dev’essere una costante imperativa nelle gestioni ed amministrazioni dei Server Web.

Un costante monitoraggio dei pacchetti, degli aggiornamenti ma soprattutto del traffico ci mette nelle condizioni ottimali per aumentare la sicurezza dei nostri server.

Speriamo che tali specifiche siano state di facile apprendimento a chi necessita di amministrare e/o gestire dei Server Web Virtuali o dedicati che siano. Per qualsiasi domanda o chiarimento, lasciate un commento a questo articolo. Oppure postate nel Gruppo Facebook delicato ai “Sistemisti e Amministratori di Reti – Italiani“,qualsiasi critica costruttiva è ben accetta.

Corsi ed affini

[CORSO – CS01LWSA218]

Linux Web Server Administrator

Per chi ha esigenze di gestire web server a livello professionale. Ottima opportunità di competenza da applicare su contratti di management.

Iscriviti Dettaglio
[CORSO – CS08SDR01]

Sistemista di Reti

Dedicato a chi comincia o a chi vuole approfondire le proprie competenze in Networking. Rivolto a CED, Professionisti e appassionati.

IscrivitiDettaglio
 

Configurare rete con Ubuntu Server 18.04 Bionic Beaver

Abbiamo iniziato a testare l’ultima versione di Ubuntu 18.04. La prima cosa che abbiamo notato è stata la diversa gestione delle interfacce di rete. Il modo in cui Ubuntu gestisce le interfacce di rete è completamente cambiato.

Mai sentito parlare di NetPlan? Probabilmente no!
Netplan è una nuova utility di configurazione della rete a riga di comando introdotta in Ubuntu 17.10 per gestire e configurare facilmente le impostazioni di rete nei sistemi Ubuntu. Ti consente di configurare un’interfaccia di rete usando l’astrazione YAML. Funziona in combinazione con NetworkManager e i demoni di rete systemd-networkd (indicati come renderer, è possibile scegliere quale di questi utilizzare) come interfacce per il kernel.

Leggendo la configurazione di rete descritta in /etc/netplan/*.yaml, in questi tipi di file è possibile memorizzare le configurazioni per tutte le interfacce di rete.

In questo articolo, spiegheremo come configurare un indirizzo IP statico o dinamico di rete per un’interfaccia di rete in Ubuntu 18.04 usando l’utilità Netplan.

Questo nuovo strumento sostituisce il file delle interfacce statiche (/etc/network/interfaces) precedentemente utilizzato per configurare le interfacce di rete Ubuntu. Ora si deve usare /etc/netplan/*.yaml per configurare le interfacce di rete Ubuntu.

Elenca tutte le interfacce di rete attive su Ubuntu

Innanzitutto, è necessario identificare l’interfaccia di rete che si intende configurare. Puoi elencare tutte le interfacce di rete collegate sul tuo sistema usando il comando ifconfig come mostrato.

$ ifconfig -a

Dall’output del comando precedente, identifichiamo le interfacce collegate al sistema interfaccia ethernet e l’interfaccia loop back. Tuttavia, l’interfaccia ethernet ens33 non è stata configurata e non ha un indirizzo IP statico.

Configurare un indirizzo IP statico con Ubuntu Server 18.04

In questo esempio, configureremo un IP statico per l’interfaccia di rete ethernet. Apri il file di configurazione di netplan usando l’editor di testo come mostrato.

$ sudo nano /etc/netplan/01-netcfg.yaml 

Importante: nel caso in cui un file YAML non venga creato dal programma di installazione della distribuzione oppure il file YAML non sia presente nella directory /etc/netplan/ , è possibile generare la configurazione richiesta per i renderer con questo comando.

$ sudo netplan generate

Inoltre, i file generati automaticamente possono avere nomi di file diversi su desktop, server, istanze cloud ecc. (Ad esempio 01-network-manager-all.yaml o 01-netcfg.yaml), ma tutti i file in /etc/netplan/*.yaml verrà letto da netplan.

Quindi il file dovrebbe apparire come qui sotto:

network:
    ethernets:
        ens33:
            addresses: []
            dhcp4: true
    version: 2

Da notare è la sintassi del codice che assomiglia ad un file di dati JSON.
Quello riportato sopra è un file di configurazione renderer di rete predefinito per un server Ubuntu che utilizza la configurazione IP DHCP…. Se si desidera impostare un indirizzo IP statico, configurare il file come mostrato di seguito:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.0.30/24]
      gateway4: 192.168.0.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

network: è il nodo dell’interfaccia di configurazione
version: la versione da attribuire
renderer: il tipo di attribuzione al sistema per inizializzarlo (networkd, demone di avvio da sistema, NetworkManager, settaggio da GUI Ubuntu, sconsigliata)
ethernets: Nodo delle interfacce fisiche
ens33: id dell’interfaccia fisica di sistema (riconosciuta)
dhcp4: attivare o disabilitare il dhcp (no nel nostro caso di IP Statico)
address: tra parentesi [] IP statico da assegnate con portata massima della NM
gateway4: Indirizzo IP di interfaccia gateway di configurazione della rete.
nameservers: Nodo DNS
addresses: DNS 1 e 2 tra parentesi [] separati da comma (virgola) – DNS pubblici di Google

La proprietà address di un’interfaccia prevede una voce di sequenza, ad esempio [192.168.14.2/24, “2001: 1 :: 1/64”] o [192.168.56.110/24,] (vedere la pagina man di netplan per maggiori informazioni).

Vogliamo far notare la completa differenza di scrittura e sintassi da mantenere rispetto alle configurazioni nei sistemi Ubuntu server precedenti allocate su /etc/network/interfaces:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.30
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.8.4

Ora Salvate il file YAML nella sua posizione ed uscite. Quindi applicare le recenti modifiche alla rete usando il seguente comando netplan.

$ sudo netplan apply

Ora verificate ancora una volta tutte le interfacce di rete disponibili, l’interfaccia ethernet ens33 ora dovrebbe essere connessa alla rete locale e avere un indirizzo IP come mostrato nella seguente schermata.

$ ifconfig -a

Impostare l’indirizzo IP DHCP dinamico in Ubuntu Server 18,04 LMS

Per configurare l’interfaccia ethernet ens33 e ricevere dinamicamente un indirizzo IP tramite servizio DHCP, utilizzare semplicemente la seguente configurazione:

network:
 version: 2
 renderer: networkd
 ethernets:
   ens33:
     dhcp4: yes
     dhcp6: yes

Salvate il file ed uscite. Quindi applicare le recenti modifiche alla rete e verificare l’indirizzo IP utilizzando i seguenti comandi.

$ sudo netplan apply
$ ifconfig -a

D’ora in poi il sistema riceverà un indirizzo IP in modo dinamico da un router.

Potete trovare maggiori informazioni e opzioni di configurazione consultando la pagina man di netplan.

$ man netplan

Congratulazioni! Avete configurato correttamente una rete con indirizzi IP statici per i vostri server Ubuntu. Se avete domande, condividetele con noi sui social tramite il modulo di commento qui sotto. Oppure dalla nostra Pagina Facebook o dal Gruppo ufficiale Sistemisti di reti Italiani.

Corsi ed affini

[CORSO – CS01LWSA218]

Linux Web Server Administrator

Per chi ha esigenze di gestire web server a livello professionale. Ottima opportunità di competenza da applicare su contratti di management.

Iscriviti Dettaglio
[CORSO – CS08SDR01]

Sistemista di Reti

Dedicato a chi comincia o a chi vuole approfondire le proprie competenze in Networking. Rivolto a CED, Professionisti e appassionati.

IscrivitiDettaglio
 

Webmin non funziona dopo il suo aggiornamento

Chi ha l’esigenza di gestire un server Linux da remoto, può risultare una problematica per chi ha poca dimestichezza con strumenti come SSH e la riga di comando o per chi vuole sveltire uniformemente le procedure di gestione.

Con Webmin tutto diventa più semplice: creare nuovi utenti, condividere file, pianificare i backup, impostare le interfacce di rete, ma anche configurare Apache o MySQL. Il software ci fornisce un’intuitiva interfaccia web per le più consuete e affannose operazioni d’amministrazione di un sistema Unix. Basterà un moderno browser per gestire il nostro server a colpi di click.

Webmin in sintesi è costituito da un mini web server indipendente da Apache e dai servizi standard e da un certo numero di script CGI. Questi ultimi agiscono modificando i files di configurazione normalmente modificati a mano, senza alterare il loro standard editor. Webmin viene distribuito con una licenza stile BSD che ci consente non solo di modificarlo liberamente, ma anche di includerlo in applicazioni commerciali.

Ha una struttura modulare che ne permette l’espansione con software scritto da terze parti. I moduli standard, compresi nell’installazione di base, sono sufficienti per le più comuni esigenze. In caso vi troviate a dover gestire programmi un po’ particolari potete sempre consultare l’apposita sezione del sito che riporta i contributi di altri programmatori. Webmin a differenza di altre WebGUI come Plesk CPanell ecc. è freeware senza vincoli di utilizzo certificazione o licenze varie, tutt’ora risulta essere l’unica soluzione professional, per la gestione GUI utile senza intaccare lo standard editing e le prestazioni della macchina.

Dalla pagina di download possiamo scaricare il software in vari formati a seconda delle caratteristiche del nostro sistema operativo. Si va dalla generica tarball, utilizzabile da tutti, ai pacchetti .rpm o .deb per le principali distribuzioni Linux.

http://www.webmin.com/

Quando Webmin non si riavvia correttamente dopo l’aggiornamento

Ultimamente mi segnalano che Webmin dopo le regolari procedure di aggiornamento (assolutamente importanti), sembra scomparire dai browser e/o non funzionare più regolarmente.

Niente paura, è solo un bug che deficie con le ultime versioni di Ubuntu Server durante i processi di aggiornamento.

Una volta che Webmin si è aggiornato dall’apposito click sul pulsante in Dashboard l’installazione automaticamente scarica il nuovo software e lo aggiorna sovrascrivendo ai files precedenti, mantenendo il backup precedente.

Operazione fausta vuole che il processo o servizi non sia aggiornato dal sistema creando un errore come questo:

che impedisce appunto di avviare correttamente il servizio.

La soluzione è semplice!!

Accedere via SSH alla macchina da remoto (o direttamente sulla console) alla shell del sistema.
E digitare questi comandi:

$ sudo service webmin stop 
$ sudo service webmin start

E il gioco è fatto. Webmin ricomparirà magicamente sul nostro Browser.
Ora nella sezione di configurazione Webmin potete controllare e riavviare il servizio in automatico con il riavvio del sistema.