Áprilisi tréfa IT-módra

Tegnap volt április elseje, a bolondok napja. Ezen a napon minden évben ki szoktunk találni a kollégákkal valami mókát, amivel megviccelhetjük egymást, és főleg azokat a munkatársainkat, akik nem IT-területen dolgoznak. :)

Idén egy olyan ötlet merült fel, hogy egy népszerű hírportál címlapjára kiteszünk egy (ál)hírt, ami első blikkre talán hihetőnek tűnik, de ugyanakkor a meglepetés erejével hat és olyan témáról szól, ami cégen belül mindenkinek érdekes lehet.

Rendszergazdaként engem ért a megtiszteltetés: egy olyan megoldásra volt szükség, amivel minél transzparensebb és hitelesebb módon tudjuk megoldani, hogy a kollégák a módosított tartalmat lássák a böngészőben.

Először is, nézzük meg, milyen lehetőségek állnak rendelkezésre egy ilyen hack megvalósítására:

  • Apache mod_rewrite + mod_proxy használata DNS-hamisítással - a módosított tartalmat (kép, címlap, cikkoldal) egy saját szerverről szolgáljuk ki, az összes többi tartalmat pedig proxyzzuk az eredeti szerver felé. Így azt a látszatot keltjük, hogy a böngésző a "valódi" oldalt jeleníti meg, a külső linkek simán működnek, és nem kell a teljes site-ot letükrözni.
  • HTML-kód manipulálása Squid-del és ICAP használatával (http://icap-server.sourceforge.net/) - ez is jó megoldás, de extra konfigurlást igényelt volna, és sajnos nem volt annyi időnk, hogy egy ilyet beállítsunk.
  • Teljes mirror készítése - minden tartalmat lokálisan szolgálunk ki, egy saját szerverről. Ez elég helyigényes megoldás, és körülményes is (csak statikus tartalom tükrözhető, a linkek egy része nem fog működni stb).

Hosszas kísérletezgetés után az alábbi megoldás bizonyult a leghatékonyabbnak (és a leggyorsabban kivitelezhetőnek, mert ez is szempont volt):

  1. Egy apache2-t futtató webszerveren hozzunk létre egy új vhostot, a neve legyen például "indexfake.valami.hu". A konfigban vegyük fel Serveralias-ként a hackelt site eléréseit (index.hu, www.index.hu).
  2. Tükrözzük le az eredeti site nyitóoldalát:

    wget -p -k --domains="index.hu" --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) Firefox/3.6.16" http://index.hu/

    Ez le fogja húzni az összes szükséges komponenst (JS/CSS-kódok, képek) ahhoz, hogy a site hibátlanul jelenjen meg lokálisan megnyitva - természetesen csak statikus formában, a szerveroldali dinamikus tartalmak nem lesznek így elérhetők.

  3. Tükrözzük le egy cikk oldalát is, ebbe fogjuk majd beilleszteni az álhír szövegét:

    wget -p -k --domains="index.hu" --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) Firefox/3.6.16" http://index.hu/gazdasag/magyar/2011/04/01/mi_kerul_ezen_a_kenyeren_300_forintba/

  4. Szerkeszzük át a címlapot és a cikk oldalát - cseréljük a címlapon a hír címét, szövegét és a képet, majd módosítsuk a linkeket is - ezt érdemes úgy megoldani, hogy olyan URL-en legyen elérhető a cikk, ami illeszkedik a site URL-sémájához, ezzel is fokozva az illúziót.
  5. Töltsük fel a módosított fájlokat a saját webszerverünkre, és állítsuk be az alábbi mod_rewrite szabályt a docroot-ra vonatkozóan:

    <directory /www/indexfake.valami.hu/www>
    allowoverride none
    options -indexes -includes +FollowSymLinks
    Order allow,deny
    Allow from all
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/$
    RewriteCond %{REQUEST_URI} !^/index\.html$
    RewriteCond %{REQUEST_URI} !^/gazdasag/magyar/2011/04/01/zuckerberg_magyarorszagon.*$
    RewriteCond %{REQUEST_URI} !^/2030576_6c3a5fa8959d0d68707f6b5e38ab8839_wm.jpg$
    RewriteRule ^(.*)$ http://index.hu/$1 [P]
    </directory>

    Ezzel a kis trükkel a módosított tartalmakat a saját szerverünk fogja kiszolgálni, minden mást pedig proxyzni fog a valódi szerver felé. Ha a módosított cikk egy alkönyvtárban van, akkor a .* regex-szel megadhatjuk, hogy a könyvtár alatt minden tartalmat lokálisan szolgáljon ki a szerver (vagyis, hogy ne proxyzza a requesteket).
  6. A saját DNS-szervereinken vegyük fel a site domainjeit, mint authoritatív zónák, az A rekordokat pedig irányítsuk a saját webszerverünk IP-címére.
  7. Töröljük a DNS-gyorsítótárat a szervereken, ezáltal a módosítás azonnal életbe fog lépni.
  8. Fontos, hogy a webszerver ne a belső DNS-kiszolgálókat használja, máskülönben nem fog működni a proxyzás! Ha a szerver a belső hálózaton van, adjuk meg neki az ISP névszervereit a tréfa idejére vagy vegyük fel manuálisan a domainekhez tartozó "hivatalos" IP-címet a hosts fájlba.

Tesztelés gyanánt navigáljunk rá a hackelt site-ra egy belső hálózaton lévő gépről. Ha mindent jól csináltunk, akkor a site a saját webszerverünkről fog betöltődni, látszódni fognak a módosítások, és a linkek is kattinthatóak lesznek.

Hozzászólások

lájk
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.1 | 2.6.34.1-janos

subscribe, respect, hűdejó.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Akkor ezért volt az a nagy felhajtás...? :-))) Basszus, ha tudom...

http://www.kirowski.hu/#bemutatkozas/cegunkrol

"Digitális szemléletű kommunikációs ügynökség, jelentős kommunikációs igényű ügyfelek meghatározó partnere idehaza és a régióban, vonzó munkahely a tehetségek számára."

Nálunk a Facebook lételem, munkáink jelentős része kapcsolódik hozzá, illetve úgy általában a social mediához.

A tréfa egyébként bejött, de sajnos hamar fény derült az igazságra egy (egyébként szándékosan) "ottfelejtett" e-mail cím miatt.

Hogy megijedt volna néhány ismerősöm! XD Ez nagyon jó!
---
A logika a legélesebb emberi fegyver.

O Fortuna! Velut luna! Statu variabilis!