A maneira correta de bloquear o acesso externo ao MySQL é com a diretiva bind-address
em /etc/mysql.cnf
, conforme descrito por margarida . Você não pode impedir que alguém com uma conta MySQL válida efetue login localmente (mas note que uma conta UNIX não implica uma conta MySQL; elas são distintas uma da outra).
Vou responder a outra parte da sua pergunta:
I assume I should lock some extra ports besides 3306. Is that correct?
# Allow incoming TCP ports TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,9000"
No momento em que seu arquivo csf.conf
define seu firewall para permitir tantos serviços, não vale a pena usar.
- 20 - Dados de FTP (por que você está permitindo FTP pela Internet?)
- 21 - Comando FTP (idem)
- 22 - SSH (isso é bom, mas garanta que suas contas estejam bem protegidas; considere desativar todos os logins sem certificado)
- 25 - Entrada de SMTP (você está realmente executando um servidor de email de entrada?)
- 53 - DNS (você está realmente executando o DNS público?)
- 80 - HTTP (você está executando um servidor da Web?)
- 110 - POP3 (protocolo obsoleto; se você estiver executando um servidor de e-mail, considere o IMAPS no 993)
- 143 - IMAP (inseguro; use o IMAPS no 993 em vez disso)
- 443 - HTTPS (você está executando um servidor da Web?)
- 465 - SMTPS (você está realmente executando um servidor de correio público?)
- 587 - SMTP-MSA (idem)
- 993 - IMAPS (somente se você estiver recebendo mensagens de e-mail neste servidor para leitura)
- 995 POP3S (seguro, mas ainda obsoleto)
- 9000 - quem sabe
Se você não oferecer um serviço, não o permita. POP3, IMAP e POP3S devem ser todos desativados em favor do IMAPS (se houver). Não ofereça SMTP * a menos que você esteja realmente executando um servidor de e-mail que precisa receber e-mails da Internet. Não execute o FTP. Use SSH para transferência de arquivos.
Se você quiser usar o MySQL Workbench em um sistema diferente, você ainda pode ter o MySQL configurado para permitir apenas conexões locais executando um encaminhador em ssh
. Eu faço isso por alguns dos meus servidores:
ssh -nf -L localhost:3306:localhost:3306 ADDRESS_OF_REMOTE_SYSTEM sleep 60
# Using Workbench, now connect to MySQL seemingly on the local machine