[ Originala na tazi stranica ]
 
 

Oblasti

 Novini
 Aktualna tema
 Linux portali
 Kakvo e Linuks?
 Vuprosi-otgovori
 Forumi
   •Trudova borsa
   •Konkurs
 Statii
   • Istoriia
   • Suveti
   • Idei/Mneniia
   • Razrabotki
   • Programi
   • Igri
 Distributsii
   •Poruchka na CD
 Made In BG
 Failove
 Vruzki
 Galeriia
 Konferentsii

Nastroiki

 Vunshen vid
 Predlozheniia
 Napravi si sam

I oshte ...

 Za nas
 Linuks za bulgari EOOD
 Link kum nas
 Predlozheniia


Hosted by:


SUVETI
 
Suhranenie na poveritelna informatsiia v BD
  Suveti>Sigurnost

Avtor:Veselin Markov
Data:31-08-2006

 21  Zle Dobre

Printer Friendly Variant za otpechatvane

Zapisvane, suhranenie i prochit na poveritelna informatsiia ot BD


Veselin Markov 08.2006


Tazi statiia ima za tsel da predstavi sravnitelno siguren podhod pri boravene s konfidentsialna informatsiia, v t.ch. personalni danni, bankova informatsiia, osiguritelni nomera i t.n.


.:Vuvedenie


Sreshtal sum kakvi li ne bezotgovorni izpulneniia, na koito smelo se razchita i bivat opredeliani kato izklyuchitelno nadezhdni. Niama da se spiram na tiah, no vseki si dava smetka, che goliama chast ot tazi informatsiia e potrebna i predmet na zloupotrebi ot treti litsa.

Napisanoto ne pretendira za tsialost po vuprosa, nesumneno ima drugi spoluchlivi varianti, koito mogat da budat realizirani i tuk e miastoto da budat raziskvani.

Izpolzvaniiat softuer vklyuchva aktualni versii na Apache, PHP, PostgreSQL, OpenSSL i Linux.

Ideiata e suvsem prostichka - tsialoto dvizhenie na dannite ot brauzura na klienta do sluzhiteliat, koito shte chete i obrabotva informatsiiata, da se sluchva po zashtiten nachin.

Kak stava tova mozhe da bude onagledeno chrez slednata shema:

klientska zaiavka za izprashtane na danni kum https survur -> kriptirane na spetsialnata informatsiia -> zapis v baza danni <- chetene i obrabotka ot sluzhitel

Uslovno https survurut se namira v zona DMZ, koiato niama dostup do LAN.

Dobre e da se spomene, che BD koiato polzvam v sluchaia ima poddruzhka na SSL. Skriptut, koito se zakacha kum neia go pravi posredstvom SSL vruzka. PostgreSQL e konfiguriran taka, che da ne priema drugi metodi na svurzvane. Po tozi nachin trafikut mezhdu ueb survura i BD e bezpolezen za neotorizirani litsa, dori da bude prihvanat ot paketen snifur, primerno. Vupreki tova, edin put poluchilo administrativen dostup do suotvetnata mashina, takova litse bi moglo da se vuzpolzva ot novopostupvashtite danni, no sushtestvuvashtata informatsiia shte ostane neprochitaema za nego.

Malko po-kusno shte se spra na tova kak se izvurshva samoto kriptirane i dekriptirane na dannite, koeto e osnovna chast ot reshenieto na problema.

.:Konfigurirane na softuera

Pri Apache neshtata stoiat taka

# ./configure --enable-ssl [...]

Pri startirane iz log failovete ni interesuva tozi red, koito potvurzhdava, che survurut e kompiliran sus suotvetnata poddruzhka.

[Sun Aug 13 04:40:51 2006] [info] Server: Apache/2.2.3, Interface: mod_ssl/2.2.3, Library: OpenSSL/0.9.8b

Ako vse oshte niamate sertifikat i planirate da si kupite takuv ot Certificate Authority organizatsiia, po tozi nachin shte si suzdadete klyuch i Certificate Signing Request, koito sled tova shte im izpratite za podpis. Dobre e klyuchut da e zashtiten s parola, v protiven sluchai ne polzvaite '-des3'.

# openssl genrsa -des3 -out secure.example.net.key 1024
# openssl req -new -key secure.example.net.key -out secure.example.net.csr

Sled kato ste se sdobili veche sus sertifikat za survura, ostava da si dovurshite konfiguratsiiata.

[extra/httpd-ssl.conf]

<VirtualHost W.X.Y.Z:443>

DocumentRoot "/opt/apache2/htdocs/secure.example.net"
ServerName secure.example.net:443
ServerAdmin adm@example.net
ErrorLog /opt/apache2/logs/secure.example.net-error_ssl_log
TransferLog /opt/apache2/logs/secure.example.net-access_ssl_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /opt/apache2/conf/secure.example.net.crt
SSLCertificateKeyFile /opt/apache2/conf/secure.example.net.key


<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/opt/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>

BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

CustomLog /opt/apache2/logs/ssl_request_log %t %h %{SSL_PROTOCOL}x \
%{SSL_CIPHER}x \"%r\" %b \"%{Referer}i\" \"%{User-Agent}i\""


</VirtualHost>


Za PHP -

# ./configure --with-openssl[=DIR] [...]

Proveriavate dali vsichko izglezhda nared

# php -i | grep -i ssl

Ot interes sa slednite redove

Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
SSL Support => enabled
OpenSSL Version => OpenSSL 0.9.8b 04 May 2006

Malko po-nadolu e vidno kakvo shte pravim s php.


Pri PostgreSQL sushto razreshavate poddruzhka na SSL


# ./configure --with-openssl [...]

Tuk samo e zhelatelno da polzvate podpisan ot otoriziran CA sertifikat, mozhe da bude i self-signed. Po tozi nachin suzdavate i polzvate vtoriiat:

# openssl req -new -text -out server.req
# openssl rsa -in privkey.pem -out server.key

Mozhete da mahnete parolata na klyucha ako iskate da ne si igraete s expect skriptirane -

# openssl rsa -in privkey.pem -out server.key ; rm privkey.pem

Taka shte si podpishete sami sertifikata

# openssl req -x509 -in server.req -text -key server.key -out server.crt
# chmod og-rwx server.key

PostgreSQL shte tursi suzdadenite failove v data direktoriiata. Ostava da se ukazhe, che survurut shte polzva ssl komunikatsiia v postgresql.conf - ssl = on

V pg_hba.conf mozhe da iziskvate edinstveno takuv nachin za svurzvane na klientsko prilozhenie s bazata:

hostssl all all 0.0.0.0/0 md5

.:Simetrichno/Asimetrichno Kriptirane


Sled kato trafikut e podsiguren, sega e vreme da se pomisli kak shte se kriptirat samite danni. Pri simetrichno kriptirane obiknoveno se polzva edin i susht klyuch za kriptirane i dekriptirane na dannite. Sled kato v nashiia sluchai triabva da imame klyuch, koito shte e vurhu survura, tozi variant se eliminira po prostata prichina, che vseki s dostup do nego bi mogul eventualno da prochete kakvo ima v BD.

Udachno e da se izpolzva RSA asimetrichno kriptirane, pri koeto shte imame publichen i chasten klyuch. Asimetrichnoto kriptirane ne se svezhda samo do Public Key kriptirane, tui kato mozhe da se polzva sistema ot 2 chastni klyucha.

Mozhem da suzdadem i polzvame 8192 bitovi klyuchove, no dekriptiraneto na dannite shte otnema znachitelno poveche protsesorno vreme.
CHastniiat klyuch triabva da zashtitim s parola:

# openssl genrsa -des3 -out private.pem 2048

V sluchaia PEM (privacy enhanced mail) failut sadurzha i publichniia klyuch, koito shte izvlechem taka:

# openssl rsa -in private.pem -out public.pem -outform PEM -pubout

Toi izglezhda taka

 
 -----BEGIN PUBLIC KEY-----
 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFSjgsIjIlyEo9qbjn+8
 86TyFI+78vVM5PJjKyFqpmWeJMPrmDK86ng1uPwIjEbSJKxhrYAhhR8+za8Q8DVU
 9ksTCdiH6jVwDm0VHoQuVaXuHTI7U5oCZFFrqkkN7x8GiulF8gQtbv8k5Z/P0JCQ
 43eEujiGdaB/xI4zoZe7RSyHur3ILGV32q7cS+/kiMe/SgCPGYDuYmr7cO1q/8QW
 kHHKHaJm29BUY2rXFGXXDeKEdXnNRYlQNJGKf5m8tg9lHm1IQq2g9S+aWedXN5Qz
 o6lZP4B34H0nA1eULWEO+gocXcUgBhlY2HO/T8nYn6VmNDmJnvv2j8gSpjMajcVH
 1QIDAQAX
 -----END PUBLIC KEY-----
 

Proverka dali vsichko e napraveno pravilno

# echo test > cleartext.txt
# openssl rsautl -encrypt -inkey public.pem -pubin -in cleartext.txt -out enctext.dat
# openssl rsautl -decrypt -inkey private.pem -in enctext.dat -out cleartext1.txt
# cat cleartext1.txt
test


private.pem premestvame na sistema, do koiato niama dostup ot zonata v koiato se namira nashiiat ueb survur. Ostava da se napishe prilozhenie, koeto teoritichno se svezhda do logvane na operator na vuprosnata mashina (#2) po https, startirane na prilozhenie, zakachashto se po ssl kum BD na ueb survura i chetene ot neia. S chastniiat klyuch i vuvedenata kum nego parola informatsiiata se dekriptira.


.:PHP, Primeri

Sled kato sme kompilirali PHP s poddruzhka na OpenSSL veche imame dostup do takiva funktsii i po-natatuk neshtata sa poveche ot trivialni. Referentsii za rabota s tiah - http://php.net/openssl.

...

// kriptirane pri survura

$text = somefilter($_POST['data']);

$fp = fopen('public.pem','r');
$pub_key = fread($fp,1024);
fclose($fp);

$res = openssl_get_publickey($pub_key);
openssl_public_encrypt($text,$crypttext,$pub_key);
openssl_free_key($res);

$data = base64_encode($crypttext);

// v po-'chetliv' vid

echo 'string crypted: ' . $data . "\n";

...

...

// dekriptirane na drug host

$priv_key_pass = somefilter($_POST['priv_key_pass']);

pg_connect(“host=W.X.Y.Z port=5432 dbname= user= password= sslmode=require”);

// vurzka kum BD i chetene ot neia, metodut na zakachane se nalaga i ot samata BD
...

$enctext = base64_decode($data);

$fp = fopen('private.pem','r');
$priv_key = fread($fp,1024);
fclose($fp);

$res = openssl_get_privatekey($priv_key,$priv_key_pass);
openssl_private_decrypt($enctext,$text,$res);
openssl_pkey_free($res);

echo 'string decrypt : ' . $text . "\n";

...

Alternativno e izpolzvaneto na PGP (GnuPG) s PHP, no za tselta gpg triabva da se vika kato vunshna programa, koeto v niakoi sluchai ne e osobeno udobno.


.:Vruzki

[1] http://www.php.net/openssl
[2] http://www.postgresql.org/docs/
[3] http://www.openssl.org/docs/





<< Kak da instalirame, izpolzvame i testvame s quemu seamlessrd | Smiana na IP blok >>
Komentar ot: Veselin Data: 21-08-2006
[ Drugi komentari]
Mislia, che tova za koeto govorish e bug v OpenSSL, koito e otstranen predi vreme.

http://www.openssl.org/news/vulnerabili...

Tui ili inache ot malko paranoia glava ne boli, eto go primera.

<Location /strong/area>
# but https://hostname/strong/area/ and below
# requires strong ciphers
SSLCipherSuite HIGH:MEDIUM
</Location>

Za Oracle:) - kriptiraneto mozhe da se pravi na nivo baza, no e zhelatelno i malko portativnost na koda.



<< SSLCipherSuite + Kum: Kum: SSLCipherSuite + >>

Komentari: (obshto 7) Otseneni s ili poveche [Pulen pregled>>]
[Dobavi komentar]

Vashiiat komentar
Ime:
E-Mail: (po zhelanie)
Zaglavie:
E OTGOVOR NA TOZI KOMENTAR(DA)


Opisanie: ?

Vnimanie: Dopulnitelna proverka pri komentari ot neregistrirani potrebiteli.
 MENYU
Tursene | Dobaviane
 ZAGLAVIQ
 1. Podrobno rukovodstvo za ipfw nat
 2. Mikrotik + Openvpn + android
 3. Kak raboti DNS, chast 3 - instalatsiia na DNS cache survur.
 4. Periodichna tablitsa na distributsiite na Linux ...
 5. Kak raboti DNS, chast 2 - Topologiia, Authoritative servers
 6. Intervyu na „Linuks za bulgari“ s Hyusein Ismail
 7. Jabber (XMPP) survur pod Debian Squeeze
 8. Kak raboti DNS, chast 1 - Resolvers i Cache survuri.
 9. Debian, realtek RTL8111/8168B i wireless konfiguratsiia
 10. Vuvedenie v daemontools (DJB Way)
 11. Personalizirane na vunshniia vid na Ubuntu 11.10
 12. DNSCurve, NaCl, CurveCP - suvremenen pogled vurhu zashtitata n
 13. sbopkg
 14. Purva pomosht za desktop s Linuks... chast vtora
 15. Purva pomosht za desktop s Linuks
 16. Ne na Skiap
 17. Instalirane i konfigurirane na Wive na Edimax EW-7209APg
 18. Sigurno elektronno bankirane s Firefox i Linux
 19. Osnovi na iptables
 20. Za ueb brauzura i neprikosnovenostta na lichniia Vi zhivot
 21. Maskirane na VPN tunel
 22. Elektronen podpis na Bankserviz pod Ubuntu 9.10 i 10.04
 23. Elektronen podpis za rabota pod Linux i OpenSSL
 24. FreeBSD 8.0 Obedinenie na niakolko mrezhovi interfeisa v edin
 25. FreeBSD 8.0 Obedinenie na niakolko mrezhovi interfeisa v edin
 PODKATEGORII
 1. Desktop
 2. Sigurnost
 3. Kirilizatsiia
 4. Osnovni znaniia i sredstva
 5. Trikove
 6. Prakticheski opit
 7. Draiveri/Harduer
 8. Linux<->Windows
 9. Failovi sistemi
 10. Mrezha
 11. FreeBSD
 12. Vuzmozhnosti na Linux
 13. Linux iadro
 14. Linux distributsii
 ARHIV
 05 - 2022
 01 - 2017
 03 - 2016
 11 - 2012
 10 - 2012
 09 - 2012
 04 - 2012
 12 - 2011
 05 - 2011
 03 - 2011
 12 - 2010
 07 - 2010
 04 - 2010
 03 - 2010
 01 - 2010
 10 - 2009
 09 - 2009
 08 - 2009
 06 - 2009
 04 - 2009
 02 - 2009
 12 - 2008
 09 - 2008
 05 - 2008
 04 - 2008
 03 - 2008
 02 - 2008
 01 - 2008
 12 - 2007
 11 - 2007
 10 - 2007
 09 - 2007
 07 - 2007
 05 - 2007
 03 - 2007
 02 - 2007
 01 - 2007
 11 - 2006
 10 - 2006
 09 - 2006
 08 - 2006
 07 - 2006
 06 - 2006
 05 - 2006
 04 - 2006
 03 - 2006
 02 - 2006
 01 - 2006
 12 - 2005
 11 - 2005
 09 - 2005
 08 - 2005
 07 - 2005
 06 - 2005
 05 - 2005
 04 - 2005
 02 - 2005
 01 - 2005
 12 - 2004
 11 - 2004
 10 - 2004
 09 - 2004
 08 - 2004
 07 - 2004
 06 - 2004
 05 - 2004
 04 - 2004
 03 - 2004
 02 - 2004
 01 - 2004
 12 - 2003
 11 - 2003
 10 - 2003
 08 - 2003
 07 - 2003
 06 - 2003
 04 - 2003
 03 - 2003
 02 - 2003
 01 - 2003
 12 - 2002
 11 - 2002
 09 - 2002
 08 - 2002
 06 - 2002
 05 - 2002
 04 - 2002
 02 - 2002
 01 - 2002
 11 - 2001
 10 - 2001
 09 - 2001
 08 - 2001
 06 - 2001
 05 - 2001
 03 - 2001
 02 - 2001
 01 - 2001
 10 - 2000
 09 - 2000
 08 - 2000
 07 - 2000
 06 - 2000
 05 - 2000
 03 - 2000
 02 - 2000
 01 - 2000
  -
 VRUZKI
 Linux za nachinaeshti

 
 
© 2011-... Asotsiatsiia "Linuks za bulgari"
© 2007-2010 Linuks za bulgari EOOD
© 1999-2006 Slavej Karadjov
Ako iskate da prepechatate ili tsitirate
informatsiia ot tozi sait prochetete purvo tova
Vunshniia vid e napraven ot webmaker
Code Version: 1.0.8 H (Revision: 23-09-2011)

Èçïúëíåíèåòî îòíå: 1 wallclock secs ( 0.20 usr + 0.04 sys = 0.24 CPU)