Archive for februari, 2010

Förbättrad säkerhet med SSH-nycklar

lördag, februari 27th, 2010

Det är väldigt viktigt att man håller efter säkerheten hos sitt system dels genom att se till att allt är uppdaterat, men samtidigt är det viktigt att se till att inte någon obehörig lyckas logga in. Något som är otroligt vanligt nu för tiden är bruteforce-attacker via ssh, där attackeraren försöker logga in med olika användarnamn och lösenord, ofta tusentals gånger per dag. Visserligen är risken relativt liten att någon skulle gissa både användare och lösenord rätt, men den bästa lösningen är att helt sluta acceptera lösenord.

Istället använder man SSH-nycklar för att logga in. Man har två nycklar, en privat och en publik. Den publika nyckel delar man ut till de servrar man vill ha möjlighet att logga in mot och den privata är helt enkelt privat.

Om du använder något unix-baserat system för att ansluta till dina servrar såsom OS X eller någon Linux-variant kan du i terminalen skriva

# ssh-keygen

Detta skapar dina nycklar och sparar dem i katalogen .ssh i din hemkatalog. Eller om du använder tex Putty i windows så laddar man ner puttygen får att skapa nycklarna.
Nyckeln som slutar på .pub skall du sedan ladda upp och lägga in i slutet av filen

~/.ssh/authorized_keys

som EN rad på servern du vill ansluta till utan lösenord.
Nu har du dels bekvämligheten att slippa ange lösenord när du ansluter till servern (såvida du inte har ett lösenord på själva nyckeln) och samtidigt en helt klart säkrare authentiseringsmetod. Men för att slutföra det hela skall vi också se till att det inte går att logga in med lösenord. Detta gör man lättast att helt enkelt ta bort lösenordet helt från användaren. Du kan göra det genom att byta ut lösenordet mot * i lösenordsfilen.

# vipw

för att editera filen och sätt sedan lösenordet till *.

Driftinformation från Pingdom via webb och twitter

fredag, februari 26th, 2010

Vi har sedan ett år tillbaka använt pingdom.com för att hålla oss uppdaterade om statusen för våra servrar, när vi idag förlängde vårt konto med ett år tänkte vi utöka detta till att erbjuda samma information till våra kunder, dels här via hemsidan och dels via @peanjails på twitter.

Genom att följa oss på twitter kommer du få exakt samma information som oss vad gäller upp och nedtid för servrarna. Du kan också få statistik för upptiden för våra servrar och tjänster här på webplatsen: http://www.jails.se/status/ med start idag (2010-02-26).

Uptime for samurai.jails.se: Last 30 days

Uptime for ninja.jails.se: Last 30 days

Uptime for mail.jails.se: Last 30 days

Uptime for webbserver 1: Last 30 days

Uppföljning av DDOS-attack

fredag, februari 26th, 2010

Nu finns lite mer information om vad som hände hos fsdata under gårdagen.

Från http://www.fsdata.se/support/driftstatus.php:

Under gårdagen hade vi driftsstörningar i form av ett DDOS-attack.
DDOS-attack är inget ovanligt och går i normala fall att stoppa enkelt genom att blockera trafiken från eller till den som blir attackerad.

Attacken som var riktad mot en av våra kunder i går var inte av den normala typen och inget vi har varit med om tidligare. Trots att vi blockerade all trafik i en av våra brandväggar till IP-adressen som blev DDOS:at så kvarstod problemet.

Till en början försökte vi stoppa attacken själv och lösa problemet med olika ändringar i brandväggen, men när vi upptäckte att ingen av dessa ändringar löste problemet kontaktade vi brandväggsleverantören för vidare hjälp med att avlösa problemet.

Tillsammans med personal från brandväggsföretaget testade vi ytterligare ändringar och vi gjorde även en uppgradering av brandväggen i hopp om att det skulle kunde lösa problemet, utan lycka.

Efter vidare felsökning i brandväggen fastställdes att detta var ett en extremt stor överbelastningsattack som brandväggen inte kunde klara av och dom rekommenderade oss ta kontakt med vår internetleverantör så att dom kunde blockera trafiken från detta botnet:et innan den kom till vår brandvägg.

Vi gjorde till slut en ändring i brandväggens routing som löste problemet. Detta är en ändring som under normal omständigheter inte skall göras, men på grund av att problemet var så akut så valde vi ändå att göra detta.

Vi beklagar givetvis alla de problem som de kunder som påverkats av denna attack drabbats av.

Dynamiska virtualhosts i FreeBSD jail / VPS

fredag, februari 26th, 2010

När man väl fått igång Apache och PHP, MySQL och allt vad man nu vill ha på sin webserver så stöter man snabbt på problemet med hur man skall konfigurera sina virtuella hostar. (dvs. hur man konfigurerar flera olika websidor och domäner på samma server).

Här tänkte vi gå igenom hur man på ett enkelt sätt kan lösa det genom att låta de virtuella hostarna vara dynamiska på så sätt att det räcker med att skapa en katalog motsvarande domänen man vill använda. Detta är mycket enkelt att göra i apache httpd. Vi börjar med att skapa en katalog där våra domänkataloger kommer att finnas. Låt säga

# mkdir /usr/www

Vi skapar också en katalog för loggar

# mkdir /usr/www/logs

Därefter konfigurerar vi apache. I filen /usr/local/etc/apache/httpd.conf:


UseCanonicalName Off
LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vcombined
CustomLog /usr/www/logs/access_log vcombined
VirtualDocumentRoot /usr/www/%0

Vi måste också lägga till konfiguration för just den katalogen vi valt:

<Directory "/usr/www/*">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

När allt är konfigurerat och filen sparad startar vi om apache

# apachectl restart

Nu är allt klart och vi kan börja skapa virtuella hostar. Peka helt enkelt en domän mot din servers IP och skapa en ny katalog tex:

# mkdir /usr/www/dinnyafestligadomaen.se

Sen är det bara att surfa!

Nu även driftinformation via twitter.

torsdag, februari 25th, 2010

Från och med idag kommer vi också att erbjuda våra kunder driftinformation och support via twitter. Föj @PeanJails för att få den allra senaste informationen.

DDOS attack mot fsdata

torsdag, februari 25th, 2010

FSdata har under dagen blivit attackerade genom en så kallad DDOS-attack och därför har några av våra servrar varit otillgängliga. Detta är tyvärr inget vi kan göra så mycket åt och får helt enkelt ‘rida ut’ attacken.

Mer information om attacken finns på fsdatas driftstatus: http://www.fsdata.se/support/driftstatus.php

Hantera portssystemet i FreeBSD VPS / Jail

onsdag, februari 24th, 2010

Vi fortsätter även idag med en kortare lathund om hur man kan använda våra virtuella servrar.

Idag skall vi sabbt gå igenom hur man kan förenkla hanteringen och underhållet av installerade portar (paket) i FreeBSD med hjälp av programmet portupgrade.

Installera portupgrade

# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/ports-supfile
# cd /usr/ports/ports-mgmt/portupgrade
# make install

Installera ports
För att installera ett nytt program använder man portinstall (som är en del av portupgrade-paketet) och skriver:

# portinstall <programmet>

Vet man inte exakt vad programmet heter kan man enkelt söka på http://www.freshports.org/

Uppdatera ports
Det kan vara väldigt bra speciellt ur säkerhetssynpunkt att hålla sina installerade paket ”up to date”. Dels kan man använda kommandot

# pkg_version

för att hitta de portar där det finns nya versionen att installera. Men det finns även ett väldigt viktigt program som talar om vilka av dina portar som har problem med säkerheten och det heter portaudit. För att installera portaudit gör du såhär:

# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/ports-supfile
# cd /usr/ports/ports-mgmt/portaudit
# make install

och för att ta reda på vilka paket som behöver säkerhetsuppdateringar gör du såhär:

# portaudit -Fda

Du får nu en lista över alla installerade ports som har (kända) säkerhetsproblem, dessa bör du uppdatera.

För att uppdatera ett program eller port så använder man portupgrade genom att skriva:

# portupgrade <programmet>

Om man också vill uppdatera alla paket som beror på paketet man uppdaterar kan man skriva

# portupgrade -r <programmet>

Man kan även uppdatera alla installerade paket genom att skriva

# portupgrade -ra

Läs gärna igenom Ports-sidan i FreeBSD handbook. Där finns mycket information om hur systemet fungerar och hur man använder det på bästa sätt.

Du kan läsa mer om FreeBSD och pakethanteringssystemet ports här:
FreeBSD
FreeBSD Ports
FreeBSD handbook

Du kan läsa mer om portupgrade här:
Portupgrade Manual
FreeBSD Ports

Sekundär mail relay på FreeBSD VPS / jail

tisdag, februari 23rd, 2010

Vi fortsätter även idag med en kortare lathund om hur man kan använda våra virtuella servrar.

Då flera av våra kunder använder sin virtuella server som sekundär server och det faktum att vi ha vår tjänst Dual VPS tänkte jag nu gå igenom hur man sätter upp en sekundär mail relay i FreeBSD med Postfix. Vad det handlar om är alltså en server som kan ta över och ta emot mail om den primära servern av någon anledning inte är tillgänglig.

En viktig sak att börja med är konfigurationen av DNS för att det hela skall fungera. Såhär ser det ut för jails.se:


jails.se has address 87.237.210.209
jails.se has IPv6 address 2001:16d8:cc1e:1::1
jails.se mail is handled by 10 mail.jails.se.
jails.se mail is handled by 20 mx2.jails.se.

Det centrala här är självklart ”jails.se mail is handled by” där det anges två adresser med varsin prioritet (lägre nummer ger högre prioritet). Vi har alltså en primär server i mail.jails.se och en sekundär i mx2.jails.se.

Installation av Postfix
Precis som tidigare kommer vi att använda oss av portsystemet för att installera Postfix. Detta görs enkelt i tre steg såhär:

# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/port-supfile
# cd /usr/ports/mail/postfix
# make install

Konfigurationen av den sekundära servern
Konfigurationsfilen det handlar om är:

/usr/local/etc/postfix/main.cf

och till att börja med är det viktigt att vi inte tillåter någon skicka mail via den sekundära servern och det gör man genom att lägga till en rad som denna i main.cf:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

och dessutom måste vi se till att servern accepterar mail till de domäner som servern är sekundär server för:

relay_domains = jails.se, domain1.tld, domain2.tld

Sedan är det viktigt att ha denna rad så att servern inte försöker leverera mailen lokalt utan skickar vidare allt till den primära servern.

relay_recipient_maps =

Av samma anledning är det också viktigt att dina domäner inte är listade i någon av följande konfigurationsfält

mydestination
virtual_alias_domains
virtual_mailbox_domains

Förutsatt att den primära mailservern redan är uppsatt och är korrekt konfigurerad är detta allt som krävs för en sekundär mail-relay. Det är självklart viktigt att du testat så allt fungerar. Detta gör du enklast genom att helt stänga av den primära mailserver och skicka ett mail till någon@domain.tld och sedan hålla koll på mail-loggarna. Nu bör mailet istället hamna hos den sekundära mailserver
som sedan kommer att försöka leverera detta till den primära med jämna mellanrum. När du sedan startar den primära servern igen bör mailet dyka upp där efter ett tag.

Du kan läsa mer om FreeBSD och pakethanteringssystemet ports här:
FreeBSD
FreeBSD Ports
FreeBSD handbook

Du kan läsa mer om Postfix här:
Postfix

Apache + PHP på din FreeBSD VPS / Jail

måndag, februari 22nd, 2010

Vi tänkte fortsätt sviten med lite kortare lathundar för hur man snabbt kommer igång med våra servertjänster. Idag tänkte vi gå igenom hur man kommer igång med Apache och PHP.

Vi börjar, precis som i tidigare lathundar med att se till att ports-systemets filer är uppdaterande, genom att checka ut den senaste versionen med kommandot csup.


# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/ports-supfile

Där ports-supfile är default-konfigurationen för vilka filer som skall hämtas och cvsup.se.freebsd.org är server där vi hämtar dem. Skulle .se vara full för tillfället går det bra att använda bland annat .dk. När det är klart kan vi börja med att installera apache.


# cd /usr/ports/www/apache22
# make install

I det här läget ges ett antal val för bland annat vilka moduler som skall byggas med apache och om man vill ha stöd för SSL och IPv6. Sen bygger vi! FreeBSD Ports kommer nu att bygga dels Apache och dels alla andra paket som krävs för att Apache skall fungera.

När detta är klart:

===> Registering installation for apache 2.2.14_5

Nu gäller det att se till att apache startar när server startar. Detta gör man enklast genom att lägga till raden:


apache22_enable="YES"

i /etc/rc.conf

Sedan är det dags att installera och konfigurera PHP.

# cd /usr/ports/lang/php5
# make install

Det är viktigt att vara noga med vilka inställningar som görs i kommande dialogruta:
PHP inställningar

Se till här att markera ‘Build Apache module’ annars kommer inte koplingen till Apache att fungera. När allt är klart ser du detta:


***************************************************************

Make sure index.php is part of your DirectoryIndex.

You should add the following to your Apache configuration file:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

***************************************************************
===> Compressing manual pages for php5-5.2.12
===> Registering installation for php5-5.2.12

Nu måste vi se till att inställningar finns i Apache-konfigurationen /usr/local/etc/apache/httpd.conf för att det skall fungera. Dock så är i normala fall detta redan med i default-konfigurationen:


<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>

och


<IfModule mod_php5.c>
DirectoryIndex index.php index.html
</IfModule>

Nu skall allt vara klart och du kan starta apache manuellt genom

# sh /usr/local/etc/rc.d/apache start

eller

# apachectl start

Därefter kan du antingen konfigurera upp en egen www-katalog eller använda den som är default-konfigurerad:

/usr/local/www/data

Nu är det bara att börja koda!

Du kan läsa mer om FreeBSD och pakethanteringssystemet ports här:
FreeBSD
FreeBSD Ports
FreeBSD handbook

Du kan läsa mer om Apache och PHP här:
Apache 2.2 dokumentation
PHP dokumentation

Ruby on Ralis på din FreeBSD VPS / Jail

söndag, februari 21st, 2010

Vi har innan visat hur man mycket enkelt kan installera och starta ett django-projekt med våra serverlösningar. Nu tänkte vi också gå igenom hur man gör för att få igång Ruby on Rails. Detta är ett mycket liknande förfarande som för django så det kan vara till hjälp att snabbt läsa igenom även artikeln om det (här).

Det kanoniska tillvägagångsättet i fem steg är:

# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/ports-supfile
# cd /usr/ports/www/rubygem-rails
# make install
# rails /tmp/test_app
# /tmp/test_app/script/server

Eller med FreeBSD förkompilerade paket i tre enkla steg:

# pkg_add -r rubygem-rails
# rails /tmp/test_app
# /tmp/test_app/script/server

Vi vill först att FreeBSDs pakethanteringssystem är uppdaterat och det gör vi såhär:

# csup -h cvsup.se.freebsd.org /usr/share/examples/cvsup/ports-supfile

Därefter är det dags att installera ruby, gem och rails vilket vi med ports kan göra med två enkla kommandon

# cd /usr/ports/www/rubygem-rails
# make install

Under installationen kommer man få ett par dialogrutor där man ka välja vilka stöd som skall finnas kompilerade i ruby och rails, bland annat IPv6 och SQL. När allt är klart får du ett meddelande som linkar detta:

===> Registering installation for rubygem-rails-2.3.4

Nu är det bara att skapa ett nytt projekt och starta server och det gör man såhär:

# rails /tmp/test_app
# /tmp/test_app/script/server

Du kan läsa mer om FreeBSD och pakethanteringssystemet ports här:
FreeBSD
FreeBSD Ports
FreeBSD handbook

Information om Ruby on Rails hittar du här:
Ruby on Rails