Contents
1. ウイルス対策
ウィルス対策としてLinux 用のフリーのアンチウィルスソフトであるClam AntiVirus を導入します。
このアンチウィルスソフトを導入することで、サーバー全体のウィルススキャンはもちろん、メールサーバーを構築し、設定を行えば、送受信するメールのウィルススキャンも行うことができます。
1.1 ウイル対策ソフトClamav導入
①インストール
# apt install clamav clamav-daemon |
尚、clamav関連の設定ファイルは、/etc/clamav/フォルダにインストールされる
②ウイルス定義の更新
# freshclam |
上記コマンドで、ウイルス定義が更新できるが、下記のようなエラーが出る場合はlog設定を変更して、再度実行。
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
上記エラーが出た場合次のように一度ログファイルを削除し、ログロテートの設定を変更しておく。
# rm /var/log/clamav/freshclam.log # touch /var/log/clamav/freshclam.log # chown clamav:clamav /var/log/clamav/freshclam.log |
③設定ファイルを編集
# vi /etc/logrotate.d/clamav-freshclam create 640 clamav adm ↓ create 640 clamav clamav |
④ウイルス定義の自動更新確認
ウイルス定義の自動更新が行われるサービスが登録されていることを確認する。
# service clamav-freshclam status |
次のように表示される
● clamav-freshclam.service – ClamAV virus database updater Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; vendor preset: e Active: active (running) since Fri 2019-08-16 02:00:32 JST; 2 days ago Docs: man:freshclam(1) man:freshclam.conf(5) https://www.clamav.net/documents Main PID: 888 (freshclam) Tasks: 1 (limit: 4915) CGroup: /system.slice/clamav-freshclam.service └─888 /usr/bin/freshclam -d –foreground=true 8月 18 07:25:02 server freshclam[888]: Sun Aug 18 07:25:02 2019 -> daily.cld is up to d 8月 18 07:25:02 server freshclam[888]: Sun Aug 18 07:25:02 2019 -> bytecode.cld is up t 8月 18 08:25:02 server freshclam[888]: Sun Aug 18 08:25:02 2019 -> Received signal: wak 8月 18 08:25:02 server freshclam[888]: Sun Aug 18 08:25:02 2019 -> ClamAV update proces |
尚、/var/log/clamav/freshclam.logファイルにログが記録される。
⑤ウイルスチェックの実行
# clamscan –infected –remove –recursive /home |
無害ウィルスをダウンロードして検出するかテストしてみる。(一般ユーザーにログインする)
# su – <user> $ cd ~ ← /home/<user> ディレクトリに移動 $ wget http://www.eicar.org/download/eicar.com $ clamscan –infected –remove –recursive /home /home/lan/eicar.com: Eicar-Test-Signature FOUND /home/lan/eicar.com: Removed. ———– SCAN SUMMARY ———– Known viruses: 6281795 Engine version: 0.100.3 Scanned directories: 206 Scanned files: 657 Infected files: 1 Data scanned: 25.92 MB Data read: 12.33 MB (ratio 2.10:1) Time: 59.342 sec (0 m 59 s) |
このように「FOUND」という表示と「Infected files: 1」という表示でウイルスを通知してくれる。又、「–remove」オプションを付けているので、テストウイルスは削除された。
1.2 フルスキャンするスクリプトファイルを作成
①事前にスクリプトファイル格納ディレクトリー(/opt/script)を作成しておく
# mkdir /opt/script |
②スクリプトファイルを作成
# vi /opt/script/clam-full.sh #!/bin/sh # –infected 感染を検出したファイルのみを結果に出力 if [ $? = 0 ]; then |
③実行権限を与える
# chmod +x /opt/script/clam-full.sh |
④ウイルス隔離用フォルダを作成
既にあればOKだが、無いと上記スクリプトで除外ディレクトリに指定しているので実行時エラーになる
# mkdir /var/log/clamav/virus |
⑤実行
# /opt/script/clam-full.sh |
完了までけっこう時間がかかる
尚、/var/log/clamav/clamscan.logファイルにログが記録される
⑥cronでウイルススキャンの定期実行
# crontab -e # m h dom mon dow command |
上記例では、毎週月曜日の夜中2時に定期的に実行。
2. メールソフト導入
Postfix は、sendmail に代わるMTA (Mail Transport Agent)として開発されたソフトウェアで、sendmail との互換性が高く、安全、メンテナンスが容易、速い、などの特徴を兼ね備えたメールサーバーです。
また、Postfix はメールを送信するSMTP サーバーとしての機能しか無いため、後半でメール受信のPOP サーバーDovecotのインストールを別途行います。
2.1 Postfix : インストール 設定
①Postfix をインストール
Postfix をインストールして SMTPサーバーを構築します。SMTP は 25/TCP を使用します。
メール不正中継防止に、後述の Dovecot の SASL機能を利用し、送信にも認証が必要なように Postfix を設定します。
# apt -y install postfix sasl2-bin |
一般的な構成設定の選択を求められるが、後で手動設定するため [No Configuration] を選択
+——+ Postfix Configuration +——-+
| General type of mail configuration: |
| |
| No configuration |
| Internet Site |
| Internet with smarthost |
| Satellite system |
| Local only |
| |
| |
| <Ok> <Cancel> |
| |
+————————————–+
②設定ファイル(main.cf)編集
# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf # vi /etc/postfix/main.cf# 78行目:コメント解除 mail_owner = postfix # 94行目:コメント解除しホスト名指定 myhostname = mail.korodes.com # 102行目:コメント解除しドメイン名指定 mydomain = korodes.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 (Debian/GNU) 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 |
設定反映、再起動
# newaliases # systemctl restart postfix |
③設定ファイル(master.cf)編集
# vi /etc/postfix/master.cf |
submissionとsmtpsについて、一部コメントアウトする
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
# smtps inet n – y – – smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes |
設定反映、再起動
# newaliases # systemctl restart postfix |
2.2 Dovecot : インストール 設定
①Dovecot をインストール
DovecotをインストールしてPOP/IMAPサーバーを構築します。POP は 110/TCP, IMAP は 143/TCP を使用します。
①Postfix に SASL機能が提供できるように Dovecot を設定します
# apt -y install dovecot-core dovecot-pop3d dovecot-imapd |
②設定ファイル(dovecot.conf)編集
# vi /etc/dovecot/dovecot.conf # 30行目:コメント解除 |
③設定ファイル(10-auth.conf)編集
# vi /etc/dovecot/conf.d/10-auth.conf # 10行目:コメント解除し変更(プレーンテキスト認証も許可する) # 100行目:追記 |
④設定ファイル(10-mail.conf)編集
# vi /etc/dovecot/conf.d/10-mail.conf # 30行目:Maildir形式に変更 |
⑤設定ファイル(10-master.conf)編集
# vi /etc/dovecot/conf.d/10-master.conf # 107-109行目:コメント解除し追記 |
設定反映、再起動
# systemctl restart dovecot |
2.3 メールユーザーアカウント登録
メール用のユーザーアカウントを登録します。
OS上のユーザーアカウントでメールも利用する場合の設定です
OS上のユーザーアカウントでメールを利用する場合は、追加の設定は不要で OSユーザーを登録するのみです
①メールクライアントインストール
# apt -y install mailutils |
②メールボックスは Maildir を参照するよう設定
# echo ‘export MAIL=$HOME/Maildir/’ >> /etc/profile.d/mail.sh |
③OSユーザー [例としてhoge] を追加
# adduser hoge パスワード ← パスワードを聞かれるので入力、表示されない 再度パスワード |
④ 追加したユーザーアカウントでログインし、メールの送信テストをします
# su – hoge $ mail hoge@localhost ← 自分宛にメールを送る Cc: Subject:test ← 件名 testmail ← 本文(終了するときはCtrl + D キー) メール確認 終了する場合は [q] |
2.4 メールサーバーPostfixに ClamAV適用
Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します
Amavisd および Clamav Daemon をインストールして Clamav Daemon を起動します
# apt -y install clamav-daemon amavisd-new |
①ウィルススキャン有効化
# vi /etc/amavis/conf.d/15-content_filter_mode
次の箇所のコメント解除してウィルススキャン有効化 |
②自身のドメイン名を登録
# echo ‘hoge.com’ > /etc/mailname |
③設定ファイル(Main.cf)編集
# vi /etc/postfix/main.cf # 最終行へ追記 content_filter=smtp-amavis:[127.0.0.1]:10024 |
④設定ファイル(master.cf)編集
# vi /etc/postfix/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 |
#systemctl restart clamav-daemon amavis postfix |
正常に設定されると、メール受信のヘッダーに
「X-Virus-Scanned:Debian amavisd-new at 送信元サーバー」の一行が表示されます
2.5 メールサーバーPostfixに spamassassinをインストールしてスパム対策
①インストール
# apt install spamassassin |
②SpamAssassin の設定の前準備
スパムメール保存用のディレクトリ「.Spam」を Maildir 形式で作成します。まず一般ユーザー(例としてhoge)としてログイン
# su – hoge $ cd ~ $ cd Maildir $ /usr/bin/maildirmake.dovecot .Spam $ su – |
③Procmail を準備
Procmail がサーバ機にインストールされているかをチェックします。
もし、インストールされていなければインストールしましょう。
# apt install procmail |
Procmail へのパスを以下のコマンドで調べます
# which procmail /usr/bin/procmail |
④Procmail の設定
設定をメールフィルタの全体をつかさどる「 /etc/procmailrc 」に記述すると全ユーザに適応されます。
各ユーザ個別のメールフィルタファイルである「 /home/username/.procmailrc 」に記述するとそのユーザのみにフィルタが適応されます。
今回は全ユーザに適応させるために「 /etc/procmailrc 」に記述します。
# vi /etc/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/ |
⑤Postfix main.cf の編集
# vi /etc/postfix/main.cf 最終行に以下の記述を追加します。 |
⑥設定の反映と起動と動作確認
# systemctl start spamassassin # systemctl restart postfix |
⑦確認
自分のドメイン宛にメールを送信してみましょう。
そしてメールのヘッダーに以下のような記述があれば設定が正常に行われています。
以下のヘッダーはスパムメールと判定された場合の記述です。
・・省略・・・ X-Spam-Flag: YES X-Spam-Checker-Version: SpamAssassin 2.64 (2004-01-11) on mail.example.com X-Spam-Report: * 0.1 HTML_60_70 BODY: Message is 60% to 70% HTML * 0.0 HTML_MESSAGE BODY: HTML included in message ・・省略・・・ X-Spam-Status: Yes, hits=8.2 required=5.5 tests=CLICK_BELOW, FORGED_RCVD_NET_HELO,HTML_60_70,HTML_FONTCOLOR_UNSAFE, HTML_IMAGE_ONLY_08,HTML_LINK_CLICK_HERE,HTML_MESSAGE,QENCTXT autolearn=no version=2.64 X-Spam-Level: ******** ・・・省略・・・ |
メールヘッダー中に上記の「X-Spam-***」の記述があればSpamAssassinは正常に動作しています。
「 X-Spam-Status: Yes 」があれば、そのメールはスパムメールだと判定されています。
逆に「 X-Spam-Status: No 」ならば通常のメールとして判定されています。
⑧スパムメールの学習
以下のコマンドですべてのユーザの「.Spam」ディレクトリの中身を全てスパムメールとして学習させます
# /usr/bin/sa-learn –spam /home/*/Maildir/.Spam/cur Learned from 89 message(s) (89 message(s) examined). |
通常のメールの学習
# /usr/bin/sa-learn –ham /home/*/Maildir/cur Learned from 157 message(s) (157 message(s) examined). |
簡単なスクリプトを記述し、Cron に登録し、定期的に自動で実行するようにします。
スクリプト保存場所は「 /opt/script 」にします。 ファイル名は適当に「 spam-learns.sh 」などにします。
スクリプトを保存した後は、「 chmod 750 spam-learns.sh 」として実行可能なアクセス権を与えましょう。
# vi /opt/script/spam-learns.sh |
スクリプトファイルの内容
#! /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 |
# chmod 750 /opt/script/spam-learns.sh |
spam-learns.shができたら、定義ファイルを/lib/systemd/system直下に作成する。名前はspam-learns.serviceのように末尾が.serviceになるようにする。
# cd /lib/systemd/system vi spam-learns.service |
定義ファイルの内容
Typeもいろいろあるが、simpleでとりあえず定義する。
[Unit] Description=demo sample node.js program[Service] Type=simple ExecStart= /usr/local/bin/spam-learns.sh Restart=always[Install] WantedBy=multi-user.target |
Cronに学習スクリプトを登録します
# crontab -e 0 4 * * * /opt/script/spam-learns.sh |
毎日午前4時に学習スクリプトを実行します
⑨自動的に起動するように設定
# systemctl enable spam-learns |