selinux faq - frequently-asked questions about security … · 2017. 4. 8. · selinux faq 2 1....

26
1 Fedora 8 SELinux FAQ Frequently-asked questions about Security Enhanced Linux Karsten Wade Paul W. Frields Chad Sellers Marc Wiriadisastra Copyright © 2004,2005 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. All other trademarks are the property of their respective owners. Resumo 1. Notas e FAQ do SELinux ........................................................................................................ 2

Upload: others

Post on 19-Jan-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

1

Fedora 8SELinux FAQ

Frequently-asked questions about Security Enhanced Linux

Karsten WadePaul W. FrieldsChad Sellers

Marc WiriadisastraCopyright © 2004,2005 Red Hat, Inc. and others.

The text of and illustrations in this document are licensed by Red Hat under a CreativeCommons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanationof CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. Theoriginal authors of this document, and Red Hat, designate the Fedora Project asthe "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, ifyou distribute this document or an adaptation of it, you must provide the URL for theoriginal version.

Red Hat, as the licensor of this document, waives the right to enforce, and agrees notto assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora,the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the UnitedStates and other countries.

For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/wiki/Legal:Trademark_guidelines.

Linux® is the registered trademark of Linus Torvalds in the United States and othercountries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in theUnited States and/or other countries.

All other trademarks are the property of their respective owners.

Resumo

1. Notas e FAQ do SELinux ........................................................................................................ 2

Page 2: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

2

1. Notas e FAQ do SELinuxA informação nesta FAQ é valiosa para aqueles que são novos no SELinux. É também valiosase for pouco experiente com a última implementação de SELinux no Fedora, dado que algum docomportamento poderá ser diferente do que já experimentou.

This FAQ is specific to Fedora 8If you are looking for the FAQ for other versions of Fedora, refer to http://docs.fedoraproject.org/selinux-faq/.

Para mais informações sobre o funcionamento do SELinux, como usar o SELinux nas distribuiçõesgerais e específicas do Linux, assim como escrever políticas, estes recursos são úteis:

Lista de Referências Externas• NSA SELinux main website — http://www.nsa.gov/selinux/

• NSA SELinux FAQ — http://www.nsa.gov/selinux/info/faq.cfm

• SELinux community page — http://selinux.sourceforge.net

• UnOfficial FAQ — http://www.crypt.gen.nz/selinux/faq.html

• Writing traditional SE Linux policy HOWTO — http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html

• Reference Policy (the new policy found in Fedora 5) — http://oss.tresys.com/projects/refpolicy

• SELinux policy development training courses — https://www.redhat.com/training/security/courses/rhs429.html

• Getting Started with SE Linux HOWTO: the new SE Linux (Debian) — http://www.lurking-grue.org/selinuxHOWTO.html

• List of SELinux object classes and permissions — http://tresys.com/selinux/obj_perms_help.shtml

• No IRC — irc.freenode.net, #fedora-selinux

• Fedora mailing list — mailto:[email protected]; read the archives or subscribe at http://www.redhat.com/mailman/listinfo/fedora-selinux-list

Fazer alterações/adições à FAQ do SELinux do FedoraThis FAQ is available at http://docs.fedoraproject.org/selinux-faq/.

For changes or additions to the Fedora SELinux FAQ, use this bugzilla template1, whichpre-fills most of the bug report. Patches should be a diff -u against the XML, which isavailable from CVS (refer to http://docs.fedoraproject.org/documentation-guide for detailson obtaining the fedora-docs/selinux-faq module from anonymous CVS; you can get justthe fedora-docs/selinux-faq module if you don't want the entire fedora-docstree.) Otherwise, plain text showing before and after is sufficient.

Page 3: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

3

Para uma lista com todos os relatórios de erros enviados para esta FAQ, veja em https://bugzilla.redhat.com/bugzilla/showdependencytree.cgi?id=118757.

1.1. Compreender o SELinux

P: O que é o SELinux?

R: O SELinux (Security-Enhanced Linux) no Fedora é uma implementação do controlo de acessoobrigatório no 'kernel' do Linux, usando a plataforma LSM Linux Security Modules - Módulos deSegurança do Linux. A segurança normal do Linux é um modelo de controlo de acesso discreto.

Controlo de acesso discreto (DAC)O DAC é a segurança normal no Linux, e não oferece qualquer protecção contra 'software'defeituoso ou programas maliciosos que corram como um utilizador normal ou como 'root'.Os utilizadores poderão ceder níveis arriscados de acesso aos ficheiros que possuem.

Controlo de acesso obrigatório (MAC)O MAC oferece um controlo completo sobre todas as interacções do 'software'. Uma políticadefinida a nível administrativo controla de forma restrita as interacções dos utilizadores edos processos com o sistema, oferecendo uma protecção contra programas defeituosos oumaliciosos como um utilizador qualquer.

In a DAC model, file and resource decisions are based solely on user identity and ownershipof the objects. Each user and program run by that user has complete discretion over the user'sobjects. Malicious or flawed software can do anything with the files and resources it controlsthrough the user that started the process. If the user is the super-user or the application issetuid or setgid to root, the process can have root level control over the entire file system.

Um sistema MAC não sofre destes problemas. Em primeiro lugar, poderá definir de formaadministrativa uma política de segurança sobre todos os processos e objectos. Em segundolugar, você controla todos os processos e objectos, no caso do SELinux, através do 'kernel'. Emterceiro lugar, as decisões baseiam-se em toda a informação relevante para a segurança, nãoapenas na identidade do utilizador autenticado.

O MAC no SELinux permite-lhe oferecer permissões de forma granular para todos os sujeitos(utilizadores, programas, processos) e objectos (ficheiros, dispositivos). Na prática, pense nossujeitos como processos e nos objectos como o alvo de uma operação do processo. Poderáceder em segurança a um processo apenas as permissões que necessita para efectuar a suafunção, nada mais.

The SELinux implementation uses role-based access control (RBAC), which provides abstracteduser-level control based on roles, and Type Enforcement® (TE). TE uses a table, or matrix tohandle access controls, enforcing policy rules based on the types of processes and objects.Process types are called domains, and a cross-reference on the matrix of the process's domainand the object's type defines their interaction. This system provides extremely granular controlfor actors in a Linux system.

P: O que é uma política do SELinux?

R: A política do SELinux descreve as permissões de acesso a todos os sujeitos e objectos, isto é,o sistema inteiro de utilizadores, programas e processos, assim como os processo, os ficheiros

Page 4: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

4

e os dispositivos sobre os quais actuam. A política do Fedora é distribuída num pacote, com umpacote de código-fonte associado. Os pacote de políticas fornecidos actualmente são:

selinux-policy-<version>.noarch.rpmEste pacote é comum a todos os tipos de políticas e contém os ficheiros de configuração/páginas do manual. Isto inclui os ficheiros de interface do ambiente de desenvolvimento.Este pacote substitui o pacote '-sources' do passado. Este pacote contém os ficheirosde interface usados na Política de Referência, em conjunto com um aMakefile e umaferramenta pequena chamada policygentool, que é usada para gerar um ficheiro demodelo de políticas. Os ficheiros da interface residem na pasta /usr/share/selinux/devel/include. Se quiser ver todos os ficheiros da política que são usados para criar aPolítica de Referência, terá de instalar então o src.rpm.

selinux-policy-strict-<version>.noarch.rpm, selinux-policy-targeted-<version>.noarch.rpm, selinux-policy-mls-<version>.noarch.rpm

A política instalada e os ficheiros de suporte estão em /etc/selinux/nome-política/.As sub-pastas incluem

• policy - uma política binária que é carregada no 'kernel'

• contexts - uma política de contextos/etiquetagem, usada para tomar decisões delegendagem por parte de alguns programas, como o 'restorecon' e o 'fixfiles'

• modules - um armazém para os módulos de políticas que são combinados para criar apolítica binária do 'kernel'. Lembre-se que este não deverá ser editado à mão, dado que éum recurso privado da 'libsemanage'.

More information on the different policies available in SELinux can be found at http://fedoraproject.org/wiki/SELinux/Policies.

P: O que é a política-alvo do SELinux?

R: Quando o SELinux foi introduzido inicialmente no Fedora, obrigava a usar a política restrita daNSA. Para fins de teste, isto expunha efectivamente centenas de problemas na política restrita.Para além disso, demonstrava que a aplicação de uma política restrita aos vários ambientes dosutilizadores do Fedora não era exequível. Para gerir uma única política restrita para tudo o quenão fosse a instalação predefinida, teria de haver alguma experiência aplicada a nível local.

Nest altura, os programadores do SELinux reveram as suas escolhas e optaram por tentar umaestratégia diferente. Decidiram criar uma política-alvo que bloqueia os servidores específicos,especialmente aqueles que são vulneráveis a ataques ou que poderiam devastar um sistema,se tivessem problemas ou fossem atacados. O resto do sistema funciona exactamente comoaconteceria numa política normal de DAC do Linux.

Na política-alvo, a maioria dos processos corre no domínio unconfined_t. Como o nomeindica em inglês, estes processos não estão confinados na política do SELinux. São à mesmacobertos pela política de segurança DAC normal do Linux, todavia.

Estes servidores de rede, os quais são tratados pela política-alvo, fazem uma transição paraa política-alvo quando a aplicação arranca. Por exemplo, no arranque do sistema, o initexecuta-se sob a política unconfined_t. Quando o named se inicia, faz uma transição para odomínio named_t e é bloqueado pela política apropriada.

Page 5: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

5

For more information on enabling or disabling targeted policy on each of the specific daemons,refer to How to use system-config-selinux.

More information on the different policies available in SELinux can be found at http://fedoraproject.org/wiki/SELinux/Policies.

P: Quais os programas que são protegidos pela política-alvo?

R: De momento, a lista de programas é, aproximadamente:

accton, amanda, httpd (apache), arpwatch, pam, automount, avahi, named, bluez,lilo, grub, canna, comsat, cpucontrol, cpuspeed, cups, cvs, cyrus, dbskkd,dbus, dhcpd, dictd, dmidecode, dovecot, fetchmail, fingerd, ftpd (vsftpd, proftpd,and muddleftpd), gpm, hald, hotplug, howl, innd, kerberos, ktalkd, openldap,auditd, syslog, logwatch, lpd, lvm, mailman, module-init-tools, mount, mysql,NetworkManager, NIS, nscd, ntp, pegasus, portmap, postfix, postgresql, pppd,pptp, privoxy, procmail, radiusd, radvd, rlogin, nfs, rsync, samba, saslauthd,snmpd, spamd, squid, stunnel, dhcpc, ifconfig, sysstat, tcp wrappers, telnetd,tftpd, updfstab, user management (passwd, useradd, etc.), crack, uucpd, vpnc,webalizer, xend, xfs, zebra

P: Então e a política restrita? Ainda funciona sequer?

R: A política restrita funciona de facto no Fedora. O desafio são os ambientes únicos dos diferentesutilizadores. Para utilizar a política restrita no seu ambiente, poderá ter de afinar tanto a suapolítica como os seus sistemas.

To make the strict policy easier to use, SELinux developers have tried to make the change fromone policy to the other easier. For example, system-config-selinux builds a relabel into thestartup scripts.

More information on the different policies available in SELinux can be found at http://fedoraproject.org/wiki/SELinux/Policies.

P: O que é a política 'mls'? Para quem é que serve?

R: A política 'mls' é semelhante à política restrita, só que acrescenta um campo adicional aoscontextos de segurança, para separar os níveis. O SELinux poderá usar estes níveis paraseparar os dados num ambiente que obriga a uma separação hierárquica restrita. Um exemplotípico é uma configuração militar, onde os dados são secretos a um dado nível. Esta políticaestá destinada a este tipo de ambientes, e poderá não ser útil para si, a menos que caia nestacategoria.

More information on the different policies available in SELinux can be found at http://fedoraproject.org/wiki/SELinux/Policies.

P: O que é a Política de Referência?

R: The Reference Policy is a new project maintained by Tresys Technology (http://www.tresys.com/)designed to rewrite the entire SELinux policy in a way that is easier to use and understand. To dothis, it uses the concepts of modularity, abstraction, and well-defined interfaces. Refer to http://oss.tresys.com/projects for more information on the Reference Policy.

Page 6: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

6

Lembre-se que a Política de Referência não é um novo tipo de política, como a política-alvoou a restrita. Em vez disso, é uma base nova, a partir da qual poderão ser criadas as políticas.As políticas-alvo, restritas e 'mls' poderão ser todas criadas a partir da Política de Referência.De facto, um dos objectivos de desenho da Política de Referência é ter uma árvore de códigounificada para as diferentes variantes de políticas.

Fedora policies at version 1.x are based on the traditional example policy. Version 2.x policies(as used in Fedora 8) are based on the Reference Policy.

P: O que são os contextos de ficheiros?

R: Os contextos de ficheiros são usados pelo comando setfiles para gerar os nomes oulegendas persistentes, que descrevem o contexto de segurança de um ficheiro ou pasta.

O Fedora vem com o programa fixfiles, que suporta três opções: a check, a restore ea relabel. Este programa permite aos utilizadores mudarem o nome do sistema de ficheirossem ter o pacote selinux-policy-targeted-sources instalado. A utilização da linha decomandos é mais amigável que o comando setfiles normal.

P: Como é que vejo o contexto de segurança de um ficheiro, utilizador ou processo?

R: A nova opção -Z é o método resumido para mostrar o contexto de um sujeito ou objecto:

ls -alZ file.foo id -Z ps -eZ

P: Qual é a diferença entre um domínio e um tipo?

R: Não existem diferenças entre um domínio e um tipo, ainda que o domínio seja usadonormalmente usado para se referir ao tipo de um processo. O uso de um domínio, desta forma,deriva dos modelos de Obrigação de Domínio e Tipo (DTE), onde os domínios e os tipos sãoseparados.

P: O que são os módulos de políticas?

R: Antes do Fedora 5, as políticas do SELinux eram monolíticas, o que significava que elas eramcompiladas num único binário de política. Para fazer alterações ou adições a essa política, umadministrador tinha de mudar a política inteira. Com o Fedora 5, a política agora é modular.Isto significa que os programadores legados poderão oferecer módulos de políticas com assuas aplicações, podendo estas ser adicionadas à política, sem ter de mudar toda a política, damesma forma que os módulos do 'kernel' conseguem adicionar funcionalidades ao 'kernel', semter de reiniciar o sistema inteiro.

This actually works by separating out compile and link steps in the policy build procedure.Policy modules are compiled from source, and linked when installed into the module store (seeManaged Policy). This linked policy is then loaded into the kernel for enforcement.

O comando primário para lidar com os módulos é o semodule, que lhe permitirá efectuarfunções básicas como a instalação, actualização ou remoção de módulos. Os os outroscomandos úteis incluem o checkmodule, que é o compilador de módulos e que é instalado

Page 7: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

7

com o RPM do 'checkpolicy', assim como o semodule_package, que cria um ficheiro depacote de políticas (.pp) a partir de um módulo de política compilado.

Os módulos são normalmente guardados num ficheiro de pacote de políticas (com a extensão'.pp') em /usr/share/selinux/nome-política/. Aí, deverá encontrar, pelo menos, oficheiro 'base.pp', que é o módulo de base.

To see how to write a simple policy module, check out Local Policy Customizations.

P: O que é uma política gerida?

R: Antes do Fedora 5, as políticas do SELinux eram tratadas como ficheiros de configuração no /etc, que podiam ser modificados pelo utilizador. Infelizmente, isto tornava difícil respondera muitas das questões de usabilidade levantadas com o SELinux. Por isso, uma bibliotecanova, a libsemanage, foi adicionada para oferecer ferramentas e uma interface ao utilizadorpara tornar mais simples a gestão das políticas. Toda a gestão de políticas deverá usaresta biblioteca para aceder ao armazém de políticas. O armazém de políticas guarda toda ainformação das políticas, e poderá ser encontrado em /etc/selinux/nome-política/modules/.

Nunca deverá ter de editar o armazém directamente. Em vez disso, deverá usar ferramentasque se associem à 'libsemanage'. Uma ferramenta de exemplo é a semanage, que é umaferramenta da linha de comandos para gerir boa parte da política, como o mapeamento deutilizadores do SELinux, o mapeamento de portos do SELinux e os itens dos contextos dosficheiros. Outros exemplos de ferramentas que usam a 'libsemanage' incluem o semodule,que a usa para gerir os módulos de políticas do SELinux instalados no armazém e osetsebool que a usa para gerir os valores booleanos da política do SELinux. Estão tambéma ser desenvolvidas outras ferramentas gráficas que usam a funcionalidade oferecida pela'libsemanage'.

1.2. Controlar o SELinux

P: Como é que instalo/não instalo o SELinux?

R: O instalador segue a opção que fizer no ecrã de Configuração da 'Firewall'. A políticapredefinida em execução é a política-alvo, e está activa por omissão.

P: Como administrador, o que preciso de fazer para configurar o SELinux no meu sistema?

R: The answer might be nothing. There are many Fedora users that don't even realize that theyare using SELinux. SELinux provides protection for their systems with an out-of-the-boxconfiguration. That said, there are a couple of things an administrator might want to do toconfigure their system. These include:

booleanosBooleans are settings that can be flipped to alter SELinux policy behavior without havingto write new policy. There are many booleans that can be set in Fedora, and they allowan administrator to configure SELinux to a great degree. To view the available booleansand modify their settings, use system-config-selinux or the command line toolsetsebool.

Page 8: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

8

definir contextos de ficheiros personalizadosFiles on an SELinux system have a security context which is stored in the extended attributeof the file (behavior can vary from filesystem to filesystem, but this is how ext3 works). Theseare set by rpm automatically, but sometimes a user might want to set a particular contexton a file. An example would be setting the context on a public_html directory so thatapache can access it, as illustrated in How do I make a user public_html directory workunder SELinux.

Para uma lista de tipos que poderá querer atribuir aos ficheiros, veja em /etc/selinux/targeted/contexts/customizable_types. Estes são tipos normalmente atribuídosaos ficheiros pelos utilizadores e administradores. Para os definir, use o comando chcon.Lembre-se que os tipos em customizable_types são também preservados após amudança de nome, como tal a legendagem do sistema não irá anular isto.

fazer algumas bibliotecas mal-comportadas funcionarThere are many libraries around that behave badly and try to break the memory protectionsSELinux provides. These libraries should really be fixed, so please file a bug with the librarymaintainer. That said, they can be made to work. More information and solutions to make thelibraries work can be found in I have a process running as unconfined_t, and SELinux is stillpreventing my application from running.

P: Como é que activo/desactivo a protecção do SELinux em domínios específicos, sob a política-alvo?

R: Use system-config-selinux, also known as the SELinux Management graphical tool, tocontrol the Boolean values of specific daemons. For example, if you need to disable SELinuxfor Apache to run correctly in your environment, you can disable the value in system-config-selinux. This change disables the transition to the policy defined in apache.te, allowinghttpd to remain under regular Linux DAC security.

P: In the past I have written local.te file in policy sources for my own local customization to policy,how do I do this in Fedora 8?

R: Since Fedora 5 uses a modular policy, you don't have to have the complete policy source anymore. Now, you can just create a local policy module for your local policy customizations. To dothis, follow these steps.

1. Crie uma pasta temporária e entre nela.

$ mkdir foo $ cd foo

2. Crie ficheiros 'te', 'if' e 'fc' vazios.

$ touch local.te local.if local.fc

3. Edite o ficheiro 'local.te', adicionando algum conteúdo apropriado. Por exemplo:

Page 9: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

9

policy_module(local, 1.0) require { attribute httpdcontent; type smbd_t; } allow smbd_t httpdcontent:dir create_dir_perms; allow smbd_t httpdcontent:{ file lnk_file } create_file_perms;

Existem 3 partes neste ficheiro.

• A chamada policy_module insere as instruções para pôr o módulo a funcionar,incluindo a declaração do módulo e a requisição de papéis, classes e permissões dosistema. Certifique-se que o nome aqui indicado ('local', neste caso) corresponde aonome que indicou no ficheiro (local.te).

• O bloco require indica os símbolos que este módulo usa que deverão estar declaradosnoutros módulos. Neste caso, é necessário o atributo httpdcontent e o tipo smbd_t.Repare que todos os tipos e atributos que usar nas regras deverão ser indicados aqui, amenos que os esteja a declarar você mesmo, mais abaixo.

• O resto do ficheiro é a política, que consiste neste caso apenas num conjunto de regrasde permissões. Poderia também colocar aqui as declarações dos tipos, as instruções'dontaudit', as chamadas à interface ou a maioria das coisas que poderão ir para umficheiro 'te' normal.

4. Compile o módulo da política.

$ make -f /usr/share/selinux/devel/Makefile Compliling targeted local module /usr/bin/checkmodule: loading policy configuration from tmp/local.tmp /usr/bin/checkmodule: policy configuration loaded /usr/bin/checkmodule: writing binary representation (version 5) to tmp/local.mod Creating targeted local.pp policy package rm tmp/local.mod.fc tmp/local.mod

Repare que isto usa o checkmodule, que faz parte do RPM do 'checkpolicy'. Como tal,certifique-se que instala este RPM antes de fazer este passo.

5. Mude para o utilizador 'root' e instale o módulo da política com o semodule.

$ su Password: # semodule -i local.pp

Os módulos são identificados univocamente por nomeIsto significa que, se inserir mais tarde outro ficheiro local.pp, ele irá substituiro que acabou de carregar. Por isso, deverá manter este ficheiro local.te eadicione-o apenas se precisar de fazer mais personalizações da política. Se operder, mas quiser manter a sua política anterior, basta chamar ao novo módulo dapolítica local outro nome (por exemplo, local2.te).

Fedora 5 introduces a graphical tool that steps you through creating policies. To install thegraphical tool, run the following command:

su -c 'yum install selinux-polgengui'

Page 10: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

10

The Policy Generation Graphical Tool makes it easier to create policies to restrict applicationsand users using SELinux. The process described earlier can be completed using the interface tomake your system more or less restrictive for users and applications.

P: Tenho algumas proibições do 'avc' que gostaria de permitir; como é que faço isso?

R: Se tiver mensagens de AVC específicas, poderá usar o audit2allow para gerar um ficheiro deType Enforcement que está pronto a ser carregado como um módulo de políticas.

audit2allow -M local < /tmp/avcs

Isto irá criar um local.pp, o qual poderá depois carregar no 'kernel' com o comandosemodule -i local.pp. Poderá também editar o local.te para fazer personalizaçõesadicionais. Para criar um módulo que permita todas as proibições desde o último arranque, paraque o possa personalizar de seguida, execute o seguinte:

audit2allow -m local -l -i /var/log/messages > local.te

Lembre-se que o que está acima assume que você não está a usar o servidor de auditorias. Seestivesse a usar o servidor de auditorias, então iria usar o /var/log/audit/audit.log emvez do /var/log/messages como ficheiro de registo. Isto irá gerar um ficheiro local.te,que se parece mais ou menos com o seguinte:

module local 1.0; require { class file { append execute execute_no_trans getattr ioctl read write }; type httpd_t; type httpd_w3c_script_exec_t; }; allow httpd_t httpd_w3c_script_exec_t:file { execute execute_no_trans getattr ioctl read };

You can hand edit this file, removing allow statements that you don't want to allow, and thenrecompile and reload it using

• Use o checkmodule -M -m -o local.mod local.te para compilar o ficheiro 'te'.Lembre-se que o checkmodule faz parte do RPM 'checkpolicy', por isso este deverá estarinstalado.

• semodule_package -o local.pp -m local.mod para criar um pacote de política.

• semodule -i local.pp to add it to the current machine's running policy. This installs a newmodule called local with these rules into the module store.

ImportantePara carregar este pacote de política no 'kernel', é preciso executar o semodule -i local.pp

Lembre-se que, se instalar posteriormente outro módulo chamado 'local', este irásubstituir este módulo. Se quiser manter estas regras, então terá de adicionaras personalizações futuras a este ficheiro 'local.te' ou então dar às novaspersonalizações um nome diferente.

Page 11: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

11

P: Como é que posso ajudar a criar políticas?

R: A sua ajuda é claramente bem-vinda.

• You can start by joining the Fedora SELinux mailing list. You can subscribe and read thearchives at http://www.redhat.com/mailman/listinfo/fedora-selinux-list.

• The Unofficial FAQ has some generic policy writing HOWTO information. Refer to http://sourceforge.net/docman/display_doc.php?docid=14882&group_id=21266#BSP.1 for moreinformation.

• Another new resource is the Writing SE Linux policy HOWTO, located online at http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html.

Also, since the Fedora 8 policy is based on the Reference Policy, you should look at thedocumentation on its project page. Another excellent source of information is the example policyfiles in /usr/share/doc/selinux-policy->version< and /usr/share/selinux/devel.

Se quiser criar um novo domínio de políticas, poderá ver os ficheiros de interface nas sub-pastas da /usr/share/selinux/devel. Existe também aí uma ferramenta que o ajuda acomeçar. O procedimento seguinte é um exemplo:

1. Use o comando policygentool para gerar os seus próprios ficheiros te, fc e if. Ocomando policygentool recebe dois parâmetros: o nome do módulo da política e alocalização completa do executável. O comando seguinte dá um exemplo de utilização:

policygentool mydaemon /usr/sbin/mydaemon

Ele pedir-lhe-á algumas características comuns do domínio, e irá de seguida criar trêsficheiros: o omeuservidor.te, o omeuservidor.fc e o omeuservidor.if.

2. Depois de gerar os ficheiros da política, use a Makefile oferecida, a /usr/share/selinux/devel/Makefile, para criar um pacote de políticas (omeuservidor.pp):

make -f /usr/share/selinux/devel/Makefile

3. Agora, poderá carregar o módulo da política, usando o semodule e mudar a legenda doexecutável com o restorecon:

semodule -i mydaemon.pprestorecon -v /usr/sbin/mydaemon

4. Dado que você tem uma política muito limitada para o seu executável, o SELinux irá evitarque ele faça muita coisa. Active o modo permissivo e use então o programa 'init' para iniciaro seu servidor:

setenforce 0service mydaemon restart

Page 12: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

12

Agora, poderá recolher as mensagens do 'avc'. Poderá usar o audit2allow para traduziras mensagens do 'avc' para regras de permissão e começar a actualizar o seu ficheiroomeuservidor.te. Deverá procurar por macros de interfaces na pasta /usr/share/selinux/devel/include e usar estas macros, em vez das regras directas, sempre quepossível. O audit2allow -R irá tentar descobrir as interfaces que correspondam à regra depermissão. Se quiser mais exemplos de políticas, poderá sempre instalar o pacote de código do'selinux-policy', que contém todos os ficheiros 'te' da política de referência.

P: Como é que mudo a política que estou a usar de momento?

R:Tenha cuidado ao mudar de políticaPara além de tentar uma política nova para fins de investigação, numa máquinade testes, deverá considerar seriamente a sua situação antes de mudar para umapolítica diferente num sistema de produção. O acto de mudar é relativamentesimples. Este método é razoavelmente seguro, mas devê-lo-á testar primeiro numsistema de testes.

To use the automated method, run the Security Level Configuration tool. From the GUI Main

Menu, select Desktop → System Settings → Security level, or from a terminal, run system-config-selinux. Change the policy as desired and ensure that the Relabel on next rebootoption is enabled.

Poderá também efectuar estes passos manualmente com o seguinte procedimento:

1. Edite o /etc/selinux/config e mude o tipo e o modo da política:

SELINUXTYPE=policyname SELINUX=permissive

Este passo garante que você não ficará bloqueado depois de reiniciar o sistema. O SELinuxirá correr com a política correcta, mas permitir-lhe-á autenticar-se se ocorrer um problema,como a mudança de nome de um contexto de ficheiros incorrecto.

2. Configure o sistema para mudar o nome no sistema de ficheiros ao reiniciar:

touch /.autorelabel

3. Reinicie o sistema. Um arranque limpo, com a política nova, permite iniciar todos osprocessos do sistema no contexto correcto, revelando todos os problemas que existem pelamudança de política.

4. Confirme se as suas alterações fizeram efeito com o seguinte comando:

sestatus -v

Page 13: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

13

With the new system running in permissive mode, check /var/log/messages for avc:denied messages. These may indicate a problem that needs to be solved for the system torun without trouble under the new policy.

5. Quando estiver satisfeito com a estabilidade com o sistema corre com a nova política,active o modo real ou obrigatório, mudando para SELINUX=enforcing. Poderá tantoreiniciar o sistema como executar o comando setenforce 1 para activar a efectividadedo sistema em tempo-real.

P: Como é que posso salvaguardar os ficheiros de um sistema de ficheiros do SELinux?

R: Use o utilitário star, que suporta os atributos extendidos que guardam os nomes dos contextosde segurança. Indique a opção -xattr e -H=exustar ao criar os pacotes.

ls -Z /var/log/maillog-rw------- root root system_u:object_r:var_log_t /var/log/maillogcd /var/log star -xattr -H=exustar -c -f maillog.star ./maillog*

Os locais absolutos poderão substituir os dados existentesSe usar um local absoluto, como o /var/log/maillog, ao descomprimir o pacotecom o star -c -f, os ficheiros serão repostos no mesmo local com que foramarquivados. O ficheiro maillog irá tentar gravar no /var/log/maillog. Deveráreceber um aviso do star se os ficheiros prestes a serem sobrepostos tiverem umadata posterior, mas não poderá confiar neste comportamento.

Pense com cuidado na forma como constrói o seu argumento de arquivo.

P: Como é posso instalar a política restrita por omissão com o 'kickstart'?

R: 1. Na secção %packages, adicione a selinux-policy-strict.

2. Na secção %post, adicione o seguinte:

lokkit -q --selinuxtype=strict touch /.autorelabel

P: Como é que ponho a pasta public_html de um utilizador a funcionar no SELinux?

R: This process presumes that you have enabled user public HTML directories in your Apacheconfiguration file, /etc/httpd/conf/httpd.conf. This process only covers servingstatic Web content. For more information about Apache HTTP and SELinux, refer to http://docs.fedoraproject.org/selinux-apache-fc3/.

1. Se não tiver já uma pasta ~/public_html, crie uma e preencha-a com os ficheiros epastas a serem servidos.

cd ~ mkdir public_html cp /path/to/content ~/public_html

Page 14: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

14

2. At this point, httpd is configured to serve the contents, but you still receive a 403forbidden error. This is because httpd is not allowed to read the security type for thedirectory and files as they are created in the user's home directory. Change the securitycontext of the folder and its contents recursively using the -R option:

ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/ls -Z public_html/-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t bar.html -rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t baz.html -rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t foo.html

Poderá reparar mais tarde que o campo do utilizador, definido aqui como user_u, émudado para system_u. Isto não afecta a forma como a política-alvo funciona. O campoque interessa é o campo do tipo.

3. Your static webpages should now be served correctly. If you continue to have errors, ensurethat the Boolean which enables user home directories is enabled. You can set it usingsystem-config-selinux. Select the SELinux tab, and then select the Modify SELinuxPolicy area. Select Allow HTTPD to read home directories. The changes takeeffect immediately.

P: Como é que desactivo o SELinux no arranque?

R: Configure o SELINUX=disabled no /etc/selinux/config.

Em alternativa, poderá adicionar selinux=0 aos seus parâmetros de arranque do 'kernel'.Contudo, esta opção não é recomendada.

Tenha cuidado ao desactivar o SELinuxSe arrancar com o selinux=0, todos os ficheiros que criar, enquanto o SELinuxestiver desactivado, não terão informações de contexto do SELinux. O sistemade ficheiros será marcado para mudança de nome no próximo arranque. Se umproblema imprevisível evitar que você reinicie normalmente, poderá ter de reiniciarno modo mono-utilizador para recuperar. Adicione a opção emergency aos seusparâmetros de arranque do 'kernel'.

P: Como é que activo/desactivo o modo obrigatório no arranque?

R: Poderá indicar o modo do SELinux com o ficheiro de configuração /etc/sysconfig/selinux.

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded.SELINUX=enforcing

Page 15: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

15

# SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection.SELINUXTYPE=targeted

A configuração do valor enforcing é a mesma que adicionar enforcing=1 aos parâmetrosde arranque do 'kernel'. A configuração deste valor como permissive é a mesma queadicionar enforcing=0 aos mesmos parâmetros de arranque.

Contudo, configurar o valor como disabled não é o mesmo que o parâmetro de arranqueselinux=0. Em vez de desactivar por completo o SELinux no 'kernel', a opção disabledsimplesmente desactiva a aplicação e o carregamento de uma política.

Precedência da Configuração do SELinuxO parâmetro da linha de comandos do 'kernel' tem precedência sobre o ficheiro deconfiguração.

P: Como é que desactivo temporariamente o modo 'enforcing' sem ter de reiniciar o sistema?

R: Em algumas ocasiões, poderá ter de efectuar uma acção que é impedida normalmente pelapolítica. Execute o comando setenforce 0 para desactivar o modo de aplicação da políticaem tempo-real. Quando terminar, execute setenforce 1 para voltar a aplicar o SELinux denovo.

sysadm_r Papel obrigatório para a política restritaDeverá executar o comando setenforce com o papel de sysadm_r, se estivera usar a política restrita. Se estiver a usar a política-alvo normal, então não énecessário. Use o comando newrole para assumir este papel.

P: Como é que desactivo a auditoria de chamadas de sistema no arranque?

R: Adicione audit=1 à sua linha de comandos do 'kernel', para activar a auditoria de chamadasdo sistema. Adicione audit=0 na mesma linha de comandos para desactivar essa auditoria.

A auditoria às chamadas do sistema está activada por omissão. Quando assim estiver, elaproduz informações acercada da chamada de sistema que estava a ser executada, quandoo SELinux gerou uma mensagem denied (negado). A mensagem de erro é útil para fins dedepuração.

P: Como é que desactivo temporariamente a auditoria às chamadas de sistema sem ter de reiniciaro mesmo?

R: Execute auditctl -e 0. Lembre-se que este comando não irá afectar a auditoria dasproibições de AVC do SELinux.

P: Como é que obtenho a informação do estado da minha instalação do SELinux?

R: Como 'root', execute o comando /usr/sbin/sestatus -v. Para mais informações, veja apágina de manual do sestatus(8).

Page 16: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

16

P: Como é que escrevo uma política para permitir a um domínio usar o pam_unix.so?

R: Muito poucos domínios no mundo do SELInux têm permissão para ler o ficheiro /etc/shadow.Existem regras restritas que impedem os criadores de políticas de escrever código do género

allow mydomain_t shadow_t:file read;

No RHEL4, poderá configurar o seu domínio para usar o comando unix_chkpwd. A forma maissimples é usar o atributo unix_chkpwd. Por isso, se estiver a criar a política para um servidor'ftpd', iria escrever algo do tipo

daemon_domain(vsftpd, `auth_chkpwd')

This would create a context where vsftpd_t -> chkpwd_exec_t -> system_chkpwd_t which canread /etc/shadow, while vsftpd_t is not able to read it.

In Fedora 8/RHEL5, add the rule

auth_domtrans_chk_passwd(vsftpd_t)

P: Criei um novo Pacote de Políticas; onde é que o ponho para garantir que é carregado no'kernel'?

R: Tudo o que tem a fazer é executar o comando semodule -i minha_aplicacao.pp. Istomodifica a política que é gravada na máquina. Por agora, sempre que o resto da política forcarregado, a política da sua aplicação será também carregada. Até poderá remover o ficheiro'pp' do sistema.

O semodule -l irá listar os módulos carregados de momento.

#semodule -i myapp 1.2.1

Se quiser remover mais tarde o pacote da política, poderá executar o comando semodule -rminha_aplicacao.

1.3. Resolução de Problemas

P: Onde é que são guardadas as mensagens do AVC do SELinux (registos de proibições, etc.)?

R: In Fedora 2 and 3, SELinux AVC messages could be found in /var/log/messages. InFedora 4, the audit daemon was added, and these messages moved to /var/log/audit/audit.log. In Fedora 5, the audit daemon is not installed by default, and consequently thesemessages can be found in /var/log/messages unless you choose to install and enablethe audit daemon, in which case AVC messages will be in /var/log/audit/audit.log.Fedora 7 introduced the setroubleshoot browser, which enables you to see denials in a graphicalbrowser. To install setroubleshoot, run the Add/Remove Programs tool or use the followingcommand:

Page 17: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

17

su -c 'yum install setroubleshoot'

You can add plugins by installing the setroubleshoot-plugins package:

su -c 'yum install setroublshoot-plugins'

P: My application isn't working as expected and I am seeing avc: denied messages. How do I fixthis?

R: Esta mensagem significa que a política actual do SELinux não está a permitir à aplicação fazeralgo. Existe um conjunto de razões para isto acontecer.

First, one of the files the application is trying to access could be mislabeled. If the AVC messagerefers to a specific file, inspect its current label with ls -alZ /path/to/file. If it seemswrong, use the command restorecon -v /path/to/file to restore the file's defaultcontext. If you have a large number of denials related to files, you may want to use fixfilesrelabel, or run restorecon -R /path to recursively relabel a directory path.

Denials are sometimes due to a configuration change in the program that triggered the denialmessage. For example, if you change Apache to also listen on port 8800, you must also changethe security policy, apache.te. Refer to Lista de Referências Externas for more informationabout writing policy.

If you are having trouble getting a specific application like Apache to work, refer to How to usesystem-config-selinux for information on disabling enforcement just for that application.

P: I installed Fedora on a system with an existing /home partition, and now I can't log in.

R: A sua partição /home não tem o nome ou legenda correcto. Poderá resolver isto facilmente deduas formas diferentes.

Se quiser simplesmente mudar o nome da /home de forma recursiva:

/sbin/restorecon -v -R /home

Se quiser ter a certeza que não existem outros ficheiros com nomes ou legendas incorrectos,poderá aplicar esse nome em todo o sistema de ficheiros:

/sbin/fixfiles relabel

Deverá ter o pacote policycoreutils instalado para usar o fixfiles.

P: Depois de mudar o nome da minha /home com o setfiles ou o fixfiles, serei capaz àmesma de ler a /home num sistema que não tenha o SELinux activo?

R: Poderá ler os ficheiros numa distribuição não-SELinux ou com uma que tenha o SELinuxdesactivado. Contudo, os ficheiros criados por um sistema que não use os sistemas SELinuxnão terão um contexto de segurança, assim como os ficheiros que remover e criar de novo. Isto

Page 18: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

18

poderá ser uma desafio para os ficheiros como o ~/.bashrc. Poderá ter de atribuir um nomeou legenda de novo ao /home quando reiniciar o sistema Fedora com o SELinux activo.

P: Como é que partilho as pastas com o NFS entre sistemas Fedora e não-SELinux?

R: Assim como o NFS suporta de forma transparente vários tipos de sistemas de ficheiros, podeser usado para partilhar directorias entre sistemas SELinux e não-SELinux.

Quando montar um sistema de ficheiros não-SELinux por NFS, o SELinux, por omissão,irá tratar todos os ficheiros da partilha como tendo um contexto nfs_t. Poderá substituiro contexto predefinido se o configurar manualmente, com a opção context=. O seguintecomando faz com que os ficheiros na pasta montada por NFS pareça ter um contextosystem_u:object_r:tmp_t no SELinux:

mount -t nfs -o context=system_u:object_r:tmp_t server:/shared/foo /mnt/foo

Quando o SELinux exporta um sistema de ficheiros via NFS, os ficheiros acabados de criar têmo contexto da pasta onde foram criados. Por outras palavras, a presença do SELinux no sistemade montagem remota não faz efeito nos contextos locais de segurança.

P: How can I create a new Linux user account with the user's home directory having the propercontext?

R: Poderá criar o seu utilizador novo com o comando useradd normal. Primeiro, deverá mudarpara o root. Na política restrita, terá de mudar o papel para sysadm_r com o seguintecomando:

newrole -r sysadm_r

Para a política-alvo, não terá de mudar de papéis, mantendo-se no unconfined_t:

su - root id -Zroot:system_r:unconfined_tuseradd auser ls -Z /homedrwx------ auser auser root:object_r:user_home_dir_t /home/auser

O contexto inicial para uma nova pasta pessoal de um utilizador tem a identidade do root.Se mudar a legenda do sistema de ficheiros, irá mudar a identidade para system_u.Estas opções são, a título funcional, as mesmas, dado que o papel e o tipo são idênticos(object_r:user_home_dir_t.)

P: Será que o comando su muda a minha identidade e papel no SELInux?

R: Nas versões anteriores do Fedora, as transições no contexto da segurança estavam integradasno su através do pam_selinux. Isto acabou por trazer mais problemas que proveitos e ébastante desnecessário num sistema que corra a política-alvo. Como tal, já não é o caso. Agora,o su/sudo só mudam a identidade do Linux. Terá de usar o newrole para mudar a identidade,papel ou nível do SELinux.

Page 19: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

19

Outras formas de mudança de identidade do Linux/UNIX®, por exemplo o setuid(2), tambémnão causam uma mudança de identidade do SELinux.

P: I'm having troubles with avc errors filling my logs for a particular program. How do I choose notto audit the access for it?

R: Se não quiser auditar o dmesg, por exemplo, colocaria isto no seu ficheiro dmesg.te:

dontaudit dmesg_t userdomain:fd { use };

Isto elimina as mensagens de erro no terminal para todos os domínios de utilizadores, incluindoo user, o staff e o sysadm.

P: Even running in permissive mode, I'm getting a large number of avc denied messages.

R: Num modo não-obrigatório, deverá de facto receber mais mensagens que no modo obrigatório.O 'kernel' regista cada proibição de acesso, como se estivesse no modo obrigatório. Dado quenão está restringido pela aplicação da política, poderá efectuar mais acções, o que resulta noregisto de mais proibições.

Se uma aplicação em execução, no modo obrigatório, ver negado o acesso à leitura deum conjunto de ficheiros numa pasta, é interrompida logo no início da acção. Num modonão-obrigatório, a aplicação não é impedida de percorrer a árvore de pastas, gerando umamensagem de proibição por cada ficheiro lido na pasta.

P: I get a specific permission denial only when SELinux is in enforcing mode, but I don't see anyaudit messages in /var/log/messages (or /var/log/audit/audit.log if using the auditdaemon). How can I identify the cause of these silent denials?

R: A razão mais comum para uma proibição silenciosa é quando a política contém uma regadontaudit explícita para eliminar as mensagens de auditoria. A regra dontaudit é usadanormalmente quando uma proibição benigna está a encher os registos de auditoria.

Para procurar pela sua proibição em particular, terá de activar a auditoria de todas as regrasdontaudit:

semodule -b /usr/share/selinux/targeted/enableaudit.pp

O resultado dos dontaudit activados é bastante descritivoSe activar a auditoria de todas as regras dontaudit, irá provavelmente resultarnuma grande quantidade de informações de auditoria, a maioria das quais sendoirrelevante para a sua proibição.

Use esta técnica apenas quando estiver à procura explicitamente de umamensagem de auditoria por uma proibição que parece ocorrer de forma silenciosa.De certeza irá querer activar de novo as regras dontaudit o mais cedo possível.

Page 20: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

20

Logo que tenha descoberto o seu problema, poderá voltar ao modo predefinido com o comando

semodule -b /usr/share/selinux/targeted/base.pp

P: Porque é que não vejo o resultado, quando corro certos servidores no modo de depuração ouinteractivo?

R: O SELinux desactiva intencionalmente o acesso aos dispositivos TTY para impedir osservidores de comunicarem de volta no terminal sob controlo. Esta comunicação poderá serum risco de segurança potencial, porque esses servidores poderão introduzir comandos noterminal que controlam. Um programa defeituoso ou modificado poderá usar esta falha paracausar problemas sérios.

Existem algumas formas de você capturar o resultado do 'standard output' dos servidores. Ummétodo é encaminhar o resultado para o comando 'cat'.

snmpd -v | cat

When debugging a daemon, you may want to turn off the transition of the daemon to its specificdomain. You can do this using system-config-selinux or setsebool on the command line.

Uma opção final é desligar o modo obrigatório durante a depuração. Invoque o comandosetenforce 0 para desligar o modo obrigatório e use o comando setenforce 1 para voltara activar o SELinux quando terminar a depuração.

P: Quando fizer uma actualização do pacote da política (por exemplo, com o yum), o que aconteceà política? É actualizada automaticamente?

R: A política carrega-se a si própria, quando o pacote é actualizado. Este comportamento substituio make load manual.

Em algumas situações, poderá ter de mudar a legenda do sistema de ficheiros. Isto poderáocorrer como parte da correcção de um erro do SELinux, onde os contextos dos ficheiros setornem inválidos ou quando a política faz alterações no ficheiro /etc/selinux/targeted/contexts/files/file_contexts.

Depois de o sistema de ficheiros ter mudado de nome ou legenda, não será necessário fazerum reboot, mas é útil para garantir que todos os processos e programas estão a correr nodomínio correcto. Isto é altamente dependente das alterações na política actualizada.

Para mudar o nome ou legenda, tem várias opções. Poderá usar o comando fixfiles:

fixfiles relabel reboot

Em alternativa, use o mecanismo do /.autorelabel:

touch /.autorelabel reboot

Page 21: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

21

P: Se a política que vem com o pacote de uma aplicação mudar de forma a que necessite demudança da legenda, será que o RPM consegue lidar com a mudança de legenda dos ficheirosque pertencem ao pacote?

R: Sim. Os contextos de segurança dos ficheiros pertencentes ao pacote são guardados nos dadosdo cabeçalho do pacote. Os contextos dos ficheiros são definidos directamente a seguir à cópiado cpio, à medida que os ficheiros vão sendo colocados no disco.

P: Why do binary policies distributed with Fedora, such as /etc/selinux/<policyname>/policy/policy.<version>, and those I compile myself have different sizes and MD5checksums?

R: Quando você instala o pacote de uma política, os ficheiros pré-compilados das políticas bináriassão colocados directamente em /etc/selinux. Os ambientes de compilação diferentes fazemcom que os ficheiros-alvo tenham tamanhos e códigos MD5 diferentes.

P: Será que os pacotes novos de políticas poderão invalidar o meu sistema?

R: There is a possibility that changes in the policy package or in the policy shipping with anapplication package can cause errors, more denials, or other unknown behaviors. You candiscover which package caused the breakage by reverting policy and application packagesone at a time. If you don't want to return to the previous package, the older version of theconfiguration files will be saved with the extension .rpmsave. Use the mailing lists, bugzilla,and IRC to help you work through your problem. If you are able, write or fix policy to resolve yourproblem.

P: A minha consola está a ficar inundada com mensagens. Como é que as desligo?

R: Para voltar a ganhar algum controlo útil, desligue as mensagens do 'kernel' para a consola comeste comando:

dmesg -n 1

P: Posso testar a política predefinida sem instalar o código da política?

R: Pode testar a política predefinida do SELinux, instalando apenas os pacotes selinux-policy-nome-política e policycoreutils. Sem o código da política instalado, ocomando fixfiles automatiza a mudança de nome do sistema de ficheiros.

O comando fixfiles relabel é o equivalente do make relabel. Durante a mudança denome ou legenda, irá remover todos os ficheiros da /tmp, limpar os ficheiros que já tenhamlegendas de contextos de ficheiros antigas.

Os outros comandos são o fixfiles check, que verifica os ficheiros sem legendas e ofixfiles restore, que corrige os ficheiros sem legenda mas não remove os ficheiros na /tmp. O comando fixfiles não recebe uma lista de pastas como argumento, dado que mudao nome ou legenda de todo o sistema de ficheiros. Se precisar de efectuar a mudança apenasnuma pasta específica, use o restorecon.

P: Porque é que algumas das minhas aplicações do KDE têm problemas com o SELinux?

Page 22: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

22

R: Os executáveis do KDE aparecem sempre como kdeinit, o que limita o que poderá ser feitocom a política do SELinux. Isto deve-se ao facto de todas as aplicações do KDE correrem nodomínio do kdeinit.

Aparecem normalmente problemas ao instalar o SELinux, dado que não é possível mudar alegenda do /tmp e do /var/tmp. Não existe um método bom para determinar qual o contextoque cada ficheiro deverá ter.

A solução é encerrar a sessão do KDE por completo e remover todos os ficheiros temporáriosdo KDE:

rm -rf /var/tmp/kdecache-<username> rm -rf /var/tmp/<other_kde_files>

Na sua próxima sessão, o seu problema já deverá estar corrigido.

P: Porque é que o SELINUX=disabled não funciona para mim?

R: Tenha cuidado com os espaços em branco no ficheiro /etc/sysconfig/selinux. O código émuito sensível a espaços em branco, mesmo com os espaços finais.

P: Tenho um processo a correr como unconfined_t, e o SELinux impede à mesma que a minhaaplicação corra.

R: We have begun to confine the unconfined_t domain somewhat. SELinux restricts certainmemory protection operation. Following is a list of those denials, as well as possible reasonsand solutions for those denials. For more information on these restrictions, see http://people.redhat.com/drepper/selinux-mem.html.

Este tipo de mensagens aparece no /var/log/messages (ou no /var/log/audit/audit.log se estiver a usar o servidor de auditorias) como negações do AVC. Tambémpoderão aparecer ao executar programas com erros do género

error while loading shared libraries: /usr/lib/libavutil.so.49: cannot restore segment prot after reloc: Permission denied

que indica que a biblioteca está a tentar mudar o segmento de texto de local e não conseguiu.Estas mudanças são más, mas poderão ser permitidas com a primeira sugestão abaixo.Seguem-se as permissões de memória do SELinux que são negadas, assim como sugestõespara como lidar com estas proibições.

execmodIsto baseia-se normalmente numa legenda de uma biblioteca. Poderá mudar de formapermanente o contexto da biblioteca com os seguintes comandos

# /usr/sbin/semanage fcontext -a -t textrel_shlib_t '/usr/lib/libavutil.so.49.0.0' # /sbin/restorecon -v /usr/lib/libavutil.so.49.0.0

com a biblioteca que está a dar problemas em particular, em substituição de /usr/lib/libavutil.so.49.0.0. Agora, a sua aplicação deverá ser capaz de correr. Comuniqueeste facto no Bugzilla.

Page 23: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

23

execstackTente o execstack -c BIBLIOTECA. Agora, teste a sua aplicação de novo. Se aaplicação agora funcionar, a biblioteca foi marcada por engano como necessitando doexecstack. Comunique isto como um Bugzilla.

execmem, execheapUm valor booleano para cada um destes erros de verificação de memória foram oferecidos.Por isso, se precisar de executar uma aplicação que necessite de alguma destaspermissões, poderá activar o 'allow_exec*' para corrigir o problema. Por exemplo, se tentarexecutar uma aplicação e obter uma mensagem do AVC que contenha um erro execstack.Poderá configurar o valor booleano com

setsebool -P allow_execstack=1

P: O que significam estes erros do RPM?

R:restorecon reset /etc/modprobe.conf context system_u:object_r:etc_runtime_t->system_u:object_r:modules_conf_t restorecon reset /etc/cups/ppd/homehp.ppd context user_u:object_r:cupsd_etc_t->system_u:object_r:cupsd_rw_etc_t

Durante o processo de actualização, o pacote do selinux executa o 'restorecon' na diferençaentre a política de instalação anterior 'file_context' e o contexto da nova política instalada. Istomantém o contexto dos ficheiros correcto no disco.

libsepol.sepol_genbools_array: boolean hidd_disable_trans no longer in policy

Isto indica que a política actualizada removeu o valor booleano da política.

P: Quero executar um servidor num porto não-padrão mas o SELinux não mo permite. Como é queponho isto a funcionar?

R: Pode usar o comando semanage para definir portos adicionais. Por exemplo, imagine que querque o 'httpd' seja capaz de atender pedidos no porto 8082. Iria indicar o comando.

semanage port -a -p tcp -t http_port_t 8082

P: Como é que adiciono traduções adicionais ao meu sistema MCS/MLS?

R: As traduções são feitas pela libsemanage. Use o semanage translation -l para listartodas as traduções actuais.

# semanage translation -l Level Translation s0 s0-s0:c0.c255 SystemLow-SystemHigh s0:c0.c255 SystemHigh

Page 24: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

24

Agora, escolha uma categoria não usada. Imagine que queria definir o "Tesouraria" comotradução, e o s0:c6 não estivesse a ser usado.

# semanage translation -a -T Payroll s0:c6 # semanage translation -l Level Translation s0 s0-s0:c0.c255 SystemLow-SystemHigh s0:c0.c255 SystemHigh s0:c6 Payroll

P: Configurei as minhas traduções do MCS/MLS, agora quero designar os utilizadores quepoderão ler uma dada categoria?

R: Poderá modificar o intervalo de categorias a que um utilizador se poderá autenticar com osemanage, como se vê neste exemplo.

# semanage login -a -r s0-Payroll csellers # semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 csellers user_u s0-Payroll root root SystemLow-SystemHigh

No exemplo acima, o utilizador 'ze' ficou com acesso à categoria Tesouraria com o primeirocomando, como aparece no resultado da listagem do segundo comando.

P: Estou a criar um programa em PHP que precisa de criar ficheiros temporários na /tmp e depoisexecutá-los; a política do SELinux impede-me isso. O que tenho de fazer?

R: Em primeiro lugar, nunca deverá permitir a um serviço do sistema executar qualquer coisa queconsiga gerar. Isto dá ao atacante a possibilidade de enviar código malicioso para o servidor edepois executá-lo, o que é algo que se deseja evitar.

Se precisa simplesmente de permitir que o seu programa crie ficheiros (não-executáveis), istoé possível. Posto isto, deverá evitar ter estas aplicações do sistema a criar ficheiros na pasta /tmp, dado que os utilizadores têm a tendência também de usar a pasta /tmp. Será melhorarcriar uma outra pasta qualquer, pertencente ao processo 'apache' e permitir ao seu programagravar nessa pasta. Deverá legendar a pasta com o nome httpd_sys_script_rw_t, o quepermitirá que o Apache leia e grave ficheiros nessa pasta. A pasta poderá estar em qualquerlocal onde o Apache consiga aceder (mesmo na $HOME/public_html/).

P: Estou a configurar a memória virtual para um ficheiro, mas estou a ver mensagens do AVC nosmeus ficheiros de registo?

R: Terá de identificar o ficheiro de memória virtual no SELinux, configurando o contexto do seuficheiro como swapfile_t.

chcon -t swapfile_t SWAPFILE

P: Por favor explique-me as permissões relabelto/relabelfrom?

R: For files, relabelfrom means "Can domain D relabel a file from (i.e. currently in) type T1?" andrelabelto means "Can domain D relabel a file to type T2?", so both checks are applied upona file relabeling, where T1 is the original type of the type and T2 is the new type specified by theprogram.

Page 25: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

Notas e FAQ do SELinux

25

Alguns documentos úteis a ler:

• Object class and permission summary by Tresys http://tresys.com/selinux/obj_perms_help.shtml

• Implementing SELinux as an LSM technical report (describes permission checks on a per-hook basis) http://www.nsa.gov/selinux/papers/module-abs.cfm. This is also available in theselinux-doc package (and more up-to-date there).

• Integrating Flexible Support for Security Policies into the Linux Operating System - technicalreport (describes original design and implementation, including summary tables of classes,permissions, and what permission checks are applied to what system calls. It is not entirelyup-to-date with current implementation, but a good resource nonetheless). http://www.nsa.gov/selinux/papers/slinux-abs.cfm

1.4. Instalar o SELinux

P: Que sistemas de ficheiros posso usar para o SELinux?

R: O sistema de ficheiros deverá suportar as legendas xattr no espaço de nomes security.*correcto. Para além do ext2/ext3, o XFS passou recentemente a ter suporte para as legendasnecessárias.

Lembre-se que o suporte de SELinux para o XFS ficou com problemas no 'kernel' 2.6.14 e2.6.15, mas foi corrigido (com uma solução alternativa) no 2.6.16. O seu 'kernel' deverá incluiresta correcção se optar por usar o XFS com o SELinux.

P: Qual o impacto do SELinux na performance do sistema?

R: Esta é uma variável difícil de medir, e é altamente dependente do ajuste e da utilizaçãodo sistema que está a correr o SELinux. Quando a performance foi medida da últimavez, o impacto foi de cerca de 7%, para o código sem qualquer afinação. As mudançassubsequentes nos componentes de sistema, como a rede, são capazes de ter piorado algunsdos casos. A afinação de performance do SELinux continua a ser uma prioridade da equipa dedesenvolvimento.

P: Quais os tipos de instalações, aplicações e sistemas onde poderei considerar a instalação doSELinux?

R: Inicialmente, o SELinux foi usado nos servidores públicos da Internet que executam algumasfunções especializadas, onde é crítico maner uma segurança extremamente apertada. Osadministradores normalmente retiram dessas máquinas todos os serviços e aplicações extra,correndo apenas um conjunto muito pequeno e bem definido de serviços. Um servidor Web ouum servidor de e-mail é um bom exemplo.

Nestes servidores de topo, poderá apertar a política ao máximo. Quanto menor for o número deinteracções com outros componentes, mais fácil será a aplicação de uma política. Um sistemadedicado que corra uma aplicação especializada de terceiros seria também um bom candidato.

No futuro, o SELinux focar-se-á em todos os ambientes. Para atingir esse objectivo, acomunidade e os fornecedores independentes de 'software' (ISVs) deverão trabalhar comos programadores do SELinux para produzir as políticas necessárias. Até agora, foi criada

Page 26: SELinux FAQ - Frequently-asked questions about Security … · 2017. 4. 8. · SELinux FAQ 2 1. Notas e FAQ do SELinux A informação nesta FAQ é valiosa para aqueles que são novos

SELinux FAQ

26

uma política restrita muito apertada, assim como uma política-alvo que se foca em servidoresespecíficos e vulneráveis.

For more information about these policies, refer to What is SELinux policy? and What is theSELinux targeted policy?.

P: Como é que o SELinux afecta as aplicações de terceiros?

R: Um objectivo de implementação da uma política-alvo do SELinux no Fedora é permitiràs aplicações de terceiros funcionarem sem modificações. A política-alvo é transparentepara essas aplicações não-contempladas, baseando-se na segurança normal de DAC doLinux. Estas aplicações, todavia, não estarão a correr de forma muito segura. Você ou outrofornecedor deverão criar uma política para proteger essas aplicações com uma segurança MAC.

É impossível prever como todas as aplicações de terceiros se irão comportar com o SELinux,mesmo na execução da política-alvo. Será capaz de corrigir os problema que aparecem,mudando a política. Poderá descobrir que o SELinux expões questões de segurançadesconhecidas anteriormente com a sua aplicação. Terá de modificar a aplicação para funcionarcom o SELinux.

Note that with the addition of Policy Modules, it is now possible for third-party developers toinclude policy modules with their application. If you are a third-party developer or a package-maintainer, please consider including a policy module in your package. This will allow you tosecure the behavior of your application with the power of SELinux for any user installing yourpackage.

One important value that Fedora testers and users bring to the community is extensive testingof third-party applications. With that in mind, please bring your experiences to the appropriatemailing list, such as the fedora-selinux list, for discussion. For more information about that list,refer to http://www.redhat.com/mailman/listinfo/fedora-selinux-list/.