• Uncategorized

Instalacja skanera AV/AS do poczty

Instalacja skanowania Antywirusowego (AV) i Antyspamowego (AS) do systemu poczty

Przełączamy się na roota i insalujemy potrzebne oprogramowanie:


sudo -i
aptitude update
aptitude install amavisd-new
aptitude install clamav-daemon
aptitude install spamassassin

SpamAssassin jest domyślnie wyłączony, o czym nas informuje przy instalacji, aby go włączyć należy wyedytować plik /etc/default/spamassassin i ustawić:


vi /etc/default/spamassassin
ENABLED=1
CRON=1

Uruchamiamy serwisy SpamAssassin i ClamAV daemon, w przypadku ClamAV należy zaczekać aż freshclam skończy ściągać aktualne bazy wirusów, to trochę trwa za pierwszym razem:


service spamassassin start
service clamav-daemon start

Pora zajrzeć do konfiguracji Amavisa i trochę go poustawiać, na początek sprawdźcie czy zawartość plików 05-domain_id i 05-node_id jest właściwa. Później włączymy skanowanie AV/AS, bo domyślnie jest wyłączone w konfiguracji:


cd /etc/amavis/conf.d
vi 15-content_filter_mode
# Default antivirus checking mode
# Please note, that anti-virus checking is DISABLED by 
# default.
# If You wish to enable it, please uncomment the following lines:


#@bypass_virus_checks_maps = (
#   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

Zgodnie z zaleceniem wyrzucamy komentarze i tym samym włączamy skanowanie AV/AS:


@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Tyle na razie wystarczy, jeśli nie znacie Amavisa, to proponuję zostawić na razie wartości domyślne, zrestartować go i prześledzić logi:


service amavis restart
tail -n 100 -f /var/log/mail.log

Proszę zwrócić szczególną uwagę na to czy został załadowany kod AV i AS oraz czy zostały znalezione programy antywirusowe:


...
Dec 28 XX:XX:00 hostname amavis[7287]: ANTI-VIRUS code      loaded
Dec 28 XX:XX:00 hostname amavis[7287]: ANTI-SPAM code       loaded
Dec 28 XX:XX:00 hostname amavis[7287]: ANTI-SPAM-EXT code   NOT loaded
Dec 28 XX:XX:00 hostname amavis[7287]: ANTI-SPAM-C code     NOT loaded
Dec 28 XX:XX:00 hostname amavis[7287]: ANTI-SPAM-SA code    loaded
...
Dec 28 XX:XX:00 hostname amavis[7287]: Using primary internal av scanner code for ClamAV-clamd
Dec 28 XX:XX:00 hostname amavis[7287]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
...

Zwrócicie też pewnie uwagę na kilka linii powyżej, gdzie amavis zeznaje, że nie może znaleźć dekoderów dla dość popularnych rozszerzeń plików, np. arj, rar, cab itp.


Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .7z   tried: 7zr, 7za, 7z
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .rar  tried: unrar-free
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .arj  tried: arj, unarj
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .arc  tried: nomarch, arc
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .zoo  tried: zoo
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .lha 
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .doc  tried: ripole
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .cab  tried: cabextract
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .tnef
Dec 28 XX:XX:00 hostname amavis[7287]: Internal decoder for .tnef
Dec 28 XX:XX:00 hostname amavis[7287]: No decoder for       .exe  tried: unrar-free; arj, unarj

Najlepiej będzie zainstalować te najbardziej popularne:


aptitude install arj unrar-free ripole cabextract arc zoo
service amavis restart

I już powinno być lepiej. Sprawdźmy jeszcze czy amavis działa i słucha na odpowiednim porcie:


netstat -an|grep 10024
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN

Skoro słucha, to możemy przejść do konfiguracji MTA, żeby z niego skorzystał, ja oczywiście użyję postfixa, sugeruję się wspomóc dokumentacją, którą znajdziecie w /usr/share/doc/amavisd-new:


zless /usr/share/doc/amavisd-new/README.postfix.gz

Tam znajdujemy sobie sekcję dotyczącą konfiguracji transportu, czytamy uważnie, po czym wchodzimy do katalogu konfiguracyjnego postfixa i edytujemy master.cf:


cd /etc/postfix
vi master.cf

Dodajemy odpowiednie wpisy:


#
# Feed and server for amavisd-new
#

amavisfeed unix    -       -       n        -      2     lmtp
     -o lmtp_data_done_timeout=1200
     -o lmtp_send_xforward_command=yes
     -o lmtp_tls_note_starttls_offer=no


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
     -o local_header_rewrite_clients=
     -o smtpd_milters=
     -o local_recipient_maps=
     -o relay_recipient_maps=

Restartujemy postfixa i sprawdzamy logi:


service postfix restart
tail /var/log/mail.log

Jeśli postfix wystartował, to sprawdzamy czy nasz amavis odpowiada tak jak trzeba:


telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
ehlo test
250-[127.0.0.1]
250-VRFY
250-PIPELINING
250-SIZE
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 XFORWARD NAME ADDR PORT PROTO HELO SOURCE
quit
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Connection closed by foreign host.

oraz czy postfix uruchomił serwer, na który amavis będzie zwracał pocztę po skanowaniu:


telnet localhost 10025
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
ehlo test
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Tak to powinno wyglądać, jeśli coś nie działa to należy przejrzeć logi i usprawnić, instrukcję postępowania znajdziecie w wymienionej dokumentacji, ewentualnie proszę opisać problem w komentarzu i przytoczyć fragmenty logów to postaram się pomóc.

Jeśli wszystko działa, to dodajemy content_filter do konfiguracji postfixa, restartujemy go i sprawdzamy logi:


postconf -e content_filter=amavisfeed:[127.0.0.1]:10024
service postfix restart
tail /var/log/mail.log

Pora na test empiryczny, czyli wysłanie poczty, najlepiej na własną skrzynkę. I tu zapewne okaże się, że sprawdza się dobrze znane prawo Murphy’ego: Jeśli natarcie posuwa się bez przeszkód – właśnie wchodzisz w pułapkę. 😉

W logach może pojawić się coś takiego:


Dec 28 XX:XX:59 hostname amavis[8253]: (08253-02) (!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20101228TXXXX59-08253/parts: lstat() failed: Permission denied. ERROR\n"
Dec 28 XX:XX:59 hostname amavis[8253]: (08253-02) (!)ClamAV-clamd av-scanner FAILED: CODE(0x2607068) unexpected , output="/var/lib/amavis/tmp/amavis-20101228TXXXX59-08253/parts: lstat() failed: Permission denied. ERROR\n" at (eval 115) line 594.
Dec 28 XX:XX:59 hostname amavis[8253]: (08253-02) (!!)WARN: all primary virus scanners failed, considering backups

Mając na uwadze moje wcześniejsze doświadczenia spodziewałem się tego, ale celowo nie zmieniłem wcześniej, gdyż w ten sposób łatwiej zapamiętać po co robi się pewne rzeczy niż wtedy gdy się je po prostu przeklepuje. Należy sprawdzić w konfiguracji clamava czy ma włączoną opcję AllowSupplementaryGroups i dodać użytkownikowi clamav grupę amavis, po czym zrestartować usługi:


grep AllowSupp /etc/clamav/clamd.conf 
AllowSupplementaryGroups true
usermod -G amavis clamav
service clamav-daemon restart
service amavis restart
tail -f /var/log/mail.log

Kolejna próba wysłania poczty powinna zakończyć się już bez błędów i ostrzeżeń, skaner AV/AS jest zainstalowany i podłączony do MTA.

W następnym odcinku mam zamiar opisać instalację Greylistingu w postaci oprogramowania Postgrey oraz uszczelnienie Postfixa przy użyciu wbudowanych restrykcji.

You may also like...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.