Skjul indhold baseret på brugerens IP Adresse

Her til aften var jeg til WordPress meetup i Viborg hvor fik jeg stillet et spørgsmål om hvordan man kunne skjule dele af et site for almindelige brugere så man kunne udvikle nye features på et live-site uden at gøre det public med det samme.

Så det tager vi lige op her på bloggen, der er to metoder:

 

Skjul hvad som helst med kode i templaten:

Den nemmeste måde er at bruge en if-sætning direkte i templaten, hvis du f.eks. vil skjule en knap så den kun vises for en bestemt bruger:

Hvis du gerne vil kunne matche på flere forskellige ip adresser kan du f.eks. gøre sådan her:

Og filen test.ip indeholder så den liste af ip adresser der skal gives adgang:

Ovenstående kan også bruges i samarbejde med det

Skjul menu-punkter ud fra eksempelvis IP Adresser: 

Der findes et godt lille plugin med det mundrette navn “Menu Items Visibility Control“, den giver dig et “Visibility”-felt i menu editoren hvor du kan indsætte en stump php-kode der afgør hvorvidt menupunktet skal vises:

skaermbillede-2016-11-30-kl-03-05-14

Det kunne f.eks. være “true” eller “false”, eller “1==2”, måske ikke så brugbare eksempler, men det kunne f.eks. også være:

skaermbillede-2016-11-30-kl-03-07-07

Hvilket bevirker at menu-punktet “Forside” kun virker når man kommer fra den specifikke ip adresse, hvis du gerne vil bruge en liste istedet kan du indsætte den kode jeg brugte i ovenstående eksempel, i functions.php eller et tilsvarende sted:

Derefter skriver du blot “is_allowed()” i visibility feltet.

Håber det kommer dig til nytte ;-D

Sikkerhedsfejl i WordPress

WordPress er i sikkerhedsbranchen kendt som en blanding af et mareridt og en syg joke, primært fordi at WordPress er enten direkte eller indirekte skyld i at rigtig mange websites bliver hacket.

Meget af det skyldtes godtnok temaer, plugins og dovne admins, men det her er altså et eksempel på en hjerneblødning fra udviklernes side.

wordpress

WordPress’ login rutine lækker information, navnligt kan du bruge den til at gætte brugernavne med, idet fejlbeskeden varierer alt afhængig af om du har tastet brugernavn eller password forkert, som du kan se herover.

Det betyder at du kan starte med at prøve en lang liste af brugernavne, hvor af “admin”, “administrator” osv. typisk vil være det første, men at køre en liste over alle danske navne igennem vil f.eks. ikke tage længere end en dags tid. En af konsekvenserne heraf er at WordPress rigtig ofte er udsat for såkaldte bruteforce angreb, dvs. angreb hvor en angriber simpelthen prøver samtlige ord i ordbogen som passwords.

Hvordan løser vi det så?

Jo jeg har fundet et plugin, WordPress Login LockDown, og ved et hurtigt gennemsyn opfylder det mine minimumskrav til plugins:

  • Det virker 😉
  • Det er aktivt udviklet, i skrivende stund er sidste opdatering 3mdr gammel, og den er testet med den aktuelle WordPress version.
  • Der tigges ikke om penge eller donationer på upassende måder, der indsættes et link på login siden, men dette kan dog slåes fra.
  • Kildekoden er letlæseligt og der er ikke umiddelbart gjort forsøg på at skjule noget. (Ja jeg har læst kildekoden.)

Opsætningen er nem, jeg anbefaler disse 3 tjekbokse udover default indstillingerne:

wordpress1

Grunden til at jeg skjuler credit-link er at jeg ikke ønsker at fortælle en potentiel angriber hvilke plugins jeg kører, da det er en viden der af en potentiel angriber kan misbruges.

Derudover får du beskyttelsen mod bruteforce-angreb, hvis du er god til at glemme dine kode kan du roligt sætte tallet lidt op, jeg vil foreslå max 10 forsøg.

Herefter ser et ugyldig login, uanset om det er brugernavn eller password der er forkert, således ud:

wordpress2

Nok snak … se så at få det installeret! 🙂

Skype er retarderet – det var dråben.

Jeg har længe været modstander af Skype, men jeg har brugt det fordi det var “det bedste der fandtes”, på trods af at vores data bliver  opbevaret i USA og at der uden tvivl bliver afleveret en kopi til NSA hvis de ønsker det.

Men efter Microsoft opkøbte forretningen er det begyndt at gå ned af bakke, jeg har på sidelinien observeret et fedt produkt langsomt falde fra hinanden. Her for et par uger siden fik jeg en besked om at min account var blevet hacket, jeg fik ikke mere info end det og mailen i sig selv så ud til at være spam – så jeg slettede den.

Men et par dage efter opdagede jeg at jeg ikke kunne ringe ud fra min Skype account mere, jeg gik ind på websitet for at forsøge at logge ind … men blev straks stillet videre til en Microsoft login formular, som krævede et login i formen “konti@domæne.dk” og mit Skype login ér og har altid været af formen “konti” – så jeg kunne ikke logge ind.

Da jeg deaktiverede Javascript kunne jeg dog få lov at bruge den gamle formular, og hvis jeg aktiverede Javascript igen efter formularen var færdig med at loade kunne jeg logge ind. Jeg konkluderede at Skype var noget amatør-juks og arbejdede videre.

Så idag her til morgen opdagede jeg at min Skype-account havde sendt spam ud, og efter jeg brugte tricket med at deaktivere Javascript kom jeg ind på min konto. Jeg gav mig straks til at lede efter en sikkerheds-log for at få bekræftet log-ind fra ukendte ip-adresser, dette lykkedes ikke og efter en snak med Skype-supporten blev jeg ikke klogere, personen forstod ikke problematikken og syntes derudover lige at jeg skulle svines lidt til.

Jeg står nu i en situation at jeg er blevet kompromitteret uden at kunne efterforske dette. Det er dråben der for mig får bægret til at flyde over. Jeg vil derfor gå igang med at afvikle min Skype-konto, jeg har ikke fundet et  Instant-messenger-alternativ til Skype så jeg ved ikke hvad jeg skifter til.

Men jeg kan kontaktes på tlf. +45 41 28 28 08 (Evt. via Signal) og/eller mikkel@mikjaer.com (GPG Signatur) jeg foretrækker disse kommunikationformer hvis vi skal snakke seriøst og/eller fortroligt. Hvis du bare har lyst til at sige hej og pludre er du også velkommen på ovenstående, men i tillæg til dette kan jeg også kontaktes på Facebook eller Twitter hvor du er velkommen til at følge/friende mig.

Har du forslag til en god fri, sikker og åben instant messaging platform, gerne med mulighed for skærmdeling, og selv-hosting … så hører jeg meget gerne fra dig.

Apache2 mod_log_forensic

Er du også træt af at hackere roder rundt på dit webhotel? Nåh ikke … nå men jeg har altså et par kunder der koder cirka ligeså godt som smeden laver konfekture … og det har været lidt en udfordring at finde ud af hvordan hackerne kommer ind når man ikke kender koden. I den situation er det rart at kunne genskabe de requests en angriber laver … og der kommer mod_log_forensic ind i billedet, det er et modul til Apache der logger hele requesten.

Rediger /etc/apache2/sites-enabled/000-default og sæt flg. ind i VirtualHost blokken:

og ret:

til:

Afslut med:

Tast nu serverens ip i din browser og refresh et par gange, og tjek så din accesslog:

Her ser du din almindelige log-linie, med med et forensics id tilføjet. Første del af forensics id’et (11709) er process-id på den apache process der har serviceret klienten. Forensics id kan bruges til at slå op i forensics loggen med:

Har har du både post og get variabler, http headers, coockies, url … ja generelt alt hvad du skal bruge for at kunne genskabe requesten.

Lige pt. anvender jeg det bare som beskrevet her, men jeg har overvejet at koble noget automatik på der automatisk detekterer og logger hackerangreb.

Tripwire

Her er en quick’n’dørty guide til at få Tripwire op at køre og monitorere et websites webdir … sådan just-in-case du forventer at få ubudne gæster, så er det rart at vide hvad de har pillet i 🙂

Først installeres softwaren:

Under install skal du indtaste (oprette) password til den krypterede database.

Så redigerer du tw.pol og kører

efterfulgt af

Begge gange bliver du bedt taste din kode.

Du kan efterfølgende, for at teste, køre

Der skulle også være sat et cronjob op til at køre den én gang om dagen.

Her er et eksempel på en config fil:

 

Sådan bygger du en ny kerne på Debian og Ubuntu Linux

Ja det er faktisk ret simpelt men jeg havde selv brug for at få det opfrisket da jeg rendte ind i et USB netkort som havde den mest bizare fejl jeg nogensinde er rendt på … netkortet døde når jeg loggede ind på maskinen via ssh på det ramte netkort, og f.eks. cat’ede en logfil.

Jeg talte med nogle forskellige folk og vi kom frem til at det nok var smart at prøve den nyeste kerne og se om ikke problemet var løst, der var et par bugs i driveren som var blevet rettet men som Debian ikke havde fulgt op på.

Ideen er at vi ender med en .deb pakke som vi efterfølgende kan installere på flere maskiner, start med at hente linux kernen:

Der skal bruges lidt pakker til arbejdet:

Pak tarballen ud og hent config fra dit nuværende system, dette bevirker at alle compile-indstillinger som debian folkene har valgt at køre med automatisk overføres til din kommende build:

Derefter køres config processen:

Jeg ændrede ikke noget, jeg gemte blot config som den var … jeg er ikke klar over om det ændrede noget, men umiddelbart vil jeg forvente at evt. nye parametre vil blive tilføjet i den process om nødvendigt, og hvis du har behov for at slå noget til/fra giver det jo sig selv 🙂

Selve build processen kører i ét snuptag (-j 2, skal ændres til antallet af kerner på det system der kompillerer kernen):

Revisionen bestemmer du selv, og er primært til internt brug. Så hvis du f.eks. bygger en kerne til alle dine webservere kunne du kalde den 1.0-web og så rulle versionsnummeret hvergang du bygger en ny kerne.

Lav en kop kaffe, se et afsnit af Dr. who eller hvad du nu har lyst til for det tager lidt tid, når den er færdig har du to .deb filer som du kan installere:

Reboot og nu skulle din nye kerne gerne boote automatisk.

Godnat, og sov godt 🙂

DSB / Securitas siger “IT Sikkerheden er i orden”

Den første automat-reaktion på sådan en udtalelse ér og bør altid være “BULLSHIT!” – sådan en sætning kan ikke stå alene den bør altid efterfølges af en eller anden form for “Fordi …”-sætning.

Det gør den skam også i det her tilfælde, problemet er bare, at argumentet er “Fordi TDC Siger det” og det de blandt andet siger er, at den telefon vagterne er udstyret med kun bruges til at tage billeder af passagernes ID med og, at det efterfølgende opbevares på én central server som kún DSB og det Svenske Politi får adgang til.

For de af jer der ikke helt er med vil jeg lige tillade mig, at opsummere, den Svenske stat har indført  ID Kontrol ved grænsen til Danmark, de politiske og samfundsmæssige omstændigheder herved behandler jeg ikke i dette indlæg, det betyder også, at blandt andet DSB har fået pålagt transportør ansvar – hvilket er en mekanisme der gør, at et transport selskab der flyver / kører / sejler en person til et andet lands grænse også er forpligtet til, at transportere denne person tilbage hvis personen bliver afvist ved grænsen.

Det er blandt andet den mekanisme der gør, at flygtningene ikke bare tager et fly til Danmark, men begiver sig ud på, at krydse middelhavet i hjemmelavede både og andet skidt.

DSB Håndterer sagen ved at kontrollere folk inden de får lov at stige på toget, dette har de ansat Securitas til, og en af de to har så valgt at TDC skal lave et system så de kan affotografere folks ID så de senere kan bevise. at de faktisk har tjekket personen.

Problemerne er at hverken TDC eller DSB har nogen sønderlig god track-record ifht. IT og da slet ikke IT Sikkerhed, når de pointerer at, der er styr på tingene fordi data er krypteret så demonstrere de samtidig en enorm uvidenhed mht. IT Sikkerhed, derudover beder de os stole på, at de siger sandheden når de påstår, at telefonerne ikke bruges til andet end og at, billederne ikke opbevares på telefonen.

Det jeg vil vide før jeg er tilfreds ér:

  1. Hvilken uafhængig trediepart har bekræftet, at det foregår som de påstår? At billederne kun er på telefonen i kort tid og at telefonen ikke bruges til andet?
  2. Hvad har de gjort for at sikre sig at fremmede magter ikke har bagdøre i den telefon og den server/serversoftware de benytter?
  3. Hvad er de præcise procedurer for at nogen får adgang til data? Og hvem kontrollerer at disse procedurer bliver overholdt?

Jeg kender, med rimelig stor sandsynlighed svarene: 1: ingen, 2: intet, 3: “Hvad mener du?”, Ingen!

Og dét er dét der bekymrer mig!

Mén når det så er sagt, så er sikkerheden formodentligt ligeså god som resten af det offentlige og dine personlige data er i lige god hænder hos TDC som de er hos CSC, og det Svenske politi har efter min bedste vurdering (*host*hackersagen*host*) en væsentlig bedre forståelse for IT Sikkerhed end den danske.

Så bør du være harm og fornærmet over det her tiltag og den mangel på respekt der udvises, ja gu bør du det!

Bør det afholde dig fra at rejse med DSB til Sverige … nej, du bliver i forvejen registreret i hoved og røv af en flok inkompetente mennesker der hverken respekterer dig eller dine rettigheder.

Velkommen til Danmark anno 2016 …

Pound Loadbalancer Quick Reference

I just stumbled upon this thing at a clients setup … so im in the process of learning this.

Status of the Load Balancer:

To disable 192.168.1.21 :

To enable:

 

How to load SSH Keys from FAT32 / Bypass permission requirement in SSH

Mounted FAT devices in UNIX System does not support permissions, hence SSH gives this warning:

First you should take a second to think about the reason for this warning, once you did that you can bypass it like this:

Have fun kids! 😉

SSH Keys på en USB Stick (OsX)

Jeg har strikket to små shellscripts sammen der kan hhv. loade og unloade mine ssh nøgler fra en USB Stick på min OSX Maskine.

load_ssh_private.sh:

unload_ssh_private.sh:

Filerne skal ligge i samme mappe som din id_rsa fil og du skal chmod +x’e begge filer, derudover skal du vælge at åbne dem med programmet “Terminal” og hvis du ønsker at scriptet skal lukke terminal vinduet efter det er udført skal du sætte det op i indstillingerne for terminal programmet.

Hvis din USB Stick kører Fat32 (evt. fordi du også bruger den på Windows eller Linux) se her: http://www.specialhosting.dk/how-to-load-ssh-keys-from-fat32-bypass-permission-requirement-in-ssh/

Vi mangler et smart slogan ;-)