MySQL lendo /etc/hosts.allow e /etc/hosts.deny

1

O relatório de erros de um dos meus serviços relatou problemas para se conectar ao meu servidor MySQL. Esses problemas não foram consistentes, apenas aconteceu algumas vezes em servidores diferentes.

Eu comecei a depurar usando strace e notei que o MySQL está lendo /etc/hosts.allow e /etc/hosts.deny toda vez que tenta abrir uma nova conexão:

read(127, "# /etc/hosts.allow: list of hosts that are allowed to access the system.\n#                   See the manual pages hosts_access(5) and hosts_options(5).\n#\n# Example:    ALL: LOCAL @some_netgroup\n#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu\n#\n# If you're going to protect the portmapper use the name \"portmap\" for the\n# daemon name. Remember that you can only use the keyword \"ALL\" and IP\n# addresses (NOT host or domain names) for the portmapper, as well as for\n# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)\n# for further information.\n#\n\n", 4096) = 580
read(127, "", 4096)                     = 0
close(127)                              = 0
munmap(0x7f94533f9000, 4096)            = 0
open("/etc/hosts.deny", O_RDONLY)       = 127
fstat(127, {st_mode=S_IFREG|0644, st_size=880, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f94533f9000
read(127, "# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.\n#                  See the manual pages hosts_access(5) and hosts_options(5).\n#\n# Example:    ALL: some.host.name, .some.domain\n#             ALL EXCEPT in.fingerd: other.host.name, .other.domain\n#\n# If you're going to protect the portmapper use the name \"portmap\" for the\n# daemon name. Remember that you can only use the keyword \"ALL\" and IP\n# addresses (NOT host or domain names) for the portmapper, as well as for\n# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)\n# for further information.\n#\n# The PARANOID wildcard matches any host whose name does not match its\n# address.\n#\n# You may wish to enable this to ensure any programs that don't\n# validate looked up hostnames still leave understandable logs. In past\n# versions of Debian this has been the default.\n# ALL: PARANOID\n\n", 4096) = 880
read(127, "", 4096)                     = 0
close(127)                              = 0
[...]
getpeername(127, {sa_family=AF_INET, sin_port=htons(33362), sin_addr=inet_addr("10.2.3.19")}, [16]) = 0
getsockname(127, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("10.2.2.9")}, [16]) = 0

Acho que esse é o comportamento esperado, mas quero saber se há alguma maneira de ignorar a leitura desses arquivos? Eu acho que apenas adicionando o endereço IP ao /etc/hosts.allow irá fazê-lo (já que o IP será correspondido daquele arquivo e o negado não será lido) ...

    
por boris quiroz 03.09.2015 / 16:56

1 resposta

0

O MySQL Server não lê esses arquivos sozinho, é TCP Wrappers biblioteca que é responsável. Você pode compilar o MySQL sem suporte para a biblioteca , mas eu não vejo nenhum ponto para enfraquecê-lo, porque você está certo de que um endereço IP do arquivo allow não está verificado em relação ao arquivo deny , então faça isso se você quiser whitelist isso.

Mas se seus problemas de conexão forem aleatórios, provavelmente procurarei outro motivo.

    
por 03.09.2015 / 19:27

Tags