Ansible – automazione IT e Configuration Management (II parte)

Ansible + Vagrant Environment

Ansible + Vagrant Environment

 

 

 

 

 

 

Nel primo articolo “Ansible per l’automazione IT ed il Configuration Management” abbiamo descritto le caratteristiche principali di questo interessante prodotto per il Configuration Management. In questo secondo articolo descriveremo con degli esempi come utilizzare nel concreto Ansible.

Per preparare il nostro ambiente di lavoro sfrutteremo un’altro software, che rappresenta, anch’esso una delle grandi novita’ del Web degli ultimi mesi come Vagrant, di cui abbiamo parlato nell’articolo “Virtualizzazione e provisioning senza sforzo“.

configuriamoci l’ambiente Vagrant:

$ vagrant box add pre http://files.vagrantup.com/precise32.box
$ vagrant init precise32
$ vagrant up

a seguito dell’ultimo comando, vedremo dei messaggi come questi:

Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
Guest Additions Version: 4.2.0
VirtualBox Version: 4.3
[default] Mounting shared folders...
[default] -- /vagrant

Vagrant ha quindi scaricato e creato per noi una macchina virtuale Ubuntu Precise (32bit). Scorrendo i messaggi ci sono due cose importanti da notare: la prima è che il traffico sulla porta 2222 del nostro pc locale sarà inoltrato alla porta 22 della macchina virtuale; la seconda è che l’utente “vagrant” sulla macchina remota può connettersi con la password “vagrant” ed ha già i privilegi per diventare root con sudo. Aggiorniamo quindi l’inventario delle macchine che decidete di coinvolgere modificando il file /etc/ansible/hosts

Dopo aver preso confidenza con Vagrant iniziamo la configurazione dell’ambiente per Ansible, iniziando ad usarlo per automatizzare i compiti di ogni giorno.

Configuriamo il file /etc/ansible/hosts tramite comando:

# sudo bash -c 'echo [web] >> /etc/ansible/hosts'
# sudo bash -c 'echo 127.0.0.1:2222 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant >> /etc/ansible/hosts'

Verifichiamo che ansible sia in grado di leggere correttamente i parametri inseriti nel file hosts usando il seguente comando:

# ansible -m ping all
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}

Ansible facts
come possiamo essere sicuri che la macchina a cui ci stiamo connettendo sia quella giusta ? Diamo un’occhiata ai “facts”, ovvero a tutte le informazioni che Ansible raccoglie…

# ansible web -m setup | less

otteniamo cosi’ una serie di dati in formato JSON tra cui notiamo che il nostro nuovo server ha come hostname ‘localhost’.
A titolo didattico scriveremo un playbook per installare un webserver nginx sul nuovo server.

Ora apriamo un editor per iniziare a scrivere il nostro playbook che si chiamera’ nginx.yml :

--- PLAYBOOK ottimizzato su Centos Linux
- name: installa NGINX e avvia il servizio
   remote_user: root
   sudo: yes
   hosts: web
   tasks:
   - name: installazione Nginx
     apt: pkg=nginx state=installed update_cache=true
     notify:
     - start nginx
   handlers:
     - name: start nginx
     service: name=nginx state=started

Come possiamo notare nel playbook abbiamo editato una lista di task, uno per ogni “step” del nostro compito.
Se stiamo usando virtualbox come hypervisor, dobbiamo aggiungere una riga al file (bastera’ solo decommentarla) di configurazione di vagrant perché attivi il forwarding della porta 80 della guest sulla porta 8080 del nostro pc.

(vedi https://docs.vagrantup.com/v2/networking/forwarded_ports.html)

config.vm.network "forwarded_port", guest: 80, host: 8080

e dare il comando per ricaricare la virtual machine con la nuova configurazione:

vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Machine booted and ready!

Ora possiamo lanciare il playbook

# ansible-playbook nginx.yml

PLAY [installa NGINX e avvia il servizio] *****************************

GATHERING FACTS ***************************************************************
ok: [127.0.0.1]

TASK: [installazione Nginx] ***************************************************
changed: [127.0.0.1]

NOTIFIED: [start nginx] *******************************************************
changed: [127.0.0.1]

PLAY RECAP ********************************************************************
127.0.0.1 : ok=3 changed=2 unreachable=0 failed=0

sulla macchina virtuale potrete visualizzare, dal syslog, quello che sta accadendo:

ansible-apt: Invoked with dpkg_options=force-confdef,force-confold upgrade=None force=False package=[‘nginx’] purge=False state=installed update_cache=True pkg=nginx default_release=None install_recommends=True deb=None cache_valid_time=None
Mar 19 15:59:33 precise32 ansible-service: Invoked with name=nginx pattern=None enabled=None state=started sleep=None arguments= runlevel=default

ora sulla macchina virtuale mi ritrovo con l’nginx attivo e rispondente all’indirizzo 127.0.0.1:8080

Welcome to nginx!

Come gia accennato nel primo articolo la curva di apprendimento di questo ottimo strumento di Management dei server e’ davvero bassa e funzionale, ed in poco tempo si e’ in grado di gestire un ambiente ad alto volume di macchine.

Questa è solo una semplice introduzione al mondo di Ansible, e prima di concludere vi faccio inoltre presente che Ansible non è solo usufruibile da linea di comando ma presso il sito ufficiale è disponibile una web dashboard che permette di controllare i job, avere report, statistiche e così via.

Esiste anche Ansible Galaxy , che è invece un repository comunitario di “ricette”, playbooks, task moduli e tutto quello che si può immaginare … Quindi se doveste installare e configurare software come tomcat, oracle, mongodb, jenkins, drupal, rabbitmq e tanti altri, troverete già tutto pronto.
Di sicuro una base di partenza molto comoda per le vostre personalizzazioni!

Se tutto ciò non bastasse ancora, Ansible ha una API estremamente chiara e flessibile per scrivere moduli custom in Python o qualsiasi altro linguaggio, un esempio concreto

#AnsibleConfigurationManagement

Google – fai decollare le tue ricerche sul web

Google Search funzioni avanzate

Google Search funzioni avanzate

Le funzioni che non conoscevi

In un precedente post “esistono alternative a Google” abbiamo mostrato come esistano degli ottimi concorrenti al motore di ricerca per antonomasia.
Fatto rimane che tutti usiamo Google quotidianamente per cercare informazioni, consigli, news, lavoro, informazioni scientifiche, e chi più ne ha più ne metta.
Oramia, da quasi vent’anni il motore di ricerca di Mountain View rende le nostre ricerche su qualsiasi argomento infinitamente più facili e rapide, ma non tutti sanno che la barra di Google offre molte altre funzioni, oltre alla ricerca semplice, alcune davvero utilissime, per portare la vostra epserienza di “Ricerca” verso livelli mai immaginati.

PS: la cosa da tenere sempre ben presente e’ che la lingua di Google e’ l’inglese, quindi molte opzioni funzioneranno soltanto se espresse in lingua inglese.

1. ESCLUDI DALLA RICERCA
Escludi una o più parole dalla ricerca facendole precedere dal segno “-“. Una funzione utile, per esempio,

bassi elettrici -chitarre

2. RICERCA ALL’INTERNO DI UN SITO
Cerca una o più parole all’interno di un sito specifico scrivendo “site:” e l’URL del sito.

docker site:tuttiperlinux.com

3. CALCOLI
Lascia che sia Google a svolgere i calcoli al posto tuo.

50% of 3500

(premuto invio comparira’ una calcolatrice con il risultato)

4. RICERCA PER TITOLO
Scrivendo “intitle: ” prima delle parole della ricerca, compariranno come risultati solo quelli che contengono quelle parole nel titolo della pagina.

intitle: provisioning con ansible

5. DUE RICERCHE CONTEMPORANEAMENTE
Fai due ricerche contemporaneamente aggiungendo “OR” fra i termini della query.

"monster of rock" OR "wacken"

6. RICERCA PER LINK
Cerca i siti che indirizzano a un determinato sito scrivendo “link:” e la URL di quest’ultimo

link: il mondo di linux

7. CONVERTITORE
Converti in un attimo valute…

50 euros to dollars

…e unità di misura.

50 inch to cm

8. RICERCA DI CANZONI
Non ricordi il titolo di una canzone che hai sentito? Cerca le parole che hai in mente mettendo un asterisco al posto di quelle che non ti ricordi.

quelli che * pensano

9. RICERCA PER TIPO DI FILE
Cerchi un PDF o una presentazione PowerPoint su un determinato argomento? Cerca le parole chiave seguite da “filetype:” e l’estensione del file (ad esempio filetype:pdf o filetype:ppt).

virtualizzare con kvm filetype:ppt

10. VIRGOLETTE
Mettendo fra virgolette le parole della ricerca, usciranno solo i risultati che le riportano in quel preciso ordine.

"cerco un centro di gravita"

11. RICERCA PER RANGE
Due puntini di sospensione consentono di svolgere una ricerca all’interno di un range determinato, come per data o per prezzo (per esempio €100..€200).

squier jazz bass €100..€200

 

#GoogleSearchfunzioniavanzate

Ready NAS 716

Netgear ReadyNAS 716

Netgear ReadyNAS 716

Netgear Ready NAS 716

Il nuovo prodotto della Netgear e’ un’unita’ desktop sicuramente ultra veloce ma decisamente cara, vediamo il perche’.

Presentato dalla Netgear come il NAS Desktop piu’ veloce del mondo. Il ReadyNAS 716 ha sei alloggiamenti (ed e’ possibile espanderlo ben oltre i 28 TB) ed un processorre quad core Intel-Ivy Bridge Xeon E3 e ben 16 GB di RAM ECC, ma non e’ tutto, potrete contare anche su una coppia di porte Gigabit e due interfacce 10GbE.

Tutto cio rende questo prodotto la migliore soluzione di storage, infatti il ReadyNAS 716 combina un’innovazione leader del settore a una semplicità d’uso senza precedenti in una soluzione di storage di fascia alta con caratteristiche quali :

  • Snapshot illimitate.
  • Thin provisioning.
  • Replica gestita dal cloud.
  • Crittografia e antivirus in tempo reale.

In breve, ReadyNAS offre maggiori possibilità di gestione dei dati aziendali rispetto alle soluzioni di storage tradizionali.

Specifiche di utilizzo

5 livelli di protezione

  • Protezione RAID automatica contro guasti disco
  • Ripristino di snapshot in un qualsiasi punto nel tempo
  • Real-time anti-virus per la protezione da virus e malware
  • Protezione Bit rot contro il degrado di media
  • Backup all’interno del cloud per proteggere i tuoi dati critici

 

Replica dati Off-site

ReadyNAS Replicate è una soluzione per il Disaster Recovery potente e semplice da usare, progettata per soddisfare le esigenze di qualsiasi tipo di azienda, sia se si vogliono spostare i propri dati da un data center all’altro o tra una filiale e la sede centrale.

 

Cloud Storage per l’ufficio

Oggi giorno poter accedere ai propri dati in qualsiasi momento, ovunque ci si trovi e da tutti i dispositivi mobili è la necessità più diffusa tra le aziende. Il cloud pubblico, però, non sempre riesce a garantire la privacy e la sicurezza dei dati archiviati. La piattaforma ReadyCLOUD di Netgear, invece, permette di creare un cloud privato in pochi click e a costo zero.

Il firmware utilizzato e’ un  ReadyOS che si caratterizza in questo modello per ilpassaggio dal EXT4 al BTRFS.

L’interfaccia di gestione Web, che sicuramente e’ forse un po’ datata nello stile ma sicuramente piacevole da usare e facile da imparare, dotata di strumenti molto semplici che permettono, ad esempio, di gestire i volumi e di collegare tra di loro gli adattatori di rete, con inoltre, una buona fornitura di strumenti/tool per il monitoraggio di ogni singola funzionalita’.

Unico neo, prezzo a parte, e’ rappresentato dal piccolo gancetto presente su ciascun alloggiamento disco, che ne impedisce la rimozione accidentale ma che comunque rimane privo di veri e propri blocchi fisici di protezione, compreso l’accesso dallo sportello frontale.

Con il ReadyNas 716 e’ possibile raggiungere la velocita’ di 480 MB al secondo in lettura e di 420 MB in scrittura.

 

GIUDIZIO

Nome prodotto : ReadyNas 716
Produttore : Netgear (www.netgear.it)
Prezzo : 3.000 circa (senza dischi)

Funzioni          voto 10
Prestazioni       voto 10
Facilita’ d’uso   voto 8
Qualita’/Prezzo voto 7

Giudizio finale  voto 9

E’ il NAS Desktop attualmente piu’ veloce sul mercato, ma il suo alto prezzo lo colloca nella fscia dei server e dei dispositivi di archiviazione montati sui rack.

 
#DesktopNASpiuvelocedelmondo

Nginx HTTP 2.0 supportato entro fine 2015

Nginx e supporto HTTP 2.0

Nginx e supporto HTTP 2.0

Nginx supporta da sempre l’attuale protocollo HTTP 1.1 ed il protocollo di Google SPDY. Con l’annuncio di HTTP 2.0, Nginx è pronta a convertire il supporto SPDY verso il neonato HTTP 2.0 entro la fine di quest’anno.

Il protocollo HTTP 2.0 è la nuova generazione del protocollo attuale e su cui si basa l’intera Internet, che viene adesso rinnovato dopo circa 16 anni.

Questo non significa certo che lo standard è stato finalizzato ed è appropriato all’operatività, ma indica che tutte le sue specifiche sono state definite in modo conclusivo e la documentazione può passare al gruppo RFC per l’approvazione finale come standard definitivo.

Comunque, anche dopo la dichiarazione a standard, il protocollo non entrera’ subito in attività, anche perché dovrà, prima di tutto, essere implementato e supportato nei browser e nei Web server.

Fra i Web server, Nginx si dice comunque pronto a supportare questa nuova tecnologia e il motivo di questa sicurezza sta nel pieno supporto alla versione draft 3.1 di SPDY, di cui Google ha deciso l’interruzione dello sviluppo e l’esclusione da Chrome.

Il fatto che il protocollo HTTP 2.0 sia gran parte basato su SPDY permette a Nginx di avere già una solida base di codice pronto per essere riutilizzato ai fini di ospitare il nuovo HTTP quando questo diventerà lo standard. Secondo Owen Garrett, responsabile di prodotto per Nginx : ” l’implementazione nel Web browser sarà facile e snella, in quanto la maggior parte dei siti Web SPDY già viene eseguita correttamente in Nginx “.

HTTP/2 si baserà, inoltre, sulle stesse API che già conoscono e usano gli sviluppatori del web, ma in più offrirà feature esclusive a cui questi possono attingere. Fino ad oggi, ad esempio, bisognava adottare alcune tecniche di ottimizzazione per impedire alla pagina di effettuare troppe richieste HTTP. Il nuovo protocollo permetterà invece l’esecuzione di un numero superiore di richieste contemporanee, attraverso una tecnica chiamata multiplexing , senza che queste blocchino il caricamento degli elementi della pagina.

HTTP/2 effettua un numero di connessioni inferiore rispetto alle tecnologie attuali, fattore che si traduce con un carico minore richiesto ai server e alle reti per il caricamento dei dati. Il nuovo protocollo supporta TLS ma non obbligherà all’implementazione del layer di crittografia.

Uno dei più importanti cambiamenti di HTTP 2.0 infatti sara’ la crittografia basata su protocollo TLS, a cui Nginx dice di voler dare un approccio implementativo persistente. Inoltre, il nuovo protocollo Internet introduce alcune differenze nella gestione delle priorità, in modo da fornire un maggiore controllo sui flussi di traffico. Sempre secondo Garrett, la maggiore sfida non sarà tanto nell’implementazione nei browser e nei Web server, quanto nell’adeguamento dei siti Web, che dovranno essere ottimizzati per il protocollo HTTP 2.0.

“Ci potrebbe essere molto lavoro di ottimizzazione e re-ingegnerizzazione dei siti Web, soprattutto per mantenere la compatibilità con i client più anziani” ha detto Garrett.

 

Proteggiti da attacchi DoS e DDoS

APF-Firewall Server Protection

APF-Firewall Server Protection

Proteggere il server dagli attacchi DoS e DDoS 

Un attacco DoS (Denial of Service), ha come scopo il rendere inutilizzabile un determinato servizio sul web, inondandolo di richieste fittizie, quindi qualsiasi servizio esposto su internet che fornisce servizi di rete basati sul protocollo TCP/IP e soggetto al potenziale rischio di attacchi DoS. La differenza tra DoS e DDoS (Distributed Denial of Service) sta nel numero di macchine (PC, server, cellulari, in generale, qualsiasi dispositivo connesso ad internet che sia stato compromesso) utilizzate per lanciare l’attacco. Nel caso di un DoS l’attacco avviene da una sola macchina, mentre (nel ben piu difficile caso da bloccare) nel DDoS l’attacco puo avvenire contemporaneamente da centinaia di macchine diverse.

Come potrete quindi immaginare tutti i consigli contenuti in questo articolo non vi assicureranno una protezione totale contro i DDoS, perché quando sono ben organizzati e l’attacco arriva da un grande numero di macchine diverse, l’unico modo per cercare di bloccarlo o più realisticamente, mitigarlo, è agire a monte, direttamente sull’infrastruttura del vostro provider (che quindi dovrete contattare), a meno che non abbiate una vostra infrastruttura di rete.

Come riconoscere un attacco ?

Questa è sicuramente la prima cosa da imparare, ossia imparare a riconoscere un attacco DoS, perche’ tante volte si corre il rischio di pensare ad un attacco di questo tipo appena i servizi ospitati sul server risultano irraggiungibili, quando invece le cose più probabili sono ben altre.
Innanzitutto se siete sotto attacco vedrete sicuramente un picco (che può variare da pochi a diversi mbit/s) nei vostri grafici della banda utilizzata, ed un picco nelle connessioni netstat, anche per questo sarebbe bene generare dei grafici di tutto rispetto magari tramite Munin (di cui parleremo nel prossimo articolo) o con Vnstat, i servizi più importanti sul vostro server.

Una volta accertato che ci sono effettivamente picchi anomali nell’utilizzo della banda, usate questo comando per visualizzare lo stato di tutte le connessioni attive sul vostro server:

netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort –n

L’output sarà qualcosa del genere:

1 CLOSING

1 established

1 Foreign

7 LAST_ACK

25 FIN_WAIT1

26 LISTEN

69 FIN_WAIT2

484 TIME_WAIT

542 ESTABLISHED

Se notate che ci sono diverse connessioni in stato SYS_SENT siete sicuramente sotto attacco, a questo punto non resta altro da fare che individuare l’IP o gli IP dai quali arrivano più connessioni, potete farlo con questo comando:

netstat -atun | awk ‘{print $5}’ | cut -d: -f1 | sed -e ‘/^$/d’ |sort | uniq -c | sort –n

A questo punto avrete una lista ordinata per numero di connessioni aperte da ogni IP, ed alla fine, molto probabilmente, avrete gli IP delle macchine dalle quali vi stanno attaccando, ora non resta che bloccare questi IP.
Una utility molto utile per analizzare il traffico di rete e vederlo in tempo reale è tcptrack, una volta installata usate i seguenti comandi per avviare il monitoring:

tcptrack -i eth0 vi mostrerà tutto il traffico attivo sulla scheda di rete

tcptrack -i eth0 port 80 vi mostrerà tutto il traffico sulla porta 80

Es:

tcptrack -i eth0 src or dst 192.168.2.138

vi mostrerà tutto il traffico generato dall’ip specificato. In più tcptrack vi mosterà in tempo reale l’utilizzo della banda.

Bloccare un attacco

Ora che sappiamo individuare un attacco e capire da quali IP sta arrivando possiamo cercare di bloccarlo, vediamo come.
Premesso che la cosa migliore sarebbe comunicare gli IP degli attaccanti al vostro provider così che possano essere bloccati a monte e che non possano quindi influire neanche minimamente sulla vostra banda disponibile, esistono principalmente due metodi per bloccare questi IP sul vostro server: bloccarli con iptables, oppure metterli in nullroute (che è, secondo me, preferibile).

Per bloccare questi IP da itptables potete usare questo semplice comando:

iptables -A INPUT -s IP-ATTACCANTE -j DROP

Invece, per mettere un IP in nullroute, dobbiamo lanciare questo comando:

route add IP-ATTACANTE gw 127.0.0.1 lo

Possiamo anche mettere in nullroute un’ intera subnet ad esempio così:

route add -net 192.168.2.0/24 gw 127.0.0.1 lo

Verifichiamo quindi che i settaggi siano stati effettivamente applicati con

netstat -nr

Per rimuovere il nullroute possiamo utilizzare il comando route delete IP

Per far sì che i nullroute impostati vengano mantenuti al reboot dovrete scrivere gli stessi comandi di prima nel file /etc/rc.local


Come prevenire gli attacchi

Fin’ora abbiamo visto come comportarci una volta sotto attacco, ora vediamo cosa possiamo fare per evitare di trovarci coi servizi down e doverli ripristinare.
Per prima cosa consiglio di installare APF (Advanced Policy Firewall), un firewall basato su iptables che bloccherà autonomamente molti degli attacchi conosciuti, confrontandone i pattern, in più, grazie alla sua semplice e versatile configurazione diventa un’ottimo sostituto di iptables che spesso risulta abbastanza macchinoso da mantenere.

Potete installare APF usando un packet manager tipo apt o yum, oppure compilando l’ultima versione :

Scaricate l’ultima versione stabile:

wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz

Scompattate il file appena scaricato: tar -xvzf apf-current.tar.gz

Entrate nella directory creata ed eseguite ./install.sh

A questo punto APF va configurato a dovere e, per farlo, bastera’ editare il file /etc/apf/conf.apf .

Per prima cosa bisognera’ settare il parametro DEVEL_MODE a 1, così se sbagliate qualche settaggio e vi chiudete fuori dal server, dopo 5 minuti il firewall verrà automaticamente stoppato.

Questo parametro indica se apf è in modalità sviluppo (e quindi non applica le regole) o in modalità produzione e quindi rende effettive le regole del firewall, prima di impostarlo a 0 per renderlo attivo modifichiamo il resto delle regole altrimenti rischiamo di chiuderci fuori dal server

Impostiamo le porte in ascolto modificando il paramentro IG_TCP_CPORTS

# Common inbound (ingress) TCP ports
IG_TCP_CPORTS="22,21,20,80,25,53,110,143,443,2222,587,953,993,995,4949"

io utilizzo queste impostazioni che sono per i servizi ssh,ftp,web,mail (pop/imap/smtp), directadmin e munin

e queste sono le impostazioni per le porte in uscita
# Common outbound (egress) TCP ports
EG_TCP_CPORTS="21,25,80,443,43"

e poi più sotto impostiamo a “1″ le seguenti variabili che ci permettono di scaricare delle liste di ip conosciuti come malevoli in modo da filtrare a priori il loro traffico

DLIST_PHP="1"
DLIST_SPAMHAUS="1"
DLIST_DSHIELD="1"
DLIST_RESERVED="1"

Ricordatevi di rimettere su 0 questo parametro una volta terminata la configurazione, altrimenti il firewall funzionerà solo per 5 minuti ad ogni riavvio.

Settate su 1 tutti i parametri che abilitano le liste di network malefici dai quali le connessioni saranno rifiutate (DLIST_*).

Settate manualmente le porte TCP che devono rimanere aperte nella variabile IG_TCP_CPORTS (ad esempio la 80 per il traffico web, se avete modificato la porta di ssh come avreste dovuto fare ricordatevi di settarla qua, altrimenti vi chiuderete fuori dal server), tutte le altre risulteranno chiuse.

Stessa cosa per le porte UDP subito sotto, se ne fate uso.

Impostando il parametro SYSCTL_SYNCOOKIES su 1, vi proteggerà dagli attacchi di tipo syn flood.

salviamo ed avviamo apf con

apf -s

#Proteggiti#AttacchiDoSeDDoS