Difference between revisions of "Email Server - MailScanner alapok"

From berki WIKI
Jump to: navigation, search
(Created page with " ==Spamassassin== <pre> # yum install spamassassin </pre> === Mi hol van === * DEF_RULES_DIR=/usr/share/spamassassin, * LOCAL_RULES_DIR=/etc/mail/spamassassin * LOCAL_S...")
 
Line 1: Line 1:
  
  
 +
=ClamAV-0.98.5=
  
==Spamassassin==
+
==Installálás==
 +
Két programot kell felrakni. Magát a clamav vírus kereső programot, és clamd démont, amin keresztül az amaivs hozzá fog csatlakozni a clamAV-hez.
 +
 
 +
A clamav-t meg kell hívni a megfelelő argumentumokkal, hogy átvizsgáljon egy fájlt vagy egy mappát, tehát nem egy futó démon. Ezzel szemben a clamd-t el kell indítani, hogy folyamatosan fogadja a hozzá beérkező kéréseket, majd a megfelelő paraméterekkel meghívja a clamav programot, hogy vizsgálja át a neki átadott fájlt, pl. egy email-t.
 +
 
 +
Ehhez elsőként a EPEL repót hozzá kell adni a yum-hoz.
 +
<pre>
 +
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
 +
</pre>
 +
<pre>
 +
# yum install clamav clamd
 +
</pre>
 +
 
 +
/etc/clamad.conf
 +
<pre>
 +
DatabaseDirectory /var/lib/clamav
 +
User clam
 +
 
 +
ScanMail yes
 +
ScanArchive yes
 +
</pre>
 +
 
 +
 
 +
==Vírus definíciók frissítése==
 +
A vírus adatbázis frissítését a freshclam program végzi. Ennek van egy saját config fájlja. Ebben fontos, hogy a vírus adatbázis helye ugyan ott legyen, mint amit a clamav.conf-ban megadtunk.
 +
/etc/freshclam.conf
 +
<pre>
 +
DatabaseDirectory /var/lib/clamav
 +
DatabaseOwner clam
 +
</pre>
 +
 
 +
Így kell frissíteni:
 +
<pre>
 +
# /usr/bin/freshclam --no-warnings
 +
</pre>
 +
 
 +
A telepítés létrehozott egy alap ClamAV frissítő fájlt a /etc/crond.daily-ben. Ezt egészítsük ki azzal, hogy küldje el email-ben a freshclam logját ha lefutott. Írjuk át úgy a freshclam futtatását, hogy ne írjon ki warning-okat, és, szedjük ki a quiet kapcsolót, és az output-ot irányítsuk egy fájlba, amit az emial mellékletéhez csatolni fogunk.
 +
<pre>
 +
/etc/cron.daily/freshclam
 +
!/bin/sh
 +
 
 +
### A simple update script for the clamav virus database.
 +
### This could as well be replaced by a SysV script.
 +
 
 +
### fix log file if needed
 +
LOG_FILE="/var/log/clamav/freshclam.log"
 +
if [ ! -f "$LOG_FILE" ]; then
 +
    touch "$LOG_FILE"
 +
    chmod 644 "$LOG_FILE"
 +
    chown clam.clam "$LOG_FILE"
 +
fi
 +
 
 +
/usr/bin/freshclam \
 +
    --no-warnings \
 +
    --datadir="/var/lib/clamav" \
 +
    --log="$LOG_FILE" \
 +
    > /tmp/freshclam.log
 +
 
 +
 
 +
/bin/echo "" | /bin/mail -a /tmp/freshclam.log -s "[SERVER] ClamAV database Refreshment" -r "root" root
 +
</pre>
 +
A mail parancsnak a -r kapcsolóval megadhatjuk a küldőt, de nem szükséges, mert ha nem adunk meg semmit, akkor a küldő a root@system.berki2.org-lesz.
 +
 
 +
 
 +
==Automatikus fájlrendszer szkennelés==
 +
Letölthető egy okos script, ami elvégzi a megadott mappák vírus vizsgálatát, majd az eredményt elküldi  emailben.
 +
Hozzunk létre egy karantén mappát, és adjunk rá mindenkinek írási jogot:
 +
# mkdir /var/local/virus_quaraintin/dailyScan
 +
# chmod 722 /var/local/virus_quaraintin/dailyScan
 +
 
 +
Tegyük a cron.weekly mappába a szkennelő szkriptet.
 +
 
 +
/etc/cron.weekly/clam_scan_home.sh
 +
#!/bin/bash
 +
 +
# Email alert cron job script for ClamAV
 +
# Original, unmodified script by: Deven Hillard
 +
#(http://www.digitalsanctuary.com/tech-blog/debian/automated-clamav-virus-scanning.html)
 +
# Modified to show infected and/or removed files
 +
 +
# Directories to scan
 +
SCAN_DIR="/home/adam2"
 +
 
 +
QUARANTINE_DIR="/var/local/virus_quaraintin/dailyScan"
 +
 +
# Location of log file
 +
LOG_FILE="/var/log/clamav/manual_clamscan.log"
 +
 +
# Uncomment to have scan move files
 +
AGGRESSIVE=1
 +
# Uncomment to have scan not move files
 +
#AGGRESSIVE=0
 +
 +
# Email Subject
 +
SUBJECT="[SERVER] ClamAV virus scan result"
 +
# Email To
 +
EMAIL="root"
 +
 
 +
EMAIL_FROM="root"
 +
 
 +
SCAN_ARGUMENTS="--scan-archive=yes"
 +
 +
check_scan () {
 +
    # If there were infected files detected, send email alert
 +
 +
    if [ `tail -n 12 ${LOG_FILE}  | grep Infected | grep -v 0 | wc -l` != 0 ]
 +
    then
 +
    # Count number of infections
 +
        SCAN_RESULTS=$(tail -n 10 $LOG_FILE | grep 'Infected files')
 +
        INFECTIONS=${SCAN_RESULTS##* }
 +
   
 +
        if [ $AGGRESSIVE = 1 ]
 +
        then
 +
                echo -e "\n`tail -n $((10 + ($INFECTIONS*2))) $LOG_FILE`" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL}
 +
        else
 +
                echo -e "\n`tail -n $((10 + $INFECTIONS)) $LOG_FILE`" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL}
 +
        fi
 +
 +
    else
 +
/bin/echo "NO virus found" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL}
 +
    fi
 +
}
 +
 +
if [ $AGGRESSIVE = 1 ]
 +
then
 +
        #/usr/bin/clamscan -ri --remove $SCAN_DIR >> $LOG_FILE
 +
/usr/bin/clamscan -ri --move=$QUARANTINE_DIR $SCAN_ARGUMENTS $SCAN_DIR >> $LOG_FILE
 +
 
 +
 
 +
else
 +
        /usr/bin/clamscan -ri $SCAN_ARGUMENTS $SCAN_DIR >> $LOG_FILE
 +
fi
 +
 +
check_scan
 +
 
 +
 
 +
Adjunk rá futási jogot:
 +
# chmod +x /etc/cron.weekly/clam_scan_home.sh
 +
 
 +
 
 +
 
 +
7  spamassassin-3.3.1
 +
 
 +
 
 +
 
 +
 
 +
# yum install spamassassin
 +
 
 +
A spamassassin telepítéskor létrehozza a naponta futó cron frissítő szkriptjét:
 +
 
 +
/etc/cron.d/sa-update
 +
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log && echo "" | /bin/mail -s "[SERVER] Spamassassin refreshment" -r "root" root
 +
A /usr/share/spamassassin/sa-update.cron fájl egy bonyolult szkriptet tartalmaz. A frissítés minden nap hajnali 4:10-kor fog lefutni.
 +
 
 +
/etc/mail/spamassassin/local.cf
 +
required_hits 5
 +
report_safe 0
 +
rewrite_header Subject [SPAM]
 +
 
 +
Az itt lévő összes beállítást az amavis.conf-ban felül lehet írni.
 +
 
 +
 
 +
8  Amavis – 2.9.1
 +
 
 +
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
 +
 
 +
 
 +
# yum install amavisd-new
 +
 
 +
 
 +
/etc/amavisd/amavisd.conf
 +
$daemon_user  = 'amavis';    # (no default;  customary: vscan or amavis), -u
 +
$daemon_group = 'amavis';    # (no default;  customary: vscan or amavis), -g
 +
 
 +
$mydomain = 'berki2.org'; 
 +
...
 +
$myhostname = 'berki2.org';  # must be a fully-qualified domain name!
 +
 
 +
############################################################
 +
# Virusok karantén mappába + értesítés=admin, felhasználó
 +
############################################################
 +
$QUARANTINEDIR = '/var/spool/amavisd/quarantine';
 +
$virus_quarantine_method = 'local: virus-%m'; # Filename in $QUARANTINEDIR
 +
$virus_quarantine_to = 'virus-quarantine';
 +
$virus_admin = "adam\@berki.org"; 
 +
$warnvirusrecip = 1;
 +
 
 +
$mailfrom_notify_admin    = "root\@berki.org";                    # notifications sender
 +
$mailfrom_notify_recip    = "root\@berki.org";                    # notifications sender
 +
$mailfrom_notify_spamadmin = "root\@berki.org";                    # notifications sender
 +
 
 +
############################################################
 +
# Rossz fejléc karantén mappába + értesítés=adimin
 +
############################################################
 +
$bad_header_quarantine_method = 'local: bad_header-%m'; # Filename in $QUARANTINEDIR
 +
$bad_header_quarantine_to = 'bad_header-quarantine';
 +
$bad_header_admin = "adam\@berki.org"; 
 +
 
 +
##################################################################
 +
# Tiltott formátum karantén mappába + értesítés=admin, felhasználó
 +
##################################################################
 +
$banned_files_quarantine_method = 'local: banned-%m'; # Filename in $QUARANTINEDIR
 +
$banned_quarantine_to = 'banned-quarantine';
 +
$banned_admin = "adam\@berki.org"; 
 +
$warnbannedrecip = 1;
 +
$warnbannedsender = 1;
 +
 
 +
##################################################################
 +
# SPAM kezelés
 +
##################################################################
 +
 
 +
#Spam értékek beállítása
 +
#########################
 +
$sa_spam_subject_tag = '***Spam*** ';
 +
$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level
 +
$sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level
 +
$sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g. blocks mail)
 +
$sa_dsn_cutoff_level = 10;  # spam level beyond which a DSN is not sent
 +
$sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From
 +
# $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off
 +
$penpals_bonus_score = 8;    # (no effect without a @storage_sql_dsn database)
 +
$penpals_threshold_high = $sa_kill_level_deflt;  # don't waste time on hi spam
 +
$bounce_killer_score = 100;  # spam score points to add for joe-jobbed bounces
 +
 
 +
 
 +
#Spamek elküldése emailcímre értesítése nélkül.
 +
###############################################
 +
$spam_quarantine_method = 'smtp:[127.0.0.1]:10025';
 +
$spam_quarantine_to = 'system@berki2.org';
 +
 
 +
 
 +
 
 +
1;  # insure a defined return value
 +
Szerintem ami már a config-ban fentebb is szerepelt, azt nem kell kiszedni, mert itt felülírjuk. Meg kell adni a mydomain és a myhostname paramétereket, szerintem nem fotnos, hogy mit írunk oda.
 +
 
 +
FONTOS:
 +
Az amavis azért tudja kiküldeni a figyelmeztetéseket is publikus email címekre, mert meg van adva a sneder mind három esetre:
 +
$mailfrom_notify_admin    = "root\@berki.org";                    # notifications sender
 +
$mailfrom_notify_recip    = "root\@berki.org";                    # notifications sender
 +
$mailfrom_notify_spamadmin = "root\@berki.org";                    # notifications sender
 +
Ha ez nem lenne megadva, akkor a publikus email szerverek eldobálnák a figyelmeztető leveleket.
 +
 
 +
 
 +
/etc/cron.daily/amavisd
 +
/usr/sbin/tmpwatch 24 /var/spool/amavisd/tmp
 +
/usr/sbin/tmpwatch -d 720 /var/spool/amavisd/quarantine
 +
A  tmpwatch kitörli azokat a fájlokat, amihez egy megadott ideig nem nyúlt senki. A conrtab-ban az van beállítva, hogy törölje a tmp mappából azokat a fájlokat, amiket 24 óráig senki nem nyúlt hozzá, és a karanténból azokat a fájlokat, amiket 720 óráig (30 nap) senki nem nézett meg.
 +
 
 +
 
 +
# mkdir -p /var/spool/amavisd/quarantine
 +
# chown amavis:amavis /var/spool/amavisd/quarantine
 +
# chmod 750 /var/spool/amavisd/quarantine
 +
 
 +
 
 +
 
 +
 
 +
Indítsuk el:
 +
# service amavisd start
 +
# chkconfig amavisd on
 +
 
 +
  8.1  Vírus szűrés - clamd
 +
A clamd démon fogadja a kéréseket a Amavis-töl, és meghívja a ClamAV-t a levelek átvizsgálására. A clamd és az amaivs egy socket-en keresztük kommunikálnak. Ezt a clamd.conf-ban és az amavisd.conf-ban fontos, hogy ugyan arra állítsuk, és mind két démon tudja írni ezt a fájlt.
 +
 
 +
/etc/clamad.conf
 +
...
 +
LocalSocket /var/run/clamav/clamd.sock
 +
...
 +
User clam
 +
...
 +
AllowSupplementaryGroups yes
 +
...
 +
 
 +
Indítsuk el a clamd-t.
 +
# service clamd start
 +
# chkconfig clamd on
 +
 
 +
Ekkor létrejön a clamd.sock socket fájl.
 +
 
 +
Nézzük meg, hogy kinek a tulajdonában van
 +
# ls -l /var/run/clamav/clamd.sock
 +
srw-rw-rw-. 1 clam clam 0 Jan 31 17:06 /var/run/clamav/clamd.sock
 +
Láthatjuk, hogy a clam user és csoport tulajdonában van, és a csoport írhatja és olvashatja a fájlt. Ezért fontos, hogy az amaivis user is benne legyen a clam csoportba, hogy tudja írni a socektet ő is.
 +
 
 +
# usermod -G amavis clam
 +
# cat /etc/group | grep clam
 +
clam:x:489:
 +
amavis:x:488:clam
 +
 
 +
Ezen felül, meg kell engedni, hogy a /var/spool/amavisd mappát a csoport is tudja írni. Ez ahhoz kell, hogy a clamd is bele tudjon írni a mappába.
 +
# chmod g+rx /var/spool/amavisd/tmp
 +
 
 +
/etc/amavisd/amavisd.conf
 +
['ClamAV-clamd',
 +
    \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
 +
    qr/\bOK$/m, qr/\bFOUND$/m,
 +
    qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
 +
 
 +
Az amaivis az amaivis user és gourp nevében fut. Ami nagyon fontos, hogy a ClamAV-clamd szekcióban a socket fájl ugyan az legyen mint ami clamd.conf-ban meg van adva. Ezt ellenőrizzük.
 +
 
 +
 
 +
  8.2  Spam szűrés - spamd
 +
 
 +
Ahhoz hogy az amaivs át tudja adni a leveleket, a clmad-hez hasonló démont kell elindítani, a spamd démont.
 +
Indítsuk el:
 +
# service spamassassin start
 +
# chkconfig spamassassin on
 +
 
 +
Az amavis-nak nem kell megmondani, hogy hol van a spamd, mert alapértelmezés szerint azt akarja használni. Amúgy így kéne megadni az amavis.conf-ban:
 +
@spam_scanners = ( ['SpamAssassin', 'Amavis::SpamControl::SpamAssassin'] );
 +
 
 +
 
 +
 
 +
  8.3  Posfix integráció
 +
A postfix-ben be kell állítani, hogy minden emailt adjon át kézbesítés előtt az Amavis-nak az 10024-es portra, és fogadja azokat, mikor az amavis visszaküldi az 10025-ös porton.
 +
 
 +
Ehhez két új szolgáltatást kell beállítani a /etc/postfix/maser.cf-ben.
 +
# ==========================================================================
 +
# service type  private unpriv  chroot  wakeup  maxproc command + args
 +
#              (yes)  (yes)  (yes)  (never) (100)
 +
# ==========================================================================
 +
amavisfeed unix    -      -      n        -      2    lmtp
 +
    -o lmtp_data_done_timeout=1200
 +
    -o lmtp_send_xforward_command=yes
 +
    -o disable_dns_lookups=yes
 +
    -o max_use=20
 +
 
 +
# ==========================================================================
 +
# service type  private unpriv  chroot  wakeup  maxproc command + args
 +
#              (yes)  (yes)  (yes)  (never) (100)
 +
# ==========================================================================
 +
127.0.0.1:10025 inet n    -      n      -      -    smtpd
 +
    -o content_filter=
 +
    -o smtpd_delay_reject=no
 +
    -o smtpd_client_restrictions=permit_mynetworks,reject
 +
    -o smtpd_helo_restrictions=
 +
    -o smtpd_sender_restrictions=
 +
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
 +
    -o smtpd_data_restrictions=reject_unauth_pipelining
 +
    -o smtpd_end_of_data_restrictions=
 +
    -o smtpd_restriction_classes=
 +
    -o mynetworks=127.0.0.0/8
 +
    -o smtpd_error_sleep_time=0
 +
    -o smtpd_soft_error_limit=1001
 +
    -o smtpd_hard_error_limit=1000
 +
    -o smtpd_client_connection_count_limit=0
 +
    -o smtpd_client_connection_rate_limit=0
 +
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings
 +
    -o local_header_rewrite_clients=
 +
    -o smtpd_milters=
 +
    -o local_recipient_maps=
 +
    -o relay_recipient_maps=
 +
 
 +
Az első azon szolgáltatás, ami átadja a leveleket az Amavis-nak. A neve fontos, mert majd ezzel kell rá hivatkozni a main.cf-ben.
 +
A második szolgáltatás fogadja az Amavis-től visszaérkező leveleket. Az itt felsorolt paraméterek mind felülírják a main.cf-ben felsorolt értékeket.
 +
 
 +
 
 +
A main.cf végére pedig be kell állítani, hogy a leveleket adja
 +
###########################
 +
# AMAVIS
 +
###########################
 +
content_filter = amavisfeed:[127.0.0.1]:10024
 +
 
 +
 
 +
 
 +
  8.4  Üzenet hozzárakása a kimenő levelekhez
 +
 
 +
Vagy a kimenő vagy a bejövő levelekhez hozzá lehet csapni egy üzenetet, amennyiben a levelet tisztának találta az Amavis. Egyszerre mind két irányban nekem nem sikerült.
 +
Az alábbi a kimenő levelekhez csapja hozzá az üzenetet.
 +
Ezt az altermime program segítségével tesszük meg, ami az emailek manipulálását teszi lehetővé. Ehhez elsőként meg kell mondani az amaivis-nak hogy hol van az altermime, majd meg kell adni a két üzenet fájlt. Egy sima szöveges és egy html-es változatot. Az amavis a sima szöveges levelekhez a txt-s fájlt fogja hozzácsapni, míg a html üzenetekhez a html fájlt. A karakter kódolást nem tudom hogy lehet állítani, ezért ékezetek nélkül írtam.
 +
 
 +
$altermime = '/usr/bin/altermime';
 +
 
 +
@altermime_args_disclaimer =
 +
  qw(--verbose  --disclaimer=/var/spool/amavisd/disclaimer.txt \
 +
    --disclaimer-html=/var/spool/amavisd/disclaimer.html);
 +
$defang_maps_by_ccat{+CC_CLEAN} = [ 'disclaimer' ];
 +
 
 +
$allow_disclaimers = 1;
 +
 
 +
Ezen felül az összes policy_bank belsejébe kapcsoljuk be disclaimer küldést.
 +
$policy_bank{....} = { 
 +
  ...
 +
  allow_disclaimers => 1,
 +
  ...
 +
}
 +
 
 +
 
 +
  8.5  Értesítések lokalizációja
 +
Ha az email vírusos volt, vagy tiltott csatolmányt tartalmazott, akkor az amaivs a küldőnek és a címzettnek értesítést küld. Alapértelmezés szerint ehhez hard kódolt emial templétet használ. Ezeket felül lehet definiálni.
 +
Hozzunk létre egy mappát a /etc/amaivsd/ alatt hu_HU néven. Ebben kötelezően el kell helyezni az alábbi fájlokat:
 +
 
 +
/etc/amavisd/hu_HU/charset
 +
/etc/amavisd/hu_HU/template-dsn.txt
 +
/etc/amavisd/hu_HU/template-spam-admin.txt
 +
/etc/amavisd/hu_HU/template-spam-sender.txt
 +
/etc/amavisd/hu_HU/template-virus-admin.txt
 +
/etc/amavisd/hu_HU/template-virus-recipient.txt
 +
/etc/amavisd/hu_HU/template-virus-sender.txt
 +
 
 +
Ezek letölthetők angolul több változatban is, bár nem túl egyszerű megtalálni őket. A legfontosabb a charset fájl. Itt meg kell mondani, hogy milyen karakter kódolású fájlokat használunk:
 +
 
 +
/etc/amavisd/hu_HU/charset
 +
utf-8
 +
ignored lines after first one
 +
 
 +
Az amavisd.conf végére, az 1-es elé írjuk oda:
 +
read_l10n_templates('/etc/amavisd/hu_HU');
 +
 
 +
 
 +
1;  # insure a defined return value
 +
 
 +
A templét fájlokból két fontos van számunkra, csak ezeket kell lefordítani:
 +
 
 +
/etc/amavisd/hu_HU/template-virus-recipient.txt
 +
/etc/amavisd/hu_HU/template-virus-sender.txt
 +
 
 +
A nevükkel ellentétben, ezeket nem csak vírusos üzenetek esetében használja. Ugyan ezt a templétet használja a szabálytalan header, a tiltott csatolmány, a spam és a vírusos üzenetek küldőjének és címzettjének értesítésére.
 +
Az Amaivs-2.9-es verziója már nem tud értesítést küldeni a vírus feladójának, a $ warnvirussender = 1 paramétert nem viszi már figyelembe.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
=Spamassassin=
 
<pre>
 
<pre>
 
# yum install spamassassin
 
# yum install spamassassin

Revision as of 19:24, 26 September 2016


ClamAV-0.98.5

Installálás

Két programot kell felrakni. Magát a clamav vírus kereső programot, és clamd démont, amin keresztül az amaivs hozzá fog csatlakozni a clamAV-hez.

A clamav-t meg kell hívni a megfelelő argumentumokkal, hogy átvizsgáljon egy fájlt vagy egy mappát, tehát nem egy futó démon. Ezzel szemben a clamd-t el kell indítani, hogy folyamatosan fogadja a hozzá beérkező kéréseket, majd a megfelelő paraméterekkel meghívja a clamav programot, hogy vizsgálja át a neki átadott fájlt, pl. egy email-t.

Ehhez elsőként a EPEL repót hozzá kell adni a yum-hoz.

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install clamav clamd

/etc/clamad.conf

DatabaseDirectory /var/lib/clamav
User clam

ScanMail yes
ScanArchive yes


Vírus definíciók frissítése

A vírus adatbázis frissítését a freshclam program végzi. Ennek van egy saját config fájlja. Ebben fontos, hogy a vírus adatbázis helye ugyan ott legyen, mint amit a clamav.conf-ban megadtunk. /etc/freshclam.conf

DatabaseDirectory /var/lib/clamav
DatabaseOwner clam

Így kell frissíteni:

# /usr/bin/freshclam --no-warnings

A telepítés létrehozott egy alap ClamAV frissítő fájlt a /etc/crond.daily-ben. Ezt egészítsük ki azzal, hogy küldje el email-ben a freshclam logját ha lefutott. Írjuk át úgy a freshclam futtatását, hogy ne írjon ki warning-okat, és, szedjük ki a quiet kapcsolót, és az output-ot irányítsuk egy fájlba, amit az emial mellékletéhez csatolni fogunk.

/etc/cron.daily/freshclam
!/bin/sh 

### A simple update script for the clamav virus database. 
### This could as well be replaced by a SysV script. 

### fix log file if needed 
LOG_FILE="/var/log/clamav/freshclam.log" 
if [ ! -f "$LOG_FILE" ]; then 
    touch "$LOG_FILE" 
    chmod 644 "$LOG_FILE" 
    chown clam.clam "$LOG_FILE" 
fi 

/usr/bin/freshclam \ 
    --no-warnings \ 
    --datadir="/var/lib/clamav" \ 
    --log="$LOG_FILE" \ 
    > /tmp/freshclam.log 


/bin/echo "" | /bin/mail -a /tmp/freshclam.log -s "[SERVER] ClamAV database Refreshment" -r "root" root

A mail parancsnak a -r kapcsolóval megadhatjuk a küldőt, de nem szükséges, mert ha nem adunk meg semmit, akkor a küldő a root@system.berki2.org-lesz.


Automatikus fájlrendszer szkennelés

Letölthető egy okos script, ami elvégzi a megadott mappák vírus vizsgálatát, majd az eredményt elküldi emailben. Hozzunk létre egy karantén mappát, és adjunk rá mindenkinek írási jogot:

  1. mkdir /var/local/virus_quaraintin/dailyScan
  2. chmod 722 /var/local/virus_quaraintin/dailyScan

Tegyük a cron.weekly mappába a szkennelő szkriptet.

/etc/cron.weekly/clam_scan_home.sh

  1. !/bin/bash
  1. Email alert cron job script for ClamAV
  2. Original, unmodified script by: Deven Hillard
  3. (http://www.digitalsanctuary.com/tech-blog/debian/automated-clamav-virus-scanning.html)
  4. Modified to show infected and/or removed files
  1. Directories to scan

SCAN_DIR="/home/adam2"

QUARANTINE_DIR="/var/local/virus_quaraintin/dailyScan"

  1. Location of log file

LOG_FILE="/var/log/clamav/manual_clamscan.log"

  1. Uncomment to have scan move files

AGGRESSIVE=1

  1. Uncomment to have scan not move files
  2. AGGRESSIVE=0
  1. Email Subject

SUBJECT="[SERVER] ClamAV virus scan result"

  1. Email To

EMAIL="root"

EMAIL_FROM="root"

SCAN_ARGUMENTS="--scan-archive=yes"

check_scan () {

   # If there were infected files detected, send email alert 

   if [ `tail -n 12 ${LOG_FILE}  | grep Infected | grep -v 0 | wc -l` != 0 ] 
   then 
   # Count number of infections 
       SCAN_RESULTS=$(tail -n 10 $LOG_FILE | grep 'Infected files') 
       INFECTIONS=${SCAN_RESULTS##* } 
    
       if [ $AGGRESSIVE = 1 ] 
       then 
               echo -e "\n`tail -n $((10 + ($INFECTIONS*2))) $LOG_FILE`" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL} 
       else 
               echo -e "\n`tail -n $((10 + $INFECTIONS)) $LOG_FILE`" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL} 
       fi 

   else 

/bin/echo "NO virus found" | /bin/mail -s "${SUBJECT}" -r "${EMAIL_FROM}" ${EMAIL}

   fi 

}

if [ $AGGRESSIVE = 1 ] then

       #/usr/bin/clamscan -ri --remove $SCAN_DIR >> $LOG_FILE 

/usr/bin/clamscan -ri --move=$QUARANTINE_DIR $SCAN_ARGUMENTS $SCAN_DIR >> $LOG_FILE


else

       /usr/bin/clamscan -ri $SCAN_ARGUMENTS $SCAN_DIR >> $LOG_FILE 

fi

check_scan


Adjunk rá futási jogot:

  1. chmod +x /etc/cron.weekly/clam_scan_home.sh


7 spamassassin-3.3.1



  1. yum install spamassassin

A spamassassin telepítéskor létrehozza a naponta futó cron frissítő szkriptjét:

/etc/cron.d/sa-update 10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log && echo "" | /bin/mail -s "[SERVER] Spamassassin refreshment" -r "root" root A /usr/share/spamassassin/sa-update.cron fájl egy bonyolult szkriptet tartalmaz. A frissítés minden nap hajnali 4:10-kor fog lefutni.

/etc/mail/spamassassin/local.cf required_hits 5 report_safe 0 rewrite_header Subject [SPAM]

Az itt lévő összes beállítást az amavis.conf-ban felül lehet írni.


8 Amavis – 2.9.1

rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm


  1. yum install amavisd-new


/etc/amavisd/amavisd.conf $daemon_user = 'amavis'; # (no default; customary: vscan or amavis), -u $daemon_group = 'amavis'; # (no default; customary: vscan or amavis), -g

$mydomain = 'berki2.org'; ... $myhostname = 'berki2.org'; # must be a fully-qualified domain name!

  1. Virusok karantén mappába + értesítés=admin, felhasználó

$QUARANTINEDIR = '/var/spool/amavisd/quarantine'; $virus_quarantine_method = 'local: virus-%m'; # Filename in $QUARANTINEDIR $virus_quarantine_to = 'virus-quarantine'; $virus_admin = "adam\@berki.org"; $warnvirusrecip = 1;

$mailfrom_notify_admin = "root\@berki.org"; # notifications sender $mailfrom_notify_recip = "root\@berki.org"; # notifications sender $mailfrom_notify_spamadmin = "root\@berki.org"; # notifications sender

  1. Rossz fejléc karantén mappába + értesítés=adimin

$bad_header_quarantine_method = 'local: bad_header-%m'; # Filename in $QUARANTINEDIR $bad_header_quarantine_to = 'bad_header-quarantine'; $bad_header_admin = "adam\@berki.org";

  1. Tiltott formátum karantén mappába + értesítés=admin, felhasználó

$banned_files_quarantine_method = 'local: banned-%m'; # Filename in $QUARANTINEDIR $banned_quarantine_to = 'banned-quarantine'; $banned_admin = "adam\@berki.org"; $warnbannedrecip = 1; $warnbannedsender = 1;

  1. SPAM kezelés
  1. Spam értékek beállítása

$sa_spam_subject_tag = '***Spam*** '; $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 6.2; # add 'spam detected' headers at that level $sa_kill_level_deflt = 6.9; # triggers spam evasive actions (e.g. blocks mail) $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent $sa_crediblefrom_dsn_cutoff_level = 18; # likewise, but for a likely valid From

  1. $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off

$penpals_bonus_score = 8; # (no effect without a @storage_sql_dsn database) $penpals_threshold_high = $sa_kill_level_deflt; # don't waste time on hi spam $bounce_killer_score = 100; # spam score points to add for joe-jobbed bounces


  1. Spamek elküldése emailcímre értesítése nélkül.

$spam_quarantine_method = 'smtp:[127.0.0.1]:10025'; $spam_quarantine_to = 'system@berki2.org';


1; # insure a defined return value Szerintem ami már a config-ban fentebb is szerepelt, azt nem kell kiszedni, mert itt felülírjuk. Meg kell adni a mydomain és a myhostname paramétereket, szerintem nem fotnos, hogy mit írunk oda.

FONTOS: Az amavis azért tudja kiküldeni a figyelmeztetéseket is publikus email címekre, mert meg van adva a sneder mind három esetre: $mailfrom_notify_admin = "root\@berki.org"; # notifications sender $mailfrom_notify_recip = "root\@berki.org"; # notifications sender $mailfrom_notify_spamadmin = "root\@berki.org"; # notifications sender Ha ez nem lenne megadva, akkor a publikus email szerverek eldobálnák a figyelmeztető leveleket.


/etc/cron.daily/amavisd /usr/sbin/tmpwatch 24 /var/spool/amavisd/tmp /usr/sbin/tmpwatch -d 720 /var/spool/amavisd/quarantine A tmpwatch kitörli azokat a fájlokat, amihez egy megadott ideig nem nyúlt senki. A conrtab-ban az van beállítva, hogy törölje a tmp mappából azokat a fájlokat, amiket 24 óráig senki nem nyúlt hozzá, és a karanténból azokat a fájlokat, amiket 720 óráig (30 nap) senki nem nézett meg.


  1. mkdir -p /var/spool/amavisd/quarantine
  2. chown amavis:amavis /var/spool/amavisd/quarantine
  3. chmod 750 /var/spool/amavisd/quarantine



Indítsuk el:

  1. service amavisd start
  2. chkconfig amavisd on
 8.1  Vírus szűrés - clamd

A clamd démon fogadja a kéréseket a Amavis-töl, és meghívja a ClamAV-t a levelek átvizsgálására. A clamd és az amaivs egy socket-en keresztük kommunikálnak. Ezt a clamd.conf-ban és az amavisd.conf-ban fontos, hogy ugyan arra állítsuk, és mind két démon tudja írni ezt a fájlt.

/etc/clamad.conf ... LocalSocket /var/run/clamav/clamd.sock ... User clam ... AllowSupplementaryGroups yes ...

Indítsuk el a clamd-t.

  1. service clamd start
  2. chkconfig clamd on

Ekkor létrejön a clamd.sock socket fájl.

Nézzük meg, hogy kinek a tulajdonában van

  1. ls -l /var/run/clamav/clamd.sock

srw-rw-rw-. 1 clam clam 0 Jan 31 17:06 /var/run/clamav/clamd.sock Láthatjuk, hogy a clam user és csoport tulajdonában van, és a csoport írhatja és olvashatja a fájlt. Ezért fontos, hogy az amaivis user is benne legyen a clam csoportba, hogy tudja írni a socektet ő is.

  1. usermod -G amavis clam
  2. cat /etc/group | grep clam

clam:x:489: amavis:x:488:clam

Ezen felül, meg kell engedni, hogy a /var/spool/amavisd mappát a csoport is tudja írni. Ez ahhoz kell, hogy a clamd is bele tudjon írni a mappába.

  1. chmod g+rx /var/spool/amavisd/tmp

/etc/amavisd/amavisd.conf

['ClamAV-clamd', 
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], 
   qr/\bOK$/m, qr/\bFOUND$/m, 
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

Az amaivis az amaivis user és gourp nevében fut. Ami nagyon fontos, hogy a ClamAV-clamd szekcióban a socket fájl ugyan az legyen mint ami clamd.conf-ban meg van adva. Ezt ellenőrizzük.


 8.2  Spam szűrés - spamd

Ahhoz hogy az amaivs át tudja adni a leveleket, a clmad-hez hasonló démont kell elindítani, a spamd démont. Indítsuk el:

  1. service spamassassin start
  2. chkconfig spamassassin on

Az amavis-nak nem kell megmondani, hogy hol van a spamd, mert alapértelmezés szerint azt akarja használni. Amúgy így kéne megadni az amavis.conf-ban: @spam_scanners = ( ['SpamAssassin', 'Amavis::SpamControl::SpamAssassin'] );


 8.3  Posfix integráció

A postfix-ben be kell állítani, hogy minden emailt adjon át kézbesítés előtt az Amavis-nak az 10024-es portra, és fogadja azokat, mikor az amavis visszaküldi az 10025-ös porton.

Ehhez két új szolgáltatást kell beállítani a /etc/postfix/maser.cf-ben.

  1. ==========================================================================
  2. service type private unpriv chroot wakeup maxproc command + args
  3. (yes) (yes) (yes) (never) (100)
  4. ==========================================================================

amavisfeed unix - - n - 2 lmtp

   -o lmtp_data_done_timeout=1200 
   -o lmtp_send_xforward_command=yes 
   -o disable_dns_lookups=yes 
   -o max_use=20 
  1. ==========================================================================
  2. service type private unpriv chroot wakeup maxproc command + args
  3. (yes) (yes) (yes) (never) (100)
  4. ==========================================================================

127.0.0.1:10025 inet n - n - - smtpd

   -o content_filter= 
   -o smtpd_delay_reject=no 
   -o smtpd_client_restrictions=permit_mynetworks,reject 
   -o smtpd_helo_restrictions= 
   -o smtpd_sender_restrictions= 
   -o smtpd_recipient_restrictions=permit_mynetworks,reject 
   -o smtpd_data_restrictions=reject_unauth_pipelining 
   -o smtpd_end_of_data_restrictions= 
   -o smtpd_restriction_classes= 
   -o mynetworks=127.0.0.0/8 
   -o smtpd_error_sleep_time=0 
   -o smtpd_soft_error_limit=1001 
   -o smtpd_hard_error_limit=1000 
   -o smtpd_client_connection_count_limit=0 
   -o smtpd_client_connection_rate_limit=0 
   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings 
   -o local_header_rewrite_clients= 
   -o smtpd_milters= 
   -o local_recipient_maps= 
   -o relay_recipient_maps=

Az első azon szolgáltatás, ami átadja a leveleket az Amavis-nak. A neve fontos, mert majd ezzel kell rá hivatkozni a main.cf-ben. A második szolgáltatás fogadja az Amavis-től visszaérkező leveleket. Az itt felsorolt paraméterek mind felülírják a main.cf-ben felsorolt értékeket.


A main.cf végére pedig be kell állítani, hogy a leveleket adja

  1. AMAVIS

content_filter = amavisfeed:[127.0.0.1]:10024


 8.4  Üzenet hozzárakása a kimenő levelekhez

Vagy a kimenő vagy a bejövő levelekhez hozzá lehet csapni egy üzenetet, amennyiben a levelet tisztának találta az Amavis. Egyszerre mind két irányban nekem nem sikerült. Az alábbi a kimenő levelekhez csapja hozzá az üzenetet. Ezt az altermime program segítségével tesszük meg, ami az emailek manipulálását teszi lehetővé. Ehhez elsőként meg kell mondani az amaivis-nak hogy hol van az altermime, majd meg kell adni a két üzenet fájlt. Egy sima szöveges és egy html-es változatot. Az amavis a sima szöveges levelekhez a txt-s fájlt fogja hozzácsapni, míg a html üzenetekhez a html fájlt. A karakter kódolást nem tudom hogy lehet állítani, ezért ékezetek nélkül írtam.

$altermime = '/usr/bin/altermime';

@altermime_args_disclaimer =

 qw(--verbose  --disclaimer=/var/spool/amavisd/disclaimer.txt \ 
    --disclaimer-html=/var/spool/amavisd/disclaimer.html); 

$defang_maps_by_ccat{+CC_CLEAN} = [ 'disclaimer' ];

$allow_disclaimers = 1;

Ezen felül az összes policy_bank belsejébe kapcsoljuk be disclaimer küldést. $policy_bank{....} = {

  ...
 allow_disclaimers => 1, 
 ...

}


 8.5  Értesítések lokalizációja

Ha az email vírusos volt, vagy tiltott csatolmányt tartalmazott, akkor az amaivs a küldőnek és a címzettnek értesítést küld. Alapértelmezés szerint ehhez hard kódolt emial templétet használ. Ezeket felül lehet definiálni. Hozzunk létre egy mappát a /etc/amaivsd/ alatt hu_HU néven. Ebben kötelezően el kell helyezni az alábbi fájlokat:

/etc/amavisd/hu_HU/charset /etc/amavisd/hu_HU/template-dsn.txt /etc/amavisd/hu_HU/template-spam-admin.txt /etc/amavisd/hu_HU/template-spam-sender.txt /etc/amavisd/hu_HU/template-virus-admin.txt /etc/amavisd/hu_HU/template-virus-recipient.txt /etc/amavisd/hu_HU/template-virus-sender.txt

Ezek letölthetők angolul több változatban is, bár nem túl egyszerű megtalálni őket. A legfontosabb a charset fájl. Itt meg kell mondani, hogy milyen karakter kódolású fájlokat használunk:

/etc/amavisd/hu_HU/charset utf-8 ignored lines after first one

Az amavisd.conf végére, az 1-es elé írjuk oda: read_l10n_templates('/etc/amavisd/hu_HU');


1; # insure a defined return value

A templét fájlokból két fontos van számunkra, csak ezeket kell lefordítani:

/etc/amavisd/hu_HU/template-virus-recipient.txt /etc/amavisd/hu_HU/template-virus-sender.txt

A nevükkel ellentétben, ezeket nem csak vírusos üzenetek esetében használja. Ugyan ezt a templétet használja a szabálytalan header, a tiltott csatolmány, a spam és a vírusos üzenetek küldőjének és címzettjének értesítésére. Az Amaivs-2.9-es verziója már nem tud értesítést küldeni a vírus feladójának, a $ warnvirussender = 1 paramétert nem viszi már figyelembe.




Spamassassin

# yum install spamassassin


Mi hol van

  • DEF_RULES_DIR=/usr/share/spamassassin,
  • LOCAL_RULES_DIR=/etc/mail/spamassassin
  • LOCAL_STATE_DIR=/var/lib/spamassassin


Szabályok frissítése

Spam adatbázis

A Spamassassin szabály adatbázisa a /var/lib/spamassassin/<verziószám> mappában található, az esetünkben itt: /var/lib/spamassassin/3.003001

Ezen belül minden úgynevezett "csatornának" van egy saját almappája, amiben az adott csatorna szabálygyűjteménye található. A csatorna egy "szervezetnek" a saját szabálygyűjteménye. A hivatalos "gyári" csatorna/szabálygyűjteménye az update_spamassassin_org nevet viseli. Ezen felül még rengeteg egyéb nem hivatalos csatorna/szabálygyűjteménye létezik.

A sa-update parancsnak meg kell adni, hogy milyen csatornákat frissítsen ill. töltsön le. Ezt a --channel kapcsoló után tudjuk megadni, ahol a csatorna/szabálygyűjteménye URL-jét várja.

A hivatalos CentOS repository-ból telepített spamassassin esetében a sa-update parancsot a /usr/share/spamassassin/sa-update.cron script hívja meg. A csatornákat a /usr/share/spamassassin/sa-update.cron használata esetén a /etc/mail/spamassassin/channel.d mappában elhelyezett csatorna leíró fájlokból olvassa ki a script, és ezekkel a csatorna URL-ekkel hívja meg a sa-update parancsot.


Gyárilag két csatorna van a /etc/mail/spamassassin/channel.d mappában, a hivatalos updates_spamassassin_org és a széles körben elterjedt sought_rules_yerp_org:

[root@server channel.d]# ll /etc/mail/spamassassin/channel.d
total 12
-rw-r--r--. 1 root root 2572 Dec  5  2013 sought.conf
-rw-r--r--. 1 root root 4915 Dec  5  2013 spamassassin-official.conf

A csatorna leírók fájl elején található a csatorna URL-je, majd ezt követi az a kulcs amivel a frissítéseket aláírja a kibocsájtó. Pl. a spamassassin-official.conf fájl eleje az alábbi:

# http://wiki.apache.org/spamassassin/RuleUpdates
CHANNELURL=updates.spamassassin.org
KEYID=5244EC45
# Ignore everything below.
return 0

This is the GPG key that updates are signed with (currently,
as of Wed Dec 21 19:31:38 PST 2005.  Please contact <dev /at/
spamassassin.apache.org> with any questions.


-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (SunOS)
.....


A /usr/share/spamassassin/sa-update.cron script kiolvassa innen az összes csatorna leíró fájlt, és hozzáfűzi a --channel paraméterhez a leírókból kiolvasott URL-eket.


Minden csatornának van egy saját almappája és egy csatorna leírója a /var/lib/spamassassin/3.003001 szabály adatbázis gyűjtőmappában.

[root@server 3.003001]# ll /var/lib/spamassassin/3.003001
total 16
drwxr-xr-x. 2 root root 4096 Mar 12  2015 sought_rules_yerp_org
-rw-r--r--. 1 root root  123 Mar 12  2015 sought_rules_yerp_org.cf
drwxr-xr-x. 2 root root 4096 Sep  8 05:53 updates_spamassassin_org
-rw-r--r--. 1 root root 2851 Sep  8 05:53 updates_spamassassin_org.cf
TipIcon.png

Tip
Ezekről a mappákról teljesen felesleges biztonsági mentést csinálni, mivel a sa-update mindig a legfrissebb gyűjteményt hozza le.


WarningIcon.png

Warning
Úgy tűnik, hogy a sought szabályokhoz már jó ideje nem jön frissítés. A sa-update ezt a választ adja manuális update esetén minden nap:

# /usr/bin/sa-update -v --channel sought.rules.yerp.org --gpgkey 6C6191E3
Update finished, no fresh updates were available