You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2014-12-21 00:22:40

derstefan
Member
From: OpenTopoMap
Registered: 2010-03-28
Posts: 504
Website

renderd gegen Vandalismus absichern

Renderd stellt über mod_tile eine Schnittstelle über http(s) zur Verfügung, die den Server lahmlegen kann. Denn mit dem Aufruf /dirty wird eine Kachel in die Renderliste aufgenommen. Besonders Metatiles bei kleinen Zoomlevels können durchaus mal den gesamten Arbeitsspeicher benötigen. Fordert ein Nutzer gleichzeitig mehrere Kacheln mit dirty an, kann damit auch der Swap überlaufen und renderd verabschiedet sich. Deshalb lässt man kleine Zoomlevel normalerweise nicht über die "tile expiry" ablaufen und damit neu rendern, sondern erledigt dies z.B. nur wöchentlich und zeitlich verteilt.
Bei der Weiterentwicklung eines Kartenstils ist "dirty" durchaus hilfreich, wenn man die Änderungen komfortabel über seinen Browser neu rendern möchte.

Kennt jemand das Problem und eine Lösung? Vermutlich muss man im Quellcode von mod_tile das "dirty" auf einen nur dem Serverbetreiber bekannten String ändern.

Ein ähnliches Problem beobachte ich beim Neustarten von renderd, nachdem man Änderungen am Kartenstil getätigt hat (service renderd stop; service renderd start): Manchmal läuft direkt danach der Speicher sehr voll, als ob wieder kleine Zoomlevel gerendert werden, obwohl diese ja nie "expiren" sollten...

Offline

#2 2014-12-22 09:21:45

gormo
Member
Registered: 2013-08-01
Posts: 2,119
Website

Re: renderd gegen Vandalismus absichern

Ich hab keine Erfahrung mit renderd/mod_tile, sondern nur mit Apache generell. Mein Tipp wäre mit einer htaccess-Direktive den Zugriff auf /dirty nur auf bestimmte IP-Adressen zu beschränken.

edit: Mh, könnte eventuell nicht klappen, weil /dirty ja keine Datei ist. Müsste man ausprobieren.

Last edited by gormo (2014-12-22 09:22:38)


OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)

Offline

#3 2014-12-22 10:48:52

woodpeck
Member
Registered: 2009-12-02
Posts: 1,210

Re: renderd gegen Vandalismus absichern

derstefan wrote:

Renderd stellt über mod_tile eine Schnittstelle über http(s) zur Verfügung, die den Server lahmlegen kann.  ...
Bei der Weiterentwicklung eines Kartenstils ist "dirty" durchaus hilfreich, wenn man die Änderungen komfortabel über seinen Browser neu rendern möchte. ... Kennt jemand das Problem und eine Lösung? Vermutlich muss man im Quellcode von mod_tile das "dirty" auf einen nur dem Serverbetreiber bekannten String ändern. ... (service renderd stop; service renderd start): Manchmal läuft direkt danach der Speicher sehr voll, als ob wieder kleine Zoomlevel gerendert werden, obwohl diese ja nie "expiren" sollten...

Was Du meinst, ist nicht "Vandalismus", sondern ein "Denial-of-Service-Angriff". Dazu braucht es meistens nicht mal /dirty, es reicht schon das Abrufen sehr vieler Tiles auf hohen Zoomstufen in nicht vorgerenderten Gegenden.

Änderungen am Source sind nicht nötig, stattdessen kannst Du über die Apache-Config die Zugriffe ganz verbieten

    RewriteEngine on
    RewriteRule ^/.*/status$ / [F]
    RewriteRule ^/.*/dirty$ / [F]

oder ggf. auch mit geeigneten <Location>-Einstellungen den Zugriff nur für bestimmte IP-Nummern oder authentifizierte User zulassen.

Für das Ausprobieren eines neuen Stils empfiehlt sich statt des Hantierens mit /dirty eher so etwas wie http://svn.openstreetmap.org/applicatio … livetiles/ - das arbeitet komplett ohne vorgerenderte Tiles, und wenn Du willst, kannst Du das in einen passwortgeschützten Bereich Deines Webservers legen.

Unerwünschte Render-Requests können auch mit einem fehlenden planet-import-complete zu tun haben (ggf. mal im Apache-Errorlog nachschauen, dort loggt mod_tile, wenn es neue Requests macht).

Bye
Frederik

Offline

#4 2014-12-22 11:39:54

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,681
Website

Re: renderd gegen Vandalismus absichern

Moins,

derstefan wrote:

Kennt jemand das Problem und eine Lösung? Vermutlich muss man im Quellcode von mod_tile das "dirty" auf einen nur dem Serverbetreiber bekannten String ändern.

Möglicherweise hilft (minimalinvasiv) ein Bandbreitenlimitierungs-Modul (mod_bw oder ähnlich), mit dem man die Zahl der Aufrufe mit /dirty je IP-Adresse und Zeiteinheit beschränkt?

Gruß Wolf


Fragen zu meinen Posts via Mastodon oder per Twitter-DM.

Offline

#5 2014-12-22 14:40:38

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: renderd gegen Vandalismus absichern

Ich halte auch die Apache-Config für eine passendere Stelle, den Zugriff zu beschränken. Falls es aber mod_tile sein soll, dürfte die Zeile 1374 in mod_tile.c das richtige Stück sein, um statt /dirty den Geheimcode /kartoffelsalat zu verwenden:

if (!strcmp(option, "status")) r->handler = "tile_status";
else if (!strcmp(option, "dirty")) r->handler = "tile_dirty";
else return DECLINED;

ersetzen durch

if (!strcmp(option, "status")) r->handler = "tile_status";
else if (!strcmp(option, "kartoffelsalat")) r->handler = "tile_dirty";
else return DECLINED;

Grüße, Max (der das aber nicht ausprobiert hat)

Last edited by maxbe (2014-12-22 14:42:13)

Offline

Board footer

Powered by FluxBB