Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > default
červen 07
Děti, skončeme s iluzemi o Office 365

​Doufám, že každému už teď dojde, že jestli si dáte data (a nebo i úplně cokoliv jiného) k někomu jinému, tak si buďte jisti, že to nejsou soukromá data.

Nikdo jiný, než vy sami se vám o vaše věci nepostará lépe:

http://technet.idnes.cz/nsa-fbi-sledovani-prism-usa-soukromi-data-f15-/sw_internet.aspx?c=A130607_065544_hw_monitory_pka

V případě Office 365 se stará NSA. To jsou stovky, samozřejmě neuvěřitelně zodpovědných, agentů. Když teďka líkne prezentace, zítra líknou všechny dokumenty.

Na Office 365 vám na dokumenty navíc čumí milión, špatně placených indů ze supportu, o kterých jste v životě neslyšeli, natož abyste je viděli. Asi bych se nebál ani tak NSA :-)

červen 06
Jeden aktuální záplavový

Rabování hlásí několik prodejen Erotic city. Chycení lumpové shodně tvrdí, že si jen chtěli připravit ejakulační zavazadlo dle pokynů starosty...

červen 04
Jak zjistím jaké mám nebo nemám nainstalované aktualizace

Jak zjistíte seznam aktualizací operačního systému (Windows Update, Microsoft Update), které máte nainstalované? Vélice jednoduše:

gwmi win32_quickfixengineering | ? { $_.HotfixId -eq 'KB980436' }

 

květen 30
Windows 8.1 budou v předváděce už 26.června!

Jak jsem se dočetl právě přímo na Microsoftu (http://blogs.windows.com/windows/b/bloggingwindows/archive/2013/05/14/windows-keeps-getting-better.aspx?loc=zYFCz&prod=zWin8z&tech=zOttechz&prog=zOTprogz&type=zBLz&media=zOTmediaz&country=zUSz), už 26.června vyjde zřejmě customer preview na Windows 8.1 (dříve nazýváno Windows Blue).

Vzhledem k tomu, že to má být jen aktualizace přes Windows Store, tak bych čekal, že se bude jednat tak maximálně o změnu hlavního panelu, kam nám soudruzi vrátí tlačitko Start. Samozřejmě, pexeso zůstane, toho bych se nebál :-)

Takže můžeme se začít sázet. Já tvrdím, že to nová verze Windows nebude (posuzováno podle WINVER prográmku).

květen 30
Nejede džava v IE 10

Po nějakém apdejtu nejede skoro nikde Java v Internet Explorer 10. I když stáhnu nejnovější updejt, tak to stejně nepomůže. Nejde ani ověřit na té jejich testovací stránce: http://java.com/en/download/installed.jsp

​Zkoušel jsem snad tisíc různých návodů z jejich supportu i odjinud. A pak sem to vyřešil sám.

Musíte to komple nejprve odinstalovat, i když máte nejnovější verzi. V Programs and Features si v pravo nahoře napište do filtru Java a prostě to odeberte. Až to je pryč - vyžaduje restart - tak si stáhněte a nainstalujte novou.

A tradá!

 

květen 30
Zamyšlení nad nedávnými DDoS útoky na české webové servery

V dubnu a květnu proběhlo několik DDoS útoků na široce používané webové servery v Česku. Nějaké novinové servery, free maily, mobilní operátory a internetová bankovnictví. Četl jsem o několika vlnách, obvykle to způsobilo někahodinové výpadky, než se s tím správci dokázali nějak porvat. Útoky přicházely údajně z východních, rusky mluvících oblastí.

Zamysleme se, proč to někdo dělal, co ho k tomu vlastně vedlo, a co to vlastně znamenalo. Na první pohled to nejspíš nemělo vůbec smysl. Když si uvědomíte, že napadeno bylo více různých služeb ze stejné kategorie, tzn. různých konkurentů, tak to nejspíš nikomu moc prospět nemohlo. DDoS útoky navíc trvají obvykle jen nějakou krátkou dobu, několik hodin například. Těžko to může znamenat nějaké extrémní dlouhodobé ztráty zákazníků, nebo příjmů ze služeb.

Co je vlastně DDoS? Je to zkratka pro distributed denial of service, tedy útok, při kterém se útočník snaží shodit servery oběti, případně je alespoň přetížit, aby tím poškodil výkon služby, kterou oběť provozuje. Typicky se při zátěži jeho web servery buď restartují, vypnou, nebo jenom nestíhají plnit legitimní požadavky zákazníků v nějakém "rozumném" čase.

Je to tedy něco jiného než útok typu vniknutí (intrusion). Každý by chtěl raději posbírat nějaká data uživatelů, kreditní karty, hesla a podobně, nebo umístit do sítě oběti nějaké trojany a backdoory. Jenže to už není tak jednoduché jako obyčejné zahlcení.

Proti tomu, aby došlo k zahlcení serverů samozřejmě existuje jednoduchá obrana - omezení počtu současných požadavků, nejspíš na nějakém předsunutém firewallu, nebo přímo na web serveru, který by si s tím uměl poradit dříve, než pošle požadavek do aplikace. Tím samozřejmě omezíte i legitimní uživatele, ovšem alespoň si neshodíte servery. Uživatele to ideálně pouze přibrzdí.

Distribuovaný (D - distributed) útok dělají proto, že potřebují vygenerovat velikou zátěž. A to s jedním nebo dvěma stroji nezvládnou. Nehledě na to, že by je brzo někdo vyblokoval na firewallu. Takže zapnou útok v jedné chvíli z velikého počtu počítačů. Samozřejmě to nejsou jejich vlastní. Ale nejspíš nějaké infikované internetové stroje, které mají útočníci pod svou kontrolou. Tomu se říká zombie.

Z toho taky plyne, že info o zdroji DDoS útoku je k ničemu. Možná to trošku ukazuje, které stroje byly asi majoritně infikovány, ale to nemusí mít nic společného s identitiou skutečných útočníků.

Proč by někdo dělal DDoS? Moožná, aby poškodil někomu službu, naštval jeho zákazníky. Takže řekněme konkurence. Jenže v našem případě to bylo napadeno více vzájemně konkurenčích služeb. Nehledě na to, že by si asi někdo všiml, kdyby například seznam nejel, zatímco centrum by valil na plné pecky a ještě by se tím někde chlubili. Takže takovou nekalou konkurenci žádná normální firma dělat nebude.

Jiný důvod? Někdy se pomocí DDoS a jeho různých modifikací podaří najít nějakou díru na skutečný průnik. Ale to je velmi málo pravděpodobné.

Samozřejmě vyvstává otázka, jestli to třeba nemohlo být jenom maskování nějakého skutečného průniku. Pochybuju. Pokud by dělali průnik, proč by na sebe ještě takto upozorňovali. I po DDoS každá rozumná firma udělá nějaký bezpečnostní audit a penetrační testy.

Takže proč? Protože to je reklama. Ukazuje to, jak jsou úžasní, kolik zombíků mají ve své moci, jací jsou to machři.

Na koho tu reklamu cílí? Tak buď jsou to prostě děcka a cílí tu reklamu na tu kozatou spolužačku z vedlejší lavice. Nebo jsou to spíš profesionální hackeři, kteří se tím živí.

Jejich potenciálními zákazníky jsou zájemci o spam, tzn. prodejci fejk léků, fejk hodinek, fejk čehokoliv. A co hůř, zákazníkem jsou zajisté tajné služby různých zemí.

Uvědomte si, jaká to je paráda. Tohle se rychle rozjede, počítejte s tím. Poslat vojáky a napadnout nějakou konkurenční zemi je moc vidět a je to hlavně riskantní, protože to taky můžete kurva prohrát. Ale koupit si od nějakého hackera službu Zombie(tm) a nechat si tam pustit nějaký svůj softík, to nejde vystopovat a ani pořádně prokázat. Kód programů je mezinárodní, milého hackara nakonec potká někde kamion a tradá!

Bojte se. Takhle to chodí a bude to čím dál tím horší. Bezpečnost vlastních sítí je to, co teďka musíte začít chránit!

 

květen 24
Moje prezentace z konference TechEd 2013

Tu jsou

Co by skutečný hacker udělal vaší Active Directory:sevecek-teched2013-ad-hacker.pptxsevecek-teched2013-ad-hacker.pptx

Certifikační autority a certifikační politiky na Windows:sevecek-teched2013-ca-pki.pptxsevecek-teched2013-ca-pki.pptx

Protokoly TLS ve Windows:sevecek-teched2013-tls.pptxsevecek-teched2013-tls.pptx

květen 23
Všichni Izraelci mají SID

právě jsem se dozvěděl, že kdokoliv vstoupí do Izraelských ozbrojených sil dostane účet u nich v ADčku. A oni ty účty nemažou. A v Izraeli jsou v armádě povinně i ženy. Takže má každý z nich svůj vlastní SID až do smrti :-)

Není to paráda?​

květen 16
BATáky nejsou mrtvé, používejte je na spouštění PowerShell naplánovaných úloh

Nezapomínejte na BATáky. I v dnešní době, kdy všichni baží po PowerShellu jsou velmi užitečné. Co když chcete udělat třeba naplánovanou úlohu v jazyce PowerShell. Dobře, založíte si PS1 soubor, jenže ten se nespouští jen tak. Brání vám v tom výchozí nastavení execution policy. To se sice dá prozkoumat a případně změnit pomocí cmdletů Get-ExecutionPolicy a Set-ExecutionPolicy, nebo i přes GPO centrálně (zásada Turn on Script Execution).

Jenže co když se vám to zrovna měnit nechce? Nebo děláte skript, který má běžet i na jiných počítačích, které nemáte ve správě? Nebo byste si rádi udělali nějaký log?

Osobně spouštím PowerShell skripty z BAT souborů. Příkaz ke spuštění PS1 skriptu bez ohledu na execution policy je tento:

powershell -ExecutionPolicy Bypass -File myScript.PS1

To je sice hezké, ale já si to do BAT souboru vylepšuju ještě následovně. Udělám si BAT soubor se stejným názvem jako je PS1 soubor. A budu si generovat i log s výstupem toho PS1 skriptu pomocí přesměrování:

myScript.bat
myScript.log
myScript.ps1

Obsah BAT souboru je potom následující, navíc totálně univerzální:

whoami /all > "%~d0%~p0%~n0.log"
powershell -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" > "%~d0%~p0%~n0.log"

BAT soubor je univerzální, protože speciální úpravy parametrů %~d0%~p0%~n0 nahrazují jeho jméno. %~d0 je písmeno disku, kde je BAT soubor, %~p0 je cesta k adresáři s tím BAT souborem a %~n0 je jméno BAT souboru bez přípony.

Ano, jedná se o cestu k BAT souboru, nikoliv do aktuálního adresáře. Takže je úplně jedno, jestli a jak se ten BAT soubor spouští. Je to vždycky absolutní cesta k jeho zdrojovému souboru.

Naplánovanou úlohu potom spouštím pomocí CMD následovně. Opět mám jistotu, že se to spustí a že to fakt pojede:

cmd /C muScript.bat
květen 15
Co to znemaná MaxPageSize a zda je vůbec potřeba tuto hodnotu měnit

Čas od času se vyskytují otázky ohledně omezení na výsledky vyhledávání v Active Directory. Nejběžnějším problémem je hodnota MaxPageSize., která má výchozí hodnotu 1000. Existuje k tomu množství různých "urban stories", obvykle zmatených nebo polopravdivých.

Obvyklý požadavek od programátorů nebo skripterů zní - zvýšit. Chtěl bych tu vysvětlit, co to ve skutečnosti znamená. Abyste rozuměli tomu, že tuhle hodnotu není obvykle (neříkám že nikdy) potřeba zvyšovat. Místo toho je lepší změnit styl programování.

Vyhledávání v LDAP Active Directory

Ve Windows existuje knihovna na přístup do LDAP. Knihovna se jmenuje ADSI (Active Directory Services Interface). Používají ji všechny Windows aplikace, konzole Active Directory <Cokoliv>, PowerShell, VBScript i .NET Framework. a jeho namespace System.DirectoryServices. Takže se budeme zabývat jejími nastaveními.

Ale tahle vlastnost je obecnou LDAP vlastností (nejen) Active Directory. Takže ve skutečnosti není důležité, jestli používáte Windows implementaci klienta ve formě ADSI, nebo cokoliv jiného.

Příklad vyhledávání v jazyce PowerShell (vyhledá to všechny uživatele v organizační jednotce OU=Company):

$srch = [ADSISearcher] '(&(objectClass=user)(!objectClass=computer))'
$srch.SearchRoot = 'LDAP://OU=Company,DC=gopas,DC=virtual'
$srch.SearchScope = 'Subtree'
$srch.FindAll()

Poznámka: předchozí vyhledávání používá používá ADSISearcher type accelerator pro třídu System.DirectoryServices.DirectorySearcher.

Stránkované (paged) a nestránkované (nonpaged) vyhledávání (search)

Co nás ale zajímá je, jak se takový vyhledávací požadavek komunikuje se serverem. V předchozím příkladu jsem použil výchozí, nestránkované hledání(nonpaged search). To znamená v principu, že zašlu na DC jeden paket s požadavkem - s těmi vyhledávacími parametry. A dostanete "jeden paket" s výsledky vyhledávání.

Píšu tady "jeden paket" zaměrně v úvozovkách. Samozřejmě jich asi dostanete více, protože těch výsledků bude více a nevejdou se do jednoho TCP paketu. Ale bude to jen jeden paket ve směru do DC a několik paketů ve směru z DC ke klientovi. To podstatné zde je, že to je tedy mnohdy jen na jeden round-trip (dobře, nejspíš více roud tripů, ale jde o velikost TCP window, round-trip-time RTT a různé další optimalizace TCP stacku).

Samozřejmě to taky žere více RAM na DC i na klientovi. Na DC se celý výsledek musí připravit do paměti, potom se celý musí naložit do TCP a odeslat. Na klientovi se to musí zase celé přijmout do paměti. A přitom to stejně zpracováváte po jednom, ne?

Z tohoto důvodu existuje limit zvaný MaxPageSize. Tedy maximální počet výsledků, které je DC ochotné odeslat v jednom balíčku. Čistě proto, abyste ho nepřetěžovali debilními dotazy na všechny objekty. Výchozí je 1000. Informaci dostanete například v článku How to view and set LDAP policy in Active Directory by using Ntdsutil.exe.

Jestliže výsledek vyhledávání obsahuje více objektů, než MaxPageSize, dostanete jich jen MaxPageSize. Takže žádný error, prostě jich jenom dostanete méně.

V tom článku se dá najít info i o tom, že existuje podobný limit i pro počet hodnot v multihodnotových atributech (multivalue attribute) - MaxValRange. Stejný princip. Jestliže je v něčem více jak 1000 (Windows 2000), nebo 1500 (Windows 2003), nebo 5000 (Windows 2008) hodnot, tak se prostě nepřenesou.

Jak vyřešit problém MaxPageSize?

Logický nápad je zvýšit hodnotu MaxPageSize. Problém je, že to vyžaduje modifikaci configuration oddílu (configuration partition) v AD. To by tak nevadilo. Představte si, že programujete skript, nebo aplikaci, pro obecné prostředí. Nemůžete přece chtít po adminech, aby to všude nastavovali. Nemůžete to ani nastavit sami, protože to je docela zásah. Proč byste to také zvyšovali, ohrozíte výkon DCček, jen kvůli vašemu skriptíku.

Stačí upravit program. Stačí použít stránkované hledání (paged search) - jediná změna je políčko PageSize:

$srch = [ADSISearcher] '(&(objectClass=user)(!objectClass=computer))'
$srch.SearchRoot = 'LDAP://OU=Company,DC=gopas,DC=virtual'
$srch.SearchScope = 'Subtree'
$srch.PageSize = 1
$srch.FindAll()

Co to znamená, ten paged search? Řeknete, že chcete výsledky dostávat od DC po kouskách. Klient zašle požadavek ("jeden" TCP paket) a dostane jen několik výsledků ("na jeden" TCP paket). Až chce další výsledky, pošle další požadavek a dostane zase jich jen několik. V mém případě mám PageSize = 1, což znamená, že dostávám výsledky po jednom.

API je uděláno tak, že programátora to vůbec nezajímá. V obou případech, ať používáte nonpaged search, nebo paged search, je vám to úplně jedno. Jediná změna v programu je ta hodnota PageSize.

A je to?

Proč to teda není výchozí? Proč se výsledky nepřenáší po jednom by default?

To je kvůli rychlosti. Bavili jsme se tu o round tripu. Tedy o tom, že musíte zaslat jeden paket a dostanete zpátky celý výsledek (nonpaged search). V případě paged search, posíláte vždycky požadavky po jednom, čekáte na výsledek a zase posíláte další požadavek a tak pořád dokola.

To může ale celkem dost trvat. Příklad?

Řekněme, že výsledkem vyhledávání je 60 000 objektů. Řekněme, že paket tam a zpět mezi klientem a DC cestuje 2 ms na LAN. (tzv. round trip time RTT je tedy 2 ms). Řekněme, že objem celého přenosu je 20 MB. A vaše síť má rychlost 1 Gbps. Zanedbáme čas zpracování na DC a dodatečné RTT, které jsou potřeba pro TCP acknowledgement podle velikosti TCP window.

  1. použijeme nonpaged search. Zašlu jeden požadavek a za 2 ms začnu dostávat odpověď velkou 20 MB. Přenos 20 MB dat trvá 160 ms. Celá odpověď je u mě za 162 ms.
  2. použijeme paged search při PageSize = 1. Musím poslat 60 000 požadavků a dostat tedy 60 000 odpovědí. Každé kolečko trvá 2 ms. Celkem, i při zanedbání času potřebného na přenos 20+ MB, to bude trvat alespoň 120 sekund. Bude to ještě více, protože přenášíte data, při režijích tedy samozřejmě více, než těch původních 20 MB.
  3. když zvětšíte velikost PageSize, ušetříte čas poměrně. Ale zase se musíte vejít do limitu pro dané ADčko a jeho aktuální hodnotu MaxPageSize.

Paged search je tedy pomalejší. Výrazně. Ovšem při menší paměťové náročnosti, zátěži procesoru DC i klienta a celkově hladším průběhu. Bez limitů.

Závěr

Jestliže programujete něco, co stahuje z ADčka 60 000 objektů, tak je vám jedno, jestli to bude trvat v řádu sekund, nebo minut. Obvykle.

květen 13
Návod na Indické restaurace

Dostal jsem od známého parádního průvodce na indické restaurace v Praze. Tak ho tu uvádím anonymně, ovšem v plném znění. A děkuji!!!

 

Zdravim.
Cetl jsem, ze jste taky fanousek indicke kuchyne…
Takze posilam nekolik typu.

Takze co se tyka Prahy, tak urcite se obloukem vyhnete retezci Masala.
Tam to jidlo je naprosto hrozne.
Nic moc vari take v Indian Jewel.

Jednoznacne mohu doporucit Golden Tikka, predevsim tu na I.P. Pavlova.
Skvela obsluha, vyborne jidlo. (http://www.tikka.cz/katerinska)

No a jeste lepe vari v Curry House, na Palmovce. Je to rodinny podnik.
Je to jedna z mala restauraci kde krome Vindaloo delaji take Phall
Priznam se ze Vidaloo si davam jen malokdy. Vetsinou Madras nebo Rogon Josh, pripadne Jailfrasie.
http://www.curryhouse.cz/cz/menu/menu.htm

Jinak jsem zkousel madras podle receptu viz. Nize. A musim se pochvalit, ze se mi poved. Teda udelal jsme ho vic palivy nez je obvykle.
Teda rozdil oproti receptu je ten, ze jsem pouzil uz hotove Madras koreni. (http://www.galaxyhalalfood.cz/produkty.php?kategorie=1057)

http://blog.iddqd.cz/2011/10/kureci-madras-pokus-prvni/

květen 12
Konference TechEd 2013 je už za 9 dnů

Takže neváhejte a příhlašte se na www.teched.cz. Vzdělání je vždy pro vaše vlastní dobro a díky tomu i pro dobro ostatních, jak nás učí Adam Smith! Nehledě na to, že taková jarní dovolená pro ajťáky může přijít vhod :-)



květen 08
A ještě toto úžasné čtení na dnešní noc :-)
květen 08
Přihlašování čipovými kartami - úvod do problematiky

Nejprve troška motivace: hesla jsou nebezpečná (o jejich nekvalitě si přečtěte tu). Jsou jednoduchá a jednoduše je zjistíte, například pomocí nějakého hardware keyloggeru. Nebezpečnost hesel osobně pociťuji jako jeden z hlavních problémů (ne)bezpečnosti současných firemních počítačových sítí.

Rozhodl jsem se, že se začnu více věnovat čipovým kartám (smart card) a přihlašování (smart card logon) s nimi do Windows. Nebojte se jich. S Windows 7 a Windows 8 máte parádní uživatelský komfort, plnou integraci čipových karet a podporu jejich ovladačů přímo v operačním systému. Přináší nevídanou bezpečnost. Rychle si na ně zvyknete a přihlašování s nimi bude dokonce mnohem pohodlnější.

Karty se dají koupit vcelku levně, za přihlašovací vybavení pro jednoho člověka zaplatíte cca 1000,- Kč. Sice to vypadá na první pohled jako pěkná pálka, ale když si uvědomíte, kolik stojí jeden počítač. Chápu, že najednou to nakoupit není žádná sranda, ale zase ta bezpečnost je neporovnatelná.

Zde se nejprve budeme věnovat jakémusi filosofickému úvodu a pochopení bezpečnostních důvodů pro čipové karty. Následovat budou nějaké screenshoty z uživatelského prostředí, abyste si uvědomili na jednoduchých obrázcích, jak vypadá jejich integrace. Pokračovat budeme přes implementační návody a samozřejmě doplníme i něco o řešení potíží. Přehled všech článků je zde:

  • Přihlašování čipovými kartami - úvod do problematiky (tento článek)
  • Uživatelské prostředí a práce s čipovými kartami z pohledu uživatele
  • Instalace certifikační autority kvůli přihlašování čipovými kartami do Windows
  • Kontrola zneplatnění (revocation) certifikátů a zprovoznění optimální CRL distribuce

Už jsem tu dokonce jednou o čipových kartách ve Windows psal, v těchto článcích to zřejmě znovu poněkud zopakuji. Budeme se věnovat českým čipovým kartám MonetPlus ProId, ale vzhledem k obecnosti podpory a technologie budou články platné (a mnohdy to budu porovnávat) i pro jiné karty, jako je například Gemalto IDPrime (dříve se to jmenovalo .NETv2 card).

Co nás bude zajímat technicky, bude technologie smart card logon v prostředí Active Directory domény postavený na Kerberos PKINIT pre-authentication. Bude se tedy jedna o čistě doménové prostředí, přihlašování pouze doménových uživatelů na doménové stanice a přes síť na doménové servery.

Budem se bavit o přihlašování pomocí certifikátů a k nim asociovaným privátním klíčům, které jsou uloženy právě na čipových kartách. Karty neobsahují uživatelská hesla. Tajná informace je reprezentována právě privátním klíčem, který nikdy neopouští kartu a karta je tak nekopírovatelná. Karty také nijak na heslech nezávisí, jak se dozvíte v dolní části.

Uvažovat budeme jak čipové karty, tak i bezpečnostní tokeny. Jaké to má rozdíly hned vysvětlíme, přímo v následující kapitole. Podstatné je, že musí podporovat Kerberos PKINIT, potom je nám to už úplně jedno.

Jaký je rozdíl mezi čipovou kartou a bezpečnostním tokenem?

Prakticky žádný. Tedy alespoň z našeho pohledu. O rozdílech a na jejich obrázky se můžete podívat na můj předchozí článeček. V podstatě jde jen o formu. Z toho důvodu budu nadále pod termínem "čipová karta" uvažovat oboje - tedy jak skutečnou čipovou kartu, tak i token.

PC/SC čipová karta je karta, která vypadá podobně jako bankovní karta - ty jsou taky už dnes obvykle čipové, a také PC/SC :-) Obsahuje hlavně kryptografický čip (CPU), k němu operační systém v nějaké formě ROM a malou, ale zato bezpečnou paměť na privátní klíče. K tomu potřebujete PC/SC čtečku (smart card reader).

Čtečky jsou obvykle krabičky s USB kabelem, mohou být integrovány do klávesnice, nebo se vyskytují ve formě PCIMCI, nebo PCIMCI Express karet. V každém případě jsou to dva samostatné kusy hardware. Každý klidně od jiného výrobce (i když čtečky vyrábí hlavně Gemalto).

Když jsou to dva kusy hardware, budete potřebovat vždy dva ovladače do operačního systému. Detaily jindy.

To stejné vlastně platí pro tak zvané bezpečnostní tokeny (security token). Dělají se ve formě monolitických zalisovaných krabiček ve stylu flash-disků. Nebo právě výměnných tokenů, do kterých se dá jednou, nebo i vícekrát zastrčit a vyměnit SIM formát čipové karty. A z toho je to rovnou patrné. Token není nic jiného, než prostě čtečka a karta integrovaná do jedné krabičky.

Takže se tokeny lépe přenáší. I když k nim stejně potřebujete stále dva ovladače do operačního systému - tedy ovladač čtečky plus ovladač čipu karty. Vzhledem k tomu, že čip čtečky a čip karty bude mnohdy úplně stejný, jako u separátní "velké" čipové karty a oddělené čtečky, je to úplně totéž z pohledu funkce, instalace, řešení potíží apod.

Rozdíl je v možnostech. Kartu si můžete nechat potisknout, můžete si i koupit za pár desítek tisíc :-) tiskárnu a potiskovat si to sami, dát si tam fotku apod. Do karty vám výrobce může taky zalisovat RFID anténku, takže se pak karta dá používat současně pro přístupové systémy, nebo jako placení na veřejnějších tiskárnách ve školách apod.

Tohle s tokenem neuděláte. Má to menší plochu na potisk, vejde se vám tak tak maximálně nějaké identifikační čislo, nebo jméno. RFID anténka se dá dávat jen do speciálních tvarů, které se moc nedělají. Na druhé straně se jednoduše přenáší, mají obvykle očko k přichycení na pásku okolo krku, nebo na klíče. Takže to je na chuti každého soudruha, co si vybere.

Pro nás to znamená, že budeme hovořit o PC/SC kartách a čtečkách, v libovolné formě. Budu tomu říkat vždycky čipová karta, ale myslím, jak jsem už uvedl, i tokeny.

Co rozhodně nemyslím jsou různé jiné druhy tokenů a flash-disků. Existují třeba RSA SecureID. To je taky ve formě tokenu. Ale tyhle tokeny mají vlastní software, který se integruje do přihlašovacího dialogu, nepoužívá k přihlašování certifikáty, ale normální uživatelská hesla a neintegruje s Kerberos PKINIT. Takže nás to nezajímá. Stejně jako nás nezajímají čtečky otisků prstů, jak se vyjádříme v další kapitolce.

Příklady čipových kater, které se integrují s Kerberos PKINIT a jsou tedy nativně podporovány v Active Directory prostředí a ve Windows 7, Windows 8 a se servery Windows 2003, 2008 a 2012 jsou MonetPlus ProID, Gemalto IDPrime (dříve .NET card), nebo třeba Infineon Sicrypt.

I cena bude přibližně stejná v obou případech - čipová karta plus čtečka, nebo bezpčnostní token (plus karta uvnitř). V obou případech zaplatíte za jednoho člověka plus/mínus 1000,- Kč.

Proč karty a jaké to má bezpečnostní vlastnosti?

Karty obsahují kryptografický čip, svůj vlastní operační systém a bezpečnou paměť na privátní klíče. To znamená, že mohou veškeré kryptogradické operace provádět mimo operační systém počítače, ke kterému jsou připojeny. Jestliže je v operačním systému například virus, má jen velmi omezené možnosti, jak se dostat k obsahu karty a jak jej zneužít.

Přístup ke službám operačního systému karty je umožněn pouze při zadáni PIN. Bez jeho znalosti je vám karta na nic. Bez PINu nemůžete ani říct jejímu operačnímu systému, aby vám vydal privátní klíče. Karta tedy nejde kopírovat bez znalosti PINu. Co je ještě lepší, karta nejde obvykle kopírovat ani při znalosti PINu. Operační systém karty prostě privátní klíč nevydá ani pokud zadáte PIN.

Samozřejmě, karty mají obvykle ještě jeden, jakýsi správcovský (administrator, master, super-user) PIN, který je silnější. Správci s jeho znalostí mohou obvykle libovolně modifikovat obsah karty, exportovat ho, případně mazat a zase importovat jiné klíče a certifikáty. Master PIN ale zná jenom správce. To se koncovým uživatelům neříká.

Obyčejný PIN ani není obvykle příliš velký. Stačí čtyři až pět znaků - karty obvykle umožňují alfanumerický PIN, i když lidé mnohdy používají jen čísla, což se pohodlně zadává na numerické klávesnici. Samozřejmě ho může kolega vidět, nebo to jde zachytit nějakým keyloggerem. Ale to útočníkovi nepomůže. Sice možná zná PIN, ale bez karty se stejně nepřihlásí.

I když mu ji necháte chvilku na stole, až tak to nevadí. Možná zná PIN a může se v tu chvilku přihlásit. Ale než přijdete, musí vám kartu vrátit. Okopírovat si ji nemůže. Pokud by vám ji ukradl, poznali byset to vcelku rychle a mohli adekvátně reagovat. To s obyčejným heslem nejde, že? Jestliže někdo zná vaše heslo, může si ho používat, aniž byste to vůběc zaznamenali.

Tímhle spůsobem zajišťují karty multifaktorové ověřování. Musíte MÍT kartu a ZNÁT k ní i PIN. Jedno nejde z druhého získat a bez obou se neobejdete. Takže k tomu, že karta obsahuje super bezpečný privátní klíč, místo slabého lidského hesla je to navíc dvoufaktorové.

Tím se dostáváme k tomu klíči. Ještě i tohle je lepší než heslo. Vaším, byť možná relativně dlouhým 10+ znaků heslem, se šifrují síťové komunikace. Pořád je to slabé. Když používáte kartu k přihlašování, síťové komunikace se šifrují superkomplexním (obvyklý RSA privátní klíč o délce 2048 bitů = 256 bytů), náhodným, priváním klíčem, který určitě nejde najít v žádném slovníku.

K tomu můžete mít v pohodě čtyřmístný PIN. Jenom zastrčíte kartu a naklepnete PIN a jste přihlášeni. A přitom to je nekonečněkrát bezpečnější než to vaše "trapné" čtrnáctiznakové heslo, které zadáváte pokaždé třikrát, než se trefíte. Jednodušší, příjemné a přitom mooc bezpečnější. Proč myslíte, že to všechny banky a vojáci používají?

Jen pro zajímavost, existují jakési náhražky čipových karet, které jsou levnější, ve formě normálních flash disků a obslužného software. Tak tímhle se tu zabývat nebudeme. Na flash-disku jsou privátní klíče (nebo spíše rovnou přihlašovací heslo) zašifrováný PINem. Tohle výrobce vydává za náhradu čipové karty. Nesmysl. Flashka se dá jednoduše zkopírovat. Karta má ochranu na počet špatných pokusů na PIN. Jestli ale tu flashku někde necháte, kdokoliv si ji během pár sekund zkopíruje a může doma v klidu, offline, zkoušet váš PIN. Vzhledem k tomu, že to svádí mít ho krátký, je myslím jasné, jak je to bezpečné.

Ještě poznámka ke té kryptografické paměti, co je na kartách. To taky není jen tak jednoduchá flashka. Je to bezpečnější kryptografická paměť, která neukládá tajné informace jen tak, byte a bytem. Je to v ní chaoticky rozházeno, například. Nejde to jen tak vyloupnout a připojit na kabely a vyčíst si klíče. Musíte tomu rozumět, vědět a umět hardwarově. Základní princip říká - dobře, vykrást hardwarově ano (tomu nelze zabránit), ale musí to znamenat složitou, časově docela náročnou, a hlavně destrukci originální karty. A taková konstrukce je drahá. Takže karty obsahují obvykle bezpečnou pamět na 4, 8 nebo třeba až 16 privátních klíčů (vemte si, kolik to je asi tak kB, žádné MB).

Co takhle čtečky otisků prstů?

Fuj. To je hračka pro domácí uživatele. Nejprve se zamysleme. Otisky prstů necháváte kudy chodíte. Takže se dají duplikovat. Jak asi taková čtečka funguje? To co máte na notebooku, to je jenom trapný scanner obrázku. Možná existují profesionálnější čtečky, ale co ty tak asi dělají? Mohou kontrolovat teplotu (zahřeju silikon), odpor a kapacitu (natřu správným gelem), měřit tep (nasadím na prst) apod. Klidně se podívejte jak MythBusteři testovali opravdu profesionální čtečku, video určitě najdete - je to MythBusters, season 2006, episode 59.

Pro nás je však hlavním problémem jejich technika. Ačkoliv mají čtečky od Windows 7 nativní podporu ovladačů a integrace do přihlašovací obrazovky Windows, nemají nativní Kerberos a Active Directory podporu. To znamená, že čtečka si prostě jenom pamatuje heslo. Přejedete prstem a ona si někde ze souboru vyndá vaše plné!! heslo a hodí ho do Windows, aby vás přihlásila.

Takže čtečky ukládají vaše plná hesla u vás na disku. Na stanici! Jestliže tu stanici nemáte zašifrovánu BitLockerem, stačí vzít bootovací DVD nebo USB s Windows 7 a můžete si běhat po disku jak se vám zlíbí. Takže to je skoro na nic.

Ne úplně. Zase tak to nechci shazovat. Co je pořád trošku lepší i na čtečkách prstů je fakt, že vám to dovoluje mít opravdu solidní heslo a přitom ho nemuset zadávat. Stačí, když přejedete prstem. A přitom alespoň síťové komunikace jsou v bezpečí. Takže horší než slabé heslo to určitě není. Ale není to taky nic, co bych musel prosazovat.

Zase jen pro zajímavost, RSA SecureID to dělá stejně. Pamatuje si uživatelská hesla. Jenže oni je mají na centrálním serveru a ne na stanicích. Synchronizují se automaticky z Active Directory, takže změnit si je můžete normálně. Nebo vám je může správce v pohdoě vyresetovat. Což v případě čtečky otisků prstů neplatí.

V připadě čipových karet nás heslo nezajímá dokonce vůbec.

Jak je to s hesly, pokud se přihlašuji čipovou kartou?

Na čipovou kartu vám vydává certifikát veřejného klíče vaše vnitřní certifikační autorita a karta obsahuje také privátní klíč. Privátním klíčem se ověřujete, podepisujete s ním přihlašovací komunikaci Kerberos PKINIT. Takže to s heslem nemá nic společného.

Hesla si udržuje Active Directory v databázi, úplně nezávisle na vašich certifikátech. Funguje to tak, že certifikáty jsou ve skutečnosti k uživatelským účtům vlastně jaksi z boku připojeny. Důležité je, že hesla jsou v AD vždycky, i když je uživatel ani nezná, protože používá jen kartu. To je dobro si uvědomit, protože ona se ve skutčnosti čas od času použijí - třeba NTLM používá jen heslo. Je to automatické, uživatel ho nemusí vůbec znát, ale je to pořád to heslo, které je uloženo v AD. Když používáte karty, je dobré hesla nějak randomizovat.

Dobře, ale když se přihlašujete kartou (a tedy jejím privátním klíčem), nemusíte znát svoje heslo. Admin vám ho může resetovat každých pět sekund a nic se neděje. Co když vám heslo vyprší? Nic. Co když se vám heslo zamkne po několika špatných pokusech o jeho použití? Taky nic. Dobře, občas byste i tak mohli zažít nějaké problémy s NTLM, které právě to heslo používá. Ale o tom až později.

Samozřejmě jsou stavy účtu, při kterých se nepřihlásíte ani kartou - zakázaný účet, nebo třeba vypršelý účet (upozorňuju na rozdíl dvou termínů - vypršelý účet a vypršelé heslo - to jsou dvě různé věci).

Na druhé straně, certifikační autorita (CA) může certifikát zneplatnit. Potom se jím už nepřihlásíte, samozřejmě. Ale naopak se přihlásíte heslem, pokud byste ho znali.

Je také možné přihlásit se třeba heslem, zamknout plochu a pak ji znovu odemknout čipovou kartou (to na Windows XP a Windows 2003 nešlo). Takže to jde i kombinovat, pokud to ovšem správce sítě povolí. Nejspíš to moc nechceme. Když karty, tak karty!

Samozřejmě to funguje normálně z keše. Jestliže jste se už jednou kartou přihlásili, přihlásíte se i offline, s vytaženým kabelem. Samozřejmě maximálně po dobu platnosti vašeho certifikátu, ale s tím se musí počítat dopředu.

Takže s čím budeme pracovat a co budeme potřebovat?

V dalších článcích budeme pracovat s Active Directory (AD) doménovým prostředím na domain functional level (DFL) alespoň Windows 2000. Budeme používat jen doménové účty, protože pro lokální to nefunguje (zde poznámečka - jedna z metod, jak eliminovat úplně lokální účty). Budeme pracovat se stanicemi, které jsou tedy členem domény a jsou verze alespoň Windows 2000.

No dobrá, většinou budeme řešit Windows 7 a Windows 8 stanice, protože na starších nebylo tak pohodlné a kompletní GUI. Ale občas se zmíníme o možnostech Windows XP.

Co se týče serverového síťového prostředít, tak opět jen doménové servery. V jejich případě ale v pohodě i Windows 2000. To je jedno. Ze sítě žádné GUI nepotřebujete a Kerberos nebo NTLM funguje pořád stejně.

K vydávání certifikátů budeme mít certifikační autoritu (CA) postavenou alespoň na Windows 2008 a jejich AD CS (Active Directory Certificate Services). Bude nám stači úplně jednoduchá, jednoúrovňová hierachie - tedy žádná hierarchie :-) Prostě, budeme vydávat certifikáty přímo z kořenové (root) autority. S Windows 2008 to není ani nebezpečné, ani nijak omezující.

A nakonec karty. Popíšeme to celé na českých Monet+ ProID a porovnáme je s Gemalto IDPrime (dříve .NETv2 card, jenom se to přejmenovalo), pokud tedy bude co porovnávat. Tyto technologie jsou plně podporované a integrované, takže se to liší jen cenou a čas od času v nějakém detailu - jakože Monet se s vámi bude osobně bavit, zatímco Gemalto na vás vrchnostensky kašle :-) 

1 - 14Next
 

 Twitter

 

Cannot retrieve the URL specified in the XML Link property. For more assistance, contact your site administrator.

 

 O autorovi

 
About this blog
Toto je osobní blog Ondřeje Ševečka. Obsah je poněkud bezpečnostně, ale také hlavně Microsoft-centrický. Pokud jejich produkty z nějakého důvodu nemáte rádi, raději to čtěte velmi opatrně. Ne že bych cizí software nějak nenáviděl (no dobrá, kromě cizích antivirových programů), ale pořád tvrdím, že se softwarem je to stejné, jako s auty - taky si do toho svého nebudete montovat sedačky z Rolls Royce i kdyby byly pozlacené.
 

 Nějaké moje certifikace

 
Microsoft Certified Master: Directory ServicesMicrosoft Most Valuable Professional
EC-Council Certified Ethical Hacker v7

Microsoft Certified Systems Engineer: Security
Microsoft Certified Trainer