Sono sempre stato amico delle buone pratiche, molto di più se ci aiutano a mantenere la sicurezza dei nostri server, servizi o semplicemente delle nostre informazioni.
Un'abitudine (cattiva abitudine) che hanno molti amministratori o utenti è quella di utilizzare l'accesso con radice per tutti i database, cioè ... installano un sito utilizzando il CMS di WordPress e come dati di accesso al database (affinché WP utilizzi il server MySQL e utilizzi il suo DB) inseriscono l'utente di amministrazione del server MySQL : radice
Inoltre, installano qualsiasi altra applicazione web (chat, paste, forum, ecc.) E fanno lo stesso, usano sempre l'utente root di MySQL ...
ERRORE!!!
Questa è semplicemente un'abitudine fatale.
Supponiamo di avere i seguenti servizi su un server:
- Un sito o un portale che utilizza WordPress.
- Il nostro forum di supporto, i colloqui, ecc ... un'intera comunità.
- Un FTP che utilizza un database MySQL per memorizzare utenti e password.
- Gli utenti di posta elettronica vengono memorizzati (utenti e password) in un database MySQL.
- Una piccola WebChat che installiamo per chattare con qualcuno che conosci.
E in tutti, nei 5 servizi utilizziamo l'utente root di MySQL in modo che ogni servizio acceda e salvi i dati nel database corrispondente.
Un bel giorno, uno dei tanti troll che sono in rete, ma questo non è solo un troll, ma anche padrone di alcuni exploit, vulnerabilità, hacking, ecc ... decide di fare qualcosa di dannoso per noi.
Trova un bug nella WebChat che stiamo utilizzando, approfittando di questo bug, riesce ad accedere ai file WebChat, incluso il file di configurazione di WebChat, e ... in questo file, ovviamente, c'è il nome utente e la password che WebChat usa per accedere al server MySQL e indovina cosa? … Non è niente di più e niente di meno l'UTENTE ROOT!
Ottenendo queste informazioni, in un modo molto semplice il troll può:
- Eliminaci e / o ruba tutto ciò che riguarda il sito o il portale che abbiamo (WordPress).
- Puoi eliminare e / o rubare informazioni da noi E dai nostri utenti che utilizzano il Forum, la comunità che creiamo.
- Puoi anche rubare il nome utente e la password di TUTTI gli utenti che hanno un account e-mail sul nostro server, nonché rubare le informazioni dalle loro e-mail, impersonare, ecc.
- E ora finalmente puoi utilizzare un account sul nostro server FTP e caricare qualsiasi file che contenga malware, che ti consentirebbe di ottenere il controllo TOTALE e ASSOLUTO del nostro server.
Bene ... cosa ne pensi? ... 🙂
Vedi tutto ciò che può accadere semplicemente non creando utenti indipendenti per ogni database che abbiamo?
Questa NON è un'esagerazione amici, può succedere con una facilità sorprendente ... beh, tutto ciò che serve per innescare la catastrofe è solo un bug in alcune delle applicazioni web che hai installato.
Adesso…
Come creare utenti MySQL separati per ciascuna applicazione web?
Per prima cosa dobbiamo entrare nel server MySQL con l'utente root, poiché è lui che ha i privilegi per creare database, stabilire permessi, creare utenti, ecc:
mysql -u root -p
Quando scrivono quanto sopra e premono [Accedere] verrà richiesta la password dell'utente root di MySQL, la scriveranno e premeranno [Accedere] di nuovo, ti verrà immediatamente mostrato qualcosa del genere:
Ora creeremo un database denominato «webchatdb":
CREATE DATABASE webchatdb;
Pronto, hai già creato il database, ora creiamo l'utente «utente di chat«Con la password«passworddelputwebchat":
CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';
Ora la magia ... daremo tutti i privilegi (leggere e scrivere) a utente di chat SOLO nel DB webchatdb:
GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;
E voilà, l'utente ha già i permessi in quel database ... ora non resta che aggiornare i permessi a MySQL, cioè dire a MySQL di rileggere i privilegi degli utenti perché abbiamo appena apportato una modifica in loro:
FLUSH PRIVILEGES ;
E questo è stato tutto. In questo modo per ogni applicazione web che utilizziamo, garantiamo che nel caso in cui riescano a violare una di quelle applicazioni web, le altre saranno al sicuro (almeno dal punto di vista di MySQL)
Qual è una buona pratica? 😉
Spero che ti sia stato utile quanto lo è a me, perché ho cercato di spiegarlo nel modo più semplice possibile.
saluti
Buon post KZKG, se fosse nel forum chiederei un appiccicoso!
Grazie 😀
La password che hai impostato per la webchat è buona, un'altra cosa che ha a che fare con mysql è l'uso della sua memoria
Hehehe, grazie per avermi ricordato i comandi MySQL, ora vediamo se "ho messo un po 'di sicurezza" sul database del server di World of Warcraft che ho sulla mia LAN.
la mia conoscenza su questo è nulla, ma è quasi la stessa per quando si utilizza MySQL per Amarok?
CREA DATABASE amarokdb;
GARANTIRE TUTTI I PRIVILEGI SU amarokdb. * A "amarokuser" IDENTIFICATO DA "password"; PRIVILEGI DI FLUSH;
Non uso Amarok da molto, molto tempo, ma se usi un DB che è MySQL, in teoria dovrebbe funzionare anche in questo modo.
Ciao, sarebbe bene se creassi una voce per la sicurezza contro i server web in Linux, molti di loro non hanno la sicurezza adeguata e l'amministratore degli stessi non è propriamente un esperto, facilitano solo le cose, ad esempio l'uso del collegamento simbolico nei server consente leggendo i file di configurazione di altri account sullo stesso server molti amministratori non ne sono consapevoli ed è per questo che proliferano i defaces dei siti web
saluti
Ciao a tutti,
Benvenuto nel sito 🙂
In realtà, non mi considero di gran lunga un esperto in materia, ma cercherò di contribuire con la poca conoscenza che ho acquisito negli anni 🙂
Un'altra cosa che non molti amministratori di rete fanno è dare privilegi ai siti con apache individualmente, cioè l'utente e il gruppo www-data (o simili), che è diverso per ogni sito, e a sua volta gabbia ognuno di questi.
saluti
Bel consiglio
saluti
Grazie
ODIO l'aspetto del tuo terminale, le lettere sullo sfondo mi portano fuori dalla mia concentrazione. Sei un fottuto pazzo xD
A parte questo, è interessante perché ho visto casi patetici di interruzioni del servizio da queste cose.
Ora, non solo dipende da quello, la sicurezza sta nel modo in cui è stato costruito il database, mi ha spiegato un insegnante, ma non sono ancora molto immerso nel DB ... dovremmo scherzare con MongoDB = D uno di questi giorni
proprio quello che è successo a me oggi con il mio server noleggiato
Ho seguito i tuoi passi, sono andato su cpanel e ho cercato il database MYSQL e mi dice che è fuori servizio.
Non so come entrare ora sotto l'utente root
Sono un neofita in questo, ma leggendo qui si impara molto, spero mi guidi ad accedere
Ciao 🙂
Quello che hai è un Hosting (SharedHosting) o un VPS (server virtuale)?
Se hai un hosting e non un VPS, dovresti vedere se il tuo hosting ha accesso SSH (contatta il supporto tecnico dell'azienda che ti ha venduto l'hosting e chiedi loro come accedere tramite SSH), una volta che si accede tramite SSH, l'utente NON sarà root, ma è necessario utilizzare l'utente immesso durante l'installazione dell'applicazione web.
In realtà il tuo è un argomento complicato, perché le varianti e le possibilità sono tantissime, ti consiglio di aprire un nuovo argomento nel nostro forum, lì sarà più comodo aiutarti - » http://foro.desdelinux.net
Saluti 😀
buona,
Capisco che sia una buona pratica non dare tutti i privilegi a nessun utente eccetto root. Tuttavia, da quando ho installato phpmyadmin, è stato creato un nuovo utente "phpmyadmin" con tutti i privilegi. Sembra logico che sia così, dato che è solo una versione grafica per gestire i database in MySQL. Comunque vorrei essere sicuro se va bene così com'è o devo apportare qualche modifica ai privilegi dell'utente "phpmyadmin".
Saluti e grazie!
Eccellente…
Sono uno di quelli che fanno tutto con root, ma mi hai aperto gli occhi amico ..
Molte grazie…