Category: Software

My Email Communications Security Assessment (MECSA)

Forleden var jeg i gang med at opsætte DANE på min mail server, og skulle lige teste resultatet. Fandt så My Email Communications Security Assessment projekt, og det skulle selvfølgelig testes.

Resultatet var 5/5 i alle tre tests.

Der testes om;

  • ens mails bliver beskyttet mod at blive læst og ændret mens de er på vej til modtager.
  • Phishing og falsk afsender, hvor andre forsøger at efterligne mails som om det er kommet fra nogle andre.
  • og tjek af indgående mail beskeder om de er blevet ændret på vej ind.

Postfix FROM address regexp block

Kiggede efter en måde hvorpå jeg kunne afvise spam fra nogle domæner, men uden at specificere hvert enkelt af dem — da der var tale om et utal af domæner. Det som de har tilfælles, ud over spam, var at de har de nye TLD, hvor de typisk er 4 karakterer eller længere. F.eks. .blog .faith .love .website. Så jeg havde brug for en måde at blokere disse, men uden at anføre dem enkeltvis på block listen. Tænkte, REGEXP burde være sagen til sådan noget. Men har aldrig brugt det på min server før, så var lidt på bar bund. Men heldigvis viser det sig at Postfix godt kan lege med REGEXP. Fik tilføjet nedenstående i min main.mf fil, så postfix laver en eller flere checks på afsender adresse.
check_sender_access regexp:/etc/postfix/from_block
Efterfølgende fik jeg oprettet from_block filen der indeholder et REGEXP der passer til det jeg ønskede.
/\.[a-zA-Z0-9]{4,}$/ REJECT
Og så var det egentlig det. Man skal lige genstarte eller reloade postfix og så er det aktiveret. I from_block filen, kan der så tilføjes flere linier så de passer til de ting man har lyst til. Jeg har f.eks. en undtagelse for .info domæner.
/\.info$/ ACCEPT
Denne har jeg lagt, før REJECT reglen, så disse domæner bliver accepteret.

Hvordan tester man så om REGEXP regler virker efter hensigten?

Det kan man gøre ved at køre postmap kommando med nogle parametre.
postmap -q "From: spam@spam.website" regexp:/etc/postfix/from_block

MySQL optimering

Jeg har i mange år leget og forsøgt at optimere min MySQL server og web server, uden rigtigt at forstå hvad alle de indstillingsmuligheder gjorde ved mit setup. Har prøvet et par værktøjer til optimering, som skulle eftersigende hjælpe med indstilling og fin justering. Men det var ikke lige til for meget hjælp. Det har hjulpet på nogle område, men det har resulteret i at min MySQL server krævede for meget RAM.

Min server har kun 512Mb RAM, og det kan være mine fin justeringer har gjort det at MySQL processer var blevet optimeret på nogle områder, men RAM forbrug var steget for meget, så der blev swappet til disken.

Men for et par uger, fandt jeg frem til MySQL Performance Tuning Primer Script som har på en mere menneskelig vis vist data og anbefalinger, for hvad der skal foretages og fin justeres. Og det kan mærkes nu. Så hvis du sidder og skal optimere din MySQL server, så er det måske det her du skal prøve.

 

WD MyBook World Edition firmware upgrade

Der er mange raporter fra brugere af WesternDigital My Book World Edition II som ikke kan bruge deres enhed for backup sammen med TimeMachine på Mac OS X 10.7 (Lion).

WD har udgivet en firmware som fikser denne problem, men åbenbart har de glemt en lille detaljer. Man kan ikke uploade firmwaren på enheden. Jeg har en ven som i flere uger har hentet firmware fra WD’s hjemmeside, men han kunne ikke opdatere sin enhed. Så ringede han til mig, for at se om jeg kan hjælpe. Efter et par forsøg, så det ud til at upload af firmware blev afbrydt, inden den overhovedet begynder.

Så gik jeg på nettet for at en finde løsning. Tænkte der måtte være nogen med en løsning. Og der var mange “løsninger”, ingen af dem virkede dog. En løsning er at opdatere/indtallere netatalk service po enheden, gennem SSH. Det gjorde vi, og TimeMachine virkede. (http://mybookworld.wikidot.com/netatalk2-2-on-whitelight)
Der er dog en anden problem med denne løsning. Detter ændrer kun i servicen til kommunikation, men opdatere ikke firmware, som indeholder sikkerhedsmæssige opdateringer. Min vens firmware var fra 2009, så der er sket en del ting siden, men det var out of reach for ham. Derfor gravede jeg lidt mere.

Jeg så at det var PHP som er backend for webinterface, of derfor ville jeg kigge lidt på indstillinger af PHP. Havde en mistænke om file upload size variablen. Tjekke filstørrelse af firmwaren. Den er på 55MB. Med SSH loggede jeg mig ind på My Book, og tjekkede værdier i /etc/php.ini på enheden. Sjovt nok, det var her jeg fandt fejlen og løsningen. Der kan ikke uploades filer som var større end 48MB. Gik straks i gang med at ændre /etc/php.ini værdier.

Så de gamle værdier her under…

  • upload_max_filesize = 48M
  • post_max_size = 48

Er blever erstatet med disse…

  • upload_max_filesize = 70M
  • post_max_size = 70M

Efter en genstart, så ændringer kunne træde i kraft, kunne vi uploade og opgradere til den nyeste firmware. Hvor efter, alt fungerede som det skal. Det ser simpelt nok ud, men dette er ikke noget for almindelig brugere, desværre. Men det er stadig den mest rigtige løsning. Man, det kan være at WD nu kender fejlen, og udgiver en ny fiks, som fikser denne begrænsning, så folk kan opdatere til den nyeste version.

Detaljer for terminalen

Detaljeret kommando beskrivelse info, om ændringen af /etc/php.ini, man skal også bruge vi tekst editor, som ikke er helt så bruger venligt. 🙂
Sørg for at SSH adgang er aktiveret i webinterface.

  1. Ã…ben terminalen og skriv ssh root@<IP_TIL_DIN_ENHED> den vil spørge til password, dette er som standard welc0me. (dette et nul og ikke o)
  2. vi /etc/php.ini — for at åbne filen.
  3. tryk på ESC efterfølgt af i — for at aktivere indsættning/insert af tekst
  4. efter man har fortaget ændringer tryk på ESC igen, for at deaktevere indsættning.
  5. :w for at gemme ændringer
  6. og til sidste :q for at lukke filen og tekst behandligsprogram.

Nu skal MyBook genstartes og så er den ellers klar til opgradering af firmware.

Automatisk opgradering virker ikke, da den ikke finder nogen nye firmware. Så det kræver at man vælger manuel opgradering process, og henter firmware fra wdc.com (http://support.wdc.com/product/download.asp?groupid=118&lang=en)

Så skulle det hele virke. 🙂 Nemt ikke … not…

For English translation click here :: http://translate.google.com/translate?js=n&sl=auto&tl=english&u=http://nihad.dk/2012/03/17/wd-mybook-world-edition-firmware-upgrade/

Træt af reklamer?

Endnu en lille guide hvordan man slipper for reklamer.

Jeg var i dag på www.edbpriser.dk og fandt ud af der er en lille milion reklamer på den. Efter 5 minutter på hjemmesiden, gik min Firefox browser ned i knæ af belastning.
Der besluttede jeg mig at gøre noget ved problemet på denne maskine, og selvfølgelig dele det med alle jer andre.

Så hvis du står i samme situation og din maskiner/browser bliver tvunget ned i knæ af flash reklamer, så er er det hvad du skal gøre. Ja, det involvere lidt at piller ved nogle mapper man ikke noralt piller ved, og på Windows er de vist også skjulte, men det er det værd.

  1. Download denne fil, permissions.sqlite
    (det er Mozilla Firefox fil som indeholder indstillinger til forskellige hjemmesider, hvad det skal kunne og lign.)
  2. Tryk [Windows Knap]+[R] →Skriv %APPDATA% → tryk OK
    (Navigere videre til din Firefox Profil mappe, den hedder noget i stil med 8jl20c5u.default
  3. Næste du skal gøre er, kopiere filen til din Firefox profil mappe.
    (Hvis filen allerede findes, kan du rolig overskrive den, dog anbefaler jeg at du tager back-up af den originale fil.)
  4. Det er faktisk det.

Nu starter du din Firefox og navigere f.eks. til www.jp.dk eller www.eb.dk. Alle reklamer er nu væk.

GeekTool: Bandwidth

Forleden fik jeg installeret GeekTool, og blev hurtig forelsket i dens måde at arbejde på. Jeg har i lang tid ledet efter program som kunne vise mig noget ala widgets på skrivebordet. Der findes en del widget-programmer til Mac, men de er entet meget begrænsede i udvalg af widgets, eller svær at udvikle selv widgets, eller så bruger de for mange system ressourcer.

Nå, men jeg faldt over GeekTool, og den er meget nem at gå til. Den viser information i tekst, på ens skrivebord. Den kan læser og vise tekst fil, resultat af en eller flere kommandoer eller scripte, bl.a. AppleScript, og billede filer.
Continue reading

PHP tip

Forleden legede jeg lidt med PHP, og kodede lille applikation, som vil indsamle statistiske oplysning om besøgende, på et andet blog. Jeg var tvunget til at bruge et billede, som skal indsamle information. Men det billede var i realiteten et PHP script, som indsamlede oplysninger, og browseren fik at vide, at det var et billede.

Da jeg lavede research for best_practice på nettet, så jeg mange brugte GDlib, men da jeg ikke skulle lave noget på billedet, det er bare et statisk grafisk fil, kunne jeg nøjes bare med at lave en include på den PNG fil.

Er ret sikkert på at dette er hurtigere, og mindre ressource krævende for serveren, end hvis jeg skulle indlæse billedet, lave ny midetidlige billede med GD funktioner, bare for at vise den igen, uden nogen ændringer.

include("image.png");
header("Content-Type: image/png");
exit;

Bash function og automatisering

Da ja tester og udvikler diverse applikation i PHP og MySQL, på min hjemme maskine, havde jeg brug for at kunne hurtigt starte/stoppe for web-/mysql-server. Da jeg er Mac bruger, og kan godt lide selv at kompilere MySQL, PHP og min web server, var det lidt svært at finde widgets som tillod mig at starte diverse tjenester ved enkelt tryk.

Mac OS X kommer med Apache, og den kan nemt startes/slukkes i Sharing indstillinger. Men da jeg bruger LiteSpeed web server, skulle jeg skrive kommandoen i terminalen for at gøre det samme. Det samme er med MySQL, der findes en indstilling widget der tillader dette, men kun hvis man installere deres egen binær version af MySQL server.

Disse kommandoer var ikke indviklede, men der var svære at huske og skrive hele tiden. Så jeg oprettede nogle alias’er som skulle hjælpe mig med det, og dermed også gøre kommandoer lidt kortere.

alias litespeed='sudo /opt/lsws/bin/lswsctrl $1'
alias sqlsrv='sudo /usr/local/mysql/share/mysql/mysql.server $1'

Det fungerede også i et styk tid, indtil jeg blev træt af at tænde dem enkeltvis. Så jeg kiggede efter hvordan man kunne lave en funktion som gjorde flere ting. Og sjovt nok, bash shell (fil ~/.bash_profile) tillader brugeren at oprette funktioner.

Så nu har jeg én kommando til at starte alle de relevante processer som jeg skal bruge når jeg tester og udvikler.

Nu skal jeg kun skrive dev start, for at starte web/mysql server. jeg kan også bruge stop for at stoppe dem, eller restart til at genstarte dem.

dev()
{
sudo echo $1"ing Dev Environment"
sudo /opt/lsws/bin/lswsctrl $1
sudo /usr/local/mysql/share/mysql/mysql.server $1
echo "Environment" $1"ed"
}

Jeg elsker simpelthen UNIX miljø, den tillader mig at opstille og indstille ting som jeg gerne vil have dem.

Frasortering af spam med PHP og IMAP

I går skrev jeg hvordan man får IMAP til at fungere med PHP eller rettere sagt, hvordan man konfigurere PHP til at understøtte IMAP-protokol.

Grundet hvorfor jeg havde brug for det, var pga. denne script. Jeg ville lave en spam filter som vil sortere spam væk fra min indbakke. Jeg valgte at gør dette med IMAP da dette vil tillade mig at filtrere spam uden at slette det. Da denne filter eller rettere script er meget firkantet i hvad den finder som spam eller legitimt mail. Så jeg havde brug for, ikke at slette mails, men bare flytte dem i en anden mappe, hvor jeg vil kunne gå ind og tjekke om der er nogle false positives. Og det vil der altid være.

Continue reading

PHP og IMAP på Mac OS X (Leopard)

For nogle måneder siden, havde min mail udbyder problemer med sortering af spam, og al det spam der blev sendt, røg lige igennem filtre på mail servere. Det tog dem åbenbart lang tid at find ud af hvad der var galt. Imellem tiden blev jeg træt af al det spam og besluttede at lave min egen filter/program som vil sortere spam væk fra min indbakke.

Continue reading