15
Privilégios Privilégios de processos no OpenSolaris

Privilégios de processos no OpenSolaris

Embed Size (px)

DESCRIPTION

Documentos: http://tinyurl.com/m47k53

Citation preview

Page 1: Privilégios de processos no OpenSolaris

Privilégios

Privilégios de processos no OpenSolaris

Page 2: Privilégios de processos no OpenSolaris

Objetivo Criar um Dscript que monitore quais privilégios são usados

pelo sistema e quando os privilégios são recebidos ou devolvidos.

Page 3: Privilégios de processos no OpenSolaris

Privilégios O que é?

Habilita um processo a completar alguma tarefa que normalmente iria requerer privilégios administrativos ou de superusuário.

Possível divisão: All:

Grupo de todos os privilégios possíveis que um processo pode receber.

Basic: Grupo de privilégios que são atribuídos normalmente a todos os

processos.

Page 4: Privilégios de processos no OpenSolaris

Dtrace Providers

Page 5: Privilégios de processos no OpenSolaris

Metodologia Provider: sdt

Probes: priv-ok: requisição de privilégio com sucesso priv-err: requisição de privilégio sem sucesso

Page 6: Privilégios de processos no OpenSolaris

Script D: monitoramento de privilégios

#!/usr/sbin/dtrace -s/* Não exibe mensagens de alerta do dtrace */#pragma D option quiet/* * Mensagem de inicialização */dtrace:::BEGIN{

printf("\nMonitorando a utilizacao de privilegios... Ctrl-C pára a execução.\n");printf("%15s %15s %25s %15s\n", "execname", "probe", "probefunc", "privilégio");

}/* * Detecta quando um processo tentou utilizar algum privilegio. * se a tentativa ocorrer com sucesso, o probename será priv-ok; * se a tentativa falhar, o probename será priv-err. Isto significa * que o processo não tem permissão para utilizar o recurso solicitado.*/sdt:::priv-* {

printf("%15s %15s %25s %15d\n", execname, probename, probefunc, arg0);}

Page 7: Privilégios de processos no OpenSolaris

Script Perl: geração de tabela de privilégios

use Sun::Solaris::Privilege qw(:ALL);

printf("%4s %20s\n", "id", "privilégio");

while ($priv = priv_getbynum($i)) {

printf("%4d %20s\n", $i, $priv);$i++;

}

Page 8: Privilégios de processos no OpenSolaris

Tabela de Privilégios 0 contract_event 1 contract_identity 2 contract_observer 3 cpc_cpu 4 dtrace_kernel 5 dtrace_proc 6 dtrace_user 7 file_chown 8 file_chown_self 9 file_dac_execute 10 file_dac_read 11 file_dac_search 12 file_dac_write 13 file_downgrade_sl 14 file_link_any 15 file_owner 16 file_setid 17 file_upgrade_sl 18 file_flag_set 19 graphics_access

20 graphics_map 21 ipc_dac_read 22 ipc_dac_write 23 ipc_owner 24 net_bindmlp 25 net_icmpaccess 26 net_mac_aware 27 net_observability 28 net_privaddr 29 net_rawaccess 30 proc_audit 31 proc_chroot 32 proc_clock_highres 33 proc_exec 34 proc_fork 35 proc_info 36 proc_lock_memory 37 proc_owner 38 proc_priocntl 39 proc_session

Page 9: Privilégios de processos no OpenSolaris

Tabela de Privilégios 40 proc_setid 41 proc_taskid 42 proc_zone 43 sys_acct 44 sys_admin 45 sys_audit 46 sys_config 47 sys_devices 48 sys_ipc_config 49 sys_linkdir 50 sys_mount 51 sys_dl_config 52 sys_ip_config 53 sys_net_config 54 sys_nfs 55 sys_res_config 56 sys_resource 57 sys_smb 58 sys_suser_compat 59 sys_time

60 sys_trans_label 61 virt_manage 62 win_colormap 63 win_config 64 win_dac_read 65 win_dac_write 66 win_devices 67 win_dga 68 win_downgrade_sl 69 win_fontpath 70 win_mac_read 71 win_mac_write 72 win_selection 73 win_upgrade_sl 74 xvm_control

Page 10: Privilégios de processos no OpenSolaris

Script Python: monitoramento de privilégios#!/usr/bin/python# -*- coding: utf-8 -*-import osfrom time import sleepprivilegiosTxt = open("privilegios.txt")privilegios = {}for linha in privilegiosTxt.readlines():

try:id, priv = linha.split()privilegios[int(id)] = priv

except:pass

os.system("./privilegios.d > saidaD &")arquivo = open("saidaD")print "Monitorando privilégios de processos"print "%15s %15s %10s %25s" % ("execname", "probe", "id", "privilégio")while True:

linha = arquivo.readline()if not linha:

sleep(1)continue

try:execname, probe, probefunc, id = linha.split()print "%15s %15s %10s %25s" % (execname, probe, id, privilegios[int(id)])

except:pass

Page 11: Privilégios de processos no OpenSolaris

Execução – Script D

Page 12: Privilégios de processos no OpenSolaris

Execução – Script Python

Page 13: Privilégios de processos no OpenSolaris

Execução – Erro de Permissão de Escrita

Page 14: Privilégios de processos no OpenSolaris

Execução – Erro de Permissão de Escrita

Page 15: Privilégios de processos no OpenSolaris

Obrigado! Filipe Morgado Simões de Campos Rafael Barbolo Lopes Rafael Ivan Garcia