Consigli pratici, esempi e tunnel SSH

Consigli pratici, esempi e tunnel SSH
Esempi pratici SSH, che porteranno le tue capacità di amministratore di sistema remoto a un nuovo livello. Comandi e suggerimenti aiuteranno non solo a utilizzare SSH, ma anche a muoversi più consapevolmente nella rete.

Conoscere alcuni trucchi ssh è utile per qualsiasi amministratore di sistema, ingegnere di rete o specialista della sicurezza.

Esempi pratici di SSH

  1. Proxy socks SSH
  2. Tunnel SSH (inoltro porte)
  3. Tunnel SSH verso un terzo host
  4. Tunnel SSH inverso
  5. Proxy inverso SSH
  6. Installazione di VPN tramite SSH
  7. Copia della chiave SSH (ssh-copy-id)
  8. Esecuzione remota di comandi (non interattiva)
  9. Intercettazione remota dei pacchetti e visualizzazione in Wireshark
  10. Copia di una cartella locale su un server remoto tramite SSH
  11. Applicazioni GUI remote con inoltro SSH X11
  12. Copia remota di file utilizzando rsync e SSH
  13. SSH tramite la rete Tor
  14. SSH a un'istanza EC2
  15. Modifica di file di testo utilizzando VIM tramite ssh/scp
  16. Montare SSH remoto come una cartella locale con SSHFS
  17. Multiplexing SSH con ControlPath
  18. Streaming video tramite SSH con VLC e SFTP
  19. Autenticazione a due fattori
  20. Salti tra host con SSH e -J
  21. Blocco dei tentativi di brute force SSH con iptables
  22. SSH Escape per modificare l'inoltro porte

Iniziamo dalle basi

Analisi della riga di comando SSH

Nell'esempio seguente vengono utilizzati parametri comuni, frequentemente riscontrati durante la connessione a un server remoto SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: l'output delle informazioni di debug è particolarmente utile per analizzare i problemi di autenticazione. Può essere usato più volte per fornire ulteriori informazioni.
  • - p 22: porta per connettersi a un server remoto SSH. 22 non è necessario specificarlo, poiché è il valore predefinito, ma se il protocollo è su un'altra porta, lo indichiamo con il parametro -p. La porta di ascolto è specificata nel file sshd_config nel formato Port 2222.
  • -C: compressione per la connessione. Se hai una connessione lenta o stai visualizzando molto testo, questo potrebbe accelerare la comunicazione.
  • neo@: la stringa prima del simbolo @ indica il nome utente per l'autenticazione sul server remoto. Se non lo indichi, verrà utilizzato per impostazione predefinita il nome utente dell'account con cui sei attualmente connesso (~$ whoami). Puoi anche specificare l'utente con il parametro -l.
  • remoteserver: nome host a cui ci si connette ssh, può essere un nome di dominio completo, un indirizzo IP o qualsiasi host nel file hosts locale. Per connettersi a un host che supporta sia IPv4 che IPv6, è possibile aggiungere alla riga di comando un parametro -4 o -6 per una risoluzione corretta.

Tutti i parametri sopra elencati sono facoltativi, tranne remoteserver.

Utilizzo del file di configurazione

Anche se molti sono familiari con il file sshd_config, esiste anche un file di configurazione per il comando ssh. Il valore predefinito ~/.ssh/config, ma può essere impostato come parametro per l'opzione -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

Nel file di configurazione ssh di esempio sopra, ci sono due record host. Il primo indica tutti gli host, per tutti si applica il parametro di configurazione Port 2222. Il secondo indica che per l'host remoteserver dovrebbe essere utilizzato un nome utente, una porta, un FQDN e un IdentityFile diversi.

Il file di configurazione può risparmiare molto tempo nella digitazione dei caratteri, permettendo di applicare automaticamente configurazioni avanzate durante la connessione a host specifici.

Copiare file tramite SSH usando SCP

Il client SSH viene fornito con altri due strumenti molto comodi per copiare file attraverso una connessione ssh crittografata. Di seguito è riportato un esempio dell'uso standard dei comandi scp e sftp. Si noti che molti parametri per ssh si applicano anche a questi comandi.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

In questo esempio il file mypic.png è stato copiato in remoteserver nella cartella /media/data ed è stato rinominato in mypic_2.png.

Non dimenticare la differenza nel parametro della porta. Su questo ci cascano molti che avviano scp dalla riga di comando. Qui il parametro della porta -P, e non -p, proprio come nel client ssh! Dimenticherai, ma non preoccuparti, tutti dimenticano.

Per coloro che sono familiari con la console ftp, molti dei comandi sono simili in supportano anch'essi il parametro. Puoi fare push, put e ls, come desideri.

sftp neo@remoteserver

Esempi pratici

In molti di questi esempi è possibile ottenere il risultato con metodi diversi. Come in tutti i nostri tutorial e esempi, si dà la preferenza a esempi pratici che fanno semplicemente il loro lavoro.

1. Proxy socks SSH

La funzione SSH Proxy numero 1 per un motivo valido. È più potente di quanto molti pensino e ti dà accesso a qualsiasi sistema a cui ha accesso il server remoto, utilizzando praticamente qualsiasi applicazione. Il client ssh può tunnelare il traffico attraverso un server proxy SOCKS con un semplice comando. È importante capire che il traffico verso sistemi remoti proviene dal server remoto, come verrà indicato nei log del server web.

localhost:~$ ssh -D 8888 user@remoteserver

localhost:~$ netstat -pan | grep 8888
tcp        0      0 127.0.0.1:8888       0.0.0.0:*               LISTEN      23880/ssh

Qui stiamo avviando un proxy SOCKS sulla porta TCP 8888, il secondo comando controlla che la porta sia attiva in ascolto. 127.0.0.1 indica che il servizio sta funzionando solo su localhost. Possiamo utilizzare un comando leggermente diverso per ascoltare tutte le interfacce, inclusi ethernet o wifi, il che consentirà ad altre applicazioni (browser, ecc.) nella nostra rete di connettersi al servizio proxy tramite il proxy SOCKS ssh.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

Ora possiamo configurare il browser per connettersi al proxy SOCKS. In Firefox seleziona Impostazioni | Generale | Impostazioni di rete. Specifica l'indirizzo IP e la porta per la connessione.

Consigli pratici, esempi e tunnel SSH

Fai attenzione all'opzione in fondo al modulo affinché le richieste DNS del browser passino anche attraverso il proxy SOCKS. Se utilizzi un server proxy per crittografare il traffico web nella rete locale, vorrai sicuramente selezionare questa opzione affinché le richieste DNS vengano tunnelizzate attraverso la connessione SSH.

Attivazione del proxy SOCKS in Chrome

Avviare Chrome con specifici parametri della riga di comando attiva il proxy SOCKS, così come il tunneling delle richieste DNS dal browser. Fidati, ma verifica. Usa tcpdump per controllare che le richieste DNS non siano più visibili.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

Utilizzare altre applicazioni con il proxy

Ricorda che molte altre applicazioni possono utilizzare il proxy SOCKS. Il browser web è semplicemente il più popolare tra essi. Alcune applicazioni hanno opzioni di configurazione per attivare il server proxy. Altre necessitano di un piccolo aiuto tramite un programma ausiliario. Ad esempio, proxychains consente di avviare tramite proxy SOCKS Microsoft RDP e altro.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Le opzioni di configurazione del proxy SOCKS vengono definite nel file di configurazione di proxychains.

Suggerimento: se utilizzi desktop remoto da Linux a Windows? Prova il client FreeRDP. Questa è un'implementazione più moderna rispetto a rdesktop, con un'interazione molto più fluida.

Uso di SSH tramite un proxy socks

Se ti trovi in un caffè o in un hotel e sei costretto a usare un WiFi piuttosto inaffidabile. Avviamo localmente un proxy ssh dal laptop e stabilizziamo un tunnel ssh nella rete domestica su un Raspberry Pi locale. Utilizzando il browser o altre applicazioni configurate per il proxy socks, possiamo accedere a qualsiasi servizio di rete nella nostra rete domestica o navigare in Internet tramite la connessione domestica. Tutto tra il tuo laptop e il server domestico (via Wi-Fi e Internet fino a casa) è crittografato nel tunnel SSH.

2. Tunnel SSH (port forwarding)

Nella sua forma più semplice, un tunnel SSH apre semplicemente una porta nel tuo sistema locale, che si connette a un'altra porta all'altro capo del tunnel.

localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver

Analizziamo il parametro -L. Può essere visto come il lato di ascolto locale. Pertanto, nell'esempio sopra, la porta 9999 viene ascoltata sul lato localhost e viene inoltrata tramite la porta 80 su remoteserver. Nota che 127.0.0.1 si riferisce al localhost sul server remoto!

Facciamo un passo avanti. Nell'esempio seguente, le porte di ascolto vengono collegate ad altri nodi della rete locale.

localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

In questi esempi ci connettiamo a una porta su un server web, ma potrebbe essere un server proxy o qualsiasi altro servizio TCP.

3. Tunnel SSH verso un host esterno

Possiamo utilizzare gli stessi parametri per connettere un tunnel da un server remoto a un altro servizio in esecuzione su un terzo sistema.

localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

In questo esempio, inoltriamo il tunnel da remoteserver al server web in esecuzione su 10.10.10.10. Il traffico da remoteserver a 10.10.10.10 non è più in un tunnel SSH. Il server web su 10.10.10.10 considererà remoteserver come origine delle richieste web.

4. Tunnel SSH inverso

Qui configuriamo una porta di ascolto sul server remoto, che si connetterà nuovamente a una porta locale sul nostro localhost (o su un altro sistema).

localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver

In questa sessione SSH viene stabilita una connessione dalla porta 1999 su remoteserver alla porta 902 sul nostro client locale.

5. Proxy inverso SSH

In questo caso, impostiamo un proxy socks sulla nostra connessione ssh, tuttavia il proxy ascolta all'estremità remota del server. Le connessioni a questo proxy remoto ora appaiono dal tunnel come traffico dal nostro localhost.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

Risoluzione dei problemi con i tunnel SSH remoti

Se riscontri problemi con le opzioni SSH remote, controlla usando netstat, a quali altre interfacce è connessa la porta in ascolto. Anche se nei nostri esempi abbiamo indicato 0.0.0.0, se il valore GatewayPorts in sshd_config è impostato su no, allora il listener sarà vincolato solo a localhost (127.0.0.1).

Avviso di sicurezza

Tieni presente che l'apertura di tunnel e proxy socks può consentire l'accesso a risorse di rete interne da reti non sicure (ad esempio, Internet!). Questo può rappresentare una seria minaccia alla sicurezza, quindi assicurati di capire cosa rappresenta il listener e a cosa ha accesso.

6. Installazione di VPN su SSH

Un termine comune tra gli specialisti di metodi d'attacco (pentester e simili) è "punto d'appoggio in rete". Dopo aver stabilito una connessione in un sistema, quel sistema diventa un gateway per ulteriori accessi alla rete. Un punto d'appoggio che consente di muoversi in larghezza.

Per un tale punto d'appoggio, possiamo utilizzare un proxy SSH e proxychains, ma ci sono alcune limitazioni. Ad esempio, non sarà possibile lavorare direttamente con i socket, quindi non potremo eseguire la scansione delle porte all'interno della rete attraverso Nmap SYN.

Utilizzando questa opzione VPN più avanzata, la connessione scende a livello 3. Poi possiamo semplicemente indirizzare il traffico attraverso il tunnel, usando la normale routizzazione di rete.

Il metodo utilizza ssh, iptables, interfacce tun e routizzazione.

Prima di tutto, dobbiamo impostare questi parametri in sshd_config. Poiché stiamo apportando modifiche alle interfacce sia del sistema remoto che di quello client, abbiamo bisogno dei diritti di root da entrambe le parti.

PermitRootLogin yes
PermitTunnel yes

Poi stabiliremo la connessione ssh, utilizzando un parametro che richiede l'inizializzazione dei dispositivi tun.

localhost:~# ssh -v -w any root@remoteserver

Ora dovremmo avere un dispositivo tun quando mostriamo le interfacce (# ip a). Il passo successivo aggiungerà indirizzi IP alle interfacce tunnel.

Lato client SSH:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

Lato server SSH:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

Ora abbiamo un percorso diretto verso un altro host (route -n e ping 10.10.10.10).

È possibile instradare qualsiasi sottorete tramite un host dall'altro lato.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

Dall'altra parte deve essere abilitato ip_forward e iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

Boom! VPN tramite tunnel SSH a livello 3. Questa è davvero una vittoria.

Se ci sono problemi, usa tcpdump e ping, per identificare la causa. Poiché stiamo operando a livello 3, i nostri pacchetti icmp passeranno attraverso questo tunnel.

7. Copia della chiave SSH (ssh-copy-id)

Ci sono diversi modi per farlo, ma questo comando fa risparmiare tempo evitando di copiare i file manualmente. Copia semplicemente ~/.ssh/id_rsa.pub (o la chiave predefinita) dal tuo sistema in ~/.ssh/authorized_keys sul server remoto.

localhost:~$ ssh-copy-id user@remoteserver

8. Esecuzione remota di comandi (non interattivo)

Il comando ssh può essere combinato con altri comandi per un'interfaccia comoda. Aggiungi semplicemente il comando che desideri eseguire sull'host remoto come ultimo parametro tra virgolette.

localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php

In questo esempio grep viene eseguito sul sistema locale dopo che il log è stato scaricato tramite il canale ssh. Se il file è grande, è più comodo eseguire grep dall'altra parte, racchiudendo entrambe le comandi tra virgolette doppie.

Un altro esempio esegue la stessa funzione di ssh-copy-id dal esempio 7.

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. Acquisizione remota di pacchetti e visualizzazione in Wireshark

Ho preso uno dei nostri esempi con tcpdump. Usalo per acquisire pacchetti da remoto con il risultato direttamente nell'interfaccia grafica di Wireshark locale.

:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -

10. Copia di una cartella locale su un server remoto tramite SSH

Un bel trucco che comprime la cartella utilizzando bzip2 (questo è il parametro -j nel comando tar), e poi estrae lo stream bzip2 dall'altra parte, creando un duplicato della cartella sul server remoto.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. Applicazioni GUI remote con inoltro SSH X11

Se sul client e sul server remoto sono installati gli "X", puoi eseguire comandi GUI da remoto, visualizzando la finestra sul tuo desktop locale. Questa funzione esiste da tempo, ma è ancora molto utile. Esegui un browser web remoto o anche la console di VMware Workstation, come faccio in questo esempio.

localhost:~$ ssh -X remoteserver vmware

È richiesta una stringa X11Forwarding yes nel file sshd_config.

12. Copia remota di file utilizzando rsync e SSH

rsync è molto più comodo scp, se è necessaria una copia di sicurezza periodica di una directory, un gran numero di file o file molto grandi. Qui c'è una funzione di ripristino dopo un'interruzione del trasferimento e copia solo dei file modificati, che salva traffico e tempo.

In questo esempio viene utilizzata la compressione gzip (-z) e la modalità archivio (-a), che include la copia ricorsiva.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH attraverso la rete Tor

La rete anonima Tor può tunnelizzare il traffico SSH con il comando torsocks. Il comando seguente passerà un proxy ssh attraverso Tor.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Torsocks utilizzerà per il proxy la porta 9050 su localhost. Come sempre quando si utilizza Tor, è necessario controllare attentamente quale traffico viene tunnelizzato e altri problemi di sicurezza operativa (opsec). Dove vanno le tue richieste DNS?

14. SSH a un'istanza EC2

Per connettersi a un'istanza EC2 è necessaria una chiave privata. Scaricala (con estensione .pem) dalla console di gestione di Amazon EC2 e modifica le autorizzazioni (chmod 400 my-ec2-ssh-key.pem). Conserva la chiave in un luogo sicuro o inseriscila nella tua cartella ~/ .ssh /.

localhost:~$ ssh -i ~/ .ssh /my-ec2-key.pem ubuntu@my-ec2-public

Parametro -i indica semplicemente al client ssh di utilizzare questa chiave. Il file ~/.ssh/config è perfetto per configurazioni automatiche che utilizzano la chiave per connettersi all'host ec2.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/ .ssh /my-ec2-key.pem

15. Modifica di file di testo con VIM tramite ssh/scp

Per tutti gli amanti vim questo consiglio farà risparmiare un po' di tempo. Con vim i file possono essere modificati tramite scp con un solo comando. Questo metodo crea semplicemente un file localmente in /tmp, e poi lo copia di nuovo non appena lo abbiamo salvato da vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

Nota: il formato è leggermente diverso dal normale scp. Dopo l'host abbiamo una doppia //. Questo è un riferimento al percorso assoluto. Uno slash significherà un percorso relativo alla cartella home users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

Se vedi questo errore, controlla due volte il formato del comando. Di solito significa un errore di sintassi.

16. Montare SSH remoto come cartella locale con SSHFS

Utilizzando sshfs — client del filesystem ssh — possiamo collegare una directory locale a una posizione remota con tutte le interazioni dei file in una sessione crittografata ssh.

localhost:~$ apt install sshfs

Su Ubuntu e Debian installiamo il pacchetto sshfs, e poi semplicemente montiamo la posizione remota sul nostro sistema.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. Multiplexing SSH con ControlPath

Per impostazione predefinita, se esiste una connessione attiva a un server remoto tramite ssh la seconda connessione tramite ssh o scp stabilisce una nuova sessione con autenticazione aggiuntiva. L'opzione ControlPath consente di utilizzare la sessione esistente per tutte le successive connessioni. Ciò accelera notevolmente il processo: l'effetto è visibile anche in una rete locale, tanto più quando ci si collega a risorse remote.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

Il ControlPath indica il socket da utilizzare per verificare le nuove connessioni alla ricerca di una sessione attiva ssh. L'ultima opzione significa che anche dopo aver lasciato la console, la sessione esistente rimarrà aperta per 10 minuti, in modo da poter riconnettersi tramite il socket esistente in quel periodo. Per ulteriori informazioni, consultare la guida ssh_config man.

18. Streaming video via SSH con VLC e SFTP

Anche gli utenti di vecchia data ssh e vlc (Video Lan Client) non sempre conoscono questa comoda opzione, quando è necessario guardare un video in rete. Nelle impostazioni File | Apri flusso di rete programmi vlc puoi inserire la posizione come sftp://. Se è richiesta una password, verrà visualizzata una richiesta.

sftp://remoteserver//media/uploads/myvideo.mkv

19. Autenticazione a due fattori

La stessa autenticazione a due fattori che hai per il tuo conto bancario o l'account Google si applica al servizio SSH.

Certo, ssh inizialmente ha una funzione di autenticazione a due fattori, che comprende una password e una chiave SSH. Il vantaggio di un token hardware o dell'app Google Authenticator è che generalmente si tratta di un altro dispositivo fisico.

Vedi la nostra guida di 8 minuti su utilizzo di Google Authenticator e SSH.

20. Salti tra host con ssh e -J

Se a causa della segmentazione della rete è necessario passare attraverso più host ssh per arrivare alla rete di destinazione finale, l'abbreviazione -J ti farà risparmiare tempo.

localhost:~$ ssh -J host1,host2,host3 user@host4.internal

Qui è importante capire che non è equivalente al comando ssh host1, quindi user@host1:~$ ssh host2 e così via. Il parametro -J sfrutta astutamente il forwarding per far sì che localhost stabilisca una sessione con l'host successivo nella catena. Così, nell'esempio di cui sopra, il nostro localhost si autentica su host4. In altre parole, utilizziamo le nostre chiavi localhost e la sessione da localhost a host4 è completamente crittografata.

Per questa funzionalità in ssh_config specifica l'opzione di configurazione ProxyJump. Se devi passare frequentemente attraverso più host, automatizzare tramite la configurazione ti farà risparmiare un sacco di tempo.

21. Blocco dei tentativi di brute force SSH con iptables

Chiunque abbia gestito un servizio SSH e controllato i log sa quante tentativi di brute force avvengono ogni ora, ogni giorno. Un modo rapido per ridurre il rumore nei log è spostare SSH su una porta non standard. Apporta modifiche al file sshd_config utilizzando il parametro di configurazione Port##.

Utilizzando iptables è anch'esso facilmente bloccabile quando si raggiunge una certa soglia. Un modo semplice per farlo è usare OSSEC, poiché non solo blocca SSH, ma implementa una serie di misure di rilevamento delle intrusioni basate sul nome dell'host (HIDS).

22. SSH Escape per modificare il port forwarding

E il nostro ultimo esempio ssh è progettato per modificare il port forwarding al volo all'interno di una sessione esistente ssh. Immagina questo scenario. Sei in profondità in una rete; forse hai saltato attraverso una mezza dozzina di host e hai bisogno di una porta locale sulla tua workstation reindirizzata a Microsoft SMB di un vecchio sistema Windows 2003 (qualcuno ricorda ms08-67?).

Premendo enter, prova a digitare nella console ~C. Questa è una sequenza di controllo nella sessione che permette di apportare modifiche alla connessione esistente.

localhost:~$ ~C
ssh> -h
Comandi:
      -L[bind_address:]port:host:hostport    Richiesta di forwarding locale
      -R[bind_address:]port:host:hostport    Richiesta di forwarding remoto
      -D[bind_address:]port                  Richiesta di forwarding dinamico
      -KL[bind_address:]port                 Annulla forwarding locale
      -KR[bind_address:]port                 Annulla forwarding remoto
      -KD[bind_address:]port                 Annulla forwarding dinamico
ssh> -L 1445:remote-win2k3:445
Porta in forwarding.

Qui puoi vedere che abbiamo reindirizzato la nostra porta locale 1445 all'host Windows 2003 che abbiamo trovato nella rete interna. Ora basta avviare msfconsole, e si può andare avanti (supponendo che tu stia pianificando di utilizzare questo host).

Conclusione

Questi esempi, consigli e comandi ssh devi fornire un punto di partenza; ulteriori informazioni su ciascuna delle squadre e le opportunità sono disponibili nelle pagine di riferimento (man ssh, man ssh_config, man sshd_config).

Sono sempre stato affascinato dalla possibilità di accedere ai sistemi e di eseguire comandi da qualsiasi parte del mondo. Sviluppando le mie abilità con strumenti come ssh diventerai più efficace in qualsiasi gioco tu stia giocando.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster