Contents
1.ウイルス対策ソフトClamav導入
1.1 インストール
1 |
# apt install clamav clamav-daemon |
1.2 ウイルス定義の更新
1 |
# freshclam |
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log)
⚫デフォルト設定だと、freshclam(ウイルス定義更新)の際にログ関係でエラーが起こりやすい。したがって、一度ログファイルを削除し、ログロテートの設定を変更しておく
1 2 3 |
# rm /var/log/clamav/freshclam.log # touch /var/log/clamav/freshclam.log # chown clamav:clamav /var/log/clamav/freshclam.log |
再度ウイルス定義更新
1 2 3 4 |
# freshclam Wed Dec 15 12:35:18 2021 -> daily.cvd database is up-to-date (version: 26387, sigs: 1950745, f-level: 90, builder: raynman) Wed Dec 15 12:35:18 2021 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr) Wed Dec 15 12:35:18 2021 -> bytecode.cvd database is up-to-date (version: 333, sigs: 92, f-level: 63, builder: awillia2) |
⚫設定ファイルを変更
1 2 3 4 |
# vi /etc/logrotate.d/clamav-freshclam create 640 clamav adm ↓ create 640 clamav clamav |
1.3 ウイルス定義の自動更新確認
clamavパッケージをインストールすると、ウイルス定義の自動更新が行われる。
サービスが登録されているか確認する
1 |
# service clamav-freshclam status |
上記コマンドを実行すると次のようなメッセージが出る。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
● clamav-freshclam.service - ClamAV virus database updater Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; ven> Active: active (running) since Wed 2021-12-15 12:31:40 JST; 8min ago Docs: man:freshclam(1) man:freshclam.conf(5) https://www.clamav.net/documents Main PID: 72577 (freshclam) Tasks: 1 (limit: 4583) Memory: 232.2M CGroup: /system.slice/clamav-freshclam.service mq72577 /usr/bin/freshclam -d --foreground=true Dec 15 12:31:51 Lepard freshclam[72577]: Wed Dec 15 12:31:51 2021 -> daily.cvd > Dec 15 12:31:51 Lepard freshclam[72577]: Wed Dec 15 12:31:51 2021 -> main datab> Dec 15 12:31:56 Lepard freshclam[72577]: Wed Dec 15 12:31:56 2021 -> Testing da> Dec 15 12:32:05 Lepard freshclam[72577]: Wed Dec 15 12:32:05 2021 -> Database t> |
尚、/var/log/clamav/freshclam.logファイルにログが記録される
1.3 ウイルスチェックの確認
①手動でウイルスチェックの実行
1 2 3 4 5 6 7 8 9 10 11 12 |
# clamscan --infected --remove --recursive /home ----------- SCAN SUMMARY ----------- Known viruses: 8582908 Engine version: 0.103.2 Scanned directories: 4 Scanned files: 8 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 22.055 sec (0 m 22 s) Start Date: 2021:12:15 12:41:54 End Date: 2021:12:15 12:42:16 |
Infected files: 0 なのでウイルスはありません
②テストウイルスをダウンロードしてウイルス検出
お試し無害ウィルスをダウンロードして検出するかテストしてみる
一般ユーザーにログインして確認
1 2 |
# su - <user name> $ wget http://www.eicar.org/download/eicar.com |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ 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: 8582908 Engine version: 0.103.2 Scanned directories: 4 Scanned files: 9 Infected files: 1 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 19.850 sec (0 m 19 s) Start Date: 2021:12:15 12:45:23 End Date: 2021:12:15 12:45:43 |
このように「FOUND」という表示と「Infected files: 1」という表示でウイルスを通知してくれる。又、「--remove」オプションを付けているので、テストウイルスは削除された
1.4 フルスキャンするスクリプトファイルを作成
1 2 3 4 |
$ su - Password: # mkdir /opt/script (/opt/scriptがない場合) # cd /opt/script |
1 |
# vi clam-full.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/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 |
1 |
# chmod +x /opt/script/clam-full.sh |
(既にあればOKだが、無いと上記スクリプトで除外ディレクトリに指定しているので実行時エラーになる)
1 |
# mkdir /var/log/clamav/virus |
④試しに実行してみる
1 |
# /opt/script/clam-full.sh |
⑤cronでウイルススキャンの定期実行
1 2 |
# crontab -e 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 を設定します
①インストール
1 |
# apt -y install postfix sasl2-bin |
インストー状況画面
一般的な構成設定の選択を求められるが、後で手動設定するため [No Configuration] を選択
| General type of mail configuration: |
| No configuration |
| Internet Site |
| Internet with smarthost |
| Satellite system |
| Local only |
| |
| |
| <Ok> <Cancel> |
| |
+--------------------------------------+
②設定ファイル編集
1 2 |
# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf # vi /etc/postfix/main.cf |
編集内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 78行目:コメント解除 mail_owner = postfix # 94行目:コメント解除しホスト名指定 myhostname = mail.marchan-na.com # 102行目:コメント解除しドメイン名指定 mydomain = marchan-na.com # 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 |
1 2 |
# newaliases # systemctl restart postfix |
2.2 Dovecot : インストール/設定
DovecotをインストールしてPOP/IMAPサーバーを構築します。POP は 110/TCP, IMAP は 143/TCP を使用します
①Postfix に SASL機能が提供できるように Dovecot を設定
1 2 3 4 |
# apt -y install dovecot-core dovecot-pop3d dovecot-imapd # vi /etc/dovecot/dovecot.conf 30行目:コメント解除 listen = *, :: |
1 2 3 4 5 |
# vi /etc/dovecot/conf.d/10-auth.conf 10行目:コメント解除し変更(プレーンテキスト認証も許可する) disable_plaintext_auth = no 100行目:追記 auth_mechanisms = plain login |
1 2 3 |
# vi /etc/dovecot/conf.d/10-mail.conf 30行目:Maildir形式に変更 mail_location = maildir:~/Maildir |
1 2 3 4 5 6 7 8 |
# vi /etc/dovecot/conf.d/10-master.conf 107-109行目:コメント解除し追記 # Postfix smtp-authi unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } |
②設定反映
1 |
# systemctl restart dovecot |
2.3 メールユーザーアカウント登録
メール用のユーザーアカウントを登録します。
OS上のユーザーアカウントでメールも利用する場合の設定です
OS上のユーザーアカウントでメールを利用する場合は、追加の設定は不要で OSユーザーを登録するのみです。
①メールクライアントインストール
1 |
# apt -y install mailutils |
②メールボックスは Maildir を参照するよう設定
1 |
# echo 'export MAIL=$HOME/Maildir/' >> /etc/profile.d/mail.sh |
③メールの送信テスト
自身にテストメール送信 [mail (ユーザー名)@(ホスト名)]
1 2 3 4 5 6 7 8 |
# su - <user name> $ mail <user name>@localhost # Cc の宛先 Cc: # 件名 Subject: Test Mail # 本文 This is the first mail. |
本文を終了する場合は Ctrl + D キー
④受信メール確認
1 2 3 |
$ mail "/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 を起動
1 2 3 |
$ su - Password: # apt -y install clamav-daemon amavisd-new |
amavisd-newインストールでエラーが発生する場合
/etc/amavis/conf.d/05-node_idを編集して再度インストール
コードを次のように変更
# This file was automatically installed on 2019-12-07T03:53:33.896891
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 Fully
# Qualified Domain Name (FQDN) and remove the # at the beginning of the line.
#
#$myhostname = "sample-domain-was-here";
1; # ensure a defined return
上記赤字の "sample-domain-was-here"を下記赤字の "mail.<yourdomain>"に変更
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 Fully
# Qualified Domain Name (FQDN) and remove the # at the beginning of the line.
#
$myhostname = "mail.<yourdomain>";
1; # ensure a defined return
②15-content_filter_modeの編集
1 2 3 4 |
# vi /etc/amavis/conf.d/15-content_filter_mode コメント解除してウィルススキャン有効化 @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); |
③自身のドメイン名を登録
1 |
# echo '<yourDomain>' > /etc/mailname |
④Main.cf編集
1 2 3 |
# vi /etc/postfix/main.cf 最終行へ追記 content_filter=smtp-amavis:[127.0.0.1]:10024 |
⑤master.cf編集
1 |
# vi /etc/postfix/master.cf |
編集内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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 # 最終行へ以下全行追記 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 |
1 2 3 |
# usermod -G clamav amavis # usermod -G amavis clamav # systemctl restart clamav-daemon amavis postfix |
2.5 メールサーバーPostfixに spamassassin適用
①spamassassin をインストール
1 2 3 |
# apt update # apt upgrade # apt install spamassassin |
②SpamAssassin の設定
設定ファイルは「 /etc/mail/spamassassin/local.cf 」
- 追加設定をせずデフォルトで使う
- スパムメール保存用 Maildir の作成
- スパムメールを保存するためのディレクトリを Maildir 形式で作成
- スパムメール保存用のディレクトリ「.Spam」を Maildir 形式で作成
- 作成には対象のユーザで行う
1 2 3 4 5 6 7 |
# su – <user name> $ cd ~ 「.Spam」という名のディレクトリを作成 $ cd Maildir $ /usr/bin/maildirmake.dovecot .Spam $ su – Password: |
2.6 Procmail の前準備
①Procmail のインストール
1 |
# apt install procmail |
インストールされていれば、以下の結果が返ってきます
1 2 |
# which procmail /usr/bin/procmail |
②Procmail の設定
メールフィルタの全体をつかさどる「 /etc/procmailrc 」に記述すると全ユーザに適応されます。
各ユーザ個別のメールフィルタファイルである「 /home/username/.procmailrc 」に記述するとそのユーザのみにフィルタが適応されます。
今回は全ユーザに適応させるために「 /etc/procmailrc 」に記述します
1 |
# vi /etc/procmailrc |
procmailrc記載内容(新規作成)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# パスを設定 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.7 Postfix の設定
① main.cfの編集
1 2 3 |
# vi /etc/postfix/main.cf 最終行に追記 mailbox_command = /usr/bin/procmail |
②設定の反映と起動
1 2 |
# systemctl start spamassassin # systemctl restart postfix |
2.8 スパムメールの学習
すべてのユーザの「.Spam」ディレクトリの中身を全てスパムメールとして学習させます
①スパムメールの学習
1 2 |
# /usr/bin/sa-learn --spam /home/*/Maildir/.Spam/cur Learned from 89 message(s) (89 message(s) examined). <-- 89通のメールをスパムメールとして学習 |
②通常のメールの学習
1 2 |
# /usr/bin/sa-learn --ham /home/*/Maildir/cur Learned from 157 message(s) (157 message(s) examined). <-- 157通のメールを普通のメールとして学習 |
③スクリプトを作成し、Cron に登録
ファイル名は適当に「 spam-learns.sh 」とし、/opt/script/配下に設置する
スクリプトを保存した後は、「 chmod 750 spam-learns.sh 」として実行可能なアクセス権を与える。
1 |
# vi /opt/script/spam-learns.sh |
spam-learns.sh 内容
1 2 3 4 5 6 7 |
#! /bin/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 |
1 |
# chmod 750 /opt/script/spam-learns.sh |
Typeはsimpleで定義する
1 2 |
# cd /lib/systemd/system # vi spam-learns.service |
spam-learns.service の内容
1 2 3 4 5 6 7 8 |
[Unit] Description=demo sample node.js program [Service] Type=simple ExecStart= /opt/script/spam-learns.sh Restart=always [Install] WantedBy=multi-user.target |
1 2 |
# crontab -e 0 4 * * * /opt/script/spam-learns.sh |
1 |
# systemctl enable spam-learns |