Bezpečnostní aspekty systému Calom

Úvod

Pro bezpečné provozování systému Calom je potřeba udělat již při instalaci několik kroků - nastavit práva, zabezpečit komunikaci a nastavit firewall.
Tento dokument popíše strukturu komunikace mezi komponentami, kterou je třeba chránit, dále požadavky systému, aby mu bylo možné přiřadit minimální práva pro provoz.

Komunikace komponent

Jednotlivé komponenty spolu komunikují pomocí síťových protokolů nešifrovanými kanály.
Pro zabezpečení informací před únikem nebo před pozměněním je proto nutné tyto kanály zabezpečit.
Jedna možnost je rozmístit komponenty tak, aby byly na stejném počítači - tím odpadne možnost komunikaci přečíst nebo narušit. Další možností je vytvořit bezpečný šifrovaný SSL tunel (viz. níže).

Poznámky ke komunikace mezi:
Klient Server Poznámky
Calom klient (calom, WebCalom, WebCalom scheduler, ...) Calom server Základní komunikace s Calom serverem.
Klient se serveru autentizuje, server klientovi ne. Proto je nutné, aby se klient obracel na správný server a aby nemohlo dojít k nežádoucímu spojení na jiný server.
K přenosu hesla i všech dat dochází v nezabezpečeném kanálu, je nutné kanál ochránit, např. pomocí SSL tunnelingu.
Další možností je provozovat Calom klient (např. WebCalom) na stejném stroji jako Calom server. Tím odpadá nutnost šifrovat kanál.
Calom server Externí dirdb resolver
(od verze 2.3.0)
Spojení opět probíhá nezabezpečeným kanálem, Calom server navazuje spojení na stroj, který mu nastaví Calom klient nebo který je nastaven v konfiguračním souboru. Je nutné chránit před přesměrováním na jiný stroj/port.
V tomto případě není možné využít SSL tunneling, protože je spojení navazováno dynamicky, na předem neznámý přidělený port.
Lze tedy uplatnit pouze přesun na stejný počítač jako Calom server. Protože je resolver často spouštěn WebCalomem, měl by i WebCalom, pokud používá externi resolver, běžet na stejném stroji jako Calom server.
WebCalom Externí dirdb resolver
(od verze 2.3.0)
WebCalom většinou externí resolver spouští, proto komunikují přes zabezpečenou rouru.
Z předchozího bodu vyplývá, že pokud bude externí resolver používán, měl by i WebCalom běžet na stejném stroji jako Calom server.
Apache server WebCalom WebCalom může běžet jako standalone aplikace a může komunikovat s HTTP klientem přímo, nebo může být spouštěn jako CGI-bin program Apache serverem. V takovém případě spolu server a WebCalom komunikují přes zabezpečenou rouru. Je však nutné dbát na standardní zabezpečení CGI-bin programů.
WWW uživatel WebCalom Spojení mezi WWW uživatelem a WebCalomem je realizováno buď přímo (standalone WebCalom) nebo prostřednictvím serveru Apache.
Ve standardním nastavení (používá se Apache) je nutné zabezpečit komunikaci nastavením Apache serveru, aby používal SSL nebo TLS spojení.
WebCalom WebCalom scheduler WebCalom a WebCalom scheduler vždy běží na stejném stroji. WebCalom scheduler naslouchá požadavkům z WebCalomu, je však třeba chránit jej před spojením z jiného programu než z WebCalomu, např. pomocí firewallu.

Instalace systému

Calom server a konzolový klient se implicitně instalují do adresáře /usr/lib/calom, WebCalom do /usr/lib/cgi-bin/calom. Obě instalace musi být provedeny pod uživatelem calom a skupinou calom.
Je možné spouštět Calom server pod uživatelem root, protože se po přemístění do adresáře data uživatele calom zbaví práv superuživatele.

Adresáře s instalací Calom serveru a WebCalomu by měly být nepřístupné pro čtení ostatními uživateli, protože obsahují citlivá data uživatelů.

Pro správné fungování potřebuje Calom server:

  1. právo na zápis a čtení v adresáři ./data
    (pokud je spuštěn jako root, tak ~calom/data) a všech podadresářích.
  2. Právo naslouchat na portu 7777 (není-li specifikován jiný port).
  3. Právo spojit se na Externí dirdb resolver.
  4. Právo zápisu do adresáře /tmp.
  5. Právo připojit se pomocí dlopen() ke knihovně FreeTDS (pokud je používán CCM gatherer).
Pro správné fungování potřebuje WebCalom:
  1. Právo čtení z adresáře <cgi-bin-root>/calom (dále jen <webcalom-path>) a všech podadresářů.
  2. Právo na zápis do adresářů (v <webcalom-path>):
  3. Právo spouštět SUID programy z adresáře helpers.
  4. Právo spojit se na Calom server (na portu 7777).
  5. Právo spojit se na WebCalom scheduler (na portech 4729-4739).
  6. Pokud je spouštěn jako CGI-BIN program serverem Apache, tak musí být schopen pracovat pod uživatelem calom. Tj. v konfiguraci Apache musí být povoleno spouštění SUID programů.
Pro správné fungování potřebuje WebCalom scheduler:
  1. Právo čtení z adresáře <webcalom-path> a jeho podadresářů (stačí ty, které potřebuje pro zápis + config).
  2. Právo na zápis do adresářů (v <webcalom-path>):
  3. Právo spojit se na Calom server (na portu 7777).
  4. Právo naslouchat na portech 4729-4739 (najde si první volný port).
Pro správné fungování potřebuje LDAP frontend (externí dirdb resolver):
  1. Právo čtení z adresáře <webcalom-path> a jeho podadresářů (stačí config a helpers).
  2. Právo spojit se na cílový server.
  3. Právo naslouchat na libovolném portu.

SSL spojení

Pro zabezpečení síťového kanálu mezi dvěma počítači v módu client-server lze použít SSL tunneling. Tím vytvoříte bezpečný kanál, který se dá použít pro komunikaci.
Lze použít nástroje z balíku OpenSSH nebo např:

Systémová ochrana

Pro bezpečnou práci s Calom serverem je nutné, aby na počítači, kde je server nainstalován, fungoval firewall, který dovolí spojení zvenku pouze na:

Na nechráněných portech může probíhat interní komunikace jednotlivých komponent a nemělo by být možné se na ni zvenku napojit.

Pro posílení bezpečnosti je možné nasadit další bezpečnostní opatření:

  1. Systémy jako např. SELinux nebo AppArmor.
  2. Na systémech, které to umožňují lze zakázat spouštění kódu na zásobníku.
  3. Lze použít i další ochrany proti přetečení zásobníku, některé ale nejsou s Calom serverem kompatibilní.

Hrozby

V případě přístupu ke čtení komunikačních kanálů je možné získat informace probíhající kanálem - o hovorech, o účastnících a v omezené míře i o konfiguraci systému a sítě.
V případě, že se podaří získat CLI přístup na Calom server, je dále možné:

  1. Čtení libovolných dat o hovorech
  2. Čtení a modifikace dirdb databáze
  3. Modifikace nastavení gathererů (sběr dat)
  4. V případě povolených "helpers" spuštění příkazu pod uživatelem calom
V případě, že se podaří získat práva uživatele, pod kterým běží Calom server, je dále možné:
  1. Modifikovat už přečtená data o hovorech
  2. Kompromitovat Calom server
Z CLI rozhraní Calom serveru není možné modifikovat přečtená data o hovorech.

Přesměrovaná spojení, modifikované DNS záznamy

Systém Calom není navržen na případ, že útočník bude schopen přesměrovat spojení nebo změnit DNS záznamy (pokud Calom používá doménová jména, ne IP adresy). V takovém případě může dojít k neoprávněnému získání dat, případně pozměnění dat v dirdb databázi.

Poznámky

Popisovaná verze Calom serveru: 2.3.1
Poslední úprava: 29.8.2006