SELinux

SELinux para iniciantes usando CentOS

SELinux para iniciantes usando CentOS
Desenvolvido pela NSA para prevenir o acesso malévolo e intrusões, o Security-Enhanced Linux ou SELinux é um recurso de controle de acesso avançado que vem com a maioria das distros Linux modernas. SELinux é definido como o sistema de controle de acesso obrigatório (MAC) desenvolvido como uma substituição para o sistema de controle de acesso discricionário (DAC).

SELinux pode parecer assustador e muito difícil de implementar na maioria dos sistemas modernos. No entanto, a configuração do SELinux traz enormes benefícios tanto na aplicação da segurança quanto na solução de problemas.

Este tutorial irá discutir vários conceitos implementados pelo SELinux e explorar vários métodos práticos de implementação do SELinux.

NOTA: Antes de começar, é bom usar os comandos neste tutorial como o usuário root ou um usuário dentro do grupo sudoers.

Instale pacotes SELinux

Vamos instalar vários pacotes SELinux, que por sua vez ajudarão a trabalhar com as políticas SELinux.

Antes de prosseguirmos com a instalação dos pacotes SELinux, é bom verificarmos quais estão instalados no sistema atual.

Na maioria das instalações de distribuições REHL, alguns pacotes são instalados por padrão. Esses pacotes incluem:

  1. setools - este pacote é usado para monitorar logs, consultar políticas e gerenciamento de arquivos de contexto.
  2. policycoreutils-python - fornece utilitários de núcleo python para gerenciar SELinux
  3. policycoreutils - este pacote também fornece utilitários para gerenciar SELinux.
  4. mcstrans - mcstrans fornece daemon de tradução SELinux, que traduz vários níveis em formatos fáceis que podem ser compreendidos facilmente.
  5. setools-console - semelhante ao setools.
  6. Selinux-policy - fornece uma referência para configurar a política SELinux
  7. Selinux-policy-targeting - semelhante a SELinux-policy
  8. Libselinux-utils - utilitários SELinux libselinux que ajudam a gerenciar SELinux
  9. Setroubleshoot-server - ferramentas para solucionar problemas de SELinux

Para verificar quais pacotes já estão instalados em seu sistema, você pode usar o comando rpm -qa e canalizar o resultado para grep para SELinux como:

rpm -qa | grep selinux
libselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-oriented-3.14.3-54.el8_3.2.noarca
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.noarca
libselinux-2.9-4.el8_3.x86_64

Isso deve dar a você uma saída de todos os pacotes instalados para suporte SELinux

Se nem todos os pacotes SELinux estiverem instalados em seu sistema, use o yum para instalá-los conforme mostrado no comando abaixo:

yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-alvo libselinux-utils setroubleshoot-server setools setools-console mcstrans

Modos e estados do SELinux

Vamos agora começar a brincar com o SELinux, especificamente, os modos SELinux.

Modos SELinux

Quando ativado, o SELinux pode ter três modos possíveis:

Modo de imposição

Se o modo SELinux for aplicado, ele irá garantir que nenhum acesso não autorizado ao sistema por qualquer usuário ou processo seja negado. O modo de imposição também mantém registros de quaisquer tentativas de acesso não autorizado.

Modo Permissivo

O modo permissivo atua como um estado SELinux parcialmente habilitado. Neste modo, nenhum acesso é negado, pois o SELinux não impõe suas políticas neste modo. No entanto, o modo permissivo mantém um registro de todas as tentativas de violação de política. Este modo é muito eficiente para testar antes de habilitá-lo totalmente, pois os usuários e componentes ainda podem interagir com o sistema, mas ainda coletam logs. Isso permite que você ajuste seu sistema da maneira que achar melhor.

Modo Desativado

O modo desabilitado também pode ser visto como um estado desabilitado no qual o SELinux está desabilitado e não oferece qualquer segurança.

SELinux States

Uma vez que o SELinux é instalado em um sistema. Pode ter estados binários: habilitado e desabilitado. Para visualizar o estado do SELinux, use o comando:

getenforce
Desativado

A saída acima indica que o SELinux está atualmente desativado.

Você também pode usar o comando sestatus conforme mostrado abaixo:

sestatus
Status do SELinux: desativado

Habilitar e desabilitar SELinux

Os estados e a configuração do SELinux são controlados pelo arquivo de configuração localizado em / etc / selinux / config. Você pode usar o comando cat para ver seu conteúdo.

cat / etc / selinux / config
# Este arquivo controla o estado do SELinux no sistema.
# SELINUX = pode assumir um destes três valores:
#enforcing - A política de segurança SELinux é aplicada.
#permissive - SELinux imprime avisos em vez de impor.
#disabled - Nenhuma política SELinux carregada.
SELINUX = aplicando
# SELINUXTYPE = pode assumir um destes três valores:
# direcionado - processos direcionados são protegidos,
# mínimo - Modificação da política direcionada. Apenas os processos selecionados são protegidos.
# mls - Proteção de segurança multinível.
SELINUXTYPE = direcionado

A partir da saída acima, temos duas diretivas principais habilitadas. A diretiva SELINUX especifica o modo em que o SELinux é configurado. A diretiva SELINUXTYPE especifica o conjunto de políticas SELinux. Por padrão, o SELinux usa uma política direcionada que permite que você personalize as permissões de controle de acesso. A outra política é a segurança multinível ou MLS.

Você pode encontrar política mínima em algumas versões.

cd / etc / selinux /
[ls -l
total 4
-rw-r - r-- 1 root root 548 16 de fevereiro 22:40 config
drwxr-xr-x 1 root root 4096 16 de fevereiro 22:43 mls
-rw-r - r-- 1 root root 2425 21 de julho de 2020 semanage.conf
drwxr-xr-x 1 root root 4096 16 de fevereiro 22:40 direcionado

Vamos agora ver como habilitar SELinux no sistema. Recomendamos primeiro definir o modo SELINUX para permissivo e não obrigatório.

nano / etc / selinux / config

Agora edite a diretiva SELINUX como:

SELINUX = permissivo

Depois de salvar o arquivo, reinicie o sistema.

reinício

NOTA: É altamente recomendável definir a diretiva SELINUX como permissiva antes de aplicar o SELinux.

Depois de reiniciar o sistema, verifique se há todos os logs relatados pelo SELinux em / var / log / messages.

Em seguida, certifique-se de que não há erros e aplique o SELinux configurando a diretiva para aplicar em / etc / selinux / config

Finalmente, você pode visualizar o status do SELinux usando o comando sestatus:

Status do SELinux: habilitado
Montagem SELinuxfs: / sys / fs / selinux
Diretório raiz do SELinux: / etc / selinux
Nome da política carregada: direcionada
Modo atual: impondo
Modo do arquivo de configuração: erro (sucesso)
Status da política MLS: habilitado
Status deny_unknown da política: permitido
Verificação de proteção de memória: real (seguro)
Versão máxima da política do kernel: 31

Você também pode usar o comando setenforce para alternar entre vários modos SELinux. Por exemplo, para definir o modo como permissivo, use o comando:

setenforce permissivo

Este modo é temporário e será restaurado para um no arquivo de configuração após uma reinicialização.

sestatus SELinux status: habilitado
Montagem SELinuxfs: / sys / fs / selinux
Diretório raiz do SELinux: / etc / selinux
Nome da política carregada: direcionada
Modo atual: permissivo
Modo do arquivo de configuração: aplicando
Status da política MLS: habilitado
Status deny_unknown da política: permitido
Verificação de proteção de memória: real (seguro)
Versão máxima da política do kernel: 31

Política e contexto do SELinux

Para evitar confusão para iniciantes do SELinux, não vamos mergulhar profundamente em como as políticas do SELinux são implementadas, mas simplesmente tocar no assunto para ter uma ideia.

SELinux funciona implementando políticas de segurança. Uma política SELinux se refere a uma regra que é usada para definir direitos de acesso para cada objeto no sistema. Objetos referem-se a usuários, processos, arquivos e funções.

Cada contexto é definido na forma de usuário: função: tipo: nível.

Por exemplo, crie um diretório em seu diretório inicial e visualize seu contexto de segurança SELinux conforme mostrado nos comandos abaixo:

mkdir ~ / linuxhint_dir
ls -Z ~ / | grep linuxhint

Isso exibirá a saída conforme mostrado abaixo:

unconfined_u: object_r: user_home_t: s0 linuxhint_dir

Você também pode encontrar outros diretórios com contextos de segurança como:

sistema: _u: object_r: user_home_t: s0

Você pode perceber que a saída acima segue a sintaxe do usuário: função: tipo: nível.

Conclusão

Esse foi um tutorial para iniciantes em SELinux usando CentOS 8. Embora o tutorial seja projetado para iniciantes, é mais do que suficiente para começar a trabalhar no SELinux e remover a natureza intimidante do SELinux.

Obrigado por ler.

Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...
Adicione gestos do mouse ao Windows 10 usando essas ferramentas gratuitas
Nos últimos anos, os computadores e sistemas operacionais evoluíram muito. Houve um tempo em que os usuários tinham que usar comandos para navegar pel...
Controle e gerencie o movimento do mouse entre vários monitores no Windows 10
Gerenciador de mouse com tela dupla permite que você controle e configure o movimento do mouse entre vários monitores, diminuindo seus movimentos pert...