Kategoriarkiv: Nyheder

Using Varnish and iptables_recent to fend off Slowloris attacks on CentOS

As some may know, an old attack has been wrapped in a perl script called “Slowloris.pl”. Any script kiddie with a Linux box and a couple of Perl modules installed will be able to take down most webservers. The script works by sending a lot of requests, that do not finish, so the webserver becomes unable to process any “real” requests. I sat down and wrote a guide to use Varnish and iptables to block any Slowloris attacks against an Apache webserver. I hope this will prove helpful for anyone wanting to secure their web servers against this attack.

— Jes Kasper Klittum

Getting the sources

You can get the sources from the Varnish SourceForge site.
Find the download link on this page:
http://www.varnish-cache.org/
As of 10th of November 2010 this is what I did:

wget http://www.varnish-software.com/sites/default/files/varnish-2.1.4.tar.gz

Compiling Varnish

Make sure that gcc, autoconf, automake and pcre-devel are installed. If not installed run:
yum install gcc autoconf automake pcre-devel

Untar the package and enter the directory:
tar fxzv varnish-2.1.4.tar.gz
cd varnish-2.1.4/

Now compile the sources:
./configure
make
make install
cp redhat/varnish.initrc /etc/init.d/varnish
sed -i -e 's:exec="/usr/sbin/varnishd":exec="/usr/local/sbin/varnishd":' /etc/init.d/varnish
cp redhat/varnish.sysconfig /etc/sysconfig/varnish
groupadd -r varnish
useradd -r -g varnish -d /var/lib/varnish -s /sbin/nologin \
-c "Varnish http accelerator user" varnish
chkconfig --add varnish
chkconfig --level 345 varnish on
mkdir -p /var/lib/varnish/

Make a symlink from /etc/varnish to /usr/local/etc/varnish

ln -s /usr/local/etc/varnish /etc/varnish

Edit /etc/sysconfig/varnish to match this:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-u varnish -g varnish \
-s file,/var/lib/varnish/varnish_storage.bin,1G"

Configure Apache

You need to make apache listen to another port than 80. To do this, you must change the directives Listen, ServerName, NameVirtualHost and all “virtualhost *:80” enties in the apache configuration.

I did this:
root@www conf]# grep -A2 Varnish /etc/httpd/conf/httpd.conf
#Varnish change
#Listen 80
Listen 8080
--
#Varnish change
#ServerName 127.0.0.1:80
ServerName 127.0.0.1:8080
--
#Varnish change
#NameVirtualHost *:80
NameVirtualHost *:8080

#Varnish change
#

Configure Varnish

Now, apache is now listening to another port, and our firewall denies untrust access to this port – what we need to do now, is get Varnish to filter the packets comning in on port 80 and forward then to port 8080 on 127.0.0.1

cat /etc/varnish/default.vcl
#-e This is a basic VCL configuration file for varnish. See the vcl(7)
#man page for details on VCL syntax and semantics.
#
#Default backend definition. Set this to point to your content
#server.
#
backend armada {
.host = "127.0.0.1";
.port = "8080";
}

#
# Define what to do when receiving a request;
# - Send all requests to the backend "armada"
# - Remove X-Forwarded-For if it is already set for some reason
# - Add a new X-Forwarded-For header, set it to the clients IP (for logging on Apache)
#
sub vcl_recv {
set req.backend = armada;
remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;
}

#
# Set timeout for all objects to 0 seconds. This defeats the purpose of running a cache,
# but this is for the added security only.
# This was the easiest way for me to preserve logging of all requests.
#
sub vcl_fetch {
set obj.ttl = 0s;
}

Fixing Apache logging

All IPs will be logged as coming from 127.0.0.1 if you do not use the X-Forwarded-For for the Log IP. There are different approaches to this.
Best approach is to install mod_rpaf; reverse proxy add forward
This requires httpd-devel to be installed. This can be obtained through yum.

cd /root
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar fxzv mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Create a file /etc/httpd/conf.d/rpaf.conf
cat /etc/httpd/conf.d/rpaf.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1

Limit number og connections from one IP

Using iptables recent, we can make sure that any IP will only be allowed to make, f.ex., 20 connections in 5 seconds – otherwise they get blocked.

iptables -N Slowloris
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j Slowloris
iptables -A Slowloris -m recent --set --name APACHE
iptables -A Slowloris -m recent --update --seconds 5 --hitcount 20 --name APACHE -j DROP
iptables-save > /etc/sysconfig/iptables
chkconfig iptables on

Starting it all up

/etc/init.d/httpd stop
/etc/init.d/varnish start
/etc/init.d/httpd start

Kudos

These guides were used to compose this walk-through:
http://wiki.tyk.nu/index.php/Using_Varnish_to_protect_Apache_against_slowloris#Configuring_Varnish
http://developer.mindtouch.com/User:PeteE/Varnish_Installation
http://varnish.projects.linpro.no/
http://maxgarrick.com/reverse-proxy-with-nginx
http://www.ducea.com/2006/06/28/using-iptables-to-block-brute-force-attacks/

Saddam er blevet henrettet

For et par dage siden skete det så – Iraks mangeårige diktator, Saddam Hussein, blev henrettet ved hængning. Skønt manden var diktator og skyld i forfærdelige ting, så går det mig meget imod at man hænger et menneske i et land der, antageligt, skulle være et demokrati.

Vi støtter en krig for at indføre demokratiske retningslinier i Irak. Hvorfor tillader vi så denne form for middelalderlig justits? Det mest sørgelige er, at Saddam nu er hængt for de forbrydelser han udsatte 148 indbyggere i al-Dujail for, medens han aldrig vil kunne berette om de forfærdeligheder han udsatte tusindvis af kurdere for ved giftgasangreb og tortur i 1988.

Læs Amnesty Danmarks pressemeddelelse om hægningen her:
“Saddams henrettelse en skændsel”

En lille ny er kommet til

Min svigerinde, Kit Palmkvist Hansen, og hendes forlovede Christian Jensen, er i nat d. 13 juli 2006 blevet hhv. mor og far (ikke omvendt) til en lille velskabt dreng på 52 cm og 3700 gram. Herfra ønskes et stort tillykke med den lille. 🙂

Undskyld ventetiden !

Jeg ved godt at jeg er et skarn. Jeg burde have skrevet noget og nu er der gået 5 måneder ! Det er for galt. Nå, men der er sket en hel del siden sidst. Det vigtigeste er jo nok at min dejlige kæreste, Ayoe, er gået hen og blevet gravid – og heldigvis så er det mig der er den skyldige. 😉 Så omkring den første august 2006 bliver jeg altså far ! For dem der ikke ser mig så tit og ikke har snakket med mig i lang tid, så kan i måske læse det her. Tilmed kan i se et billede af den lille her.

Så det glæder jeg mig rigtig meget til. 🙂

Så kan han lære det !

TV2 skriver i dag, at legetøjs-præsidenten George W. Bush i går blev låst inde i forbindelse med en pressekonference i Beijing. Dubiah’s kløgtige kommentar var; “Jeg forsøgte at flygte – det virkede tilsyneladende ikke”. Jeg forundres gang på gang over dette menneskes denne persons eksistens’ evne til at udtrykke det absolut åbentlyse. En god lærestreg efter min mening – nu ved han da hvordan andre mennesker har det, når de bliver låst inde. Kunne Dubia så bare blive låst inde på livstid, uden mulighed for rettergang, så ville det være helt i top.

Dubia is locked up

Foto: Scanpix

Så kan du lære det bøllemis.

P.s.: Dette skal udelukkende ses som et udtryk for mine egne holdninger – CIA, FBI og Secret Service; I er velkomne til at henvende jer, hvis i da ikke også er enige.

Et modigt menneske er væk

Torsdag den første december 1955, gjorde en lille sort dame en stor forskel, da hun nægtede at rejse sig op for en hvid mand i en bus i Montgomery, Alabama. Dette første til en storstilet blokade af Montgomerys busser, og var starten på de sortes kamp for ligestilling i det amerikanske samfund.

I dag, næsten 50 år efter, er Rosa Parks gået bort, 92 år gammel. Rosa Parks levede ikke forgæves, men der er lang vej endnu. Mit håb er, at der med Rosa’s død, gøres plads for endnu en kæmper, der tør sætte sig op mod overmagten og at vi dermed kan komme lidt nærmere lighed i vores samfund.

Spillenes spil er tilbage !

Orv, hvor blev der brugt mange nattetimer på det spil, og nøj hvor blev der drukket meget kaffe og røget mange smøger dengang. Grafikken var absolut ikke i top, men gameplayet var det bedste der nogensinde var lavet. Jeg kan stadig henfalde til at fyre op under det gamle styresystem bare for at spillet dett spilles spil.

Hvad i alverden taler han om, tænker i nok. Jeg taler naturligvis om Sid Meiers ‘Civilization’ fra 1992 – et spil jeg aldrig er blevet træt af. Det eneste jeg er blevet træt af, er at skulle starte Classic environment på min Mac for at spille det. Men det er slut nu !

En gruppe Open Source programmører er nemlig gået sammen om at lave en gratis, og opdateret version af Civilization. De startede med klassikeren Civ 1 (2D udgaven) og er nu færdig med de første versioner af Civ 2 (en anelse mere 3D end Civ 1). Det bedste af det hele er næsten at den distribueres til både Mac OS X (dog kun Tiger), Amiga, BSD, Windows og Linux ! Alle kan dermed have glæde af spillet, som nok aldrig går af mode.

Ydermere har de kvikke gutter også tilføjet MultiPlayer mode, så man kan spille mod hinanden over nettet – et godt spil er netop blevet endnu bedre.

Spillet, som i Open Source udgaven hedder FreeCiv, kan downloades her: http://www.freeciv.org/index.php/Download

BLiver man glad for spillet (igen) så kan ma bidrage med TileSets og andet via hjemmesiden.

Jeg tror jeg vælger tryk på anden stavelse !

“Den danske sproget er en majet mærkelig en.”

Ovenstående bemærkning kommer til tider til udtryk når man læser en overskrift på et af de danske nyhedsmedier. Først forstår man ikke helt hvad det hele handler om og synes det er meget meget, mærkeligt. Kort tid efter opdager den sprogkyndige nok, at det blot er en stavelse der skal have et andet tryk.

Sådan en oplevelse havde jeg i dag – og sandt at sige, så blev artiklen faktisk meget mere morsom, da jeg valgte at sætte tryk på anden stavelse i ordet ‘kanon’. Et ord som kan betyde forskellige ting, hhv. en måde at synge på, et våben eller en rettesnor. Tillige bøjes alle betydninger ens, så det er nok ikke nemt for den ikke-sprogkyndige at forstå nedenstående artikel:

Kritik: Kulturministeren misbruger kanon

Taget lidt ud af sammenhængen bliver misforståelsen endog meget morsom, men også lidt foruroligende:

Eksperternes kritik kommer efter de konservatives landsmøde i weekenden, hvor kulturminister Brian Mikkelsen sagde, at kanonen kunne bruges mod muslimer med ”middelalderlige normer”

Middelalderligt må vi da nærmere kalde det, når vi danskere påtænker at bruge kanoner mod muslimer. Det er da en hetz mod religioner og må da stride mod rascismeparagraffen?

Brian Mikkelsens udmelding har chokeret flere af de personer, der er i gang med at sammensætte en kanon.

Hvordan er det muligt at chokere våbenmagerne?

Også formanden for kanonudvalgene, professor Jørn Lund, vender ryggen til kulturministerens plan om at lave ”lærebogsmateriale i danske værdier”.

Ud med lærebøger og værdier, ind med det tunge skyts !

Brian Mikkelsen mener stadig, at kanonen er et tilbud til alle danskere – også muslimerne.

Okay – så længe vi kan rette kanonerne mod hinanden, så er det vel også okay.

Lad dette være en opfordring til de danske journalister om ikke at bruge alt for mange tvetydige ord i deres publikationer.

Let’s hunt for treasure, Terrance !

Noget kunne tyde på at skattejagt kan betale sig. Der går mange historier om skjulte skatte fra kolonitiden, gemt af pirater og mytterister, og mange af dem er helt sikkert blot vandrehistorier. I en tid, hvor næsten 100% af jordens overflade er besøgt og minutiøst gennemgået for alt af værdi, kan det dog stadig lade sig gøre at støde på en guldgrube. En sådan guldgrube stødte en ekspedition på, da de var på skattejagt på øen Juan Fernández island, bedre kendt som ‘Robinson Crusoe island’, ud for Chile. 15 m under jordens overflade stødte de, angiveligt, på verdens største skat. Ikke mindre end treds tønder guldmønter og inkasmykker, til en værdi af ca. 60 milliarder danske kroner. Skatten skulle angiveligt være et levn fra den spanske kolonitid og deres plydninger af det sydamerikanske kontinent.

Hele nyheden kan læses her