Ci potrebbero essere da una a più di dieci porte usate nel vostro ecosistema MySQL. Dipende davvero da cosa avete abilitato, quali componenti state usando, come le vostre applicazioni si connettono, e altre caratteristiche del vostro ambiente.
Da un punto di vista della sicurezza, queste porte devono essere aperte quanto basta per permettere ai vari componenti che dovrebbero comunicare di parlare mentre bloccano qualsiasi altra cosa che cerca di entrare – l’obiettivo è di applicare il principio di sicurezza del “minimo privilegio”. Ovviamente, quello che non dovreste fare è aprire tutto per far funzionare le cose, solo per scoprire più tardi che vi siete lasciati completamente esposti e violati. Non essere “quell’Admin o DBA”.
Ovviamente, il modo in cui blocchi e apri le porte con regole di ingresso e uscita adeguate dipende dal tuo ambiente – dove hai vari strumenti firewall, VPN, capacità dei sistemi operativi, ecc. Con alcuni dei nostri pacchetti di installazione, il nostro obiettivo è quello di essere sicuri di default così come l’usabilità, e assisteremo, ma in genere solo per le porte più importanti. Per esempio, il programma di installazione di MySQL per Windows aggiungerà regole al firewall di Windows, o i pacchetti Linux aggiungeranno regole a SELinux o AppArmor.
Tuttavia, per porte meno comuni, opzionali o specifiche di prodotti esterni, non le apriamo per voi nei nostri pacchetti, quindi dovrete farlo voi stessi in quei casi. Con comandi come quello per SELinux come
semanage port -a -t mysqld_port_t -p tcp <porta aperta a mysqld>
Ad ogni modo, per questo blog l’obiettivo è solo conoscere le porte, quindi volevo solo elencarli per assicurarmi che siano conosciuti e compresi relativamente a
- Cosa sono
- Cosa li usa
- Quando sono usati
- La comunicazione è criptata per default (Sì nella maggior parte dei casi)
- Limitazione dell’accesso
Questo riferimento si applica a MySQL 5.7 e 8.0
Visualmente sembra qualcosa del genere.
Questo NON è un riferimento completo – le tabelle sottostanti forniscono il riferimento completo.
O per tutti i dettagli vedere
- Riferimento dettagliato sui porti MySQL – PDF
E una comoda tabella di riferimento rapido MySQL PORT
MySQL Ports
Technology | Default Port | SSL|Enc Def. | Required | ||
---|---|---|---|---|---|
Client – Server Connections (msql client, connectors, mysqldump, mysqlpump) |
|||||
MySQL Client to Server – MySQL Protocol – 3306 | 3306/tcp | Y | Y a meno che non usi solo 33060 | ||
MySQL Client to Server – New X Protocol – 33060 | 33060/tcp | Y | Y a meno che non usi solo 3306 | ||
MySQL Shell | |||||
MySQL Client to Server – MySQL Protocol – 3306 | 3306/tcp | Y | Y a meno che non usi solo 33060 | ||
MySQL Client to Server – New X Protocol – 33060 | 33060/tcp | Y | Y a meno che non usi solo 3306 | ||
per controlli, dalla Shell al server GR durante la configurazione del cluster InnoDB. | 33061/tcp | Y | Y se si usa InnoDB Cluster | ||
MySQL Workbench | |||||
MySQL Client to Server – MySQL Protocol – 3306 | 3306/tcp | Y | Optional – scegli almeno 1 | ||
MySQL Client to Server – New X Protocol – 33060 | 33060/tcp | Y | Optional – scegli almeno 1 | ||
Connette via SSH Tunnel | 22/tcp | Y | Opzionale – scegli almeno 1 | ||
Client – Connessioni Router – | |||||
MySQL Client Any SQL to Router – MySQL Protocol | 6446/tcp | Inherited | Richiesto se il Router fornisce accesso RW | ||
MySQL Client ReadOnly SQL to Router – MySQL Protocol | 6447/tcp | “” | Richiesto se il Router fornisce accesso ReadOnly | ||
MySQL Router to Server – MySQL Protocol | 3306/tcp | “” | Required | ||
MySQL Client Qualsiasi chiamata API al Router – Nuovo protocollo X – 33060 | 6448/tcp | “” | Required if Router fornisce accesso RW | ||
Chiamate in sola lettura del client MySQL al router – Nuovo protocollo X – 33060 | 6449/tcp | “” | Required if Router provides ReadOnly access | ||
MySQL Router to Server – New X Protocol – 33060 | 33060/tcp | “” | Required | ||
High Availability | |||||
MySQL Group Replication internal communications port – 33061 | 33061/tcp | Y | Y | ||
MySQL Replication | 3306/tcp | Y | Y | ||
Autenticazione esterna * | |||||
MySQL Enterprise Authentication – LDAP * | 389/tcp | Y | Solo se si usa l’autenticazione esterna a LDAP. Supporta anche l’uso di SASL | ||
MySQL Enterprise Authentication – AD * | 389/tcp | Y | Solo se si usa l’autenticazione esterna a LDAP | ||
Gestione chiavi (per TDE, Keyring Functions, etc) * | |||||
KMIP – usato con Oracle Key Vault, Gemalto KeySecure, Thales Vormetric key management server, Fornetix Key Orchestration * | Varie, Vedi documentazione specifica del key manager/vault. | Sì | Solo richiesto se TDE sta usando un server KMIP | ||
Servizi chiave – AWS KMS * | 443/tcp | Y | Solo richiesto se TDE sta usando AWS KMS | ||
BMEB backup | |||||
Comunicare all’istanza locale | 3306/tcp | Y | Optional – può connettersi con tcp|socket|pipe|memory | ||
Se Innodb Cluster/Group Replication | 3306/tcp | Y | Required for InnoDB Cluster Backup | ||
Oracle Object Store | 443/tcp | Y | Optional | ||
AWS S3 | 443/tcp | Y | Optional | ||
Backup to Media Manager (SBT API) * | Varia – Vedere la documentazione specifica del media manager di backup | Dipendente dal fornitore | Opzionale |