Sicurezza esterna



L'interazione client/server avviene attraverso la connessione del client al server con paradigma di autenticazione basato su username/password (in chiaro). La lista di utenti, password e permessi relativi a MySQL è immagazzinata in alcune sue tabelle:

  • user: elenca account, host, password e privilegi globali (ossia validi per tutte le tabelle) degli utenti che possono connettersi al database server, nonché le opzioni sull'SSL e sull'utilizzo delle risorse;
  • db: elenca account e relativi privilegi, database per database;
  • tables_priv e columns_priv: specificano account e relativi privilegi a livello di singola tabella o colonna.
  • root è l'account di amministrazione di MySQL; non ha nulla a che fare con l'account di Linux, se non per il nome e la capacità di provocare danni se mal usato...

È possibile modificarne il nome o crearne più d'uno. Ad ogni modo, root è l'unico utente che deve possedere il pieno controllo del server (operazioni SQL sulle tabelle, riavvio di mysqld, eccetera), tutti i rimanenti utenti non devono possedere privilegi globali, ma locali alle tabelle che utilizzano (pensiamo a più programmi Web sul server, ciascuno abilitato ad eseguire query SQL sulle sole tabelle cui deve poter avere accesso).

Le regole generali sono:

  • non utilizzare account senza password (soprattutto per root, ciò che è di default!);
  • far accedere ogni applicazione o programma Web tramite un proprio utente;
  • concedere ad ognuno i minimi privilegi possibili, il resto è "il male";
  • concedere come detto privilegi per singoli database, facendo attenzione a che nessuno tranne root abbia accesso alla tabella mysql, che contiene le regole stesse di accesso;
  • concedere il privilegio FILE con molta parsimonia, anzi bandirlo (permette di leggere sul filesystem del server Linux);
  • ogni altro privilegio amministrativo dovrà esser dato con (molta) parsimonia.

Le tipologie dei privilegi sono:

Privilegi amministrativi:

Privilegio Funzione
CREATE USER  permette di creare, cancellare e rinominare gli account utente;
GRANT  permette di concedere i propri privilegi ad altri account; l'inverso è REVOKE;
LOCK TABLES  permette di eseguire lock su tabelle (per il thread corrente);
PROCESS  permette di visualizzare le informazioni sui thread in esecuzione sul server;
REFERENCES  non usato;
RELOAD  permette di ricaricare le tabelle dei permessi, svuotare i registri o la cache attraverso i relativi comandi;
REPLICATION C/S  accorda il diritto di richiedere informazioni relative ai server di replica;
SHOW DATABASES  permette di visualizzare la lista completa dei database;
SHUTDOWN  permette di arrestare il server database;
SUPER  permette di eseguire operazioni di amministrazione (MySQL permette connessioni anche oltre gli eventuali limiti imposti per utenti in possesso di tali privilegi).

Privilegi per database, tabelle e colonne - struttura;

Privilegio Funzione
ALTER  permette di alterare la struttura delle tabelle esistenti;
ALTER ROUTINE  permette la modifica e la cancellazione di stored procedure memorizzate;
CREATE  permette di creare nuove tabelle e database;
CREATE TEMPORARY TABLES  consente di creare tabelle temporanee;
CREATE ROUTINE  permette la creazione di stored procedures;
CREATE VIEW  permette la creazione di nuove viste;
DROP  permette di eliminare database e tabelle;
EXECUTE  consente di eseguire stored procedures;
INDEX  permette di creare ed eliminare indici;
SHOW VIEW  permette la visualizzazione delle viste.

Privilegi per database, tabelle e colonne - dati:

Privilegio Funzione
DELETE  permette di cancellare righe nelle tabelle;
FILE  consente di leggere e scrivere file sul filesystem (ove l'utente mysql ne ha i permessi);
INSERT  permette di inserire righe nelle tabelle;
SELECT  consente di estrarre righe dalle tabelle;
UPDATE  permette di aggiornare i dati nelle tabelle.

Non ci occuperemo dell'organizzazione interna delle tabelle user, db, tables_priv e columns_priv in quanto, per la configurazione degli account, useremo un frontend grafico: phpMyAdmin.

Ultimi articoli Sicurezza

Nmap: tecniche per evadere un firewall

Vediamo come sfuggire ai controlli di un firewall utilizzando Nmap.

Sfruttare vulnerabilità XSS con BeEF

Usiamo BeEF per automatizzare lo sfruttamento di vulnerabilità Cross...

Trojan Flashback: rimuoverlo da Mac OS X

Individuiamo e rimuoviamo il trojan Flashback da Mac OS X

Individuare vulnerabilità in Joomla con JoomScan

Usiamo JoomScan per verificare la sicurezza di Joomla e la presenza...

XSS: attacchi avanzati

Approfondiamo le vulnerabilità Cross Site Scripting analizzando...

Altri articoli

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto