Vipul’s razor, kako ga implementirati, anti-spam, deo 2

Verzije sa kojima radim, kada je ovaj post u pitanju :
OS RHEL6U2, Sendmail-8.14.4, MailScanner-4.84.5-2, MailWatch-1.2.0, SpamAssassin-3.3.1-2

Šta je uopšte Vipul i njegov brijač :-)??
E evo lepe definicije :
Vipul’s Razor is a distributed, collaborative, spam detection and filtering network. Through user contribution,
Razor establishes a distributed and constantly updating catalogue of spam in propagation that is consulted by
email clients to filter out known spam. Detection is done with statistical and randomized signatures that efficiently spot mutating spam content. User input is validated through reputation assignments based on consensus on
report and revoke assertions which in turn is used for computing confidence values associated with individual signatures.

A evo i linka odakle može da se skine.

Skidaju se fajlovi :
razor-agents-2.84.tar.bz2
razor-agents-sdk-2.07.tar.bz2
Otpakuju se :
# tar xvjf razor-agents-*
Instalacija :
#cd /nalog1/razor-agents-2.84
Kao root nalog :
# perl Makefile.PL
# make
# make test Paziti na izlaz, sve mora da javlja da je OK
# make install

Konfiguracija :
# pwd
/nalog1/razor-agents-2.84
# razor-admin -create
Pošto je pušteno kao root onda ovo kreira folder /root/.razor i tu gomilu fajlova.
Kopirati kompletan folder u /etc/MailScanner folder, sa sledećim pravima :
drwxr-xr-x 2 root root 4.0K Apr 17 11:10 .razor
I fajlovi unutar foldera :
-rw-r–r– 1 root root 706 Apr 17 11:10 razor-agent.conf
-rw-r–r– 1 root root 871 Apr 17 11:10 server.n003.cloudmark.com.conf
-rw-r–r– 1 root root 57 Apr 17 11:10 servers.catalogue.lst
-rw-r–r– 1 root root 30 Apr 17 11:10 servers.discovery.lst
-rw-r–r– 1 root root 76 Apr 17 11:10 servers.nomination.lst

U fajl /etc/MailScanner/spam.assassins.pref dodati liniju :
razor_config /etc/MailScanner/.razor/razor-agent.conf
U fajlu /etc/MailScanner/.razor/razor-agent.conf izmeniti liniju u :
logfile = /var/log/razor-agent.log Ova linija se samo izmeni
razorhome = /etc/MailScanner/.razor/ Ova linija mora da se doda

Onda uraditi sledeće (iz razor home foldera, koji je kod nas u /etc/MailScanner/.razor) :
# razor-admin -home=/etc/MailScanner/.razor -register
Register successful. Identity stored in /etc/MailScanner/.razor/identity-rutWyzKBzz
# razor-admin -home=/etc/MailScanner/.razor -create
# razor-admin -home=/etc/MailScanner/.razor -discover

Posle ovoga restartovati MailScanner :
# service MailScanner restart
Pratiti log /var/log/razor-agent.log da li sve radi kako treba.

Takođe obratiti pažnju jer razor otvara port :
Razor – out-bound TCP port 2703
Po pitanju portova videti ovaj post!

Testiranje rada :
# spamassassin -t -D razor2 < spam-mail.txt ..... Apr 23 11:17:27.598 [29268] dbg: razor2: razor2 is available, version 2.84 Razor-Log: read_file: 16 items read from /etc/MailScanner/.razor/razor-agent.conf Razor-Log: Found razorhome: /etc/MailScanner/.razor/ Apr 23 11:17:30.050621 check[29268]: [ 2] [bootup] Logging initiated LogDebugLevel=11 to stdout Apr 23 11:17:30.050980 check[29268]: [ 5] computed razorhome=/etc/MailScanner/.razor/, conf=/etc/MailScanner/.razor/razor-agent.conf, ident=/etc/MailScanner/.razor//identity-rutWyzKBzz Apr 23 11:17:30.051231 check[29268]: [ 8] Client supported_engines: 4 8 ..... Content analysis details: (16.8 points, 5.0 required) .....

Zaštita od spam-a, deo 1

Postoje razne metode za zaštitu od spam-a.
Ja ću ovde navesti one koje sam koristila, znam kako se konfigurišu, i znam da rade. Takođe to su metode koje sam koristila na Fedori (verzije 10 i 16), i RHEL-u, verzije 4U5 pa na dalje.
Dakle :

  • SpamAssassin – uz Fedoru i RHEL ide u paketu, super stvar
  • Access tabela samog Sendmail programa – dobra za zabranu određenih adresa, domena i IP adresa
  • RBL – Real Time Black Lists – treba paziti da su spiskovi ažurni, a navedene liste žive
  • Gray listing – super radi posao, ali može u nekim slučajevima (kao kada je pošiljalac uklasterisan mail server) da napravi velika kašnjenja. Treba mu ručno dodati bele liste za npr. gmail.
  • Vipul’s Razor – dobra stvar
  • Bayes filterisanje – mora da uči šta je spam a šta ham
  • Ručno pravljene crne i bele liste – malo staromodno, ali dobro radi posao
  • Ručno dodavane ključne reči sa odgovarajućim težinskim faktorom – isto kao i gore 🙂
  • iptables – uvek krajnja linija odbrane za nezgodne pošiljaoce identifikovane po IP adresama

Videću da u budućim postovima obrađujem sve navedene metode (instalacija, konfiguracija, testiranje).

Ako neko ima još neki predlog/ideju/komentar, samo napred!
Znanje treba deliti!

Brisanje, kopiranje ili premeštanje velikog broja fajlova odjednom, zgodna komanda, deo 1

Jel vam se desila frustrirajuća situacija, kada morate brzo da obrišete veliki broj fajlova, a vama se javi ovo:
# rm -rf *1
bash: /bin/rm: Argument list too long

E meni jeste, i nervira maksimalno, jer izgleda da Linux kernel ima takvo ograničenje (bar na RHEL4U5, gde sam ja probala) na negde oko 1000 fajlova.

Ali ima lek i za to (radi se iz foldera u kome su fajlovi za brisanje) :
# find . -name ‘*1’ | xargs rm
Ili
# find . -type f -name “xyz*” -delete
I to (bar koliko sam videla) ograničenje po broju fajlova nema.
Izgleda da to radi samo ako u imenu fajlova nema praznog mesta (space), ali to je retko slučaj.
A ovo je sajt gde sam našla rešenje za glavobolju! Svaka čast.

Kako kopirati veliki broj fajlova iz jednog foldera u drugi :
# rsync -a /some/path/to/src/ /other/path/to/dest/
Ili :
# echo * | xargs -i cp {} /your/dest

Kako premestiti veliki broj fajlova (SAMO fajlova, NE i foldera) iz tekućeg direktorijuma u neki drugi :
# mv `find . -type f` /ciljni-folder
??????

Ukusan doručak

Isprobano ukusan doručak, takođe dobar za probavu, a sa dovoljno energije da vas drži do ručka kod kuće 🙂
Sastojci :
1 iseckana banana (umesto nje može i neko sezonsko voće, na primer iseckane jagode)
1 šaka kikirikija, pečenog bez soli
dve supene kašike ribizli (ja ih imam smrznute iz bašte, još od prošle godine)
dve supene kašike skuvane pšenice
muslija po ukusu (ja najviše volim tropic musli, ide fino uz svo ovo voće)
Preliti mlekom ili jogurtom.
Rezultat izgleda otprilike ovako :

Testiranje mail servera, deo 6

1. Prvo prizvati po browserom adresu :
http://11.12.13.14/mailscanner
Uneti user i pass, i treba da se vidi početna strana MailWatch-a
2. Poslati poruke sa i na server
3. Testiranje rada za spamassassin se radi pomoću poruke GTUBE koja okida SpamAssassin :
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
4. ClamAV se testira pomoću veštačkog virusa EICAR :
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Mail server srednje veličine, deo 5 – MailWatch

Čemu služi MailWatch? Za grafičko praćenje protoka mail poruka, u realnom vremenu, sa pretraživanjem.
Pošto koristi MySQL bazu, paziti kada se broj poruka u bazi približi 700.000, jer tada dolazi do velikog usporenja rada (zbog upisa poruka u bazu) i kašnjenja poruka, što se da rešiti bekapom i pražnjenjem baze (ali o tome u kasnijim postovima).

Šta su u startu potrebne stavke, da bi MailWatch mogao da se instalira :
MailScanner koji radi, podignut servis MySQL, Apache, PHP (sa MySQL i GD podrškom), a da bi MailScanner koristio bazu potreban je Perl-DBD-MySQL.

Takođe i podešavanje fajla /etc/php.ini :
short_open_tag = On
safe_mode = Off
register_globals = Off
magic_quotes_gpc = On
magic_quotes_runtime = Off
session.auto_start = 0
Sve stavke već postoje u php.ini fajlu, samo treba ispraviti vrednosti…..

Posle spuštanja (odavde) i razvijanja paketa, on se instalira iz foldera u koji je razvijen :
# mysql < create.sql Kreiranje nove baze za MailWatch
Ulazimo u MySQL, da bi podesili potrebna prava nad novokreiranom bazom :
# mysql
mysql> grant all on mailscanner.* to mailwatch@localhost identified by ‘moja-lozinka’;
mysql> grant file on *.* to mailwatch@localhost identified by ‘moja-lozinka’;
mysql> flush privileges;
mysql> exit

Sada treba zatvoriti MySQL (da root korisnik MySQL baze ima lozinku, i da ne postoje nalozi koji je nemaju) :
# mysqladmin -u root password “nova-lozinka” Postavljanje root MySQL lozinke
# mysql -u root -p
Enter password:
mysql> use mysql;
mysql> delete from user where password=””;
Paziti, ovde su ili dva obična navodnika jedan za drugim (bez blanko-a između), ili dva jednostruka navodnika, jedan za drugim.
mysql> select user,password from user; provera da nema više naloga bez lozinki
+———–+——————————————-+
| user | password |
+———–+——————————————-+
| root | *Ey6llk6D401EF872DD5BC6D700072770uui67A16 |
| mailwatch | *E6hF6D6D401EF872DD5wqaD70007277ii0CC3A99 |
+———–+——————————————-+
2 rows in set (0.00 sec)
mysql> exit

U MySQL bazi mailscanner dodati korisnika mailwatch, sa odgovarajućim pravima :
# mysql mailscanner -u mailwatch -p
MySQL komanda
Query OK, 1 row affected (0.00 sec)

Posle ovoga je potrebno pojedine fajlove MailWatch-a prebaciti na za to predviđena mesta.
Videti gde je DocumentRoot za Apache, kod mene je to /usr/share/squirrelmail
Tu kopirati mailscanner folder iz razvijenog mailwatch paketa.
Podešavanje prava za kopirane foldere :
/usr/share/squirrelmail vlasništva nad folderom mailscanner NIKAKO ne menjati!!!!
Pod folderom : /usr/share/squirrelmail/mailscanner podesiti prava za folder images :
drwxrwx— 3 root apache 4096 Nov 2 2005 images
Pod folderom : /usr/share/squirrelmail/mailscanner/images podesiti prava za folder cache :
drwxrwx— 2 root apache 4096 Nov 2 2005 cache

Takođe fajl xxx/mailwatchxxx/MailScanner_perl_scripts/MailWatch.pm kopirati u folder /usr/lib/MailScanner/MailScanner/CustomFunctions i izmeniti mu stavke :
my($db_user) = ‘mailwatch’;
my($db_pass) = ‘moja-lozinka’;

U folderu /usr/share/squirrelmail/mailscanner kopirati fajl conf.php.example u conf.php, i u njemu uraditi sledeće izmene :
// Database settings
define(DB_TYPE, ‘mysql’);
define(DB_USER, ‘mailwatch’);
define(DB_PASS, ‘moja-lozinka’);
define(DB_NAME, ‘mailscanner’);
…………
define(‘TIME_ZONE’, ‘Europe/Belgrade’);
…………
// Paths
define(MAILWATCH_HOME, ‘/usr/share/squirrelmail/mailscanner’);
………..
// Quarantine settings
define(QUARANTINE_USE_FLAG, true);
define(QUARANTINE_DAYS_TO_KEEP, 30);
define(QUARANTINE_MAIL_HOST, ‘11.12.13.14’);
define(QUARANTINE_FROM_ADDR, ‘postmaster@moj-domen.com’);
………..
// Display the inbound/outbound mail queue lengths
define(MAILQ, false);

Posle ovih svih promena obavezno resetovati server!

Dobar link za instalaciju MailWatch-a : link

Odličan link za celu proceduru.

Mail server srednje veličine, 4 deo – ClamAV

Instalacija ClamAV antivirus softvera, integracija u MailScanner (videti predhodni post), i testiranje celog paketa zajedno.
ClamAV paket skinuti odavde ili odavde.
I da, potrebna su samo ova dva paketa…..
Instalacija (paziti na redosled!):
# rpm -ivh clamav-db-XXX
# rpm -ivh clamav-XXX

Konfiguracioni fajl /etc/freshclam.conf za skidanje update-ova treba da izgleda ovako :
DatabaseDirectory /var/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogTime yes
LogVerbose yes
LogSyslog yes
DatabaseOwner clamav
DatabaseMirror database.clamav.net

Iz misterioznih razloga NE SME se aktivirati (odhešovati) stavka “#LogRotate yes” i/ili stavka “NotifyClamd /etc/clamd.conf”, jer inače kuka kako nema /etc/clamd.conf fajl…..

Testiranje rada
Test 1
# freshclam Testiranje update-a za ClamAV
ClamAV update process started at Wed Jun 6 10:26:40 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cvd is up to date (version: 15007, sigs: 202098, f-level: 63, builder: guitar)
bytecode.cvd is up to date (version: 185, sigs: 39, f-level: 63, builder: neo)
Test 2
Napraviti fajl po imenu eicar.test, i njega staviti Eicar test virus :
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
# clamscan Testiranje za prepoznavanje virusa
…..
/nalog/eicar.test: Eicar-Test-Signature FOUND
———– SCAN SUMMARY ———–
Known viruses: 1245187
Engine version: 0.97.4
Scanned directories: 1
Scanned files: 10
Infected files: 1
Data scanned: 24.97 MB
Data read: 45.54 MB (ratio 0.55:1)
Time: 8.884 sec (0 m 8 s)
Test 3
Testiranje da li MailScanner lepo poziva ClamAV :
# /usr/lib/MailScanner/clamav-wrapper /nalog
Upereno na folder gde je eicar.test fajl
….
/nalog/eicar.test: Eicar-Test-Signature FOUND
———– SCAN SUMMARY ———–
Known viruses: 1245187
Engine version: 0.97.4
Scanned directories: 1
Scanned files: 9
Infected files: 1
Total errors: 1
Data scanned: 13.55 MB
Data read: 45.54 MB (ratio 0.30:1)
Time: 7.649 sec (0 m 7 s)

Mail server srednje veličine, deo 3 – MailScanner

Dakle, posle konfiguracije Sendmail-a i Dovecot-a, došli smo i do MailScanner softvera.
Čemu on služi? Pa objedinjuje Sendmail, SpamAssassin i AV program (ja koristim ClamAV), omogućava korišćenje programa MailWatch (koji daje vrlo dobar grafički, real-time pregled protoka elektronske pošte, statistike i pretragu) i to sve na vrlo suvisli i koristan način. Evo i njegovog sajta, odakle se program može skinuti (knjiga koja ide uz njega, i koja se kupuje, je veoma OK i korisna). MailScanner je već prilično dugo prisutan, i kao takav se pokazao kao stabilan i koristan, kako za mail servere sa srednjim protokom (do 10.000 mail poruka dnevno) tako i za one manje. Na većim ga nisam isprobala, tako da o njima ne mogu da govorim.

1. Skinuti paket (sa ove lokacije) i razviti ga na zgodnom mestu :
# tar xvfz MailScanner-4.84.5-2.rpm.tar.gz

2. Instalacija iz upravo razvijenog paketa:
# cd MailScanner-4.84.5-2
# ./install.sh Ovo će prilično da potraje. Pratiti izlaz.
I am logging everything into “install.log”.

3. Posle uspešne instalacije :
# service sendmail stop
# chkconfig sendmail off
# chkconfig MailScanner on

4. Podešavanje konfiguracije MailScanner servisa u fajlu /etc/MailScanner/MailScanner.conf :
# more MailScanner.conf|grep -v “#”|grep -v ‘^$’
Paziti!!! Date su samo linije u fajlu koje su promenjene!!!

Verzija MailScanner-a je 4.84.5
%org-name% = XXXX Staviti ono što vama odgovara!
%org-long-name% = XXX
%web-site% = XXX
Incoming Work Group = clamav
Incoming Work Permissions = 0640
Quarantine Permissions = 0660
Maximum Processing Attempts = 1
Maximum Archive Depth = 2
Virus Scanners = clamav
Allow Password-Protected Archives = yes
Quarantine Whole Message = yes
Notify Senders Of Other Blocked Content = no
Is Definitely Spam = %rules-dir%/spam.blacklist.rules
Add Watermark = no
High Scoring Spam Actions = delete
Log Spam = yes
Log Non Spam = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Always Looked Up Last = &MailWatchLogging

Napomena 1 : sve navedene stavke već postoje u conf fajlu, samo ih treba izmeniti
Napomena 2 : prikazane vrednosti funkcionišu za moj server, ne znači da će i vama odgovarati…..
Napomena 3 : sa obe strane znaka jednakosti je OBAVEZAN blanko

5. Instalacija ClamAV-a, ali o tome u sledećim postovima

6. Startovanje servisa :
# service MailScanner start

O testiranju istog, u daljim postovima

Linux raw partition

Ako treba da se formatira particija pod Linux-om (Fedora ili RHEL) za Oracle bazu, što zahteva RAW particiju (videti dobru definiciju za raw particiju ovde), to se radi ovako :

1. Formira se raw device
# mknod -m 660 /dev/raw/raw130 c 162 130
# ls -l /dev/raw/raw130
crw-rw—- 1 root root 162, 130 Jun 4 08:33 /dev/raw/raw130

Paziti, na toj lokaciji se već nalazi jedan fajl : /dev/raw/rawctl
Ali to je device controler za raw devices.

2. Formatira se dati prostor
# fdisk /dev/emcpowera
…..
Command (m for help): p
Disk /dev/emcpowera: 64.4 GB, 64424509440 bytes
64 heads, 32 sectors/track, 61440 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbf277df7
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-61440, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-61440, default 61440):
Using default value 61440
Command (m for help): w
The partition table has been altered!

3. Pridruži se kreirani raw device formatiranoj particiji
# raw /dev/raw/raw130 /dev/emcpowera
/dev/raw/raw130: bound to major 120, minor 0

4. Proveriti urađeno (prikazuje vezane raw devices)
# raw -qa
/dev/raw/raw130: bound to major 120, minor 0

Paziti jer posle reboot-a sistema mora da se uradi sve iz početka (naravno bez formatiranja).

Ako je potrebno da neki nalog osim root-a koristi raw device, potrebno je datom nalogu dati grupu “disk” :
# usermod -a -G disk ime-naloga
[root@dw etc]# id ime-naloga
uid=500(ime-naloga) gid=6(disk) groups=6(disk),501(ime-naloga)

Opet tikvice

E jeste, i baš je fino ispalo!
Dakle 2-3 veće (čitaj deblje) tikvice oljuštiti i iseći na kolutiće.
Poređati u tepsiju namazanu sa malo ulja, i posoliti (znači ne moraju da se odcede).
Odozgo na kolutove tikvica staviti predhodno pripremljenu mešavinu :
oko 250gr sira – može feta a može i mladi sir, to je stvar ukusa
3 jajeta
so, biber, mirođija
pavlaka – može a ne mora
Ovako izgleda pre pečenja :

Staviti u rernu da se peče, na oko 250C, oko 30 minuta.
Prijatno!