Αντίο
Σήμερα που όλοι αποχαιρετούν τον Μπόμπαν Γιάνκοβιτς, εγώ θα χαιρετήσω εσένα.
Πρέπει να ήσουν ο τρίτος άνθρωπος που γνώρισα στη σχολή. Φίλοι γίναμε αμέσως, άσχετα αν δεν βγαίναμε βόλτες μαζί. Άλλωστε η λέξη φίλος είναι δύσκολη (και δε συνδέεται πάντα με τη διασκέδαση). Για δέκα χρόνια ήμασταν σε διπλανά εργαστήρια (και ταυτόχρονα δουλεύαμε μαζί είτε στο NOC, είτε στο ΤΕΕ). Δεν υπήρξε ποτέ περίπτωση να αφήσεις κάτι ημιτελές, γιατί έφυγες λοιπόν;
Τελευταία φορά που σε είδα ήταν στο γάμο μου. Τελευταία φορά μιλήσαμε στη γιορτή σου. Τώρα το μόνο που έχει μείνει είναι το SMS που μου έστειλες πριν μια εβδομάδα.
Συγνώμη που δεν ήρθα να σε δω.
Αντίο φίλε Δημήτρη.
Ανέκδοτο
Ερώτηση: Μαλώνει ένας Στρατηγός με ένα Ταξίαρχο. Ποιος την πληρώνει;
Απάντηση: Ο φαντάρος
Λαϊκή σοφία το νόημα της οποίας θα μάθει ο Γιάγια Τουρέ
virbl.tee.gr
Actually my previous post, together with me using virbl.dnsbl.bit.nl made me think how one can share such data between many email servers under the same administrative domain. Well the answer is fairly easy:
Publish them using rbldnsd. Rbldnsd reads text files, so all you have to do is dump the B-Tree data to a text file of type ip4tset (read rbldnsd(8)):
makemap -u btree /var/cache/local/virbl/virbl.db | awk '{print $1}'
Then instruct sendmail / postfix / whatever email server you are using to use the zone you publish with rbldnsd as a DNSBL.
At this time we have a rate of blocking ~3500 connections daily from infected machines with no complaints by any user (ours or remote).
You may use virbl.tee.gr at your own risk. Machines are listed in and delisted from it automatically. Any machine that gets listed is delisted within an hour. Sending viral email to our mail servers results in relisting it. It’s governing policy is described at http://www.postmaster.tee.gr/ in Greek.
An interesting observation I have made is that (infected) machines that target one set of mail servers do not necessarily target another set (eg. your servers) within the hour. So instead of using virbl.tee.gr (if you find it a good idea) it might suit you better to implement a similar scheme for your servers.
MIMEDefang and virii
OK so you use MIMEDefang together with ClamAV[*] to check incoming messages for viral content. But given the fact that an infected machine will bomb you with many many messages, why should you check every message sent for a given time window? This is what I came up with:
The default mimedefang-filter(5) has the following check which discards viral messages:
if ($FoundVirus) {
md_graphdefang_log('virus', $VirusName, $RelayAddr);
md_syslog('warning', "Discarding because of virus $VirusName");
return action_discard();
}
Changing it to:
if ($FoundVirus) {
# OK log $RelayAddr
# If you are on a Debian-like system you have to put
# use DB_File in /etc/mail/mimedefang.pl.conf
# otherwise you have to put it somewhere in mimedefang-filter
my %vbl;
my $now;
tie %vbl, 'DB_File', "/var/cache/local/virbl/virbl.db", O_CREAT|O_RDWR, 0644, $DB_BTREE or die;
$now = time;
$vbl{$RelayAddr} = $now;
untie %vbl;
md_graphdefang_log('virus', $VirusName, $RelayAddr);
md_syslog('warning', "Discarding because of virus $VirusName");
return action_discard();
}
logs $RelayAddr (the IP address of the infected machine) together with a timestamp in a BerkeleyDB B-Tree. In our example this is /var/cache/local/virbl/virbl.db. You have to make this file writeable by the user that runs MIMEDefang on your system. And now using the following sendmail.mc code one can block this IP address prior to inspecting the message content:
LOCAL_CONFIG
# .db is appended by sendmail automagically
Kvirbl btree -a.FOUND /var/cache/local/virbl/virbl
LOCAL_RULESETS
# Always remember: In sendmail the LHS and the RHS of the sendmail.mc/.cf is
# separated with tabs and not spaces. So do not copy-paste this fragment,
# type it.
SLocal_check_relay
R$* $: $&{client_addr}
R$* $: $(virbl $1 $: $1.NOTFOUND $)
# The next line broken in two for readability
R$* . FOUND $#error $@ 5.7.1 $: You have sent us mail containing
a virus and are blocked from our systems for an hour.
So now you need an expiration proccess. How long shall these IP addresses remain in your database? I keep them for one hour. It seems to be a reasonable default. A simple expiry script is the following perl snippet:
#!/usr/bin/perl
use DB_File;
$db = shift or die;
$threshold = shift or die;
tie %d, 'DB_File', $db, O_RDONLY, 0644, $DB_BTREE;
$now = time;
foreach $i (keys %d) {
$diff = $now - $d{$i};
if ($diff > $threshold) {
delete $d{$i};
}
}
untie %d;
You can run this script from cron every ten minutes or so. I’ve written my expiry program in C and run it every two minutes. If you also want to do this, you have to remember that the perl snippet on mimedefang-filter that logs $RelayAddr and the timestamp stores the timestamp as a string and not as an integer.
[*] There exist many HOWTOs on how to setup MIMEDefang to work with ClamAV. Just use Google.
Protected: Conspiracy theory?
Ζώα και Μετρό
Όχι δεν αναφέρομαι στα τετράποδα. Αναφέρομαι σε μια ειδική κατηγορία διπόδων που χρησιμοποιούν τις κυλιόμενες σκάλες και κάθονται αριστερά (ακόμα και όταν δεν έχει κόσμο). Σημερινό επισόδειο:
Σταθμός Πανεπιστήμιο, σήμερα, ώρα 13:00, κυλιόμενες σκάλες, κάθομαι δεξιά και μπροστά μου το τίποτα. Τύπος οριακά κοντά στα 50 κάθεται ακριβώς αριστερά μου και φράζει τις σκάλες. Στην παρατήρηση του πίσω του πως πρέπει να κάτσει δεξιά γιατί ο αριστερός “διάδρομος” της σκάλας είναι για τους επιβάτες που βιάζονται, απαντάει με ύφος (Ζ: ο τύπος, Γ: εγώ):
Ζ: Όποιος βιάζεται να πάει από τις σκάλες
Γ: Κάνετε λάθος και μπορείτε να ρωτήσετε το σταθμάρχη
Ζ: Εσύ κάνεις λάθος. Ξέρεις Φυσική; Υπάρχει μόνο μία φορά.
(Λυπάμαι τον άνθρωπο και του απαντώ ήρεμα)
Γ: Είμαι Ηλεκτρολόγος Μηχανικός, δε θα μου μάθετε εσείς Φυσική. Πάμε στο σταθμάρχη να ρωτήσετε.
(Αντιλλαμβάνεται πως το επιχείρημα της Φυσικής είναι λάθος, αλλά συνεχίζει)
Ζ: Κάνεις λάθος, ούτε ο σταθμάρχης ξέρει.
Γ: Πάμε στο σταθμάρχη να ρωτήσετε.
(Αυτό επαναλλαμβάνεται μέχρι να φτάσουμε επάνω, 5-6 φορές).
Γ: Είστε απλά ανάγωγος και δε θέλετε να το παραδεχτείτε.
Ζ: Σε είδαμε κι εσένα στις διαδηλώσεις τι ευγενικός που είσαι!
(Με περνάει για φοιτητή προφανώς – θα έπρεπε να τον ευχαριστήσω)
Γ: Εγώ είμαι 35 χρονών. Δε καταλαβαίνω. Πάντως εκεί είναι ο σταθμάρχης για να ενημερωθείτε.
Ζ: Δεν έχω ανάγκη να πάω στο σταθμάρχη. Η Φυσική λέει πως υπάρχει μία φορά.
(Άντε πάλι το επιχείρημα της Φυσικής).
Και χωρίσαν οι δρόμοι μας.
Αγαπητά δίποδα και λοιποί εξυπνάκηδες λοιπόν προς ενημέρωσή σας:
Δε τα λέω εγώ. Μπορείτε να τα δείτε και στο site του Αττικό Μετρό επιλέγοντας με τη σειρά Ελληνική Έκδοση -> Λειτουργία Μετρό -> Χρηστικές Οδηγίες.
Ποιος είναι χοντρός;
Αυτός (is he back? μπα…). 2 τεμάχια σήμερα στους όχι και πολύ δυνατούς Ιάπωνες. Λέτε να έχει δίκιο ο Βερόν για τον Αντριάνο (και να είναι αυτός το πρόβλημα στην επίθεση της Βραζιλίας); Ως συνήθως ο Περναμπουκάνο το χαβά του. Είμαι τυχερός που τον είδα live στο Καραϊσκάκη (κι ας χάσαμε). Ευχαριστώ επίσης και τον Παρέιρα που έβαλε το Rogerio Ceni να παίξει, αλλά οι κότες οι Ιάπωνες από τα 30 μέτρα και κάτω δεν έκαναν φάουλ.
Protected: ΕΡΑ Σπορ
Speaker for the dead
Στο ημίχρονο το αγώνα Τσεχία-Γκάνα (0-2) μου ήρθε μια ιδέα:
Αφού δε μου αρέσουν οι περισσότεροι speakers της ΝΕΤ, να μην τους ακούω. Για εναλλακτική σκέφτηκα την ΕΡΑ Σπορ, αλλά πιο πριν είχα παρατηρήσει πως έκανε μετάδοση και στους αγώνες του Bruno Zauli. Κι έτσι έβαλα στο CD player το Kakusei (του DJ Krush [new window]) και συνέχισα να παρακολουθώ το Β' ημίχρονο. Συμπέρασμα; Παρακολουθούσα τον αγώνα με μεγαλύτερη συγκέντρωση και χωρίς να εκνευρίζομαι (δίκαια ή άδικα δεν έχει σημασία) με το σχολιαστή.
Για να δούμε αν μπορεί να έχει διάρκεια κάτι τέτοιο και με ποια μουσική μπορεί κανείς να παρακολουθεί το Mundial 2006…
Σημείωση: Τι είναι κανονικά ο Speaker for the dead / Ο Εκπρόσωπος των Νεκρών;