Unha folla de referencia para un administrador de sistemas en SELinux42 respostas a preguntas importantes

A tradución do artigo foi elaborada expresamente para o alumnado do curso "Administrador Linux».

Unha folla de referencia para un administrador de sistemas en SELinux42 respostas a preguntas importantes

Aquí obterás respostas a preguntas importantes sobre a vida, o universo e todo o que hai nel. Linux con seguridade mellorada.

"A verdade importante de que as cousas non sempre son o que parecen é de coñecemento común..."

-Douglas Adams, A guía do autoestopista da galaxia

Seguridade. Aumento da fiabilidade. Correspondencia. Política. Administrador do sistema Catro cabaleiros do Apocalipse. Ademais das nosas tarefas diarias -seguimento, copia de seguridade, implantación, configuración, actualización, etc.- tamén somos responsables da seguridade dos nosos sistemas. Incluso aqueles sistemas nos que o provedor externo recomenda que desactivemos a seguridade mellorada. Parece traballo Ethan Hunt de "Misión: imposible".

Ante este dilema, algúns administradores do sistema deciden tomar pastilla azul, porque pensan que nunca coñecerán a resposta á gran pregunta da vida, o universo e todo iso. E como todos sabemos, esa resposta é 42.

No espírito da Guía do autoestopista da galaxia, aquí tes 42 respostas a preguntas importantes sobre control e uso. SELinux nos seus sistemas.

1. SELinux — é un sistema de control de acceso obrigatorio, o que significa que cada proceso ten unha etiqueta. Cada ficheiro, directorio e obxecto do sistema tamén ten unha etiqueta. As regras de política rexen o acceso entre procesos e obxectos etiquetados. O núcleo aplica estas regras.

2. Os dous conceptos máis importantes son: Etiquetado — marcas (arquivos, procesos, portos, etc.) e Tipo de execución (que illa os procesos entre si en función dos tipos).

3. Formato de etiqueta correcto user:role:type:level (opcional).

4. O propósito de proporcionar seguridade multinivel (Seguridade multinivel - MLS) é xestionar procesos (dominios) en función do nivel de seguridade dos datos que utilizarán. Por exemplo, un proceso secreto non pode ler datos de alto segredo.

5. Garantir a seguridade de varias categorías (Seguridade multicategoría - MCS) protexe procesos semellantes entre si (por exemplo, máquinas virtuais, motores OpenShift, sandboxes de SELinux, contedores, etc.).

6. Parámetros do núcleo para cambiar os modos SELinux ao cargar:

  • autorelabel=1 → fai que o sistema execute o reetiquetado
  • selinux=0 → o núcleo non carga a infraestrutura SELinux
  • enforcing=0 → cargando en modo permisivo

7. Se precisa reetiquetar todo o sistema:

# touch /.autorelabel
#reboot

Se a marcación do sistema contén un gran número de erros, é posible que necesites arrancar en modo permisivo para que a observación teña éxito.

8. Para comprobar se SE está activadoLinux: # getenforce

9. Para activar/desactivar temporalmente SELinux: # setenforce [1|0]

10. Comprobación do estado de SELinux: # sestatus

11. Ficheiro de configuración: /etc/selinux/config

12. Como funciona SELinuxAquí tes un exemplo de marcado para o servidor web Apache:

  • Representación binaria: /usr/sbin/httpd→httpd_exec_t
  • Directorio de configuración: /etc/httpd→httpd_config_t
  • Directorio do ficheiro de rexistro: /var/log/httpd → httpd_log_t
  • Directorio de contidos: /var/www/html → httpd_sys_content_t
  • Script de lanzamento: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proceso: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Portos: 80/tcp, 443/tcp → httpd_t, http_port_t

Proceso en execución en contexto httpd_t, pode interactuar cun obxecto etiquetado httpd_something_t.

13. Moitos comandos aceptan un argumento -Z para ver, crear e cambiar o contexto:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Os contextos establécense cando se crean ficheiros en función do contexto do seu directorio principal (con algunhas excepcións). Os RPM poden establecer contextos como durante a instalación.

14. Hai catro razóns principais para os erros de SELinux, que se describen con máis detalle nos parágrafos 15-21 seguintes:

  • Problemas de etiquetaxe
  • Por mor de algo que SELinux debe saber
  • Erro na política/aplicación de SELinux
  • A túa información pode estar comprometida

15. Problema de etiquetaxe: se os seus ficheiros están en /srv/myweb están marcados incorrectamente, o acceso pode ser denegado. Aquí tes algunhas formas de solucionar isto:

  • Se coñeces a etiqueta:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Se coñeces un ficheiro con marcas equivalentes:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Restauración do contexto (para ambos os casos):
    # restorecon -vR /srv/myweb

16. Problema de etiquetaxe: se moves o ficheiro en lugar de copialo, o ficheiro conservará o seu contexto orixinal. Para solucionar este problema:

  • Cambia o comando de contexto coa etiqueta:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Cambia o comando de contexto coa etiqueta da ligazón:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Restaura o contexto (en ambos casos): # restorecon -vR /var/www/html/

17. Se SELinux preciso saber, que HTTPD está escoitando no porto 8585, dígalle a SELinux:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux preciso saber Valores booleanos que che permiten cambiar partes da política SELinux en tempo de execución sen coñecemento da reescritura da política de SELinuxPor exemplo, se queres que httpd envíe correos electrónicos, introduce: # setsebool -P httpd_can_sendmail 1

19. SELinux preciso saber valores lóxicos para activar/desactivar a configuración de SELinux:

  • Para ver todos os valores booleanos: # getsebool -a
  • Para ver unha descrición de cada un: # semanage boolean -l
  • Para establecer un valor booleano: # setsebool [_boolean_] [1|0]
  • Para unha instalación permanente, engade -P. Por exemplo: # setsebool httpd_enable_ftp_server 1 -P

20. Políticas/Aplicacións de SELinux pode conter erros, incluíndo:

  • Camiños de código pouco habituais
  • Configuracións
  • Redirixindo stdout
  • Fugas de descritores de ficheiros
  • Memoria executable
  • Bibliotecas mal construídas

Tickets abertos (non envíe un informe a Bugzilla; Bugzilla non ten SLA).

21. A túa información pode estar comprometidase tes dominios restrinxidos intentando:

  • Cargar módulos do núcleo
  • Desactivar o modo SE forzadoLinux
  • Escribe a etc_t/shadow_t
  • Cambiar as regras de iptables

22. Ferramentas SELinux para o desenvolvemento de módulos de políticas:

# yum -y install setroubleshoot setroubleshoot-server

Reinicie ou reinicie auditd despois da instalación.

23. Usar

journalctl

para mostrar unha lista de todos os rexistros asociados setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. Usar journalctl para listar todos os rexistros asociados cunha etiqueta SE específicaLinux. Por exemplo:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Cando se produce un erro SELinux usar o rexistro setroubleshoot ofrecendo varias solucións posibles.
Por exemplo, de journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

26. Tala: SELinux rexistra información en moitos lugares:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Rexistro: Localización de erros de SELinux no rexistro de auditoría:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. Para atopar mensaxes SELinux Acceder á caché vectorial (AVC) para un servizo específico:

# ausearch -m avc -c httpd

29. Utilidade audit2allow recompila información dos rexistros de operacións prohibidas e logo xera regras de política de permisos SELinux. Por exemplo:

  • Para crear unha descrición lexible por humanos de por que se denega o acceso: # audit2allow -w -a
  • Para ver unha regra de aplicación de tipos que permite o acceso denegado: # audit2allow -a
  • Para crear un módulo personalizado: # audit2allow -a -M mypolicy
  • Opción -M crea un ficheiro de aplicación de tipo (.te) co nome especificado e compila a regra nun paquete de políticas (.pp): mypolicy.pp mypolicy.te
  • Para instalar un módulo personalizado: # semodule -i mypolicy.pp

30. Para configurar un proceso separado (dominio) para que funcione en modo permisivo: # semanage permissive -a httpd_t

31. Se xa non queres que o dominio sexa permisivo: # semanage permissive -d httpd_t

32. Para desactivar todos os dominios permisivos: # semodule -d permissivedomains

33. Activación da política MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permisivo
TIPO DE SELINUX=mls

Asegúrate de SELinux funciona en modo permisivo: # setenforce 0
Use un guión fixfilespara asegurarse de que os ficheiros se reetiqueten no seguinte reinicio:

# fixfiles -F onboot # reboot

34. Crea un usuario cun rango MLS específico: # useradd -Z staff_u john

Usando o comando useradd, mapea o novo usuario a un usuario SE existenteLinux (neste caso, staff_u).

35. Para ver a correspondencia entre os usuarios de SELinux и Linux: # semanage login -l

36. Defina un rango específico para o usuario: # semanage login --modify --range s2:c100 john

37. Para corrixir a etiqueta do directorio de inicio do usuario (se é necesario): # chcon -R -l s2:c100 /home/john

38. Para ver as categorías actuais: # chcat -L

39. Para cambiar de categoría ou comezar a crear a túa, edita o ficheiro do seguinte xeito:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. Para executar un comando ou un script nun ficheiro, rol e contexto de usuario específicos:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t contexto do ficheiro
  • -r contexto de rol
  • -u contexto de usuario

41. Contedores que se executan con SE desactivadoLinux:

  • Podman: # podman run --security-opt label=disable …
  • Docker: # docker run --security-opt label=disable …

42. Se precisas dar ao contedor acceso total ao sistema:

  • Podman: # podman run --privileged …
  • Docker: # docker run --privileged …

E agora xa sabes a resposta. Así que, por favor: non te asustes e activa SE.Linux.

Referencias:

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster