FreeBSD Handbook/Administração/MAC/Módulo portacl
FreeBSD Handbook | ||
---|---|---|
Anterior | Capítulo 16. Mandatory Access Control | Próxima |
16.9 O Módulo portacl do MAC
Nome do módulo: mac_portacl.ko
Linha para configuração do kernel: options MAC_PORTACL
Opção para carga no boot: mac_portacl_load="YES"
O módulo mac_portacl(4) é usado para limitar o uso de portas TCP e UDP (binding) através de opções do sysctl(8). Essencialmente o mac_portacl(4) torna possível permitir que usuários que não o root façam bind em portas privilegiadas, ou seja, menores que 1024.
Uma vez carregado este módulo habilitará a política MAC em todos os sockets. As seguintes opções estão disponíveis:
- security.mac.portacl.enabled irá habilitar ou desabilitar a política completamente[1].
- security.mac.portacl.port_high irá definir o número de porta mais alto que o mac_portacl(4) protegerá.
- security.mac.portacl.suser_exempt quando definido com um valor que não zero, excluir o root desta política.
- security.mac.portacl.rules irá especificar a política mac_portacl(4) atual, veja abaixo.
A atual política mac_portacl(4), como especificado pela opção security.mac.portacl.rules, é uma string com o formato: regra[,regra,...] com quantas regras forem necessárias. Cada regra tem o formato: idtype:id:protocol:port. O parâmetro idtype pode ser uid ou gid e é usado para interpretar o parâmetro id como sendo um id de usuário ou grupo, respectivamente. O parâmetro protocol é usado para determinar se a regra deve ser aplicada para TCP ou UDP através de sua definição como tcp ou udp. O último parâmetro, port, é o número da porta na qual será permitido o bind para o usuário ou grupo.
Nota: Como o conjunto de regras é interpretado diretamente pelo kernel, apenas valores numéricos podem ser usados para as identificações (id's) de usuário, grupo e porta. Em outras palavras, nomes não podem ser usados para os usuários, grupos e portas.
Por padrão, em sistemas do tipo UNIX®, as portas menores que 1024 só podem ser usadas por processos privilegiados, ou seja, aqueles executados pelo root. Para que o mac_portacl(4) possa permitir que processos não privilegiados façam bind para portas menores que 1024 esta restrição padrão tem que ser desabilitada. Isso pode ser feito definindo como zero as variáveis net.inet.ip.portrange.reservedlow e net.inet.ip.portrange.reservedhigh do sysctl(8).
Veja os exemplos abaixo ou reveja a página de manual do mac_portacl(4) para maiores informações.
16.9.1 Exemplos
Os exemplos a seguir devem esclarecer um pouco mais os conceitos acima:
# sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0
Primeiro configuramos o mac_portacl(4) para cuidar das portas privilegiadas padrão e desabilitamos as restrições usuais de bind do UNIX®.
# sysctl security.mac.portacl.suser_exempt=1
O usuário root não deve ser tolido por esta política, para tando definimos security.mac.portacl.suser_exempt com um valor não-zero. O módulo mac_portacl(4) está agora configurado para atuar da mesma maneira que que os sistemas do tipo UNIX® o fazem por padrão.
# sysctl security.mac.portacl.rules=uid:80:tcp:80
Isso permite que o usuário com UID 80 (normalmente o usuário www) faça escute na porta 80. Isso pode ser usado para permitir ao usuário www executar um servidor web sem jamais ter privilégios de root.
# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995
Isso permite que o usuário com o UID 1001 escute nas portas TCP 110 (“pop3”) e 995 (“pop3s”), permitindo que este usu[ario rode um servidor que aceita conexões nas portas 110 e 995.
Notas
[1] Devido a um bug, a variável security.mac.portacl.enabled do sysctl(8) não funcionará no FreeBSD 5.2.1 e versões anteriores.
Anterior | Índice | Próxima | |
O Módulo ifoff do MAC | Topo | O Módulo partition do MAC
|