Hur du installerar och konfigurerar en webbserver

En kortfattad guide som visar hur du ställer in en helt ny webbserver eller VPS med Debian 5.0. Jag antar att du vill ha Apache, PHP, MySQL, SFTP mm. Dessutom antar jag att det bara behövs ett användarkonto och ett domännamn som pekar på den här servern.

Obs! Jag lär bara ut grunderna här, och jag är inte en certifierad eller utbildad sysadmin. Dock har jag använt och administrerat Linux-servrar i flera år. Vill du veta mer, rekommenderar jag boken Linux Administration: A Beginner’s Guide.

Logga in och kom igång

Logga in på webbservern via SSH. Från Windows kan du göra det med PuTTY eller OpenSSH. (Detaljerade instruktioner för PuTTY finns exempelvis på The Electric Toolbox.)

Byt lösenord på användaren root (eftersom du förmodligen har fått ditt lösenord skickat via okrypterad e-post):

passwd

Ge servern ett namn (exempelvis namn.dindomän.se) genom att skriva det i den här filen:

nano /etc/hostname

Och lägg till samma namn sist på första raden i filen hosts:

nano /etc/hosts

Så att raden ser ut så här:

127.0.0.1 localhost.localdomain localhost namn.dindomän.se

Låt servern sedan läsa in namnet direkt, utan omstart:

/etc/init.d/hostname.sh start

Uppdatera apt:s information om de senaste versionerna av program/paket och uppgradera redan installerade paket:

apt-get update
apt-get upgrade

Gör landsinställningar för att få stöd för exempelvis åäö via SSH:

apt-get install locales
dpkg-reconfigure locales

Markera sv_SE och sv_SE.UTF-8 i listan och välj i nästa steg sv_SE.UTF-8 som standard.

Konfigurera brandväggen

Brandväggen IPTables är redan installerad, men vi vill aktivera den med några regler:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport www -j ACCEPT

Detta accepterar alla inkommande anslutningar på det lokala gränssnittet (”lo” eller ”localhost”), alla redan etablerade anslutningar, samt inkommande anslutningar på port 22 (”ssh”) och 80 (”www”). Notera att vi inte tillåter ftp-anslutningar — vi använder SFTP eller SCP istället. Det ger krypterad överföring, vilket är säkrare. Jag har skrivit om det tidigare.

(Om du exempelvis vill ta emot e-post eller använda säker https-anslutning på den här servern, måste du öppna fler portar.)

Vi vill att alla inkommande anslutningar och vidarebefordringar som inte matchar reglerna ovan ska blockeras. Dessutom vill vi acceptera alla utgående anslutningar. Skriv:

iptables –P INPUT DROP
iptables –P FORWARD DROP
iptables –P OUTPUT ACCEPT

Spara reglerna och se till att de aktiveras igen när du startar om servern:

iptables-save > /etc/iptables.rules
nano /etc/network/interfaces

Hitta den sektion ”iface” som har serverns publika IP-adress och lägg till en rad på slutet:

post-up iptables-restore < /etc/iptables.rules

Installera Apache, PHP och MySQL

Det här är det enklaste steget. Kör:

apt-get install apache2-mpm-prefork libapache2-mod-php5
apt-get install php5-mysql mysql-server

Detta installerar det mesta som du behöver, men inte alla PHP-moduler som finns.

Nu kan du skriva in serverns IP-adress i en webbläsare och få meddelandet ”It works!” från Apache.

Skapa användare

Det är säkrare att logga in med en annan användare än root, och du minskar risken att någon hackar ditt root-lösenord om du inte ens tillåter root att logga in. Hitta på ett användarnamn, exempelvis ditt förnamn eller liknande. Jag kallar användaren NN här.

(Läs mer om varför det är säkrare att inte logga in som root på Server Fault.)

Vi skapar också gruppen www-pub, som vi sedan ger skrivrättigheter till katalogen /var/www, som är Apaches startkatalog. Din användare ska tillhöra denna grupp.

groupadd www-pub
adduser –ingroup www-pub NN
chown –R root:www-pub /var/www
chmod 0775 /var/www
chmod 0664 /var/www/*

Apache (användaren www-data) har nu bara läsrättigheter, och om du exempelvis ska installera WordPress måste du ändra ägare och rättigheter på filer och kataloger som Apache ska skriva till. Detta är ett säkert sätt att köra Apache på, eftersom ett trasigt eller hackat skript inte kan förstöra någonting i katalogen /var/www.

(Läs mer om varför vi skapar användaren www-pub och inte ger Apache skrivrättigheter på Server Fault.)

För att du ska kunna logga in som NN och köra kommandon som root, lägger vi till användaren i sudoers. Det gör att du kan logga in som NN och köra kommandon som root genom att skriva ”sudo” först på kommandoraden. (Läs mer om sudo på Wikipedia.)

apt-get install sudo
visudo

Ta bort kommentarstecknet ”#” framför den här raden:

%sudo ALL=NOPASSWD: ALL

Lägg sedan till NN i gruppen sudo:

usermod –G sudo NN

Var noga med att använda stort G i detta kommando, ”-g” byter huvudgrupp för användaren istället för att lägga till en ny grupp.

Säker inloggning och filöverföring med SSH och SFTP

SSH är redan konfigurerat, men vi ska begränsa inloggning, så att bara NN får logga in (inte root eller någon annan användare).

nano /etc/ssh/sshd_config

Ändra värdet för PermitRootLogin till no.

Lägg till sist i filen:

AllowUsers NN

Starta om SSH när du är säker på att du har angett samma användarnamn här som användaren du skapade nyss (annars kommer du inte kunna logga in):

/etc/init.d/ssh restart

Konfigurera Apache med ditt domännamn

Hos webbhotellet eller din DNS-tjänst, ange IP-adressen till din webbserver i DNS typ A för subdomänerna @ och www.

Öppna Apaches konfigurationsfil:

nano /etc/apache2/apache2.conf

Lägg till sist i filen:

ServerName dindomän.se

Starta om Apache:

/etc/init.d/apache2 restart

Logga in med SFTP och testa PHP

Starta en SFTP-klient på din dator. I Windows rekommenderar jag programmet WinSCP.

Ange serverns IP-adress, användarnamn och det lösenord du satte tidigare. Du kan också sätta standardkatalog (”fjärrkatalog”) till ”/var/www”. Logga in.

I mappen /var/www, skapa en fil index.php med valfritt innehåll. Öppna adressen i webbläsaren och se att det fungerar.

Grattis!

Kategorier: sysadmin

Kommentera (8)

 

Skriv en kommentar




Powered by WP Hashcash