Difference between revisions of "Email Server - MailScanner alapok"
(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
Contents
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:
- 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
# 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
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.
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