Guida Sicurezza. Cosa significa e come garantirla

Stato
Discussione chiusa ad ulteriori risposte.

iltizio

Utente Emerald
1 Novembre 2009
929
60
533
598
Ultima modifica da un moderatore:
Buonasera Inforge,
spesso sento dire "Il nostro server è sicuro" oppure "Garantiamo la totale sicurezza al nostro server metin2".
Si parla dunque di Sicurezza Informatica e, nella quasi totalità delle volte che viene nominata nelle sezioni di Metin2, si ignora il vero significato. Vi invito a leggere la pagina wikipedia corrispondente https://it.wikipedia.org/wiki/Sicurezza_informatica

Estraggo alcune parti importanti:
Con il termine sicurezza informatica si intende quel ramo dell'informatica che si occupa delle analisi delle minacce, delle vulnerabilità e del rischio associato agli asset informatici, al fine di proteggerli da possibili attacchi (interni o esterni) che potrebbero provocare danni diretti o indiretti di impatto superiore ad una determinata soglia di tollerabilità (es. economico, reputazionale, politico-sociale, ecc...).

...

La protezione degli asset informatici è ottenuta attraverso misure di carattere tecnico ed organizzativo, sia di prevenzione che di protezione, tese ad assicurare:

  • l'accesso protetto e controllato ai dati, a garanzia della confidenzialità delle informazioni trattate (proprietà di riservatezza)
  • la consistenza dei dati, intesa come completezza e correttezza degli stessi (proprietà di integrità)
  • l'accesso ai dati nei tempi e nei luoghi previsti (proprietà di disponibilità)
Queste tre caratteristiche vengono spesso citate utilizzando la definizione "CIA Triad"
Ora, concentriamoci sui 3 punti CIA (confidentiality, integrity, and availability) per applicarli a Metin2.
Come appena letto da wikipedia, ma anche richiesto dalla certificazione ISO 27001, per offrire un servizio "sicuro" agli utenti è necessario garantire tutti e 3 i punti preventivamente.

Riservatezza (confidentiality)
I dati devono rimanere inaccessibili da persone non autorizzate, e devono essere fornite solo le informazioni necessarie all'erogazione del servizio agli utenti. In sostanza dovete fare in modo che nessuno dall'esterno (ad eccezione dello staff autorizzato) possa accedere ai sorgenti del sito, ai file del server game e ai database.

Quindi fate in modo di, quanto meno, rendere la vita molto più difficile ai vari malintenzionati per accedere tramite servizi amministrativi ai vostri sistemi.
In particolare rendete il più possibile sicuro l'accesso via SSH, SFTP, FTP, MySQL ed eventuali pannelli di controllo.
Dunque, non limitatevi a lasciare tutto di default con una password come unica protezione ai vostri sistemi.

Un buon metodo semplice da attuare ed efficace è quello del tunnel SSH con autenticazione SSH tramite chiave privata e pubblica. Può sembrare difficile e complicato all'inizio, ma trovate tantissime guide per il web, e vi assicuro che è la soluzione più semplice e allo stesso tempo sicura che potete trovare.

In pratica bloccherete, tramite firewall o facendo un bind dei servizi, le porte in ascolto dei vostri server di tutti i servizi amministrativi (FTP, MySQL) dall'esterno, ad eccezione del servizio SSH.
Create quindi la vostra chiave ssh (possibilmente una per ogni amministratore che andrà ad accedere al server) e fate in modo che il vostro server ssh accetti solo l'autenticazione tramite chiave pubblica: [Guida]Inserire Key, Cambiare porta SSH
In questo modo, la password non servirà più, ma il malintenzionato dovrà per forza avere la vostra chiave privata, custodita bene sul vostro PC.
Ora per connettervi al resto dei servizi (solitamente FTP e MySQL), impostate il tunnel ssh e sarà come essere nella rete privata del vostro server.

Integrità (integrity)
I dati devono essere sempre consistenti, cioè non danneggiati. Anche in caso di problemi, ci devono essere sempre dei backup corretti, aggiornati e custoditi a loro volta in piattaforme sicure e fisicamente distanti dalle macchine attive.
Percui assicuratevi di inviare i backup su un supporto remoto. Può essere una piattaforma che avete in casa o un servizio apposito offerto dal vostro provider. Inutile dire che i backup devono essere facilmente reperibili e restorabili.

Quello che dovrete copiare saranno:
  • I database mysql, utilizzando gli appositi tool come mysqldump e xtrabackup: Come eseguire un backup, migrazione, restore di MySQL/MariaDB. I backup vannof atti sia dei database del game che del sito/forum.
  • I datafile di mysql, cioè quello che trovate nella cartella /var/db/mysql. Di norma si dovrebbe evitare di eseguire una restore da questi file, ma se il ripristino tramite dump non fosse possibile, potrebbe essere l'unica soluzione.
  • Fileserver. Ogni tanto (non è necessario farlo com molta frequenza) conviene salvare i propri file server, anche se vengono modificati manualmente solo da voi. Avere una copia aggiornata dei vostri fileserver vi può salvare anche durante i test o sviluppo del vostro progetto.
  • Document root del sito. Eseguite i backup dei file del vostro sito e forum. Alcuni di questi file vengono modificati automaticamente dal sito, percui è importante tenere sempre dei backup automatici con la giusta frequenza.
I backup dovranno essere eseguiti sempre in automatico e vanno monitorati. Ogni tanto testateli per vedere se sono consistenti.

I backup non sono tuttavia l'unica cosa da tenere conto. Una cosa molto importante è impedire il più possibile di essere costretti ad usare i backup.
Fate in modo quindi di impedire che i dati si possano danneggiare per qualsiasi motivo che può essere per problemi tecnici o errori umani.
Ciò che è più soggetto a corrompersi sono le tabelle dei database. Prestate molta attenzione a come le create e installate, e utilizzare versioni recenti e storage engine adatti. Leggete Installare MariaDB al posto di MySQL e Come eseguire un backup, migrazione, restore di MySQL/MariaDB

Disponibilità (availability)
I vostri servizi, percui il sito e il game server, dovranno essere sempre accessibili ai vostri utenti, nel senso che il game e il sito dovranno rimanere up&running 24h/24h 7 giorni su 7, salvo i riavvii consueti della durata di 5 minuti del game server. Questo è possibilissimo, ma bisogna organizzarsi bene e attuare accorgimenti tecnici preventivi.

Per prima cosa assicuratevi di installare e configurare il tutto correttamente. Se non siete competenti, fatevi aiutare da chi lo sa fare o rischiate di avere problemi in fase d'apertura, e vi assicuro che non è bello dover risolvere problemi facilmente evitabili con gli utenti che ti mettono fretta. Inoltre gli utenti difficilmente digeriscono problemi sopratutto all'apertura, rischiando di buttar via mesi e mesi di lavoro. Piuttosto spendete qualche euro per farvi sistemare il server, piuttosto che incrociare le dita e sperare che vada tutto bene.

Con le nuove tecnologie e i costi più contenuti, è sempre più facile creare un'infrastruttura in High Availability.
Per prima cosa dovrete progettare la vostra infrastruttura e di conseguenza trovare il provider più adatto: Lista Hosting per Metin2. A seconda di cosa volete fare, di quanto siete bravi e di quanto volete spendere, scegliete se acquistare coppie di VPS o coppie di Dedicati con un hypervisor installato.
Per tanti motivi, è sconsigliabile l'utilizzo di Dedicati con solo FreeBSD installato. Maggiori approfondimenti li potete trovare qua: Come scegliere e configurare una macchina per Metin2
Una volta scelta la coppia di VPS o dedicati, dovete provvedere a mettere in cluster le applicazioni, per far sì che se una VPS o l'intero Dedicato diventano irraggiungibili per qualsiasi problema (manutenzione, errori umani, usura, cause di forza maggiore), l'altra macchina può prendere posto in pochi istanti. Per metin2 attualmente non si è ancora trovato il modo per creare un cluster di tipo active-active, per le limitazioni di metin2, quindi bisognerà farlo active-passive. Le differenze sono che l'active-active puoi usare tutte le VM del cluster, bilanciando il carico attraverso un bilanciatore. Quindi il client si collega ad un ip, che è quello del bilanciatore e provvederà a spartire in modo equo le richieste. Mentre l'active-passive è formato da 2 o più VM, dove una è quella funzionante dove tutti gli utenti si collegano, le altre sono le VM slave che si limitano a rimanere sincronizzate, e diventeranno attive quando avverrà lo switch.

Per un cluster di metin2 dovete predisporre la sincronizzazione delle due macchine. In particolare dovete prevedere la copia dei fileserver su entrambe le VM (con rsync ad esempio) oppure usare un filesystem sharato (NFS ad esempio) montato su entrambe le macchine. L'NFS server ovviamente deve essere a sua volta in HA.
Mentre la parte più importante è la sincronizzazione dei database. MySQL e i suoi fork mettono a disposizioni diverse funzionalità per la replica dei dati su più macchine. Potete usare MySQL Replication per repliche Master-Slave oppure per veri e propri cluster multi master potete usare MySQL Cluster se usate MySQL, Galera cluster se usare MariaDB o Percona Cluster se usate Percona.
La configurazione è relativamente semplice, ma dovete prestare attenzione alle limitazioni di ogni alternativa.

Ricordatevi di tenere ben monitorato tutto. Se per qualche motivo la sincronizzazione si interrompe e voi non ve ne accorgete, la seconda VM sarà inutilizzabile.
Anche se sono cose relativamente semplici, prestate molta attenzione in fase d'installazione e manutenzione perchè un errore può causarvi anche la perdita dei dati di entrambi i nodi. Se non siete sicuri/competenti fatelo fare a chi lo sa fare.

Una volta impostata la sincronizzazione avrete quasi finito. Ora dovete pensare a come eseguire lo switch da un nodo all'altro in caso di necessità. L'ideale sarebbe farlo in modo autonomo, ma non è alla portata di tutti e potrebbe costare di più.
Per lo switch autonomo dovrete pensare ad uno stratagemma per far cambiare l'ip di puntamento. Si può usare un bilanciatore impostandolo come failover, dove se non vede risposta dal nodo attivo, cambierà il puntamento sul nodo passivo. In questo modo il client avrà lo stesso IP, quello del bilanciatore. Altrimenti dovrete scrivere degli script che monitorano i due nodi, e quando va fatto lo switch cambia le patch del client tramite autopatcher per far scaricare agli utenti il nuovo collegamento.
Per lo switch manuale vi basterà cambiare voi a mano gli ip nel client.

In questa categoria vanno messi anche gli attacchi malevoli che vanno ad interrompere il servizio, tra cui i comuni attacchi DoS. Per prevenirli assicuratevi di scegliere il giusto provider con una buona capacità di rete e un sistema di filtro. Un'ottima protezione può costare parecchio, vi avverto. Tuttavia potete trovare delle protezioni sufficienti più abbordabili, ma assicuratevi di configurare correttamente i firewall per rendere più difficile la vita a chi attacca.

Altra cosa sono gli attacchi via exploit. Si tratta di malintenzionati che utilizzano falle di sicurezza nei software per causare seri problemi o addirittura accedere al vostro sistema. Metin2 è una falla di sicurezza di suo, ma prestando attenzione e applicando le giuste correzioni potrete proteggervi. Assicuratevi quindi di utilizzare revision recenti (> 40k), controllate e fixate via codice sorgente. Se non volete perdere tempo o non siete capaci, c'è chi vende prodotti già pronti: Lista consulenti Metin2.
Inoltre ricordatevi che dalla rev 40k, le connessioni verranno stabilite via TCP, non più UDP. Quindi ora potete bloccare le connessioni UDP dal firewall per una protezione notevolmente migliore ad attacchi DDoS. Inoltre bloccate tutte quelle porte inutili, ad esempio le P2P e quella del db. Per altre info leggete qua: Test Vulnerabilità P2P Injection

Come fare manutenzioni da massimo 5 minuti? Se avete fatto quanto appena scritto, se dovrete fare qualsiasi tipo di manutenzione, vi basterà uno switch ed eventualmente un riavvio del game server per un totale di 5 minuti.
In caso di modifiche al gioco, vi consiglio di fare le modifiche prima su un server di test, anche locale, provate e se tutto va bene riapplicate le modifiche anche sul server di produzione e fate un semplice riavvio.


Monitoraggio
Un consiglio che vi do, ma anche una necessità, è quello di predisporre un sistema di monitoraggio affidabile per la vostra infrastruttura. Se il vostro provider non dispone di un sistema di monitoraggio avanzato, provvedete ad implementarlo voi.
Nel web, gratuitamente potete trovare diversi sistemi di monitoraggio. I più utilizzati sono quelli basati su Nagios. In particolare vi consiglio di usare Check_mk che è semplice da amministrare e installare, ma anche leggero, con tante funzioni avanzate e molto affidabile. Vi anticipo che potrete persino monitorare la vostra infrastruttura dal vostro smartphone e arrivare addirittura a prevedere il problema per risolverlo prima che causi disservizi.
Inoltre vi darà informazioni aggiuntive di tipo statistico.
Vi assicuro che il monitoraggio, se fatto bene, vi risparmierà molto tempo, fatica e a volte anche soldi.


In conclusione: se volete fare un progetto serio di Metin2, assicuratevi che sia tutto sicuro, per offrire ai vostri utenti un servizio di qualità, ma sopratutto per voi. Uno sforzo maggiore iniziale vi risparmierà tanta fatica e tempo in futuro.
 
Ciao;

Avevo avuto la stessa idea nel creare una serie di discussioni relative alla gestione di un progetto di un server di Metin2 creando una sorta di "compendio" per aspiranti creatori, così da far capire agli utenti cosa pretendere da un server e ai creatori come capire se si è in grado di creare un server privato di Metin2 che duri nel tempo.

Sicuramente cercherò di pubblicare qualcosa dal punto di vista della comunicazione e della gestione di base ;)
 
  • Mi piace
Reazioni: King Gherusio
Capito? @RazerStars2
Penso l'abbia fatto partendo dalla tua presentazione..

Bravo iltizio , uno dei pochi che si dedica per questa community ormai...
Ciao always :p
Comunque secondo me non c'è bisogno di accanirsi contro quel povero ragazzo, io lo conosco e fidati è una delle poche persone veramente per bene, conoscilo un pò meglio e vedrai che sarà sicuramente come ti dico ;)
La questione purtoppo è di molti server, ma dai siamo ottimisti, comunque con questa guida sicuramente anche i meno esperti sapranno come gestirsi al meglio.
 
  • Mi piace
Reazioni: AlwaysOn
Guida molto carina e chiara.
Piccola nota: quando parli di chiavi private\pubbliche, correggi che sui pc risiederanno le chiavi private, mentre sui server quelle pubbliche (non l'opposto).

Saluti
 
  • Mi piace
Reazioni: Metin2Heroes
Guida molto carina e chiara.
Piccola nota: quando parli di chiavi private\pubbliche, correggi che sui pc risiederanno le chiavi private, mentre sui server quelle pubbliche (non l'opposto).

Saluti
Grazie per avermelo fatto notare. Piccola svista, ma importante.
 
A livello teorico tutto molto bello, anche se decisamente vecchio stile, all'atto pratico inutile.
Non dico che sia sbagliato, però fidati, sono rimasto oramai forse l'unico che ancora è in quest'ambiente e che c'è dall'inizio, che ha lavorato sempre in server importanti (e anche ufficiali) e posso dirti che tutto sto ambaradan per metin non ne vale assolutamente la pena.

Certo, così è come ANDREBBERO fatte le cose per bene, ma all'atto pratico una buona configurazione anche in un solo dedicato da 150 euro ti basta a garantire tutta la sicurezza e stabilità necessaria.
 
A livello teorico tutto molto bello, anche se decisamente vecchio stile, all'atto pratico inutile.
Non dico che sia sbagliato, però fidati, sono rimasto oramai forse l'unico che ancora è in quest'ambiente e che c'è dall'inizio, che ha lavorato sempre in server importanti (e anche ufficiali) e posso dirti che tutto sto ambaradan per metin non ne vale assolutamente la pena.

Certo, così è come ANDREBBERO fatte le cose per bene, ma all'atto pratico una buona configurazione anche in un solo dedicato da 150 euro ti basta a garantire tutta la sicurezza e stabilità necessaria.
Mentre se segui la guida e fai tutto correttamente senza sprechi ti bastano 50 euro e avrai un uptime quasi del 100℅, e non mi riferisco solo all'uptime della macchina.
Alla fine se fai le cose fatte bene spendi di meno e avrai una qualità migliore. Puoi anche spendere migliaia di euro in un server dedicato, ma se non lo configuri e gestisci correttamente varrà meno di un vps fatto bene da 25 euro.
Non sempre spendendo tanto a caso avrai il meglio.
 
Mentre se segui la guida e fai tutto correttamente senza sprechi ti bastano 50 euro e avrai un uptime quasi del 100℅, e non mi riferisco solo all'uptime della macchina.
Alla fine se fai le cose fatte bene spendi di meno e avrai una qualità migliore. Puoi anche spendere migliaia di euro in un server dedicato, ma se non lo configuri e gestisci correttamente varrà meno di un vps fatto bene da 25 euro.
Non sempre spendendo tanto a caso avrai il meglio.
Pienamente d'accordo. Soprattutto con budget ridotti conviene suddividere il carico su più macchine e, possibilmente, anche tra diversi host (per evitare problemi di uptime, problemi di rete, etc).

Una delle cose più importanti di cui hai parlato è la sicurezza dei dati e, collegandomi alla tua guida sulla HA, conviene indubbiamente avere un database replicato su server diversi, sia per garantire una maggior protezione dei dati, sia per non incorrere mai in problemi di ripristino dati etc.

Indubbiamente per coloro che a mala pena sanno come avviare uno script in bash su un server, tutto ciò è esageratamente articolato come detto da @Exsta , ma per chi ha tutte le intenzioni di imparare e cimentarsi in qualcosa di "più" (o semplicemente ha già delle conoscenze e le vuole ampliare), consiglio di seguire i consigli della guida.

Tra l'altro, parlandoci chiaro, un retroserver ti può dare qualche introito e farti togliere la soddisfazione di fare qualcosa di tuo, ma prima di tutto è un'ottima "palestra" dove imparare cose nuove e mettere in pratica le conoscenze acquisite.
 
Stato
Discussione chiusa ad ulteriori risposte.