Posts with tag Bezpečnost

Šifrované připojení k MySQL serveru s vlastnoručně podepsaným certifikátem

Feb|24 2012

On-line manuál MySQL nám celkem dobře vysvětlí, jaké argumenty použít pro šifrované připojení klienta k serveru. Pojďme se ale podívat na veškeré kroky, které musím jako "správce" serveru provést, tedy včetně generování klíčů a certifikátu, včetně elektronického podpisu.

V první řadě bych chtěl zdůraznit, že následující řádky by neměl brát do úvahy administrátor produkčního serveru. Ten by měl používat výhradně certifikáty podepsané důvěryhodnou certifikační autoritou. Následující způsob lze využít pro testování nebo v případě vzdálené komunikace se serverem, která z nějakého důvodu musí být šifrována.

Generování veřejného a soukromého klíče pro server

V prvním kroku vygenerujeme soukromý klíč pro server:

openssl genrsa -out server.key 1024

V případě potřeby veřejný klíč vygenerujeme ze soukromého následujícím příkazem, nicméně pro účely zabezpečení spojení ho nebudeme potřebovat.

rsa -in server.key -pubout > server.pub

Jak vytvořit a na co slouží Certificate Signing Request

Jedná se o zprávu, která obsahuje informace o majiteli budoucího certifikátu. Ten se odesílá certifikační autoritě, my ho ale použijeme pro vytvoření vlastnoručně podepsaného certifikátu.

openssl req -new -key server.key -out server.csr

Generování certifikátu

Certifikát by měl mít rozumnou délku platnosti, v produkci běžně rok, pro testování můžete zvolit jinou rozumnou dobu. Pro vygenerování samotné použijeme soubor vygenerovaný v minulém kroku a openssl utilita se nás zeptá na několik informací o majiteli certifikátu:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Certifikát můžeme vytvořit i přímo z privátního klíče, bez generování souboru server.csr:

openssl req -new -x509 -key example.com.key -out example.com.cert -days 3650 -subj /CN=example.com

Nyní potřebujeme umístit certifikát do adresáře a to tak, aby byl čitelný uživatelem, pod kterým běží náš MySQL server, typicky uživatel mysql. Pozor si musíme dát i na SELinux kontext (pokud je aktivní), který může zabránit přečtení souborů démonem. Následující sekvenci příkazů můžete brát jako inspiraci:

# mkdir /usr/share/mysql/testcerts
# cp server.{crt,key} /usr/share/mysql/testcerts
# chown -R mysql:mysql /usr/share/mysql/testcerts
# restorecon -r /usr/share/mysql/testcerts

Vygenerovaný certifikát spolu se soukromým klíčem použijeme v konfiguračním souboru démona MySQL:

[mysqld]
ssl-ca=/usr/share/mysql/testcerts/server.crt
ssl-cert=/usr/share/mysql/testcerts/server.crt
ssl-key=/usr/share/mysql/testcerts/server.key

Rychlá a snadná cesta, jak vytvořit certifikát pro testování:

Jednoduchá stránka, jednoduché ovládání. Pouze uvedete doménu (můžete bez problému použít example.com) a aplikace vám vygeneruje dvojici soukromého klíče s vlastnoručně podepsaným certifikátem.

http://www.selfsignedcertificate.com

Zdroje:

http://dev.mysql.com/doc/refman/5.0/en/secure-using-ssl.html
http://www.akadia.com/services/ssh_test_certificate.html
http://www.chriscalender.com/?p=448

Tags: Internet | Programování | Databáze | Bezpečnost | Linux | Fedora



Hrozivá statistika zabezpečení počítačů

Apr|24 2011

Dostal jsem se k tomu čistě náhodou - nejedná se o velmi reprezentativní statistiku, ale pouze o anketu na serveru computerworld.cz. O co jde? Otázka zněla: "Jak máte zabezpečen přístup k počítači?", přičemž na ní do této chvíle odpovědělo 230 čtenářů, podle zaměření portálu předpokádám především technicky založených.

A jaké byly výsledky? Použití čipových karet pro zabezpečení přístupu bylo uvedeno pouze v 1%, což nebylo překvapením. Možná o trochu zajímavější bylo použití biometrických dat v rozsahu 8%, ale vzhledem k rozšíření čtečky otisku prstů ani tohle není příliš nečekané. Co mě ale překvapilo nejvíc, bylo "žádné zabezpečení" u celých 40% a to znovu opakuji - u skupiny uživatelů, kteří jsou vesměs více než počítačově gramotní a často se dokonce jedná o lidi pracující v IT.

Pokud by většina z takových počítačů nebyla připojena k internetu, nebyl by to takový průšvih, nicméně kdo dnes nemá na počítači přístup k internetu?

Můžeme se bavit o kvalitě hesel a jejich nejlepší uložení, ale přitom útočníkům necháváme otevřená vrátka dokořán.. Přijde to jen mě nebo skutečně tolik lidí na zabezpečení naprosto kašle?

Jen pro pořádek - zbytek, tedy zhruba polovina uživatelů uvedla jako způsob svého zabezpečení heslo.

Tags: Internet | Počítače | Bezpečnost | Operační systém



Jak na "remember me" funkci u přihlašování

Feb|20 2011

Pojďme se dnes podívat, jakým způsobem implementovat uživateli oblíbenou funkci "zapamatuj si mé přihlášení", anglicky většinou "remember me".

Nemusím asi zdůrazňovat, že chybná implementace takové funkčnosti může mít nedozírné následky. A protože nechceme znovu vymýšlet kolo, podíváme se na osvědčený způsob, který při správné implementaci nesníží bezpečnost autentizace, která je jedním z kritických faktorů bezpečnosti systému.

Základem bude pochopitelně cookie v prohlížeči, který se bude poprvé generovat při úspěšném přihlášení klasickou metodou (zadání uživatelského jména a hesla). Bude obsahovat pouze uživatelské jméno a token (náhodný hash o dostatečné délce, což je dnes 128bitů - tedy sha1 na velmi náhodné číslo by mělo stačit).

Aplikace si na druhé straně tuto tabulku dvojic uživatelské jméno-hash uchovává. Při příchodu neautentizovaného uživatele jeho prohlížeč zašle místo přihlašovacích údajů uloženou cookie užitelské jméno-hash. Pokud je zaslána cookie, která se v tabulce nachází, autentizace proběhla v pořádku a je obratem vygenerována nová dvojice, přičemž předchozí je invalidována. Tím se zamezí opětovnému použití dvojice útočníkem pomocí útoku typu reply. Dvojice jsou navíc invalidovány i po uplynutí rozumného času, například 8mi týdnů.

Dále si musíme uvědomit, co se stane, když se k takové databázi dostane útočník. Teoreticky by měl přístup ke všem účtům, u kterých uživatel kdykoliv v minulosti použil funkci "remember me", což samozřejmě nesmíme připustit. Stejně jako hesla musíme proto tokeny prohnat ještě jednou hashovací funkcí, potom zneužití údajů nehrozí ani při získání celé databáze.

Zdroje:

http://stackoverflow.com/questions/244882/what-is-the-best-way-to-implement-remember-me-for-a-website

http://jaspan.com/improved_persistent_login_cookie_best_practice

http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

Tags: Programování | Prohlížeče | Sítě | Bezpečnost | Vývoj



Služby OpenID a MojeID - jak to vlastně zjednodušeně funguje

Oct|27 2010

Pojem OpenID může sice být pro mnoho lidí známý, nicméně pravděpodobně budou vědět pouze to, že se jedná o jakýsi způsob přihlašování pod jednotným heslem. Rozhodl jsme se proto v krátkosti a zjednodušeně technologii OpenID vysvětlit.

Začnu trochu netradičně tím, čím OpenID není. Není to služba nebo jeden konkrétní server, který nabízí registraci a který by potom poskytoval informace jiným serverům. Není to ani žádná vizitka, která by byla pod heslem k dispozici.

Jedná se totiž o protokol, tedy specifikaci určitých pravidel. O tom, jak jsou tato pravidla naplňována, se již starají konkrétní služby na konkrétních serverech. Můžeme tedy mluvit o tom, že se jedná o decentralizovaný model, tedy žádný ze serverů nebo žádná ze služeb není primární, všechny poskytovatelé OpenID technologie jsou si rovny.

Nyní malá ukázka, jak to funguje v praxi. V modelu existují tři základní subjekty:

  1. uživatel, který se chce přihlašovat pokud možno na všech stránkách pomocí stejného jména a hesla
  2. provider - server, který uchovává informace o uživatelově účtu (např. Google, Seznam, nyní nově i MojeID)
  3. webová aplikace, která pro zjištění identity uživatelů používá technologii OpenID

Open ID logoUživatel se nejprve musí zaregistrovat u jednoho z providerů - což je již většinou splněno, protože většina uživatelů má již nějaký účet na jednom z mnoha známých serverů. Pokud potom takový uživatel přijde na webovou stránku, která využívá OpenID, uvidí ikonku pro přihlášení pomocí této technologie.

Server požádá daného providera o sdílené tajemství, které je důležité pro zajištění bezpečnosti při práci s osobními údaji. Uživatel posléze zadá přihlašovací údaje, a to pouze providerovi, tedy webová aplikace se k přihlašovacím údajům nikdy nedostane. Provider buďto potvrdí nebo odmítne a případně předá webové aplikaci další informace (kontaktní údaje, telefon apod.) o uživateli, pokud je potřeba. Celá komunikace je velmi zjednodušeně znázorněna na následujícím obrázku.

Schéma komunikace pomocí technologie OpenID (zjednodušeně)

Za zmínku určitě stojí i způsob autentizace u různých providerů. Nejvíce je rozšířená autentizace pomocí uživatelského jména (ze kterého se vytváří OpenID URL, tedy jednoznačná identifikace uživatele a providera) a hesla. Mezi takové patří např. zmíněný Google, MySpace, Seznam apod.

Některé služby ale poskytují i vyšší způsoby zabezpečení, například pomocí certifikátu, odeslání SMS apod. Takový provider (anglicky nazýván jako strong authentication provider) může být využit i pro aplikace využívající vyšší zabezpečení, například internetové bankovnictví. Mezi takové se chce nyní zařadit i služba MojeID, kterou právě spouští organizace CZ.NIC (zodpovědná za správu českých domén).

Služba MojeID je oproti ostatním trochu zvláštní v tom, že podporuje pouze ověřené kontakty a že spojuje účet pro autentizaci podle protokolu OpenID spolu s účtem vedeným u českých domén. Více o ní se dozvíte v článku na Lupě.

Technologie tedy existuje, o její bezpečnosti zatím nepanují žádné zásadní pochybnosti, provideři postupně přibývají, jen vlastníci stránek a webových služeb trochu zaostávají. Neznám mnoho služeb, které by poskytovali komfort autentizace pomocí OpenID, přestože o jejich výhodách asi nemohou být spory.

Tags: Internet | Programování | Počítače | Bezpečnost | Google | Facebook



Jeden důvod proč neodejít z Facebooku

May| 9 2010

Článek Deset důvodů proč odejít z Facebooku na serveru root.cz popisuje, proč je používání Facebooku ohrožením vašich soukromých údajů a že i jeho výkonný ředitel není žádný svatoušek, alespoň co se etického chování týče. O ohrožení osobních údajů už se mluví dávno, zde autor nabízí trochu konkrétnější případy. Ovšem je to skutečně důvod opustit Facebook?

Myslím, že uživatelům na internetu obecně chybí osvěta a nějaký (možná by neškodil i lehce pranoidní) nadhled. Kdyby si každý uvědomil, že co dá jednou na internet (potažmo Facebook), může být kdykoliv v budoucnu použito proti němu, nemusel by být Facebook terčem ochránců práv. Problém je v tom, že uživatelé si o Facebooku a podobných systémech vytvoří nějakou zkreslenou představu, aniž by si kdy přečetli podmínky používání sítě. Ty podmínky mohou potom v praxi být více či méně dodržovány, ovšem základní problém jsou uživatelé.

Nechci je znovu nabádat k pečlivému čtení všech podmínek, to nikdy dělat nebudou. Stačilo by si uvědomit, že cokoliv dám na Facebook, jako bych to prohlásil v Hide Parku všem kolemjdoucím a ti to mohli roznést do celého světa. Pokud chci někomu sdělit něco soukromého, použiji jiný kanál, často bohatě stačí obyčejný e-mail.

Ale zpět k článku, ten sice hovoří o deseti bodech, já tam ale vidím pouze dva, z nichž první je rozepsán do devíti podbodů - "Problém s ochranou soukromí" a "Samotná Facebook aplikace stojí za houby". S prvním dokáži více či méně souhlasit, ale s druhým určitě ne. Pro mě je Facebook sociální sítí dostatečně kvalitní i bez Farmville a Mafie, kde jeho síla není v designu, rychlosti načítání nebo možnosti přizpůsobit si ho ku obrazu svému. Jeho silou je to, že je nejpoužívanější. Plánování výletů, akcí nebo sdílení odkazů a fotek jde potom realizovat na jednom místě a s minimem námahy a to je to, oč tu běží.

Tags: Osobní | Zábava | Internet | Bezpečnost | Facebook



Apel pro důvěřivé spamery

Mar|25 2010

Jak se nenechat napálit na stále se opakující poplašné e-maily.

Známe to všichni - e-maily, které se vytrvale šíří populací a upozorňují na nějaké telefonní číslo, službu, firmu, škodlivost pangasiusů atd. Na konci je většinou žádost o další rozeslání mezi své přátele, což mnoho důvěřivých človíčků rádo udělá. Účel těchto zpráv nechávám stranou, mohou někoho poškodit, mohou jen vystrašit nebo přinést autorovi radost z toho, jak se jeho výtvor šíří mezi lidmi.

HOAX - Telefonat od cisla +420 477 100 111Na co chci poukázat, je to, že mnoho lidí se neobtěžuje zjišťováním, zda se nejedná o falšnou/poplašnou zprávu, tzv. Hoax. Chovají se nezodpovědně a své přátele svým jednáním obtěžují. Na druhou stranu to dělají v nevinné víře, že jim tímto pomáhají, takže zlobit se za ně nemůžeme.

Pro ty, kteří již nechtějí být taháni za nos, je ideální stránka Ho@x.cz, kde jsou nahromaděny všechny známější poplašné zprávy. U každé je většinou vysvětlení, proč jde o falešnou zprávu, takže přijatý e-mail můžeme s klidným srdcem smazat, případně do oběhu, počínaje odesílatelem, vypustit zprávu dementující předchozí e-mail.

Nebuďme naivní ovečky ze stáda a nenechme se stále tahat za nos.

Tags: Osobní | Sítě | Bezpečnost