Contents
1.ウイルス対策ソフトClamav導入
1.1 インストール
尚、clamav関連の設定ファイルは、/etc/clamav/フォルダにインストールされる
1.2 ウイルス定義の更新
# freshclam
Sat May 21 20:44:38 2022 -> daily database available for update (local version: 26547, remote version: 26548)
Current database is 1 version behind.
Downloading database patch # 26548...
Time: 0.1s, ETA: 0.0s [========================>] 4.54KiB/4.54KiB
Sat May 21 20:44:39 2022 -> Testing database: '/var/lib/clamav/tmp.981f495cb5/clamav-8326c463cad95e3bdb0c82777fabee39.tmp-daily.cld' ...
Sat May 21 20:44:43 2022 -> Database test passed.
Sat May 21 20:44:43 2022 -> daily.cld updated (version: 26548, sigs: 1984525, f-level: 90, builder: raynman)
Sat May 21 20:44:43 2022 -> main database available for download (remote version: 62)
Time: 1.7s, ETA: 0.0s [========================>] 162.58MiB/162.58MiB
Sat May 21 20:44:47 2022 -> Testing database: '/var/lib/clamav/tmp.981f495cb5/clamav-c2c43c703192aba0e8620feef8c408f4.tmp-main.cvd' ...
Sat May 21 20:44:53 2022 -> Database test passed.
Sat May 21 20:44:53 2022 -> main.cvd updated (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Sat May 21 20:44:53 2022 -> bytecode database available for download (remote version: 333)
Time: 0.1s, ETA: 0.0s [========================>] 286.79KiB/286.79KiB
Sat May 21 20:44:53 2022 -> Testing database: '/var/lib/clamav/tmp.981f495cb5/clamav-9e09fff258e546a9ca671b3f4fc7c3da.tmp-bytecode.cvd' ...
Sat May 21 20:44:53 2022 -> Database test passed.
Sat May 21 20:44:53 2022 -> bytecode.cvd updated (version: 333, sigs: 92, f-level: 63, builder: awillia2)
⚫設定ファイルを変更
create 640 clamav adm
↓
create 640 clamav clamav
1.3 ウイルスチェックの確認
①手動でウイルスチェックの実行
----------- SCAN SUMMARY -----------
Known viruses: 8616546
Engine version: 0.103.6
Scanned directories: 4
Scanned files: 7
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 12.697 sec (0 m 12 s)
Start Date: 2022:05:20 15:24:29
End Date: 2022:05:20 15:24:41
Infected files: 0 なのでウイルスはありません
②テストウイルスをダウンロードしてウイルス検出
お試し無害ウィルスをダウンロードして検出するかテストしてみる
一般ユーザーにログインして確認
$ wget http://www.eicar.org/download/eicar.com
$ clamscan --infected --remove --recursive /home
/home/<user name>/eicar.com: Win.Test.EICAR_HDB-1 FOUND
/home/<user name>/eicar.com: Removed.
----------- SCAN SUMMARY -----------
Known viruses: 8616546
Engine version: 0.103.6
Scanned directories: 4
Scanned files: 8
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 12.858 sec (0 m 12 s)
Start Date: 2022:05:20 15:23:05
End Date: 2022:05:20 15:23:18
このように「FOUND」という表示と「Infected files: 1」という表示でウイルスを通知してくれる。又、「--remove」オプションを付けているので、テストウイルスは削除された
1.4 フルスキャンするスクリプトファイルを作成
Password:
# mkdir /opt/script (/opt/scriptがない場合)
# cd /opt/script
# vi clam-full.sh
①clam-full.sh の内容(新規作成)
echo =========================================
date
hostname
clamscan / \
--infected \
--recursive \
--log=/var/log/clamav/clamscan.log \
--move=/var/log/clamav/virus \
--exclude-dir=^/boot \
--exclude-dir=^/sys \
--exclude-dir=^/proc \
--exclude-dir=^/dev \
--exclude-dir=^/var/log/clamav/virus
if [ $? = 0 ]; then
echo "ウイルス未検出."
else
echo "ウイルス検出!!"
fi
と表示される場合は
「--max-filesize=200M」 「--max-scansize=200M」オプションをつけて実行
0 2 * * mon /opt/script/clam-full.sh >> /var/log/clamav/clamascan.log
2. メールソフト導入
2.1 Postfix : インストール/設定
Postfix をインストールして SMTPサーバーを構築します。SMTP は 25/TCP を使用します。
メール不正中継防止に、後述の Dovecot の SASL機能を利用し、送信にも認証が必要なように Postfix を設定します
①インストール
インストー状況画面
一般的な構成設定の選択を求められるが、後で手動設定するため [No Configuration] を選択
②設定ファイル編集
# vi /etc/postfix/main.cf
編集内容
# 78行目:コメント解除
mail_owner = postfix
# 94行目:コメント解除しホスト名指定
myhostname = mail.<domain name>
# 102行目:コメント解除しドメイン名指定
mydomain = <domain name>
# 123行目:コメント解除
myorigin = $mydomain
# 137行目:コメント解除
inet_interfaces = all
# 185行目:コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 228行目:コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps
# 270行目:コメント解除
mynetworks_style = subnet
# 287行目:自ネットワーク追記
mynetworks = 127.0.0.0/8, 192.168.11.0/24
# 407行目:コメント解除
alias_maps = hash:/etc/aliases
# 418行目:コメント解除
alias_database = hash:/etc/aliases
# 440行目:コメント解除
home_mailbox = Maildir/
# 576行目:コメントにしてその下に追記
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_banner = $myhostname ESMTP
# 650行目:追記
sendmail_path = /usr/sbin/postfix
# 655行目:追記
newaliases_path = /usr/bin/newaliases
# 660行目:追記
mailq_path = /usr/bin/mailq
# 666行目:追記
setgid_group = postdrop
# 670行目:コメント化
#html_directory =
# 674行目:コメント化
#manpage_directory =
# 679行目:コメント化
#sample_directory =
# 683行目:コメント化
#readme_directory =
# 最終行へ追記:送受信メールサイズを10Mに制限
message_size_limit = 10485760
# メールボックスサイズを1Gに制限
mailbox_size_limit = 1073741824
# SMTP-Auth 設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
③master.cf編集
編集内容
smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
submission inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
④設定内容反映
# systemctl restart postfix
2.2 Dovecot : インストール/設定
DovecotをインストールしてPOP/IMAPサーバーを構築します。POP は 110/TCP, IMAP は 143/TCP を使用します
①Postfix に SASL機能が提供できるように Dovecot を設定
# vi /etc/dovecot/dovecot.conf
30行目:コメント解除
listen = *, ::
10行目:コメント解除し変更(プレーンテキスト認証も許可する)
disable_plaintext_auth = no
100行目:追記
auth_mechanisms = plain login
30行目:Maildir形式に変更
mail_location = maildir:~/Maildir
107-109行目:コメント解除し追記
# Postfix smtp-authi
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
②設定反映
2.3 メールユーザーアカウント登録
メール用のユーザーアカウントを登録します。
OS上のユーザーアカウントでメールも利用する場合の設定です
OS上のユーザーアカウントでメールを利用する場合は、追加の設定は不要で OSユーザーを登録するのみです。
①メールクライアントインストール
②メールボックスは Maildir を参照するよう設定
③メールの送信テスト
自身にテストメール送信 [mail (ユーザー名)@(ホスト名)]
$ mail <user name>@localhost
# Cc の宛先
Cc:
# 件名
Subject: Test Mail
# 本文
This is the first mail.
本文を終了する場合は Ctrl + D キー
④受信メール確認
"/home/<user name>/Maildir/": 1 message 1 new
>N 1 <user name> 13/450 Test Mail
2.4 メールサーバーPostfixに ClamAV適用
Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します
①Amavisd および Clamav Daemon をインストールして Clamav Daemon を起動
Password:
# apt -y install clamav-daemon amavisd-new
サーバーがホスト名として完全修飾ドメイン名(FQDN)を使用していない場合、Amavisの起動に失敗する可能性があります。また、OSのホスト名が変更される可能性があるため、有効なホスト名をAmavis構成ファイルに直接設定します
use strict;# $myhostname is used by amavisd-new for node identification, and it is
# important to get it right (e.g. for ESMTP EHLO, loop detection, and so on) .chomp($myhostname = `hostname --fqdn`);# To manually set $myhostname, edit the following line with the correct Full y
# Qualified Domain Name (FQDN) and remove the # at the beginning of the line .
#
$myhostname = "mail.<domain name>";1; # ensure a defined return
②15-content_filter_modeの編集
コメント解除してウィルススキャン有効化
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
③自身のドメイン名を登録
④Main.cf編集
最終行へ追記
content_filter=smtp-amavis:[127.0.0.1]:10024
⑤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
⑥設定反映
# usermod -G amavis clamav
# systemctl restart clamav-daemon amavis postfix

2.5 メールサーバーPostfixに spamassassin適用
2.5.1 spamassassin をインストール
①インストール
# apt upgrade
# apt install spamassassin
②SpamAssassin の設定
設定ファイルは「 /etc/mail/spamassassin/local.cf 」
- 追加設定をせずデフォルトで使う
- スパムメール保存用 Maildir の作成
- スパムメールを保存するためのディレクトリを Maildir 形式で作成
- スパムメール保存用のディレクトリ「.Spam」を Maildir 形式で作成
- 作成には対象のユーザで行う
$ cd ~
「.Spam」という名のディレクトリを作成
$ cd Maildir
$ /usr/bin/maildirmake.dovecot .Spam
$ su –
Password:
2.5.2 Procmail の前準備
①Procmail のインストール
インストールされていれば、以下の結果が返ってきます
/usr/bin/procmail
②Procmail の設定
メールフィルタの全体をつかさどる「 /etc/procmailrc 」に記述すると全ユーザに適応されます。
各ユーザ個別のメールフィルタファイルである「 /home/username/.procmailrc 」に記述するとそのユーザのみにフィルタが適応されます。
今回は全ユーザに適応させるために「 /etc/procmailrc 」に記述します
procmailrc記載内容(新規作成)
PATH=/bin:/usr/bin:/usr/local/bin
# メールボックスの設定
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
# Procmailのログファイル出力先を指定
LOGFILE=$MAILDIR/procmaillog
# ロックファイルのパスを指定
LOCKFILE=$HOME/.lockmail
# メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します
:0fw
*!^X-Spam.*
|spamassassin
# メールヘッダー中に「 X-Spam-Status: Yes 」の記述があれば、「 .Spam 」ディレクトリにメールを格納します
:0
* ^X-Spam-Status: Yes
$MAILDIR/.Spam/
2.5.3 Postfix の設定
① main.cfの編集
最終行に追記
mailbox_command = /usr/bin/procmail
②設定の反映と起動
# systemctl restart postfix
2.5.4 スパムメールの学習
すべてのユーザの「.Spam」ディレクトリの中身を全てスパムメールとして学習させます
①スパムメールの学習
Learned tokens from 0 message(s) (0 message(s) examined). <-- 0通のメールをスパムメールとして学習
②通常のメールの学習
Learned tokens from 4 message(s) (4 message(s) examined). <-- 4通のメールを普通のメールとして学習
③スクリプトを作成し、Cron に登録
ファイル名は適当に「 spam-learns.sh 」とし、/opt/script/配下に設置する
スクリプトを保存した後は、「 chmod 750 spam-learns.sh 」として実行可能なアクセス権を与える。
spam-learns.sh 内容
# スパムメールの学習
/usr/bin/sa-learn --spam /home/*/Maildir/.Spam/cur
# 通常のメールを学習
/usr/bin/sa-learn --ham /home/*/Maildir/cur
# スパムメール保存ディレクトリの中身を強制的に消去してよいのなら以下の記述を追加
/bin/rm -f /home/*/Maildir/.Spam/cur
spam-learns.shができたら、定義ファイルを/lib/systemd/system直下に作成する。名前はspam-learns.serviceのように末尾が.serviceになるようにする。
Typeはsimpleで定義する
# vi spam-learns.service
spam-learns.service の内容
Description=demo sample node.js program
[Service]
Type=simple
ExecStart= /opt/script/spam-learns.sh
Restart=always
[Install]
WantedBy=multi-user.target
0 4 * * * /opt/script/spam-learns.sh
④Thunderbird等で自己宛に空メールを送付し、受信メールヘッダーを確認すると次のようなメッセージあれば成功です