Det kan finnas flera anledningar men en är säkerhet, vilket jag återkommer till.
Först och främst, vad är virtualisering? Själv är jag nybörjare och är nog lite svag när det gäller detaljer men det gör mig perfekt för att ta reda på och sammanfatta begreppet generellt.
Kortfattat innebär virtualisering att man låter datorhårdvara köra flera operativsystem samtidigt, vilket får det att se ut som det finns flera datorer på nätverket. För att det skall fungera så behövs det en dator i grunden som kör någon form av vitrualiseringsprogramvara som i sin tur simulerar olika datorer. När man konfigurerat dessa virtuella datorer så kan man installera operativsystem och program precis som med en fysisk dator.
De virtuella datorerna delar då på de resurser som finns i den fysiska datorn och man kan ganska enkelt fördela om resurser mellan dessa om det skulle visa sig att trycket är högre på någon av dem.
Det börjar bli vanligt med specialiserad serverhårdvara för att virtualisera klienter (exempel från Vimmerby) men här fokuserar jag på servervirtualisering.
Det behöver inte ens vara en fysisk dator som man kör sina virtuella datorer på. Det kan vara ett ”kluster” av datorer i stället. Ett kluster är hårdvarumotsvarigheten till virtualisering där man låter flera fysiska datorer agera som en enda rent logiskt. Varje dator kör ett speciellt operativsystem och en eller flera av datorerna samlar all kapacitet och presenterar denna som en gigantisk server med superprestanda.
För att återkomma till säkerhet så finns det en enkel förklaring till varför virtualisering är en bra idé. Tänk dig att någon lyckas utnyttja en svaghet i Apache webbserver och tar sig in i servern. Då kan de teoretiskt även komma åt din GeoServer, PostGIS-databas, mail och dina filer…
Om du i stället kört databasen, mail- och filserver på egna virtuella servrar utan Apache så är de bättre skyddade. Webbservern kanske skadas och information kan läcka, men information som inte publiceras via webben ligger relativt säkert på de andra servrarna.
När man beräknar hur många servrar man behöver så kan man börja med att titta på vilka program som är installerade och börja med att avinstallera det som inte behövs. Detta kan vara lite vanskligt då det är svårt att reda ut alla beroenden, men det skadar inte att lista det som är installerat.
dpkg -l
Vill du sedan lista alla tjänster som körs så finns det ett kommando för det också.
service --status-all
I listan så står det +, – och ? framför tillgängliga tjänster och det betyder att de körs (+), är stoppade (-) eller att statusen är okänd (?).
Vill man lista de portar som servern lyssnar på så kan man använda:
netstat -ntlp
Med det sista kommandot så kan man ganska grovt räkna ut hur många virtuella servrar man behöver. En del portar kanske skall köras på varje server för att exempelvis kunna komma åt och administrera dessa. Detta brukar göras via SSH och port 22. Andra vanliga portar finns i listan nedan.
21 FTP filöverföring
23 Telnet (gammal okrypterad teknik, undvik!)
25 SMTP mail
80 HTTP eller Webbserver
139 NetBIOS namnuppslagning
443 HTTPS krypterad webbsida
445 SMB Windows fildelning
Det finns många fler och även ytterligare portar som inte är standardiserade på riktigt samma sätt men dock registrerade. Ett sådant exempel är PostgreSQL som lyssnar på port 5432. En komplett lista med portnummer kan man hitta på nätet.
Vill du söka igenom ”alla” portar och kontrollera vilka som är öppna/aktiva så kan du köra följande kommando.
sudo nmap -sT -O localhost
Du kan byta ut localhost mot ett servernamn eller en ip-adress för att testa portar på en annan dator i nätverket. Testa exempelvis att köra det mot din egen klient eller din brandvägg…
Säkerhet är ett komplicerat område och man kan sätta säkerhet på så många nivåer. Fysisk säkerhet för att skydda mot direkt tillträde till hårdvaran, inloggning med olika behörigheter, rättigheter i tjänster och filsystem, policy för olika säkerheter, etc. Det blir snabbt svåröverskådligt och är därför säkerhet viktigt så skall man alltid se till att anlita expertis. En ganska bra checklista att börja med kan du hitta på http://www.cyberciti.biz/tips/linux-security.html. Många av kommandona ovan har jag hämtat från denna sida.
Du har ju möjlighet att köra ett mellanting mellan full virtualisering och dedikerad hårdvara också i form av tjänstekontainrar. LXC och i förlängningen docker.io är tycker jag en fantastisk möjlighet till att separera funktionerna på samma sätt som du nämner.
Docker låter faktiskt inte alls dumt när man läser deras egen information och kommentarer på nätet (https://www.docker.io). Inte bara för att etablera säkerhet. Kanske kan hitta lite tid att kolla närmare på detta framöver.
Jag kollade runt lite i deras repo och det finns redan kontainrar med postgis eller tilestache. Framtiden är ljus 🙂