Ask Your Question
1

Zabezpečenie komunikácie master - slave

asked 2015-01-18 00:13:34 +0100

PeterBocan gravatar image

updated 2015-01-18 01:17:20 +0100

Ahoj, mám takýto problém: mám master (Windows Server VPS) na ktorom bude bežať Web a bude spracovávať dáta, ktoré prijíma od slaveov (20-100 slave serverov na Windows Server VPS). Teraz potrebujem zabezpečiť komunikáciu medzi master-slave tak, aby REST API, ktoré bude "entry-point" pri komunikácii so slaveom bolo blbuvzdorné proti všetkým šprtom, ktorí by sa v tom radi hrabali (Riešil som to aj na Devel.cz). Teda mi napadajú tieto možnosti:

  1. HTTPS
  2. VLAN/VPN?
  3. Iné? (Public-private key, HMAC & spol... )

HTTPS - Vytvoriť si self-signed Root CA a pomocou certifikátov tak zabezpečiť, jak komunikáciu, tak prístup k REST API pomocou certifikátu vydaného mojou CA. (Ale potrebujem k týmto veciam viacej informácii.)

VLAN - Urobiť VLAN a komunikovať po VLAN/VPN (Servery budú fyzicky v jednej budove ak nie v jednej skrini).

Iné - Menej jednoduché riešenie je overovať to na spôsob Amazonu

Nechcem použiť OAuth verifikáciu, príde mi zbytočne komplikovaná na internú komunikáciu medzi masterom a slavevom.

EDIT: Slave servery sú "výpočetné jednotky" na ktorých beží Windows aplikácia, ktorá pracuje s dátami z internetu tj. majú priamy prístup k internetu a verejnú IP adresu. Slave po sekundových intervaloch môže poslať na master dáta. Ku slave serverom by sa zvonku nemal nikto dostať. Master server dostáva dáta zo slavu a následne ich zobrazuje na webe, analyzuje ich a následne niektoré z nich ukladá do MS SQL.

Komunikácia bude na sekundovej báze, tj. každú sekundu môžem očakávať zo všetkých slave serverov niekoľko až niekoľko MB dát. Vôbec neviem, ktoré riešenie zvoliť, aké môžu nastať problémy a kde by mohli nastať problémy. Niekto kto by mi urobil v hlave jasno?

edit retag flag offensive close delete

2 Answers

Sort by » oldest newest most voted
3

answered 2015-01-18 07:47:57 +0100

Josef Kokeš gravatar image

Opravte mě, jestli jsem to pochopil špatně: Máte armádu robotů, kteří na internetu sbírají data a výsledky posílají centrálnímu serveru, který si je nějak uloží a prezentuje je přes webové rozhraní klientům. Takže třeba něco jako vyhledávání Google. A chcete zajistit, aby data do centrálního serveru mohly sypat pouze oprávněné počítače, tj. vaši roboti, a ne každý hacker. Pochopil jsem to správně?

V první řadě by bylo vhodné, abyste zvolil nějaké standardní řešení a nesnažil se vytvořit si bezpečnost sám. Bezpečnost je mimořádně obtížná věc, snadno můžete vzít silné komponenty, pospojovat je podle svého nejlepšího vědomí a svědomí a neúmyslně vytvořit slabý celek (mám za to, že vás teď čeká BI-BEZ, tam si něco takového ukážeme, v MI-KRY další). Jinými slovy, rozhodně nevytvářejte vlastní autentizační protokol, využijte už existující.

Na rozdíl od @ghormoon nepovažuji za vhodnou ani VPS ani VLAN. Sice by jimi šlo dosáhnout toho, co chcete, ale problém je v tom, že tyto technologie jsou primárně určené k propojení sítí a tudíž vám udělají mnohem víc než vlastně potřebujete. Takže to navíc, co vytváří, budete muset zase pracně zablokovat, s rizikem, že jste nepostihl všechno.

Já bych pro ten účel, který popisujete, zvolil SSL nad REST API - buď nativně (serverová i klientská část to přímo podporují), nebo pomocí nástroje jako SSL Tunnel. To bych možná i preferoval - za prvé pak mohu zablokovat normální nešifrované REST na dvou úrovních (vypnout na serveru a ještě zakázat na firewallu), a za druhé se tím dá vyřešit problém s overheadem (po prvotním sestavení už tunel zůstane otevřený pro další komunikaci). Ověření pak probíhá zcela jednoduše podle toho, jestli klientský certifikát vydala nebo nevydala moje soukromá certifikační autorita, přitom já nemusím vůbec nic implementovat, protože všechno už je hotové - já jen do konfiguračních souborů klienta/serveru umístím správný certifikát (samozřejmě každý klient bude mít jiný certifikát, abych je mohl v případě potřeby vyměnit).

edit flag offensive delete publish link more

Comments

Je to presne tak ako hovoríte. Tam je zase otázka jak to nakonfigurovať na Windows Server. Root CA, Subsidiary CA a pod.

PeterBocan ( 2015-01-18 10:49:33 +0100 )edit

Zkuste to s tím STunnelem, co to udělá. Mě to přišlo dost jednoduché.

Josef Kokeš ( 2015-01-18 11:04:57 +0100 )edit
0

answered 2015-01-18 02:06:25 +0100

ghormoon gravatar image

updated 2015-01-18 02:07:38 +0100

sel bych vlan>vpn>https vlan - nejmensi overhead, jestli ti to pujde pres infrastrukturu, ktery muzes verit a udelat si tam vlan, tak asi nejjednodussi reseni vpn - pokud budes mit slave, ke kterym nenatahnes vlanu, tak si otevri vpnku :) https - technicky vzato tohle muzes povesit i nad vlan/vpn, je vsak otazka, jestli to za tu praci stoji, pokud muzes infrastrukture verit a nechces tomu venovat moc casu (kdyz nechces oauth, tak asi setris cas :))

kazdopadne: vlan/vpn - zajistujes si bezpecnou infrastrukturu https/oauth/... - zabezpeceni API jako takovyho optimalne bys mel udelat oboji :) pokud ale muze byt sifrovani problem (vykon) tak jdi jen do vlan

edit flag offensive delete publish link more

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: 2015-01-18 00:13:34 +0100

Seen: 190 times

Last updated: Jan 18 '15