Sei sulla pagina 1di 15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL


Portugus (Brasil) Conecte-se (ou Registrar)

Itens Tcnicos

Downloads e Trials

Comunidade

Segurana Total em um Banco de Dados PostgreSQL


Disponibilidade para o primeiro ataque Robert Bernier, PostgreSQL Business Intelligence Analyst, Medio Systems Resumo: A segurana de banco de dados a maior preocupao com os aplicativos baseados na Web de hoje. Sem controle, voc arrisca expor informaes sensveis sobre sua empresa ou, pior ainda, sobre seus valiosos clientes. Neste artigo, aprenda sobre medidas de segurana que voc pode tomar para proteger seu banco de dados PostgreSQL. Data: 16/Dez/2009 Nvel: Intermedirio Atividade: 6933 visualizaes Comentrios: 0 (Visualizar | Incluir comentrio - Conectar) Mdia de classificao (8 votos) Classificar este artigo Introduo Existem muitas histrias na imprensa sobre crackers acessando bancos de dados corporativos. Foram-se os dias quando adolescentes eram os autores da maioria dos ataques a dados. Hoje, a colheita de dados um grande negcio e realizado por especialistas dedicados que trabalham dentro de uma infraestrutura corporativa. No uma questo de como voc pode evitar a tentativa de acesso no-autorizada voc no pode mas, em vez disso, como voc pode reduzir o efeito quando ele ocorrer.

Definies
Hacker Um hacker explora, investiga e descobre por meio do entendimento da tecnologia em um nvel raramente duplicado em circunstncias normais. Ser chamado de hacker por seus colegas uma medalha de honra no porque voc faz alguma coisa ruim, mas porque seu conhecimento no tem paralelo. Cracker Um hacker com m inteno, como vandalismo, fraude em carto de crdito, roubo de identidade, pirataria ou outros tipos de atividade ilegal. Este artigo explora os desafios de proteger seu servidor de banco de dados PostgreSQL (tambm conhecido como Postgres). O PostgreSQL um poderoso sistema de banco de dados relacional de objeto de software livre. Ele tem uma arquitetura comprovada com reputao para confiabilidade, integridade de dados e correo. Ele executa em todos os principais sistemas operacionais, incluindo Linux, UNIX, e Windows. Ele completamente compatvel com o ACID, e tem suporte completo para chaves estrangeiras, junes, visualizaes, acionadores e procedimentos armazenados (em vrios idiomas). Certifique-se de fazer o download das listas de cdigo de amostra usadas neste artigo. O administrador ideal Na grande tradio do UNIX, o PostgreSQL foi projetado desde a base para complementar o S.O. no qual se sustenta. Otimizar o PostgreSQL para seu potencial mximo requer conhecimento alm da demanda tipicamente esperada do administrador de banco de dados mdio (DBA - average database administrator). Resumidamente, o DBA de PostgreSQL ideal tem o seguinte conhecimento: Conhecedor da teoria relacional e familiarizado com o SQL 92, 99 e 2003, respectivamente. Conhece como ler cdigo de origem, preferencialmente C, e pode compilar cdigo de origem no Linux. Pode administrar sistema e se sente confortvel com o system-V UNIX ou Linux. Pode manter, se necessrio, os vrios itens de hardware tipicamente encontrados em uma loja de TI. Entende a camada TCP OS, pode criar uma subrede em uma rede, ajustar firewalls, etc. Muitos DBAs possuem somente as habilidades para administrar, monitorar e ajustar o prprio banco de dados. Porm, o PostgreSQL integrado para tambm contar com os utilitrios do S.O. raro um DBA que domine todas essas disciplinas, mas ter esse conhecimento possibilita ao DBA do PostgreSQL realizar mais em menos tempo do que seria possvel de outra forma. Reviso dos privilgios de acesso Conhecer o que uma funo de banco de dados faz fundamental se voc ir apreciar possveis vetores de ataque. Primeiro, voc precisa controlar o acesso aos dados concedendo e revogando permisses. Funes, e concesso de direitos e privilgios O quo segura uma funo comum com direitos e privilgios padro? A conta do usurio pode ser criada com um dos seguintes comandos: A instruo SQL C E T U E RAE SR A instruo SQL C E T R L RAE OE O utilitrio de linha de comandos Postgres c e t u e raesr Esses trs mtodos de criao de contas de usurio se comportam de maneira diferente, e resultam em direitos e privilgios padro drasticamente diferentes. Para uma funo comum, o usurio tpico pode:
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 1/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Acessar qualquer banco de dados se o cluster de dados usar a poltica de autenticao padro conforme descrito em pg_hba.conf. Criar objetos no esquema PUBLIC de qualquer banco de dados que o usurio puder acessar. Criar objetos de sesso (temporrios) em sesses temporrias, como schema pg_temp_? Alterar parmetros de tempo de execuo. Criar funes definidas pelo usurio. Executar funes definidas pelo usurio criadas por outros usurios no esquema PUBLIC (desde que eles interajam somente com objetos aos quais o usurio obteve privilgios concedidos para acessar). importante saber o que o usurio tem permisso para fazer, mas igualmente importante entender as atividades que o usurio comum no pode fazer por padro. Usurios comuns no podem: Criar um banco de dados ou um esquema. Criar outros usurios. Acessar objetos criados por outros usurios. Efetuar login (aplica-se somente instruo C E T R L ). RAE OE Direitos e privilgios de superusurios Apesar de um usurio comum no poder executar os direitos e privilgios definidos como recursos de superusurio, o usurio comum ainda pode causar um pouco de sofrimento com direitos e privilgios padro. Esta seo discute os vetores de ataque que o usurio comum pode manipular. Acessando objetos Uma prtica extremamente comum e insegura ocorre quando o PostgreSQL usado como o back end para um servidor da Web. O desenvolvedor cria o usurio comum desejando somente realizar aqueles comandos que manipulam os dados usando os comandos I S R , U D T , e D L T . Porm, aes no autorizadas so possveis porque NET PAE EEE o esquema PUBLIC aberto a todos. O usurio pode, por exemplo, fazer minerao de dados nessas tabelas. at mesmo possvel modific-los incluindo regras e acionadores, salvando dados em tabelas localizadas no esquema PUBLIC, que podem ento ser colhidos. Lembre-se, uma conta de usurio comprometida pode fazer qualquer coisa que deseje aos objetos que possui. Contornar esta ameaa fcil: no deixe que a conta de usurio comum possua ou crie nada. A Lista 1 mostra como assegurar uma tabela. Lista 1. Assegurando uma tabela
psge= STSSINATOIAINpsge; otrs# E ESO UHRZTO otrs ST E psge= CET RL ue1WT LGNUECYTDPSWR '2' otrs# RAE OE sr IH OI NNRPE ASOD 13; CET RL RAE OE psge= CET SHM ue1CET TBEt( it; otrs# RAE CEA sr RAE AL 1i n) CET SHM RAE CEA psge= ISR IT ue1t VLE() otrs# NET NO sr.1 AUS1; ISR 01 NET psge= GATUAEO SHM ue1T ue1 otrs# RN SG N CEA sr O sr; GAT RN psge= SLC IFO ue1t; otrs# EET RM sr.1 i -2 ( rw 1 o) psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= SLC IFO ue1t; otrs> EET RM sr.1 ERR priso dne frrlto t RO: emsin eid o eain 1 psge= STSSINATOIAINpsge; otrs> E ESO UHRZTO otrs ST E psge= GATSLC O ue1t T ue1 otrs# RN EET N sr.1 O sr; GAT RN psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= SLC IFO ue1t; otrs> EET RM sr.1 i -2 ( rw 1 o)

A Lista 2 demonstra interdio de acesso ao esquema PUBLIC. Lista 2. Evitando que o user1 da funo crie quaisquer entidades
psge= STSSINATOIAINpsge; otrs> E ESO UHRZTO otrs ST E psge= RVK ALPIIEE O SHM PBI FO ue1 otrs# EOE L RVLGS N CEA ULC RM sr; RVK EOE psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E Amnae d er "RO esgm e ro ER: prisongd pr ue1d eqea sgiiaqeet mdd dfniafnin: ems eaa aa sr o sum" infc u sa eia eesv ucoa

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

2/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

psge= CET TBEX) otrs> RAE AL (; ERR priso dne frshm ue1 RO: emsin eid o cea sr

Acessando objetos sob o controle de outros usurios Este vetor de ataque, mostrado na Lista 3 abaixo, assume que o usurio tem acesso ao esquema PUBLIC; por exemplo, G A T U A E O S H M P B I T u e 1 Ele RN SG N CEA ULC O sr. funciona sob as seguintes suposies: Todos os usurios tem, por padro, permisso para se conectar a qualquer banco de dados no cluster. Clusters de postura permitem aos usurios a capacidade de criar e manipular todas as entidades no esquema PUBLIC. Uma conta de usurio comum tem o direito de acessar catlogos do sistema. Caso contrrio, a conta do usurio no pode funcionar adequadamente (intrnseco ao comportamento do servidor PostgreSQL). Lista 3. Reunindo informaes sobre uma tabela
psge= SLC *FO ue1t; otrs> EET RM sr.2 ER: prisongd pr rlot RO ems eaa aa ea 2 psge= isrrnsvlrsd ue1t (0; otrs> nei o aoe e sr.2 1) ER: prisongd pr rlot RO ems eaa aa ea 2 psge= otrs> psge= \ otrs> d Lsad rle it e eas Eqea|Nm |Tp | Porei sum oe io rpitro ----+------------------+---+----ue1 |t sr 1 |tbl |psge aea otrs ue1 |t sr 2 |tbl |psge aea otrs ( lna) 2 ihs psge= \ t otrs> d ? Tbl "sr.1 aea ue1t" Cln | Tp oua io |Mdfcdrs oiiaoe ----+----+------------------i |nmr itio| eo ner Tbl "sr.2 aea ue1t" Cln | Tp oua io |Mdfcdrs oiiaoe ----+----+------------------i |nmr itio| eo ner

Apesar de no ser possvel acessar a tabela, o usurio ainda pode reunir informaes sobre ela. A Lista 4 mostra a conta de usurio user1 obtendo uma lista de contas de usurio e suas respectivas propriedades, tambm. O usurio comum no pode acessar as prprias senhas. Lista 4. Obtendo propriedades de contas de usurio
psge= slc *fo p_sr otrs> eet rm gue; ueae|ueyi |ueraeb|ueue |ueaud|psw |vlni |ueofg snm sssd scetd sspr sctp asd autl scni -----+-----------------+-----+-------------------+------+----------------+----psge |1 |t|t|t|**** || otrs 0 **** ue1|170|f|f|f|**** || sr 87 **** ( rw) 2 os

Todos os usurios possuem a habilidade padro de aprender as definies e o esquema do cluster. A Lista 5 mostra um script que rene informaes sobre o esquema de definio inteiro do cluster por meio de consulta dos catlogos. Os catlogos do sistema podem ser modificados, ou "raqueados", pelo superusurio, mitigando assim esta ameaa. Lista 5. Extraindo definies globais do cluster
#/i/ah !bnbs pq mdtbs < _o_ sl yaaae < ef stsac_ahpbi,nomto_ceap_aao,gtat e erhpt=ulcifrainshm,gctlgp_os; \ t \ ls.x o ittt SLC nnpae|.|crlaea "al Nm" EET .snm|''|.enm s Tbe ae FO p_aao.gcasc RM gctlgp_ls JI p_aao.grlsrO rod=crlwe ON gctlgp_oe N .i .eonr LF JI p_aao.gnmsaenO nod=crlaepc ET ON gctlgp_aepc N .i .enmsae WEEcrlidI (r,' HR .ekn N ''') ODRB 1 RE Y ; \ q _o_ ef frii $ ctls.x ) d o n ( a ittt ; o pq - "d$" sl c \ i dn oe

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

3/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Criando e acessando funes definidas pelo usurio Funes so confiveis ou no-confiveis. Linguagens processuais confiveis executam instrues dentro do contexto do banco de dados, como criao de tabelas, ndices, incluso ou remoo de dados, etc. Linguagens procedurais no confiveis alm dos recursos confiveis, so capazes de afetar o mundo real tambm, como a lista de contedo de um diretrio, criao, ou excluso de arquivos, chamada de processos do sistema e mesmo criao de conexes de soquete para outros hosts. Lista 6. Incluindo linguagens procedurais em um banco de dados e restaurando acesso ao user1
psge= cet lnug ppsl otrs# rae agae lgq; CET LNUG RAE AGAE psge= cet lnug ppru otrs# rae agae lel; CET LNUG RAE AGAE psge= cet lnug ppr; otrs# rae agae lel CET LNUG RAE AGAE psge= STSSINATOIAINpsge; otrs> E ESO UHRZTO otrs ST E psge= GATUAEO SHM PBI T ue1 otrs# RN SG N CEA ULC O sr; GAT RN

Lista 7. Linguagens procedurais confiveis versus no confiveis


psge= slc lnaea lnug,lnlrse a tutdfo p_agae otrs# eet anm s agae aptutd s rse rm glnug; lnug |tutd agae rse -----+------------itra |f nenl c |f sl q |t ppru |f lel ppr lel |t ( rw) 5 os

Diferentemente das tabelas, a conta de usurio no necessita de permisses especiais ao chamar a funo de alguma outra pessoa, mesmo se elas foram criadas pelo superusurio. Lista 8. Chamando uma funo de superusurio
psge= STSSINATOIAINpsge; otrs# E ESO UHRZTO otrs ST E psge= CET O RPAEFNTO pbi.1( otrs# RAE R ELC UCIN ulcf psge( OTxtx otrs# U et psge( )A otrs# S psge- $oy otrs# bd$ psge$ slc 'el fo f(':et otrs# eet hlo rm 1):tx; psge$ $oy otrs# bd$ psge- LNUG SL otrs# AGAE Q; CET FNTO RAE UCIN psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= otrs> psge= SLC *FO f(; otrs> EET RM 1) x ---------------hlofo f( el rm 1) ( rw 1 o)

A funo na Lista 9 abaixo foi criada pelo superusurio usando p p r u Ela retorna o contedo do diretrio; user1 pode chamar esta funo. Um usurio comum pode lel. chamar ambas as funes, confiveis e no confiveis. O melhor mtodo para mitigar esta ameaa negar o acesso funo revogando o privilgio. Lista 9. Explorando funes por um usurio autorizado
psge= STSSINATOIAINpsge; otrs> E ESO UHRZTO otrs ST E psge= CET O RPAEFNTO pbi.2( otrs# RAE R ELC UCIN ulcf psge( OTxtx otrs# U et psge( )A otrs# S psge- $oy otrs# bd$ psge$ #eiecned d drtrori e sapd otrs# mt oto o iei-az m ad aro psge$ #osreouodsapssmls otrs# bev s a sa ipe psge$ $ =`s- /2/e/ul; otrs# a l l >dvnl` psge$ $esg ="nqiet alsad drtro\"$; otrs# msae \Au s it e ieisn.a psge$ rtr $esg; otrs# eun msae psge$ $oy otrs# bd$ psge- LNUG PPRU otrs# AGAE LEL; CET FNTO RAE UCIN psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= SLC *FO f(; otrs> EET RM 2) x ---------------------------------------------------------------------------

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

4/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Au et alsad drtro qi s it e ieis ttl10 oa 2 dwrx- 2ro ro 49 Ag2 0:3bn rx-rx ot ot 06 u 9 70 i dwrx- 3ro ro 49 Ot1 0:7bo rx-rx ot ot 06 c 1 51 ot dwrx- 3ro ro 49 Nv2 20 bid rx-rx ot ot 06 o 6 06 ul lwrxw 1ro ro 1 Ag2 20 crm- mdacrm rxwrx ot ot 1 u 2 06 do > ei/do dwrx- 1 ro ro 190Ot1 0:5dv rx-rx 5 ot ot 46 c 2 73 e dwrx- 18ro ro 89 Ot1 0:6ec rx-rx 1 ot ot 12 c 2 73 t ( rw 1 o)

Lista 10. Assegurando o user1 e o grupo PUBLIC


psge= STSSINATOIAINpsge; otrs# E ESO UHRZTO otrs ST E psge= RVK ALO FNTO f( FO ue1 GOPPBI; otrs# EOE L N UCIN 2) RM sr, RU ULC RVK EOE psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= SLC *FO f(; otrs> EET RM 2) ERR priso dne frfnto f RO: emsin eid o ucin 2 psge= otrs>

A Lista 11 envolve reunio de inteligncia. Lista 11. Obtendo o cdigo de origem da funo
psge= STSSINATOIAINue1 otrs> E ESO UHRZTO sr; ST E psge= slc por a "ucinf("fo p_rcweepoae'3; otrs> eet rsc s fnto 3) rm gpo hr rnm=f' fnto f( ucin 3) -------------#eieocned d drtrori n sapd mt oto o iei-az a ad aro #osreouodsapssmls bev s a sa ipe $ =`s- /2/e/ul; a l l >dvnl` $esg ="nqiet alsad drtro\"$; msae \Au s it e ieisn.a rtr $esg; eun msae ( rw 1 o)

Para ocultar o cdigo de origem: Escreva a sua funo como um mdulo em seu ambiente de linguagem nativa (C, Perl, Python, etc.) e armazene-a no disco rgido do host. Depois crie uma funo definida pelo usurio abstrata em PostgreSQL que chame o mdulo. Considere gravar o cdigo de origem em uma tabela e dinamicamente criar sua funo conforme for necessrio. Grave sua funo definida pelo usurio em outro banco de dados no cluster, que ento chamada por uma conta de usurio autorizada usando o mdulo d l n . bik Usando o security definer O security definer executa a funo com os privilgios do usurio que a criou. Assim, um usurio pode acessar uma tabela que, sob circunstncias normais, est indisponvel. Por exemplo, como mostrado na Lista 12, uma tabela com duas colunas criada no esquema Postgres pelo postgres do superusurio. O usurio comum, user1, invocar uma funo usando o parmetro security definer e obter um valor com base em um valor de entrada. Lista 12. Criando uma tabela e uma funo
psge= STSSINATOIAINpsge; otrs# E ESO UHRZTO otrs ST E psge= CET TBEpsge.4xsra, nmrc; otrs# RAE AL otrst( eily uei) NTC:CET TBEwl cet ipii sqec "4xsq frsra clm "4x OIE RAE AL il rae mlct eune t__e" o eil oun t." CET TBE RAE AL psge= ISR IT psge.4y VLE (adm):uei(,); otrs# NET NO otrst() AUS rno(:nmrc43) ISR 01 NET psge= ISR IT psge.4y VLE (adm):uei(,); otrs# NET NO otrst() AUS rno(:nmrc43) ISR 01 NET psge= ISR IT psge.4y VLE (adm):uei(,); otrs# NET NO otrst() AUS rno(:nmrc43) ISR 01 NET psge= ISR IT psge.4y VLE (adm):uei(,); otrs# NET NO otrst() AUS rno(:nmrc43) ISR 01 NET psge= ISR IT psge.4y VLE (adm):uei(,); otrs# NET NO otrst() AUS rno(:nmrc43) ISR 01 NET psge= CET O RPAEFNTO pbi.4( otrs# RAE R ELC UCIN ulcf psge( I ait otrs# N n, psge( OTbnmrc otrs# U uei psge( )RTRSSTFnmrcA otrs# EUN EO uei S psge- $oy otrs# bd$ psge$ slc yfo psge.4weex$ lmt1 otrs# eet rm otrst hr =1 ii ; psge$ $oy otrs# bd$ psge- LNUG SLSCRT DFNR otrs# AGAE Q EUIY EIE; CET FNTO RAE UCIN

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

5/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

A Lista 13 mostra que a conta de usurio user1 agora pode acessar as informaes desejadas. Lista 13. Funo no-privilegiada acessando uma tabela com uma chamada de funo
psge= STSSINATOIAINue1 otrs# E ESO UHRZTO sr; ST E psge= SLC ba "yfrtrcr"FO f() otrs> EET s m is eod RM 41; m frtrcr y is eod ---------------039 .7 ( rw 1 o) psge= SLC ba "yscn rcr"FO f() otrs> EET s m eod eod RM 42; m scn rcr y eod eod ----------------020 .0 ( rw 1 o)

Invadindo a senha do PostgreSQL A administrao de senha efetiva fundamental para a segurana em um DBMS. funo do DBA impor uma poltica de senha aprovada. Uma senha deve consistir em caracteres alfanumricos escolhidos aleatoriamente que no tenham um padro discernvel. A prtica comum dita que as senhas possuem pelo menos seis caracteres e so mudadas frequentemente. Contas e senhas de usurio do PostgreSQL A poltica de segurana da conta de usurio do PostgreSQL centrada nos comandos SQL que criam e administram a conta do usurio:
CET RL RAE OE ATRRL LE OE DO RL RP OE

As seguintes instrues SQL pertencem ao antigo estilo de administrao de conta de usurio (apesar de vlido, voc deve usar a tcnica mais nova de gerenciamento de usurios como funes):
CET GOP RAE RU ATRGOP LE RU DO GOP RP RU CET UE RAE SR ATRUE LE SR DO UE RP SR

As senhas so armazenadas como descriptografadas e criptografadas. Senha descriptografadas so armazenadas abertamente e podem ser lidas pelo superusurio. A senha criptografada envolve a gerao e armazenamento de seu hash MD5, que no pode ser lido. Algum valida a senha no momento do login ao executar hash e compar-la com o que j foi armazenado no cluster de dados. Abaixo esto algumas chamadas de exemplo que criam e administram a senha: Uma conta criada sem uma senha:
CET RL ue1WT LGN RAE OE sr IH OI;

Uma conta criada com uma senha descriptografada:


CET RL rgrWT LGNUECYTDPSWR '2' RAE OE oe IH OI NNRPE ASOD 13

Uma conta alterada e uma senha criptografada designada a ela:


ATRRL ue1WT ECYTDPSWR '2' LE OE sr IH NRPE ASOD 13

A execuo de uma consulta SQL pelo superusurio em relao tabela de catlogos p _ h d wretorna o nome da conta do usurio e sua senha. A Lista 14 mostra o gsao cdigo. Lista 14. Obtendo a senha de um usurio do catlogo
psge= slc ueaea ueacutpsw a "asod fo p_hdwwee otrs# eet snm s srcon,asd s pswr" rm gsao hr lnt(asd> odrb ueae eghpsw)1 re y snm; ueacut|pswr srcon asod -------------------------------+-----------------ue1|m57c55c1586ff8b6b5 sr d13a009b3bb165223 rgr|13 oe 2 ( rw) 2 os

A Lista 15 mostra como possvel gerar o hash MD5 para user1 com a senha 1 3 2.
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 6/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Lista 15. Gerando uma senha MD5


psge= slc 'd'|d(13sr' a "yongnrtdhs" otrs# eet m5|m5'2ue1) s m w eeae ah, psw a "trdhs frue1 asd s soe ah o sr" fo p_hdwweeueae'sr' rm gsao hr snm=ue1; m ongnrtdhs |soe hs frue1 y w eeae ah trd ah o sr -------------------------------------------------------+-----------------m57c55c1586ff8b6b5|m57c55c1586ff8b6b5 d13a009b3bb165223 d13a009b3bb165223 ( rw 1 o)

Pronto para outro susto? Existem alguns poucos mecanismos dentro do PostgreSQL que podem impor uma poltica de senha blindada. As possveis limitaes de segurana incluem: O superusurio no pode impor um nmero mnimo de caracteres a ser usado para a senha. Apesar de haver um parmetro padro nas definies da configurao para como a senha deva ser armazenada (descriptografada ou criptografada com um hash MD5), o usurio no pode ser forado usar um mtodos de armazenamento particular pelo superusurio. No existe nenhum mecanismo que imponha um tempo de vida conta do usurio. O mecanismo que controla o tempo de vida efetivo da senha da conta do usurio se torna irrelevante quando o mtodo de conexo no PASSWORD ou MD5 no arquivo de configurao de autenticao de cliente do cluster, pg_hba.conf. Os parmetros de tempo de execuo do usurio que so alterados pela instruo A T R R L e que foram configurados pelo superusurio ou pelas definies de LE OE configurao estabelecidas por padro no arquivo postgresql.conf, podem ser alterados pelo proprietrio da conta do usurio vontade. Renomear uma conta de usurio limpa sua senha se ela foi criptografada. No possvel controlar quem fez as mudanas nas contas de usurio ou quando essas mudanas ocorreram. Uma arquitetura agressiva com edio cuidadosa dos catlogos do sistema podem recompensar o DBA vigilante. Devido ao fascinante potencial para danos, as limitaes de segurana das contas e senhas de usurio valem outro artigo separado. Invadindo a senha Impor uma senha forte uma meta digna, mas simplesmente no h como julgar sua fora at que algum a invada. A invaso de utilitrios se baseia em duas abordagens, como a seguir. Fora bruta O teste metdico do hash. Ele comea com algumas letras, aumentando em comprimento medida que o ataque continua. Este mtodo recomendado para testar senhas curtas. Ataques de dicionrio Usa uma abordagem de engenharia social. Um dicionrio de palavras, usado pelo utilitrio de invaso, o ponto inicial. Depois disso, combinaes dessas palavras so geradas e testadas em relao ao hash capturado. Este ataque tira vantagem da crena errnea de que uma cadeia de caracteres longa que consista em uma combinao mnemnica de cadeias e caracteres mais segura do que um comprimento um pouco mais curto de cadeias e caracteres escolhidos aleatoriamente. Dependendo da fora da senha e do hardware usado, a invaso pode ocorrer em alguns poucos segundos at vrios meses. Os DBAs esto interessados em identificar senhas com menos de seis caracteres de comprimento. O utilitrio da linha de comandos MDCrack usa a fora bruta para testar a senha. Este binrio Windows funciona bem em Linux sob Wine. Inserir w n M C a k s e e e - h l retorna os comutadores de configurao. Alguns so mostrados abaixo: ie Drc-s.x -ep
Uae MCak[pin.. -ts-ahhs sg: Drc otos.] -eths|ah MCak[pin.. -bnh=AS Drc otos.] -ec[PS] MCak[pin.. -rsm[FLNM]-dlt[FLNM] Drc otos.] -eue=IEAE|-eee=IEAE MCak[pin.. -hl|-bu Drc otos.] -ep-aot

A chamada de linha de comandos mais simples w n M C a k s e e e - a g r t m M 5 - a p n = U E N M $ D _ A H em que $ S R A E o nome do ie Drc-s.x -loih=D -ped$SRAE M5HS, UENM usurio e $ D _ A H o hash MD5 na tabela de catlogos pg_shadow. M5HS MDCrack pode executar em modo de sesso, como a seguir, assim possvel parar uma operao de invaso e continuar posteriormente. Lista 16. MDCrack executando em modo de sesso
#iiirss nca eso wn MCakseee-agrtmM5-apn=UENM $D_AH ie Drc-s.x -loih=D -ped$SRAE M5HS\ -ssinmssiniett -eso=yesofl.x #cniurouod tm md d ss otna s o lio oo e eso wn MCakseee-agrtmM5-apn=UENM $D_AH ie Drc-s.x -loih=D -ped$SRAE M5HS\ -rsm=yesofl.x -euemssiniett

O conjunto de caracteres padro abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ. Voc poderia terminar com um processo imenso se a senha candidata inclusse um caractere que no fizesse parte do conjunto de caracteres definido como padro. possvel mud-lo para qualquer combinao de caracteres alfanumricos que desejar. Por exemplo, voc pode desejar incluir caracteres de controle e pontuao.
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 7/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

O ajuste do conjunto de caracteres feito na linha de comandos. A varivel $ H R E representa o conjunto real de caracteres que ser usado: CAST
wn MCakseee-agrtmM5-apn=UENM $D_AH-cast$HRE ie Drc-s.x -loih=D -ped$SRAE M5HS -hre=CAST

O exemplo abaixo uma chamada para violar uma senha do Postgres de 123. Ignorar os trs primeiros caracteres fornece a voc o valor hash MD5 md5173ca5050c91b538b6bf1f685b262b35. possvel determinar a senha com a seguinte chamada (dica: grep para a cadeia de caracteres C l i i n f u d Esta invaso o l s o o n ). leva aproximadamente 0,32 segundos:
wn MCakseee-agrtmM5-apn=sr 13a009b3bb165223\ ie Drc-s.x -loih=D -pedue1 7c55c1586ff8b6b5 |ge "olso fud rp Cliin on"

A Lista 17 demonstra a invaso da senha no sistema catalog pg_shadow. Lista 17. Invadindo a senha
wn MCakseee-agrtmM5-apn=sr \ ie Drc-s.x -loih=D -pedue1 `sl- - "eetsbtigpsw,)fo p_hdwweeueae'sr'" \ pq t c slc usrn(asd4 rm gsao hr snm=ue1;` |ge "olso fud rp Cliin on"

Modelos de autenticao Agora que voc viu o que pode dar errado, hora de explorar o que voc pode fazer para fazer as coisas certas. A autenticao um assunto vasto, sendo assim, somente o bsico ser abordado aqui. Sob o guarda-chuva "autenticao", existem muitos significados de controle de acesso para o cluster Postgres: Soquetes de domnio UNIX Autenticao de servidor Ident Autenticao de servidor LDAP PAM Kerberos SSL Soquetes de domnio UNIX Um soquete de domnio UNIX um canal de comunicao bidirecional que remonta um arquivo de muitos aspectos. O servidor cria o soquete de domnio que est aguardando por clientes para abrir o arquivo com o sistema de arquivos. Um soquete de domnio PostgreSQL tpico mostrado abaixo. Lista 18. Soquete de domnio tpico
rbr@of~ l -a/m|rpPSL oetwl:$ s l tpge GQ swrxw 1rbr rbr 020-01 1:7..GQ.42 rxwrx oet oet 071-5 24 sPSL53 -w--- 1rbr rbr r---oet oet 3 20-01 1:7..GQ.42lc 3 071-5 24 sPSL53.ok

Observe que o nmero da porta est anexado ao nome do arquivo. Reconfigurar o servidor para uma porta TCP/IP diferente tambm altera o nome do soquete do domnio. Trs parmetros no arquivo de configurao postgresql.conf controlam as permisses para um soquete de domnio: unix_socket_directory (o arquivo PATH) unix_socket_group (o grupo de usurios) unix_socket_permissions (assume como padro 0777) O local do do soquete de domnio varia de acordo com a distribuio Linux: O cdigo de origem PostgreSQL instala e coloca o soquete no diretrio /tmp. O BSD localiza o soquete no diretrio /tmp. Os derivativos RedHat localizam o soquete no diretrio /tmp. Os derivativos Debian localizam o soquete em /var/run/postgresql com permisses somente para o postgresqlaccount. Existem algumas coisas estranhas sobre soquetes de domnio. Considere as implicaes do seguinte exemplo.

Sudo
s d um comando uo

poderoso com muitas possveis configuraes que permitem aos usurios executar programas com os privilgios de segurana de outro usurio (normalmente o superusurio ou raiz). Similar ao comando do Windows r n s ua. Um cluster criado no diretrio inicial de robert (superusurio) com uma autenticao de confivel. Na inicializao do servidor, porm, as permisses de soquete de domnio permitem login, exceto r b r . O usurio r b r efetua login com TCP, mas recusado no soquete de domnio. Porm, r b r pode efetuar login atravs de um soquete de oet oet oet domnio aps efetuar s d para n b d . uo ooy Este exemplo mostra a versatilidade das permisses de arquivos, mitigando os danos causados por um cracker que se torne superusurio.
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 8/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Lista 19. Permisses


rbr@of~ iid - tut- psge ~dt oetwl:$ ntb A rs U otrs /aa rbr@of~ p_t - ~dt/- ~lgiett\ oetwl:$ gcl D /aa l /ofl.x - "cui_oktprisos07- ui_oktdrcoy/m"sat o - nxsce_emsin=0 c nxsce_ietr=tp tr sre satn evr trig rbr@of~ pq - lclot- psge - "eet'ueue:hswrs a mg oetwl:$ sl h oahs U otrs c slc sprsrti ok' s s" mg s --------------------sprsrti wrs ueue:hs ok ( rw 1 o) rbr@of~ pq - /m - psge - "eet'ueue:hsfis a mg oetwl:$ sl h tp U otrs c slc sprsrti al' s s" pq:nofipse cnca-ea srio:Prisongd sl o osvl oetrs o evdr ems eaa Osrio et eeuad lclet eaetno evdr s xctno oamne ciad cnxe n sqeed dmnoUi "tp..GQ.42? oes o out e oi nx /m/sPSL53" rbr@of~ sd s nbd oetwl:$ uo u ooy [uo pswr frrbr: sd] asod o oet $pq - lclot- psge - "eet'ooyti wrs a mg sl h oahs U otrs c slc nbd:hs ok' s s" mg s -----------------nbd:hswrs ooyti ok ( rw 1 o)

$pq - /m - psge - "eet'ooyti silwrs a mg sl h tp U otrs c slc nbd:hs tl ok' s s" mg s -----------------------nbd:hssilwrs ooyti tl ok ( rw 1 o)

Ident O servidor Ident responde a uma simples pergunta: Qual usurio iniciou a conexo que sai da sua porta X e se conecta minha Y? No contexto de um servidor PostgreSQL, informado o DBMS da Identidade da conta do usurio que est fazendo uma tentativa de login. O PostgreSQL ento obtm essa resposta e permite ou nega permisso para login seguindo um conjunto de regras configurado pelo DBA nos arquivos de configurao apropriados. O mecanismo de autenticao do servidor Ident do PostgreSQL funciona mapeando as contas de usurio do PostgreSQL para as contas de usurio do UNIX usando o servidor Ident do prprio host. Os exemplos a seguir assumem que todas as conta de usurio do UNIX foram mapeadas no PostgreSQL para poder efetuar login em qualquer banco de dados, desde que eles usem o mesmo nome de conta no PostgreSQL. O login falha se o nome de usurio do UNIX no existir como uma conta de usurio no servidor PostgreSQL, ou se uma tentativa for feita para efetuar login usando outro nome de conta de usurio do PostgreSQL. ~Suponha que voc tenha se conectado por meio de SSH no host: s h - r b r w l . s l oet of Lista 20. Um login falho e um bem-sucedido
rbr@of~ pq - rbr rbr oetwl:$ sl U oet oet Bmvnoa pq 824 otria itrtv d PsgeQ. e-id o sl .., emnl neaio o otrSL Dgt: \oyih pr tro d dsrbi iie cprgt aa ems e itiuo \ pr auacmcmno SL h aa jd o oads Q \ pr auacmcmno pq ? aa jd o oads sl \ o tria cmpnoevruapr eeua cnut g u emnr o ot gl aa xctr osla \ pr ecra q aa nerr rbr@of~ pq - psge rbr oetwl:$ sl U otrs oet pq:FTL Atnia Ietflo pr uuro"otrs sl AA: uetco dn ahu aa si psge" - It fnin,s pr s tra opsge d cnad uuroUI - so ucoa u aa e onr otrs a ot o si NX

O PostgreSQL usa dois arquivos para administrar e controlar todas as sesses de login para usurios que foram autenticados pelo servidor Ident: pg_hba.conf Controla o acesso atravs de registros que so definidos em uma nica linha. pg_Ident.conf Entra em ao quando o servio Ident usado como o autenticador da conta do usurio. Por exemplo, o M T O identificado como Ident no arquivo pg_hba.conf. EHD Lista 21. Exemplos de configurao simples
Eepo1 xml : UacnxoLCLOTipeqeacnaui rbr aes obnod dds m oe OAHS m u ot nx oet cse ac e ao rbrecuiaet.Noeit atnia nssqee d dmnoUI. oetxlsvmne xse uetco o outs e oi NX (ghacn) p_b.of #TP DTBS YE AAAE UE SR CD-DRS IRADES MTO EHD OTO PIN hs ot al l al l 170013 2.../2 Iet dn mmp ya lcl al oa l al l tut rs

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

9/15

02/04/12
(gIetcn) p_dn.of #MPAE ANM IetUENM dn-SRAE mmp ya rbr oet

Segurana Total em um Banco de Dados PostgreSQL


P-SRAE GUENM rbr oet

Eepo2 xml : Uacnxod sqeed dmnoipeqeacnaui rbr aes qaqe bno m oe o out e oi m u ot nx oet cse ulur ac d ddscm cnap rbr; e ao oo ot g oet psge d cnaui pdmaesrqaqe bnod ddscm uurorbr. otrs e ot nx oe csa ulur ac e ao oo si oet (ghacn) p_b.of #TP DTBS YE AAAE UE SR CD-DRS IRADES MTO EHD OTO PIN lcl al oa l al l Iet dn mmp ya hs ot al l al l 170013 2.../2 tut rs (gIetcn) p_dn.of #MPAE ANM IetUENM dn-SRAE mmp ya rbr oet mmp ya psge otrs

P-SRAE GUENM rbr oet rbr oet

Eepo3 xml : Uacnxod sqeed dmnoipeqeacnaui pd s cnca aqaqe m oe o out e oi m u ot nx oe e oetr ulur bnod ddscmsuhmnm d bnod ddspsge uad a ac e ao o e oio e ac e ao otrs sno plvacae"aesr. aar-hv smue" p_dn.ofnoncsaimneau. gIetcn eesraet qi Cnxe d hs lclarvsd TPI sorjiaa. oes o ot oa ta e C-P eetds (ghacn) p_b.of #TP DTBS YE AAAE lcl tmlt0tmlt1 oa epae,epae hs ot al l

UE SR al l al l

CD-DRS IRADES 170013 2.../2

MTO EHD Iet dn rjc eet

OTO PIN smue aesr

E4 x: (oo o uuro pdms cnca cmsu pro nmsd uurosmne tds s sis oe e oetr o es rpis oe e si oet asbno d ddspsge erbr) o acs e ao otrs oet (ghacn) p_b.of #TP DTBS YE AAAE lcl tmlt0tmlt1 oa epae,epae

UE SR al l

CD-DRS IRADES

MTO EHD Iet dn

OTO PIN smue aesr

Lembre-se das seguintes advertncias: As mudanas de configurao tomam efeito assim que voc recarrega os arquivos, como pg_ctl -D mycluster reload. Vrias definies de configurao podem causar comportamento temperamental. Procure por mensagens de configurao falhas no log. Ident foi projetado e implementado quando as prprias mquinas foram consideradas seguras. Qualquer servidor remoto que procure autenticao deve ser considerado suspeito. O servidor Ident usado somente para autenticar conexes de host local. Criptografia de dados Existem muitas maneiras pelas quais voc pode se expor inadvertidamente a um cracker dentro de uma intranet. Vamos dar uma sondada. Suponha que voc execute o seguinte comando no seu host local, 192.168.2.64: t p u p - e h - - 3 0 h s 1 2 1 8 2 1 0 a d cdm i t0 X s 00 ot 9.6..0 n pr 53. ot 42 Em um host remoto, 192.168.2.100, voc se conecta ao PostgreSQL do host local, que j est atendendo na porta 5432: p q - 1 2 1 8 2 6 - 5 3 - p s g e sl h 9.6..4 p 42 U otrs p s g e . Agora altere a senha da sua conta de superusurio, postgres: A T R U E p s g e W T E C Y T D P S W R ' y n w p s w r ' . otrs LE SR otrs IH NRPE ASOD m_e_asod; Lista 22. Discernindo a senha em um dump de dados sondado
1:91.286I wl.63 >lpo.otrsl P58666)ak40wn36 63:7330 P of536 atppsgeq: 9:6(8 c 7 i 08 <o,o,ietm 94699866 npnptmsap 707 596> 000:40 07 40 40 40 68 ca 06 E.G@@m.. x00 50 08 73 00 06 d8 08 24 .x.....d 001:ca 04 d1 13 64 7d 67 e7 ....jzj. x00 08 20 c0 58 af aa a1 7c .@.8O.q| 002:81 0f 19 00 00 00 09 a8 ........ x00 08 bc ad 00 11 8a 04 17 ........ 003:09 5a 50 00 44 45 45 25 .SQ.CLE. x00 02 32 10 00 31 c4 52 05 ....ATRU 004:54 52 76 77 67 67 25 45 SRpsge.I x00 35 20 0f 34 72 53 07 94 E.otrsWT 005:42 44 45 55 54 42 54 55 HECYTDPS x00 80 5e 32 90 45 40 01 33 .NRPE.AS 006:54 54 22 67 56 67 57 67 WR.m_e_a x00 7f 24 07 d9 fe 57 f0 13 OD'ynwps 007: 77 67 62 30 x00 37 f2 47 b0 sod; wr'.

Tneis SSH usando redirecionamento de porta O redirecionamento de IP uma tecnologia de tunelamento que redireciona pacotes da Internet de um host para outro. Ele permite que seus clientes PostgreSQL, como p q , sl p a m n e mesmo o e o f c , se conectem ao servidor Postgres remoto com uma conexo SSH. gdi, pnfie Considere as seguintes questes: O que acontece se no existir nenhum cliente p q no servidor PostgreSQL remoto? sl O que acontece se voc precisar fazer upload ou download de dados entre sua estao de trabalho e o host remoto? O que voc faz quando precisa usar os clientes do banco de dados porque eles podem executar certas tarefas que o cliente p q tambm no pode fazer, ou que no sl pode fazer de jeito algum? Como fazer o tunelamento de sua rede para que a sua equipe possa se conectar remotamente a um banco de dados protegido por um firewall?
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 10/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Este exemplo conecta um cliente (host local) a um host remoto (192.168.2.100). Uma conexo com proxy na porta da estao de trabalho de 10000 criada. O cliente, na conexo com a porta 10000, redirecionado para o servidor PostgreSQL do host remoto, que est atendendo na porta 5432: s h - 1 0 0 l c l o t 5 3 s L 00:oahs:42 1218210 9.6..0. Incluir o comutador - permite que outros hosts obtenham vantagem da sua conexo redirecionada, o que a torna uma rede privada virtual (VPN) instantnea para conexes g Postgres: s h - - 1 0 0 l c l o t 5 3 1 2 1 8 2 1 0 s g L 00:oahs:42 9.6..0. Algumas advertncias sobre tunelamento: O cliente e o servidor do banco de dados tm a impresso de que esto se comunicando com seu prprio host local. Lembre-se de configurar o arquivo pg_hba.conf para definir a autenticao correta para as conexes do host local usando TCP/IP. Portas abaixo de 1024 so exclusivamente controladas pelo raiz. Sesses de SSH necessitam de uma conta de usurio existente no servidor PostgreSQL/SSH. Sesses criptografadas por SSL Sesses criptografadas com PostgreSQL necessitam que o servidor seja compilado com o comutador - w t - p n s . Os binrios distro do Linux possuem essa funo. -ihoesl Clientes como p q e p a m ntambm possuem os recursos do requisito. sl gdi possvel especificar o servidor usando o utilitrio de linha de comandos p _ o f g, como a seguir. gcni
p_ofg-cniue gcni -ofgr

Para preparar o servidor PostgreSQL para sesses criptografadas: 1. Crie uma chave de servidor auto-assinada (server.key) e um certificado (server.crt) usando a ferramenta de linha de comandos OpenSSL o e s l pns. 1. Crie a chave do servidor: o e s l g n s - e 3 - u s r e . e 1 2 . pns era ds ot evrky 04 2. Remova a passphrase o e s l r a - n s r e . e - u s r e . e . pns s i evrky ot evrky 3. Crie um certificado auto-assinado para o servidor: o e s l r q - e - e s r e . e - 5 9 - u s r e . r . pns e nw ky evrky x0 ot evrct 2. Instale os dois arquivos, server.key e server.crt, no diretrio do cluster de dados. 3. Edite o arquivo postgresql.conf e configure o par nomeado: s l = o . s n 4. Reinicie o servidor. Lista 23. Conexo de sesso criptografada com SSL bem-sucedida
rbr@of~ pq - 1218210- rbr oetwl:$ sl h 9.6..0 U oet Bmvnoa pq 824 otria itrtv d PsgeQ. e-id o sl .., emnl neaio o otrSL Dgt: \oyih pr tro d dsrbi iie cprgt aa ems e itiuo \ pr auacmcmno SL h aa jd o oads Q \ pr auacmcmno pq ? aa jd o oads sl \ o tria cmpnoevruapr eeua cnut g u emnr o ot gl aa xctr osla \ pr ecra q aa nerr CnxoSL(io DERAAS5-H,bt:26 oe S cdg: H-S-E26SA is 5) rbr= oet#

O servidor sempre testa a conexo primeiro para os pedidos de sesso criptografados. Porm, possvel controlar o comportamento do servidor editando o arquivo de autenticao pg_hba.conf. No lado do cliente, possvel controlar o comportamento padro do cliente (p q ) para o uso de uma sesso criptografada ou no por meio da sl definio da varivel de ambiente PGSSLMODE. Existem seis modos (dois novos modos so especficos da V8.4). Modo Descrio disable Tentar somente conexes SSL descriptografadas. allow Primeiro tenta uma conexo descriptografada e, se no obtiver xito, uma tentativa de conexo SSL feita. prefer O oposto de allow; a primeira tentativa de conexo SSL e a segunda descriptografada. require O cliente tenta somente uma conexo SSL criptografada. verify-ca Uma conexo SSL, e certificado de cliente vlido assinado por um CA confivel. Verify-fullUma conexo SSL, certificado de cliente vlido assinado por um CA confivel, e o nome do host do servidor correspondente ao nome do host do certificado. Por exemplo: e p r P S L O E p e e . xot GSMD=rfr Certificados SSL Autenticao SSL quando o cliente e o servidor trocam certificados que foram assinados por um terceiro que tem credenciais inquestionveis. Esse terceiro conhecido como uma autoridade de certificao (CA). A conexo recusada pelo servidor ou pelo cliente quando no recebe um certificado legtimo do outro. Apesar de haver muitos detalhes, a configurao de uma autenticao no PostgreSQL usando certificados SSL direta: 1. Edite postgresql.conf, s l o . s=n A autenticao do lado do servidor precisa que os seguintes arquivos estejam em seu cluster de dados: server.key server.crt (que deve ser assinado por um CA) root.crt (verifica a autenticao do cliente) root.crl (lista de revogao de certificado, opcional)
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 11/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

O arquivo root.crt contm uma lista de certificados CA aprovados. Deve haver um coleta inteira de certificados disponveis para a sua distribuio particular, que voc pode incluir. A arquivo root.crl similar ao root.crt quanto ao fato de que contm uma lista de certificados assinados pelo CA. Porm, esses certificados so de clientes que tiveram o direito de conexo revogado. Um root.crl vazio no interferir com o processo de autenticao. A autenticao do lado do cliente precisa que os seguintes arquivos estejam no diretrio inicial do cliente, ~/.postgresql: postgresql.key postgresql.crt root.crt (verifica a autenticao do servidor) root.crl (lista de revogao de certificado, opcional) Assim como com o root.crt do servidor, arquivo do cliente, root.crt, contm uma lista de certificados que foram assinados por um terceiro CA respeitado. O ltimo arquivo, root.crl, opcional e usado para revogar certificados do servidor. A obteno de certificados requer que ambos, cliente e servidor, tenham enviado pedidos de certificado, client.csr e server.csr, ao CA. Os certificados somente podem ser criados aps terem gerado suas prprias chaves privadas, como a seguir.
oeslrq-e -ekyra12 -oe -eotcin.e -u cin.s pns e nw nwe s:04 nds kyu letky ot letcr oeslrq-e -ekyra12 -oe -eotsre.e -u sre.s pns e nw nwe s:04 nds kyu evrky ot evrcr

Existe mais de uma maneira de executar o utilitrio o e s lpara obter o que voc precisa. Por exemplo, possvel colocar um tempo de vida neles, ou possvel gerpns los com certificados auto-assinados e eliminar a necessidade de um CA. 2. Agora voc tem trs opes para gerar seus certificados de cliente e servidor. Voc pode: Obter client.csr e server.csr assinados por um CA respeitado. Se tornar um CA usando o utilitrio o e s lperl CA.pl. pns Criar certificados auto-assinados e inclui-los nos arquivos root.crt do servidor e do cliente, respectivamente. 3. Abaixo est um conjunto de comandos abreviados para usar com o CA.pl. Consulte as man pages CA.pl para obter mais informaes sobre pedidos de certificado. C . l - e c (criar a nova CA) Ap nwa C . l - e r q(criar um pedido de certificado com uma chave privada) Ap nwe C . l - i n e (assinar o pedido de certificado pelo CA que voc criou) Ap sgrq Para os puristas do software livre, sempre h o http://www.cacert.org para certificados 'grtis'.

Lista 24. Um certificado de exemplo


---EI CRIIAE---BGN ETFCT--MI9CA6AIAIAup+4RM0CqSbDEBUMsCABN ICTClgwBgJMhYoQ+AGSGI3QBQAFxzJgV BYAFMMEYVQEpb1LNYRMEHYVQEhbRc5dB ATkVRwQDQIwT2lV0XlSwwDQKxJnlmlCX aRaRIBeBdQFABNBMCNb1bBY1M4DAMIME WnXzF0SMGxDSgVAT0vWviOWlBXT3Dxjy MENoDAMMNEMENoWEMkAUBMQUEABNBgCN jxVXT3DxDyjxVwzLAG1EhCVxzRgVATlv bUURdUIABNBoGldVbVIdZddMURIxZEMI Wt3hGxTfgVATEuGym0FpGpHgH5E0DUBG AUAMQ9b9I5bUg8DYKZhcAEBAg0MGAGAA 1ExL2tWuEhWwZwQJoIvNQBQDYAIJoBK4 n/BsJ1mHwJ9Z+RUYAD46Eo+soBSrV7tt XeKPIDt2dEufIMWrELFNu2BIOK/r7Ie9 kuC6/2uV4upADJYX9qf219qwrWjIhc3D dJQkzoAbmXJLjpBtwZ+pndD1CBXdOADv uI1UmG9ex5JERK5ZoCScAMAGgAg0HYV0 0gFf8S7vMIBCn/JrXRHpgBAjcwbwQDRO BYFlWUV6iX8cre5jMGBNHMgUgKFlWUV6 BEEENC+1tp6zD3vrINgVSEYwYAEENC+1 iX8cre5jo+XBMsCYVQEJVEMEAUCMU9Z1 tp6zD3vrVkTbQwQDQGwBTTBG1EBK2tST dFZEM8AUCMS5ZJZQVlZlcBdkTRMQEYVQ G0ThBG1EhYW0XuXg2k20yQHgHkRwgDQD Etb1b4TFZIAup+4RMwAUEQMMA8DYKZhc wD2t2gmtYJMhYoQ+AG1dwFABfwQJoIvN AEBAgEazUXWzaepkw/V10IUXdKGXy6GU QFQDYAFbmcVqVEZNFeh1qUxGeZNIK7CY S/FZhGeELdUmdEqIvxsVTcjopvHYukxX GIk/rLqlrm0H2n2uhnOTikKsJlPSmX0p zyPjhcpNTTbE8ZBrH/MIL6iRuF8o e9hL1hxGAK8TYvRDlEPjd2S/geg= ---N CRIIAE---ED ETFCT---

4. Supondo que voc gerou certificados auto-assinados, copie-os no local correto e edite root.crt. O certificado do cliente salvo no root.crt do servidor e o certificado do servidor alvo no root.crt do cliente. 5. Monitore as mensagens de log na reinicializao do servidor para confirmar que tudo est configurado corretamente. O comportamento padro do servidor ainda usa criptografia. Isso pode ser desativado editando-se o par de nomes s l c p e s ' U L em postgresql.conf e reiniciando o s_ihr=NL' servidor. Considere sua deciso com cuidado; configurar ssl_ciphers para NULL efetivamente desativa a criptografia. Concluso Neste artigo, voc aprendeu alguns fundamentos sobre a proteo do servidor do seu banco de dados PostgresSQL. Existe muito mais material sobre este assunto, mas no possvel abordar muitos tpicos em um s artigo. No h o suficiente sendo escrito sobre o PostgreSQL atualmente. Talvez, com um pouco da sua ajuda, possamos aprender mais sobre a segurana do PostgreSQL.

Download Descrio Sample code Nome os-postgresecurity-listings_src_code.zip Tamanho 10KB Mtodo de download HTTP
12/15

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Informaes sobre mtodos de download

Recursos Aprender Confira o tutorial "Segurana Total em um Banco de Dados PostgreSQL," que se baseia em uma srie de artigos do autor. Leia a Documentao do PostgreSQL V8.3.8. Consulte http://c3rb3r.openwall.net/mdcrack/. No Wikipedia, saiba mais sobre soquetes de domnio UNIX; protocolo Ident, um protocolo da Internet que ajuda a identificar o usurio de uma conexo TCP particular; e autoridade de certificao. Obtenha toda as as notcias, FAQ, documentos, origem e mais para o Projeto OpenSSL. Obtenha vrias correes para os programas tcpdump e libpcap. Saiba mais sobre redirecionamento de porta, ou tunelamento, para redirecionar trfego TCP sem segurana atravs do SSH Secure Shell. Para ouvir entrevistas e discusses interessantes para desenvolvedores de software, confira os podcasts do developerWorks. Mantenha-se atualizado com os eventos e webcasts tcnicos do developerWorks. Siga o developerWorks no Twitter. Confira as prximas conferncias, trade shows, webcasts e outros Eventos futuros no mundo todo que so de interesse dos desenvolvedores de software livre da IBM. Visite a zona de software livre do developerWorks para obter informaes extensivas sobre instrues, ferramentas e atualizaes de projeto para ajud no desenvolvimento de tecnologias de software livre e em seu uso com produtos da IBM, assim como nossos artigos e tutoriais mais conhecidos. O My developerWorks um exemplo de uma comunidade geral bem-sucedida que abrange uma ampla variedade de tpicos. Assista e aprenda sobre a IBM e tecnologias de software livre e funes de produto com as demos gratuitas do developerWorks On demand. Obter produtos e tecnologias Inove seu prximo projeto de desenvolvimento de software livre com o software de avaliao IBM, disponvel para download ou em DVD. Faa o download de verses de avaliao de produto IBM ou experimente as verses de avaliaes disponveis on-line no IBM SOA Sandbox e coloque suas mos em ferramentas de desenvolvimento de aplicativos e produtos de middleware do DB2, Lotus, Rational, Tivoli e WebSphere. Discutir Participe dos blogs do developerWorks e envolva-se na comunidade do developerWorks. Sobre o autor

Robert Bernier analista de PostgreSQL Business Intelligence na Medio Systems, que lder na tecnologia emergente de pesquisa de mdia. Ele foi um consultor de PostgreSQL para muitos lderes em suas respectivas indstrias, incluindo telefones celulares, Wall Street, centros de pesquisa cientfica, contratados da defesa dos EUA, e departamentos de TI das universidades e faculdades Ivy League. Ele um defensor do PostgreSQL e escreveu para Sys-Admin, Hakin9, PHP Solutions, e muitos sites on-line incluindo Linux.com, PHPbuilder.com, PHP Magazine, Linux Weekly News e o portal da Web O'Reilly. Ele contribuiu nos livros BSD Hacks e Multimedia Hacks. Ele tambm mantm o pg-live, http://pg-live.info, que usado no mundo todo em conferncias, trade shows e sesses de treinamento para fazer o perfil dos incrveis recursos do PostgreSQL. Fechar [x]

developerWorks: Registre-se
IBM ID: Precisa de um ID IBM? Esqueceu seu ID IBM? Senha: Esqueceu sua senha? Alterar sua senha Mantenha-me conectado.
www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/ 13/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL

Ao clicar em Enviar, voc concorda com os termos de uso do developerWorks.


Enviar Cancelar

Na primeira vez que voc efetua sign in no developerWorks, um perfil criado para voc. Informaes selecionadas do seu perfil developerWorks so exibidas ao pblico, mas voc pode edit-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocult-los), e seu nome de exibio acompanharo o contedo que postar. Todas as informaes enviadas so seguras. Fechar [x]

Selecione seu nome de exibio


Ao se conectar ao developerWorks pela primeira vez, criado um perfil para voc e necessrio selecionar um nome de exibio. O nome de exibio acompanhar o contedo que voc postar no developerWorks. Escolha um nome de exibio de 3 - 31 caracteres. Seu nome de exibio deve ser exclusivo na comunidade do developerWorks e no deve ser o seu endereo de email por motivo de privacidade. Nome de exibio: (Deve possuir de 3 a 31 caracteres.)

Ao clicar em Enviar, voc concorda com os termos de uso do developerWorks.


Enviar Cancelar

Todas as informaes enviadas so seguras. Mdia de classificao (8 votos) 1 estrela 1 estrela 2 estrelas 2 estrelas 3 estrelas 3 estrelas 4 estrelas 4 estrelas 5 estrelas 5 estrelas
Enviar

Incluir comentrio: Conectar or registre-se para deixar um comentrio. Observao: elementos HTML no so suportados nos comentrios.

Notificar-me quando um comentrio for adicionado1000 caracteres restantes

Postar

Nenhum comentrio postado para esse artigo


Imprimir esta pgina Compartilhe esta pgina Siga o developerWorks

Sobre Ajuda Entre em contato conosco

Feeds

Relatar abuso Termos de uso Privacidade

IBM Academic Initiative IBM PartnerWorld Industry Network

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

14/15

02/04/12

Segurana Total em um Banco de Dados PostgreSQL


Acessibilidade (Ingls)

www.ibm.com/developerworks/br/opensource/library/os-postgresecurity/

15/15

Potrebbero piacerti anche