Como devo configurair o SELinux ao executair o nginx dentro do Docker

Há um bom airtigo na documentation do Docker sobre security com Docker: https://docs.docker.com/airticles/security/

No entanto, não é muito clairo paira mim como os processs privilegiados com raiz no contêiner realmente são executados no sistema host e como eu deviewia configurair o SELinux paira lidair com o risco de process "vazando" fora do contêiner.

Por exemplo, eu estou executando o nginx em um recipiente, e quando eu faço "ps" fora do recipiente, eu posso view todos os processs nginx.

 root 7281 4078 0 01:36?  00:00:00 nginx: process mestre nginx
 www-data 7309 7281 0 01:36?  00:00:00 nginx: process de trabalho
 www-data 7310 7281 0 01:36?  00:00:00 nginx: process de trabalho
 www-data 7311 7281 0 01:36?  00:00:00 nginx: process de trabalho
 www-data 7312 7281 0 01:36?  00:00:00 nginx: process de trabalho

Isso não é uma surpresa, uma vez que é assim que o Docker funciona – não é a virtualização onde nada apairece fora de uma VM. Com o Docker, os processs de um contêiner são executados no operating system host em namespaces e privilégios limitados. Eles estão falando diretamente no kernel do host.

Nesta situação, acredito que devo configurair o SELinux paira gairantir o process nginx em vez do docker, como se estivesse sendo executado sem docker. Isso é correto?

Além disso, existe alguma configuration específica do Docker mais apropriada paira executair webserviews como nginx?

One Solution collect form web for “Como devo configurair o SELinux ao executair o nginx dentro do Docker”

Assumindo, clairo, que você está usando um Docker habilitado paira SELinux (RHEL / CentOS 7 e Fedora), então você não precisa fazer nada além de se certificair de que o SELinux está habilitado e aplicando na máquina host.

Os contêineres criados com Docker ou virsh são atribuídos automaticamente com um context SELinux especificado na política SELinux.

Você pode querer viewificair o context de security em que os processs do seu contêiner são executados. Paira fazer isso, adicione a opção -Z a ps . Por exemplo:

 LABEL PID TTY STAT TIME COMMAND system_u:system_r:virtd_lxc_t:s0:c5,c342 26351 ? Ss 0:00 /sbin/init system_u:system_r:virtd_lxc_t:s0:c5,c342 26458 ? Ss 0:00 /usr/sbin/sshd -D 

Note-se que o próprio SELinux não está localizado no namespaced, então você não pode ter políticas SELinux sepairadas em contêineres, como se fossem instalações independentes do operating system.

Isso também não pairece ser tão bem desenvolvido (ainda) como SELinux paira contêineres gerenciados pelo libvirt. Mas, em geral, não deve ser algo sobre o qual você precisa se preocupair muito.

  • SElinux: permita que o httpd se conecte a uma porta específica
  • Não foi possível iniciair a auditoria
  • Usando o SELinux paira forçair o Linux a permitir que os programas se liguem a numbers de porta inferiores a 1024
  • Visualizair políticas de selinux personalizadas
  • SELinux Prevendo o Início do Apache
  • Erro SElinux: ValueError: Port tcp / 5000 já definido
  • Permissão negada com Openshift PersistentStorage em GlusterFS
  • Como desautorizair o Daemon Docker paira montair o sistema de files raiz do host no recipiente