EgenSajts tekniska plattform

Skalbara system

Framtidens webbhotell bör använda skalbara och redundanta system med säkerhetssystem och lastbalanseringsteknik. EgenSajt bygger allt utifrån ett skalbarhets- och prestandaperspektiv.

Mjukvara

På EgenSajt används enbart s.k. open-source och däribland:

  • Lighttpd/nginx
  • php-fpm
  • Varnish
  • memcached
  • mysql galera kluster
  • Apache2 med mod security
  • NFSv4/rdma

Hårdvara

HP-servrar med Dual Core 2.2 samt Quad Core 2.0-3.0 MHz

inifiniband 40Mbit/s

 

Apache2 vs. lighttpd

Apache är process-baserad och kör en pool av processer (prefork) och äter mycket minne, samt har generellt dålig prestanda. Apache MPM Worker fungerar bättre, men rekommenderas inte av php själva, då det kräver att servrarna är trådsäkra.

Lighttpd däremot är asynkron, vilket betyder att den körs som en enda process som är non-blocking I/O, dvs annan I/O kan börja innan transmissionen har slutförts. Fördelen är att lighttpd kan skala bättre, har mindre overhead och använder mycket mindre minne samt visar statiskt material 3-4 ggr snabbare än Apache.

PHP-FPM

Några av egenskaperna med php-fpm är följande:

  • Adaptiv process spawning
  • Statistik
  • Avancerad process administration
  • Möjlighet att starta worker med med valfri gid/gid/environment och separat php.ini
  • Kan köras chrootat
  • Har emergency restart möjligheter (vid tex. opt kod cache problem eller liknande)
  • Slow log support

Alla dessa funktionaliteter har vi utnyttjat på EgenSajt och vi kan bland annat enkelt se varför en WordPress blogg går långsamt. Det syns direkt vilken php-fil som exekverar långsamt och man kan se om tex. ett plugin inte fungerar som det ska.

Varnish

Varnish är en http cache accelerator och en förutsättning för att erbjuda riktigt snabba sajter. Den kan konfigureras utan gräns i sk. .vcl-filer och är designad speciellt för sajter med mycket innehåll och bilder. Den sparar data i virtuellt minne.

Disksystem med NFSv4/rdma

NFSv4/rdma är ett distribuerat nativt filöverföringssystem. Vi kör rdma ( remote direct memory access ) över infiniband och detta betyder helt enkelt att nätverkskort kan transferera data direkt till minnen i applikationsnivå, inget behov av att kopiera data mellan minne och data bufferts i operativet.

Memcached

Memcached är ett multifunktionellt och distribuerad minnescachesystem som utvecklades av Danga Interactive för LiveJournal. memcached används ofta för att snabba upp dynamska databasdriva sajter genom att cacha data och objekt i ramminne för att reducerat externa databas anrop. En unik fördel med memcached är att den stöder redundanta och skalbara plattformar och används av många Web 2.0-/socialmeda-sajter som Youtube, reddit, facebook, twitter osv.

Mod Security

Mod Security är ett säkerhetssystem som skyddar både från obehörig trafik, spam-botar samt attacker, tex. file/sql injections. De flesta känner inte inget webbhotell i Sverige har skydd mot dessa typer av attacker. Så långt vi känner till är EgenSajt ensamma om detta. Exempel på skydd och utdrag ur våra loggar:

Obehörig trafik

 [Sun Mar 17 08:54:24 2013] ModSecurity: Access denied with code 403 (phase 2). Match of "rx ^0$" against "REQUEST_HEADERS:Content-Length" required. [file "/etc/apache2/modsec/10_asl_rules.conf"] [line "100"] [id "392301"] [rev "5"] [msg "WAF Rules: Request Containing Content, but Missing Content-Type header"] [severity "NOTICE"] [hostname "193.42.159.252"] [uri "/wp-tmp/gate.php"]

Spam

[Sat Mar 16 10:41:47 2013] [error] [client 198.144.116.150] ModSecurity: Access denied with code 403 (phase 2). Pattern match "[-_ ]?(?:adipex|suboxone|pseudovent|topamax|trazodone|prevacid|
 zyrtec|xenical|toprol|zoloft|synthroid|valtrex|wellbutrin|valium|protonix|vytorin|ritalin|zocor|seroquel|ultracet|plavix|voltaren|zyprexa|xanax|vicodin|penicillin|tramadol|provigil|predniso..." at ARGS:subject. [file "/etc/apache2/modsec/30_asl_antispam.conf"] [line "248"] [id "300061"] [rev "25"] [msg " AntiSpam Rules: Possible Spam or Restricted content: Pharmacy and/or Drug content detected"] [data " cialis "] [severity "CRITICAL"] [hostname "193.42.159.250"] [uri "/posting.php"]

File injection

[Sat Mar 16 10:41:39 2013] [error] [client 127.0.0.1] ModSecurity: Access denied with code 403 (phase 2). Match of "beginsWith %{request_headers.host}" against "TX:1" required. [file "/etc/apache2/modsec/10_asl_rules.conf"] [line "483"] [id "340162"] [rev "289"] [msg "Rules: Remote File Injection attempt in ARGS (AE)"] [data "videofoni.net/diziizle/seyret-1tspqefvmmq&-neil-young-harvest-moon-subtitulado.html"] [severity "CRITICAL"] [hostname "193.42.159.252"] [uri "/search"]