|
Strona 6 z 8
4. Instalacja i konfiguracja AMaViS (A Mail Virus Scanner)
Instalacja - przechodzimy do katalogu gdzie znajduje się AMaViS i wydajemy
poniższe polecenia:
# cd /usr/ports/security/amavisd-new
# make build && make install && make clean
AMaViS wymaga zainstalowanego języka Perl 5.8.2 lub wyżej:
# cd /user/ports/lang/perl5.8
# make build install clean
Jeżeli mamy zainstalowaną tą wersje perla możemy pominąć instalację. Po
zainstalowaniu perla w wersji 5.8 zobaczymy:
Installation of Perl distribution is finished. Please note, that
since Perl is also in the base system, this distribution will not
be used by default.
If you want this version of Perl to be used by default, please type
use.perl port
Assuming that use.perl script (which was installed with the rest
of the Perl distribution) can be found in your PATH (you might have
to type `rehash' first, depending upon a shell you use), this action
will replace /usr/bin/perl and /usr/bin/suidperl with symbolic links
to the versions of these binaries in the Perl distribution. This
action will also put some variables into your /etc/make.conf file,
so that newly installed ports (not packages!) will use new version
of perl, and the system upgrades from the source will not overwrite
the changes made.
At any time you can also type
use.perl system
if you wish to revert back to the system version of perl.
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/lib/perl5/5.8.5/mach/CORE/libperl.so
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.perl.org/ |
Po poprawnym zainstalowanie AMaViS'a powinniśmy otrzymać komunikat:
To use amavisd-new, you need to install at least one virus scanner.
The following virus scanners are available in the FreeBSD ports
collection:
/usr/ports/security/vscan McAfee VirusScan
/usr/ports/security/clamav Clam Antivirus
/usr/ports/security/f-prot F-Prot Antivirus
/usr/ports/security/drweb DrWeb antivirus suite
Enable amavisd-new in /etc/rc.conf with the following line:
amavisd_enable="YES"
If you want to use the amavis sendmail milter interface,
you need the following additional line in /etc/rc.conf
amavis_milter_enable="YES"
Configuration templates are available in /usr/local/etc
as amavisd.conf-dist, amavisd.conf-sample and amavisd.conf-default.
Documentation is available in /usr/local/share/doc/amavisd-new.
*******************************************************************
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/amavis-milter
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/amavis-milter.sh
/usr/local/etc/rc.d/amavisd.sh
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.ijs.si/software/amavisd/ |
Nie pozostaje nam nic innego jak przystąpić do konfiguracji. Nie będę tutaj
opisywał dokładnie jego wszystkich opcji, jedynie te, które uznałem za
najważniejsze i które należy zmienić abyś mógł używać na swoim serwerze AMaViS'a.
Jego plik konfiguracyjny składa się z 8 sekcji.
Edytuj plik `amavisd.conf` i pozmieniaj w nim następujące linijki. Warto
przypomnieć jak wiemy wartość 0 odpowiada słowu false, a wartość 1 odpowiada
słowu true. Oto przykładowe opcje, które powinniśmy zmienić. Pozostałe
zostawiamy bez zmian, lub czytamy dokumentację, aby dowiedzieć się o nich
więcej. Oczywiście definiujemy je według własnych upodobań i potrzeb. Uwaga,
zmieniasz je na własną odpowiedzialność:
# cp /usr/local/etc/amavisd.conf-dist /usr/local/etc/amavisd.conf
# ee /usr/local/etc/amavisd.conf
--- amavisd.conf ---
use strict; # Początek pliku:
# Section I - Essential daemon and MTA settings
# Katalog domowy AMaViS'a:
$MYHOME = '/var/amavis';
# Domena Twojego serwera:
$mydomain = 'domena.pl';
# Z poziomu jakiego użytkownika i grupy będzie uruchamiany demon
$daemon_user = 'vscan';
$daemon_group = 'vscan'; # Roboczy katalog domowy, w którym będą
przechowywane
# rozpakowane wiadomości
$TEMPBASE = $MYHOME;
$ENV{TMPDIR} = $TEMPBASE; # Ustawienie zmiennej środowiskowej `TMPDIR`
$max_servers = 2; # Maksymalna liczba uruchomionych serwerów
$max_requests = 10;
$child_timeout=5*60;
@local_domains_acl = ( ".$mydomain", '.domena2.pl' ); # Wpisujemy tu nazwy
domen
# obsługiwanych przez nasz serwer
# Section II - MTA specific (defaults should be ok)
$unix_socketname = "$MYHOME/amavisd.sock"; # Ścieżka do pliku z gniazdem
$inet_socket_port = 10024; # Port na którym będzie nasłuchiwał AMaViS
@inet_acl = qw( 127.0.0.1 ); # Dopuszczaj połączenia jedynie poprzez lokalny
adres IP
# Section III - Logging
$DO_SYSLOG = 0; # Włączenie logowania od syslog'a, ustawiamy na nie (0),
# ponieważ będziemy wszystko logować do osobnego pliku
$LOGFILE = "$MYHOME/amavis.log"; # Ścieżka do pliku z logami
# Poziom logowania
$log_level = 0; # (Standardowo - 0 informacje o uruchomieniu, zatrzymaniu,
# komunikaty o niepowodzeniach, wykrytych wirusach)
# Logowanie zarówno zawirusowanych i niezawirusowanych wiadomości:
$log_templ = '[? %#V |[? %#F |[?%#D|Not-Delivered|Passed]|BANNED name/type
(%F)]|INFECTED (%V)], #
<%o> -> [<%R>|,][? %i ||, quarantine %i], Message-ID: %m, Hits: %c';
$hdr_encoding = 'iso-8859-2'; # Wybór strony kodowej, dla nagłówka
$bdy_encoding = 'iso-8859-2'; # Wybór strony kodowej, dla sekcji body
wiadomości:
# Ścieżki do plików z szablonem wiadomości (zawiadomienia),
# które będą zwracane do nadawcy, odbiorcy i
# administratora, jeśli wiadomość będzie zawierała wirusy,
# Po więcej informacji zapraszam do `README.customize`:
$notify_virus_sender_templ= read_text('/var/amavis/notify_virus_sender.txt');
$notify_virus_admin_templ = read_text('/var/amavis/notify_virus_admin.txt');
$notify_virus_recips_templ= read_text('/var/amavis/notify_virus_recips.txt');
#Powiadamianie nadawcy o wysłaniu wirusa (1-tak, 0-nie)
$warnvirussender = 0;
#Powiadamianie odbiorcy o wirusie (1-tak, 0-nie)
$warnvirusrecip = 1;
# Podajemy naszemu AMaViS co ma zrobić z wiadomościami:
# D_PASS - Poczta zostanie wysłana do adresata nie patrząc na jej złą
zawartość
# D_DISCARD - Poczta nie zostanie dostarczona do adresata oraz nadawca nie
dostanie
# o tym zawiadomienia
# D_BOUNCE - Poczta nie zostanie dostarczona do, ale zostanie do niego
wysłane zawiadomienie
# (wyjątek: zawiadomienie nie zostanie dostarczone jeśli adresat znajduje
się w
# $viruses_that_fake_sender_re)
# D_REJECT - Poczta zostanie odrzucona, a nadawca otrzyma jej zwrot wraz z
informacją o
# niepowodzeniu od Postfix'a
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_REJECT;
$final_bad_header_destiny = D_PASS;
$warnvirussender = 0; # Zawiadomienie nadawcy o wirusie
$warnvirusrecip = 0; # Zawiadomienie odbiorcy o wirusie
# Definiujemy nazwy najczęściej spotykanych robaków:
$viruses_that_fake_sender_re = new_RE(
qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
qr'tanatos|lentin|bridex|mimail|trojan.dropper|dumaru|parite|spaces'i,
qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?la'i,
qr'frethem|sircam|be?agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'i,
qr'@mm|@MM', # mass mailing viruses as labeled by f-prot and uvscan
qr'Worm'i, # worms as labeled by ClamAV, Kaspersky, etc
[qr'^(EICAR|Joke.|Junk.)'i => 0],
[qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0],
[qr/.*/ => 1], # true by default (remove or comment-out if undesired)
);
# Definiujemy konto, na które będą wysyłane powiadomienia o wirusach itp.
# Musisz pamiętać aby utworzyć alias lub dodać nowe konto wirtualne o nazwie
`virusalert`.
$virus_admin = "virusalert@$mydomain";
# Definiujemy konta, z których będą wysyłane zawiadomienia do użytkowników:
$mailfrom_notify_admin = "virusalert@$mydomain";
$mailfrom_notify_recip = "virusalert@$mydomain";
# Wyłączamy kwarantanne, która jest nam niepotrzebna:
$virus_quarantine_to = undef;
# Zmiana nagłówka, aby wyłączyć całkowicie wyświetlanie nagłówka ustaw te
dwie zmienne
# jako `undef`. Zmienne te możemy edytować dodając np. swoje nazwy:
$X_HEADER_TAG = 'X-Virus-Scanned';
$X_HEADER_LINE = "by amavisd-new at $mydomain";
# Tytuł wiadomości, który będzie wysyłany w wypadku gdy archiwa będą
zabezpieczone hasłem:
$undecipherable_subject_tag = '***UNCHECKED*** '; # undef disables it
# Kasowanie istniejących nagłówków - ustawiamy wartość false:
$remove_existing_x_scanned_headers = 0;
# Definiujemy typy plików, których nasz AMaViS ma nie rozpakowywać.
# Ma je trzymać w spakowanej formie dla narzędzia antywirusowego:
$keep_decoded_original_re = new_RE(
# qr'^MAIL$', # retain full original message for virus checking (can be
slow)
qr'^MAIL-UNDECIPHERABLE$', # retain full mail if it contains undecipherables
qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
# qr'^Zip archive data',
);
# Zabronione nazwy plików, które muszą zostać przepuszczone przez skaner
antywirusowy:
$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
qr'.[^.]*.(exe|vbs|pif|scr|bat|cmd|com|dll)$'i, # double extension
# qr'..(exe|vbs|pif|scr|bat|cmd|com)$'i, # banned extension - basic
# qr'..(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
# jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
# vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long
# qr'..(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab.
# qr'^.(zip|lha|tnef|cab)$'i, # banned file(1) types
qr'^.exe$'i, # banned file(1) types
qr'^application/x-msdownload$'i, # banned MIME types
qr'^application/x-msdos-program$'i,
# qr'^message/partial$'i, qr'^message/external-body$'i, # block rfc2046
);
# Section V - Per-recipient and per-sender handling, whitelisting, etc.
# Rezygnujemy z bazy SQL, w której przechowywane są tzw. whitelist i
blacklist:
$sql_select_white_black_list = undef;
# Czarna lista użytkowników, od których wiadomości będą automatycznie
odrzucane:
$blacklist_sender_re = new_RE(
qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou|greatcasino)@'i,
qr'^(investments|lose_weight_today|market.alert|money2you|MyGreenCard)@'i,
qr'^(new.tld.registry|opt-out|opt-in|optin|saveonlsmoking2002k)@'i,
qr'^(specialoffer|specialoffers|stockalert|stopsnoring|wantsome)@'i,
qr'^(workathome|yesitsfree|your_friend|greatoffers)@'i,
qr'^(inkjetplanet|marketopt|MakeMoney)d*@'i,
);
# Section VI - Resource limits
# Maksymalny poziom dla rozpakowania/rozkodowania (0 - bez limitu):
$MAXLEVELS = 14;
# Maksymalna liczba rozpakowanych plików (0 - bez limitu)
$MAXFILES = 1500;
# Section VII - External programs, virus scanners
# Ścieżki do narzędzi wymienionych poniżej:
$path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin';
# Narzędzia, które nasz AMiViS będzie wykorzystywał do dekompresji plików:
$file = 'file';
$gzip = 'gzip';
$bzip2 = 'bzip2';
$lzop = 'lzop';
$uncompress = ['uncompress', 'gzip -d', 'zcat'];
$unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat'];
$arc = ['nomarch', 'arc'];
$unarj = ['arj', 'unarj'];
$unrar = ['rar', 'unrar'];
$zoo = 'zoo';
$lha = 'lha';
$cpio = 'cpio';
# Definiujemy ustawienia dla naszego skanera antywirusowego, którym będzie
ClamAV,
# pamiętaj o poprawnym podaniu ścieżki do pliku socket:
@av_scanners = (
['Clam Antivirus-clamd',
&ask_daemon, ["CONTSCAN {}n", '/var/amavis/clamd'],
qr/bOK$/, qr/bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
# Możliwe jest również dodanie zapasowego skanera, którym może być na
przykład MKSd, do tego służy zmienna
# @av_scanners_backup = (" ");
# Koniec pliku:
1; |
--- end of amavisd.conf ---
Szablony plików:
--- notify_virus_admin.txt ---
Subject: [? %#V |[? %#F |[? %#X ||INVALID HEADER]|BANNED FILENAME
(%F)]| wysłano wirusa \
(%V) ]
[? %#V |[? %#F |[? %#X ||INVALID CHARACTERS IN HEADER]|BANNED FILENAME
ALERT]
|OSTRZEZENIE: wyslano wirusa ]
System wykryl
[? %#V |#| [? %#V |viruses|virus|viruses]: %V]
[? %#F |#| banned [? %#F |names|name|names]: %F]
[? %#X |#|\n[%X\n]]
w mailu od %S do [? %#R |osob|osoby|osob]:[
-> %R]
[? %#j ||Tytul maila: %j]
Wyslanego : [%d]
Wykryl go program: %W |
--- end notify_virus_admin.txt ---
--- notify_virus_recips.txt ---
Date: %d
From: %f
Subject: [? %#V |[? %#F ||Zabroniony plik/Banned filename]|Wirus/Virus (%V)]
w liscie do Ciebie/in mail to you
To: [? %#T |undisclosed-recipients: ;|[<%T>|, ]]
[? %#C |#|Cc: [<%C>|, ]]
Message-ID: <VR%n@%h>
===============================================================
[? %#V |[? %#F ||*** ZABRONIONY PLIK ***]|*** RAPORT ANTYWIRUSOWY ***]
Skaner antywirusowy wykryl [? %#V |#|[? %#V |wirusy|wirusa|wirusy] %V #]
[? %#F |#|zabroniony [? %#F |pliki|plik|pliki] %F #]
w liscie do Ciebie [? %o |od nieznanego nadawcy.|od: %o]
[? %q |Wiadomosc nie zostala zatrzymana.|Wiadomosc zostala zatrzymana.
Identyfikator zatrzymanej przesylki: %i]
Skontaktuj sie z administratorem w celu uzyskania szczegolow.
Ponizej znajduja sie naglowki zarazonej wiadomosci:
=====================================================================
[? %#V |[? %#F ||*** BANNED FILENAME ALERT ***]|*** VIRUS ALERT ***]
Our content checker found [? %#V |#|[? %#V |viruses|virus|viruses] %V #]
[? %#F |#|banned [? %#F |filenames|filename|filenames] %F #]\n
in an email to you [? %o |from unknown sender.|from: %o]
[? %q |Not quarantined.|The message has been quarantined as: %i]
Please contact your system administrator for details.
Here are the headers:
=====================================================================
------------------------- BEGIN HEADERS -----------------------------
[%H
]\
-------------------------- END HEADERS ------------------------------ |
--- end notify_virus_recips.txt ---
--- notify_virus_sender.txt ---
Subject: [? %#V |[? %#F ||Zabroniony plik/Banned filename]|Wirus/Virus
(%V)] w Twoim liscie/in your mail
[? %m |#|In-Reply-To: %m]
Message-ID: <VS%n@%h>
==========================================================================
[? %#V |[? %#F ||ZABLOKOWANY PLIK]|*** RAPORT ANTYWIRUSOWY ***]
Nasz skaner antywirusowy wykryl [? %#V |#|[? %#V |wirusy|wirusa|wirusy] %V
#]
[? %#F |#|zabroniony [? %#F |pliki|plik|pliki] %F #]\n
w Twoim liscie do [? %#R |adresatow|adresata|adresatow]:[ %R]
Wyslanym: [%d]
[? %#D |List nie zostal dostarczony do adresata.]#\n
Sprawdz swoj system programem antywirusowym.
Ponizej znajduja sie naglowki zarazonej wiadomosci:
==========================================================================
[? %#V |[? %#F ||BANNED FILENAME ALERT]|*** VIRUS ALERT ***]
Our virus checker found [? %#V |#|[? %#V |viruses|virus|viruses]: %V]
[? %#F |#|banned [? %#F |filenames|filename|filenames]: %F]\n
in your email to the following [? %#R |recipients|recipient|recipients]:
[%R]
Sent: [%d]
[? %#D |Delivery of the email was stopped! ]#\n
Please check your system for viruses,
or ask your system administrator to do so.
For your reference, here are headers from your email:
=====================================================================
------------------------- BEGIN HEADERS -----------------------------
[%H
]\
-------------------------- END HEADERS ------------------------------ |
--- end notify_virus_sender.txt ---
To tylko moim zdaniem najważniejsze opcje, z którymi powinieneś się zapoznać
podczas używania AMaViS'a. Po więcej informacji dotyczących tego właśnie
programu zapraszam do katalogu `/usr/local/share/doc/amavisd-new`. Edytuj teraz
plik `main.cf` i dodaj do niego następującą linikę:
# ee /etc/postfix/main.cf
--- main.cf ---
# AMaViS
content_filter=smtp-amavis:[127.0.0.1]:10024 |
--- end of main.cf ---
Na koniec edytujemy plik `master.cf`, do którego wstawiamy poniższe linijki:
# ee /etc/postfix/master.cf
--- master.cf ---
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000 |
---end master.cf ---
Pozostało nam już tylko uruchomienie AMaViS'a oraz ClamAV. Do pliku `rc.conf`
wstawiamy poniższe zmienne:
# ee /etc/rc.conf
--- rc.conf ---
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
amavisd_enable="YES"
amavis_milter_enable="YES" |
--- end rc.conf ---
Teraz wydajemy polecenia, po których zostaną uruchomione programy, przed
uruchomieniem, jak wspomniałem wcześniej pamiętaj o dodaniu do bazy wirusów
konta wirtualnego, lub aliasa o nazwie `virusalert`. W tym celu zobacz rozdział
'Administracja Postfix'em' w tym artykule:
# /usr/local/etc/rc.d/clamav-clamd.sh start
# /usr/local/etc/rc.d/clamav-freshclam.sh start
# /usr/local/etc/rc.d/amavisd.sh start
I oczywiście restartujemy Postfix'a:
# /usr/local/etc/rc.d/postfix.sh reload
W celu sprawdzenia czy nasz AMaViS uruchomił się i działa poprawnie, zaloguj
się przez telnet na port 10024 naszego serwera, powinieneś ujrzeć następujący
komunikat:
# telnet 127.0.0.1 10024
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
QUIT
221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel
Connection closed by foreign host.
Jeśli pojawił Ci się taki lub podobny komunikat to znaczy, że wszystko działa
jak należy. Sprawdź jeszcze w logach, czy system nie pokazuje żadnych błędów.
Jeśli takowe się pojawią, polecam przejrzenie raz jeszcze wszystkich plików, w
celu upewnienia się czy nie popełniliśmy jakiegoś drobnego błędu (mowa tu o
literówkach), lub nie dopisaliśmy jakiejś niezbędnej opcji, bez której nasz
serwer nie mógłby działać poprawnie.
|