Linux melhorado com segurança com MariaDB

Linux melhorado com segurança (SELinux) é um módulo de kernel Linux que fornece um framework para configurar o sistema de controle de acesso obrigatório (MAC) para muitos recursos no sistema. Ele é ativado por padrão em algumas distribuições Linux, incluindo RHEL, CentOS, Fedora e outras distribuições Linux similares. O SELinux impede os programas de acessar arquivos, diretórios ou portos, a menos que esteja configurado para acessar esses recursos.

verificando se o SELinux está activo

para verificar se o SELinux está activo, execute o comandogetenforce. Por exemplo:

getenforce

colocando temporariamente o mysqld no modo permissivo

quando está a resolver problemas que pensa que o SELinux possa estar a causar, pode ajudar a colocar temporariamente o mysqld_t no modo permissivo. Isto pode ser feito executando o comando semanage. Por exemplo:

sudo semanage permissive -a mysqld_t

Se isso resolveu o problema, então significa que a política atual do SELinux é o culpado. Você precisa ajustar a Política de SELinux ou etiquetas para MariaDB.

construir e carregar a Política de SELinux do servidor

o servidor MariaDB vem com uma política de SELinux que não é compilado ou carregado por padrão. Em muitos sistemas, a política é instalada em /usr/share/mysql/policy/selinux/mariadb-server.fc. A fim de construí-lo e carregá-lo, execute o seguinte:

configurar os contextos de arquivos

SELinux usa contextos de arquivos como uma maneira de determinar quem deve ser capaz de acessar esse arquivo.

os contextos de ficheiros são geridos com os comandossemanage fcontext erestorecon.

Em muitos sistemas, o semanage utilitário é instalado por policycoreutils-python pacote, e o restorecon utilitário é instalado por policycoreutils pacote. Você pode instalar esses com o seguinte comando:

sudo yum install policycoreutils policycoreutils-python

de Um arquivo ou diretório atual contexto pode ser verificado por meio da execução de ls com o --context ou --scontext opções.

configurar o contexto do ficheiro para a pasta de dados

se usar uma pasta personalizada para datadir, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto do ficheiro SELinux para os ficheiros de dados do MariaDB é mysqld_db_t. Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:

sudo semanage fcontext --list | grep mysqld_db_t

Se você gostaria de definir o contexto do arquivo para o seu diretório personalizado para o seu datadir e, em seguida, que pode ser feito executando o semanage fcontext e restorecon comandos. Por exemplo:

sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data

Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls com o --context ou --scontext opções. Por exemplo:

configurar o contexto do ficheiro para os ficheiros de Registo

Se usar uma pasta personalizada para os ficheiros de Registo, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto de arquivo SELinux para arquivos de log do MariaDB é mysqld_log_t. Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:

sudo semanage fcontext --list | grep mysqld_log_t

Se quiser definir o contexto do ficheiro para a sua pasta personalizada para ficheiros de Registo, então isso pode ser feito executando os comandos semanage fcontext e restorecon. Por exemplo:

sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql

Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls com o --context ou --scontext opções. Por exemplo:

ls --directory --scontext /var/log/mysql

configurar o contexto do ficheiro para as opções ficheiros

Se usar uma pasta personalizada para os ficheiros das opções, então poderá ter de definir o contexto do ficheiro para essa pasta. O contexto de arquivo SELinux para os arquivos de opção MariaDB é . Você pode determinar se este contexto de arquivo está presente em seu sistema e quais arquivos ou diretórios que está associado, executando o seguinte comando:

sudo semanage fcontext --list | grep mysqld_etc_t

Se quiser definir o contexto do ficheiro para a sua pasta personalizada para os ficheiros de opções, então isso poderá ser feito executando os comandos semanage fcontext e restorecon. Por exemplo:

sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb

Se você gostaria de verificar a atual contexto de arquivo, você pode fazer isso executando ls com o --context ou --scontext opções. Por exemplo:

ls --directory --scontext /etc/mariadb

, Permitindo o Acesso para o Tmpfs de Contexto do Arquivo

Se você quiser montar o seu tmpdir em um tmpfs sistema de arquivos ou queria usar uma tmpfs sistema de ficheiros /run/shm em seguida, você pode precisar para permitir que o mysqld_t para ter acesso a um casal tmpfs relacionados com os contextos de ficheiros. Por exemplo:

problemas com SELinux questões

pode ser necessário resolver problemas relacionados com SELinux em casos como:

  • MariaDB está usando uma porta não-padrão.
  • MariaDB está lendo ou escrevendo para alguns arquivos (datadir, arquivos de log, arquivos de opção, etc.) localizado em caminhos não-padrão.
  • MariaDB está usando um plugin que requer acesso a recursos que as instalações padrão não usam.

permissões do Sistema de arquivos Erros

Se as permissões do sistema de arquivos para alguns MariaDB diretório parece bem, mas o MariaDB log de erro ainda tem erros de aparência semelhante à seguinte:

em Seguida, verifique o SELinux é /var/log/audit/audit.log para entradas de log semelhante à seguinte:

Se vir algum item semelhante a este, então provavelmente terá de ajustar os contextos de ficheiros para alguns ficheiros ou directórios. Veja Configurar os contextos de arquivos para mais informações sobre como fazer isso.

SELinux e MariaDB em um porto diferente

portos TCP e UDP estão habilitados para a permissão se ligar também. Se você estiver usando um porto diferente, ou alguns portos Galera, configure SELinux para ser capaz de usar esses portos:

sudo semanage port -a -t mysqld_port_t -p tcp 3307 

gerando Políticas de SELinux com audit2allow

em alguns casos, um sistema MariaDB pode precisar de políticas não-padrão. É possível criar estas políticas a partir do log de auditoria SELinux usando oaudit2allow utilitário. The semanageand semodule utilities will also be neededed.

Em muitos sistemas, o audit2allow e semanage utilitários são instalados por policycoreutils-python pacote, e o semodule utilitário é instalado por policycoreutils pacote. Você pode instalá-los com o seguinte comando:

sudo yum install policycoreutils policycoreutils-python

O seguinte processo pode ser usado para gerar uma política de log de auditoria:

  • Remover dontaudits da política:
sudo semodule -DB
  • colocar Temporariamente mysqld_t em modo permissivo. Por exemplo:
sudo semanage permissive -a mysqld_t
  • iniciar MariaDB.
  • Faça o que estava causando erros de SELinux.
  • Use gerado o log de auditoria para criar uma diretiva:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
  • Puxe mysqld_t de modo permissivo. Por exemplo:
sudo semanage permissive -d mysqld_t
  • Restaurar dontaudits para a política:
sudo setmodule -B

O mesmo procedimento pode ser utilizado se o MariaDB é iniciado, mas o SELinux impede de funcionar corretamente. Por exemplo, o SELinux pode impedir o plugin PAM de autenticar usuários. A solução é a mesma-habilitar auditoria, mudar para permissivo, fazer, o que o SELinux não lhe permitiu, criar uma política a partir do log de auditoria.

Quando descobrir quaisquer permissões de SELinux necessárias, por favor comunique as permissões necessárias ao registo de erros do seu sistema operativo para que todos os utilizadores possam beneficiar do seu trabalho (por exemplo, Red Hat Bugzilla https://bugzilla.redhat.com/).

Deixe uma resposta

O seu endereço de email não será publicado.