lipanj 2009 - Posts

IPSec izolacija hostova

Jedna od novih, ali i ne baš puno promovisanih mogućnosti novog firewall-a Windows-a Vista i Windows Servera 2008 je i mogućnost izoliranja pojedinačnih hostova te cijelih domena, korištenjem IPSec-a. U ovom i narednom nastavku opisati ću detaljno tu funkcionalnost, kao i scenarije upotrebe i načine konfiguracije.

Sama pomen skraćenice IPSec (IP Security) asocira na zaštitu mrežnog saobraćaja između dva ili više hostova na mreži. Iako se ovdje nećemo primarno baviti tom upotrebom IPSec-a podsjetimo se ipak na početku o čemu se radi.

IPSEC – izvorno
Implementacijom dviju sigurnosnih tehnologija Authentication Header (AH) odnosno Encapsulating Security Payload (ESP), Ipsec obezbjeđuje zaštitu integriteta samog saobraćaja (što radi AH) odnosno i zaštitu samog sadržaja od neovlaštenog pristupa (enkripcija, što radi ESP). Radi se zapravo o digitalnom potpisivanju IP paketa (kod AH) čime se štiti njihov integritet, obzirom da i makar jedan izmijenjeni bit čini cio paket nevalidnim. Takođe, ovim se dokazuje i autentičnost pošiljaoca, ako se koriste i certifikati. Ipak, na ovaj način se ne štiti i sam sadržaj saobraćaja (odnosno payload samog IP paketa), što u nekim slučajevima (moglo bi se reći i dosta često) i nije primarni cilj. Npr. za neku poruka tipa narudžbe 1000 kišobrana je mnogo bitnije da na cilj stigne neizmijenjena (pa da ne bude umjesto 1000 napisano 100000), nego da se sakrije sam sadržaj poruke.
S druge strane, enkripcija saobraćaja (što radi ESP) čini sam payload IP paketa nečitljivim za onoga ko bi mu eventualno neovlašteno pristupio (bez odgovarajućeg ključa), pa se tako štiti i sam sadržaj. I jedna i druga tehnologija postoje još od doba Windows-a 2000, i temelje se na manje-više poznatim algoritmima poput SHA1, 3DES, itd.
Ove sigurnosne tehnologije primijenjivale su se najčešće pomoću grupnih polisa, implementacijom odgovarajućih IPSec polisa na određene računare. Pri implementaciji IPSec polisa, najčešće su se definisali specifični tipovi saobraćaja (protokoli i portovi) na koje bi se primijenjivao IPSec, budući da je procesorski dosta zahtjevan, pa nema baš previše smisla uključivati ga na kompletan saobraćaj koji prolazi kroz mrežni adapter. U nešto ranijim verzijama Windows Servera (2000) nije ni bilo moguće uključiti IPSec na recimo Kerberos saobraćaj, no to je poslije korigovano.
Kao metodi za međusobnu autentikaciju hostova, u ovoj primjeni IPSec-a koriste se Kerberos (primarno, ako su hostovi iz iste domene), certifikati (pogodno ako se radi o hostovima iz različitih domena) ili pre-shared ključ (najmanje sigurno rješenje).

IP Sec izolacija
Windows Server 2008 i Windows Vista donose još jednu mogućnost upotrebe IPSec-a, koja je istina postojala i ranije, ali ne baš u ovoj formi. Radi se o izolaciji hostova, pa i čitavih domena, od klijenata (računara i korisnika), koji nemaju ovlaštenje da im pristupe. Obzirom da ova zadnja rečenica vjerovatno izgleda kao izmišljanje tople vode, pogledajmo o čemu se zapravo radi?

Zamislimo sljedeći scenario : Korisnik u nekoj organizaciji donosi na posao svoj lični laptop, koji nije član domene, spaja ga na korporativnu mrežu (žično ili bežično,) te upisivanjem UNC putanje (\\server\share\...) pokušava pristupiti nekom serveru. Ako je još i administrator, vrlo je vjerovatno da će odmah ciljati na C$ ili slično. Server će najvjerovatnije odgovoriti tako što će tražiti upisivanje domenskog korisničkog imena i lozinke (pošto korisnik dolazi sa računara koji nije član domene, te je na njega logovan vjerovatno lokalno), te će nakon toga konekcija biti dozvoljena, ako korisnik sa tim accountom ima pravo da pristupa traženim resursima. Od tada pa nadalje, korisnik može pristupati resursima tog hosta, kao da je došao i sa bilo kog računara u mreži. Alternativno, korisnik može pokušati ostvariti RDP konekciju prema željenom hostu, što će takođe uspjeti uz upisivanje odgovarajućih domenskih kredencijala. Na ovaj način mi zapravo nemamo kontrole nad računarima sa kojih se vrši konekcija nego samo nad korisnicima koji to rade. Sigurnosno, to je dosta opasno obzirom da tipični korisnik još uvijek ne čuva dovoljno dobro svoje korisničko ime i lozinku a to zapravo predstavlja jedinu prepreku neovlaštenom pristupu.
Želimo li ovako nešto spriječiti, standardne metode (poput konfigurisanja NTFS dozvola ili VLAN-ova) nam baš neće biti od pomoći. Ono što zapravo želimo je da zabranimo mogućnost autenticiranja na nekom domenskom resursu (te bilo kakav vid pristupa), klijentima koji ne dolaze iz domenskog okruženja. Drugim riječima, želimo forsirati Kerberos autentikaciju i to na nivou i računara i korisnika. To bi zapravo značilo da će pristup određenom resursu (hostu) biti dozvoljen samo u slučaju da mu se dolazi sa računara koji je član domene (a to znači autenticiran Kerberosom), te ako je na tom računaru logovan korisnik koji je također autenticiran putem Kerberos protokola. Ni jedna druga opcija autentikacije nam nije prihvatljiva. Implementacijom ovoga postižemo i punu kontrolu nad računarima sa kojih se vrši spajanje na određene hostove.

Mislite li da se ovo može riješiti kroz grupne polise na domen kontroleru ili hostu kojeg štitimo, varate se. Maksimum koji se može postići na taj način je forisiranje NTLM v2 protokola za autentikaciju (konfigurisanjem opcije Network security: LAN Manager authentication level unutar grupe Security Options ),što je nedovoljno da bi se postigao željeni cilj. S druge strane, opcija „Access this computer from network” donosi polovičan rezultat – konfigurisanjem ovoga možemo reći eksplicitno ko može pristupiti određenom hostu, ali ne i kako se treba autenticirati da bi to ostvario.
Zapravo, ono što želimo postići ne konfiguriše se direktno putem GP opcija (mada se i dalje preko GPO distribuira) nego kroz novu Firewall konzolu Windows-a Vista i Windows Servera 2008 koja se zove Windows Firewall with Advanced Security. Unutar te konzole postoji node koji se zove Connection Security rules i predstavlja rješenje za ovaj problem. Konfigurisanjem ovih polisa mi možemo postići da se svakom korisniku koji pokuša pristupiti nekom hostu nametne Kerberos kao jedini podržani autentikacijski protokol.

WFAS
Na ovaj način mi zapravo propagiramo mrežnu polisu koja zahtijeva da određeni host (ili hostovi), članovi domene, prihvataju samo one konekcije koje su autenticirane i osigurane, te dolaze isključivo od strane drugih hostova koji su članovi domena. S druge strane, ovakvi hostovi su izolirani u svakom pogledu od svih ostalih računara koji nisu članovi domene.
Ovaj tip polise se može i dodatno filtrirati time da se specificira od kojih tačno domenskih članova će konekcije biti dopuštene, pa se tako recimo neki database server može konfigurisati da prima konekcije samo od recimo web servera i radne stanice administratora i domen kontrolera. Niko drugi ga neće preko mreže uopšte moći locirati. Dodatno, može se zahtijevati i postojanje specifičnog certifikata na hostu koji želi ostvariti komunikaciju.

Implementacija izolacije na ovaj način dešava se prilično „visoko“ – na nivou operativnog sistema, pa je za niže nivoe (poput transportnog i mrežnog) potpuno nevidljiva, što čini ovo rješenje prilično portabilnim u smislu da ne zavisi od premještanja računara na drugu lokaciju ili izmjene VLAN-a u kojem radi. Osim toga, nikakav dodatni softver nije potreban, sve što treba za implementaciju ovakvog vida izolacije, već je u operativnom sistemu.
Na kraju, na ovaj način može se zaštiti bilo koji host, ne samo server. Uslov je samo da ima instaliran barem Windows Vista Business Edition.

sdisolation

Dizajn IPSec izolacije

Odlučimo li se na primjenu ovakvog rješenja, neophodno je napraviti dobru pripremu. Na prvom mjestu treba identifikovati koje hostove želimo izolirati. I zašto to radimo? Takođe, potrebno je definisati koji rizik izolacijom izbjegavamo. Da li izolaciju primijenjujemo da bi osigurali nemogućnost spajanja sa računara koji nisu van domene, te spriječili neovlašten pristup, ili to radimo zato da bi imali punu kontrolu nad hostovima u mreži i ne dozvolili bilo kakvu mrežnu komunikaciju sa un-managed računara makar oni bili korišteni i od strane regularnih korisnika?

Pored toga, potrebno je procijeniti da li na izolaciju hostova želimo primijeniti još neku tehniku filtriranja osim samog Kerberosa. Izbor onih koji će moći generisati konekcije prema izoliranom hostu može se dodatno suziti na više načina.
Možemo konfigurisati dodatni firewall rule koji će omogućavati konekcije samo sa određenih hostova i to samo po određenom portu, pored toga što će se zahtijevati Kerberos autentikacija računara i korisnika. Možemo takođe zahtijevati i postojanje certifikata izdatog od određenog CA, na računaru sa kojeg se inicira konekcija. Na kraju, moguće je u cijelu priču uključiti i NAP, pa od računara sa kojih se inicira konekcija prema izoliranom hostu tražiti postojanje health certifikata koji garantuje da su sigurnosno ispravni. A možemo primijeniti i sve to zajedno.

Sve su ovo odluke koje treba donijeti prije nego se sa implementacijom izolacije krene.

Iz do sada rečenog može se zaključiti da mehanizam izolacije pomoću IPSec-a predstavlja vrlo snažan metod zaštite hostova od neželjenih konekcija bilo kojeg tipa. U narednom nastavku pozabavit ćemo se konkretnom implementacijom ove tehnologije.

Posted by ddamir with no comments