CentOS 7: Aninhando regras SELinux

CentOS 7: Aninhando regras SELinux

Então, agora que eudescobri que .sshos arquivos precisam do ssh_home_tcontexto do arquivo, agora preciso descobrir como aninhar as regras do SELinux.

Meu primeiro problema é que não consigo encontrar nenhuma lista de contextos de arquivos SELinux que descrevam o uso pretendido. Então, posso estar fora daqui. Acho que preciso fazer três coisas, nesta ordem:

  1. Defina todos os diretórios correspondentes /exports/home/$USERparanfs_t semtambém correspondendo a quaisquer subdiretórios em $USER. Isso informa ao meu servidor NFS que os diretórios pessoais podem ser exportados legalmente.
  2. Defina tudo correspondente /exports/home/$USER/.*para... alguma coisa? É aqui que uma lista abrangente com descrições seria útil. O SELinux possui um contexto de arquivo que geralmente designa arquivos no diretório inicial de um usuário?
  3. Defina tudo correspondente/exports/home/$USER/\.ssh(/.*) apenaspara ssh_home_t, então o SSHD pode permitir o uso de authorized_keys.

Preciso invocar todas as três regras do servidor NFS. E preciso invocar a segunda e a terceira regrascomo um usuário individualnos arquivos desse usuário individual de qualquer host montando o diretório inicial. Porque, obviamente, espero esmagar qualquer host que monte um desses diretórios pessoais. É mais provável que um usuário crie arquivos, incluindo arquivos ssh, de um host que não seja o servidor NFS.


ATUALIZAR

Acho que descobri os contextos de arquivo corretos. Agora, só preciso descobrir as expressões regulares corretas.

# semanage fcontext -a nfs_t '<regexp 1>'

# semanage fcontext -a user_home_t '<regexp 2>'

# semanage fcontext -a ssh_home_t '<regexp 3>'

onde

  • <regexp 1>pega /exports/home/$USERe não vai mais longe.
  • <regexp 2>pega/exports/home/$USER\.* exceto por exports/home/$USER/\.ssh(/.*)?.
  • <regexp 3>pega exports/home/$USER/\.ssh(/.*)?.

e $USERé independente de string (ou seja, qualquer usuário), eExpressões regulares estendidas POSIXparecem não ser permitidos.

Responder1

Uma resposta fácil e contundente:

O SELinux já possui uma regra padrão para `/export/home/*. Basta soltar o "s" e eu estava consertado.

informação relacionada