Privilégios de processos no OpenSolaris

704 views

Published on

Documentos: http://tinyurl.com/m47k53

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
704
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Privilégios de processos no OpenSolaris

  1. 1. Privilégios Privilégios de processos no OpenSolaris
  2. 2. Objetivo <ul><ul><li>Criar um Dscript que monitore quais privilégios são usados pelo sistema e quando os privilégios são recebidos ou devolvidos. </li></ul></ul>
  3. 3. Privilégios <ul><li>O que é? </li></ul><ul><ul><li>Habilita um processo a completar alguma tarefa que normalmente iria requerer privilégios administrativos ou de superusuário. </li></ul></ul><ul><li>Possível divisão: </li></ul><ul><ul><li>All: </li></ul></ul><ul><ul><ul><li>Grupo de todos os privilégios possíveis que um processo pode receber. </li></ul></ul></ul><ul><ul><li>Basic: </li></ul></ul><ul><ul><ul><li>Grupo de privilégios que são atribuídos normalmente a todos os processos. </li></ul></ul></ul>
  4. 4. Dtrace Providers
  5. 5. Metodologia <ul><ul><li>Provider: sdt </li></ul></ul><ul><ul><li>Probes: </li></ul></ul><ul><ul><ul><li>priv-ok: requisição de privilégio com sucesso </li></ul></ul></ul><ul><ul><ul><li>priv-err: requisição de privilégio sem sucesso </li></ul></ul></ul>
  6. 6. 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(&quot; Monitorando a utilizacao de privilegios... Ctrl-C pára a execução. &quot;); printf(&quot;%15s %15s %25s %15s &quot;, &quot;execname&quot;, &quot;probe&quot;, &quot;probefunc&quot;, &quot;privilégio&quot;); } /* * 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(&quot;%15s %15s %25s %15d &quot;, execname, probename, probefunc, arg0); }
  7. 7. Script Perl: geração de tabela de privilégios use Sun::Solaris::Privilege qw(:ALL); printf(&quot;%4s %20s &quot;, &quot;id&quot;, &quot;privilégio&quot;); while ($priv = priv_getbynum($i)) { printf(&quot;%4d %20s &quot;, $i, $priv); $i++; }
  8. 8. 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
  9. 9. 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
  10. 10. Script Python: monitoramento de privilégios #!/usr/bin/python # -*- coding: utf-8 -*- import os from time import sleep privilegiosTxt = open(&quot;privilegios.txt&quot;) privilegios = {} for linha in privilegiosTxt.readlines(): try: id, priv = linha.split() privilegios[int(id)] = priv except: pass os.system(&quot;./privilegios.d > saidaD &&quot;) arquivo = open(&quot;saidaD&quot;) print &quot;Monitorando privilégios de processos&quot; print &quot;%15s %15s %10s %25s&quot; % (&quot;execname&quot;, &quot;probe&quot;, &quot;id&quot;, &quot;privilégio&quot;) while True: linha = arquivo.readline() if not linha: sleep(1) continue try: execname, probe, probefunc, id = linha.split() print &quot;%15s %15s %10s %25s&quot; % (execname, probe, id, privilegios[int(id)]) except: pass
  11. 11. Execução – Script D
  12. 12. Execução – Script Python
  13. 13. Execução – Erro de Permissão de Escrita
  14. 14. Execução – Erro de Permissão de Escrita
  15. 15. Obrigado! <ul><li>Filipe Morgado Simões de Campos </li></ul><ul><li>Rafael Barbolo Lopes </li></ul><ul><li>Rafael Ivan Garcia </li></ul>

×