openSUSE; Clamav ( アンチウィルスソフト) ,  Mail Server 導入

1. clamav ( アンチウィルスソフト )の導入

1.1 Clamav をインストール

# zypper -n install clamav

1.2 定義ファイル更新

①ウイルス定義ファイル更新設定

# vi /etc/freshclam.conf ← ウイルス定義ファイル更新設定ファイル編集
■71行目
「DatabaseMirror database.clamav.net」の行頭に「#」を挿入し、
「DatabaseMirror db.jp.clamav.net」を追加
#DatabaseMirror database.clamav.net
DatabaseMirror db.jp.clamav.net
②ウイルス定義ファイル更新
# freshclam
ClamAV update process started at Fri Jan 7 12:57:13 2022
daily database available for download (remote version: 26414)
Time: 0.8s, ETA: 0.0s [========================>] 54.80MiB/54.80MiB
Testing database: ‘/var/lib/clamav/tmp.30881f985c/clamav-53eb2ff94f8ff97aee1ef1931e2bfb93.tmp-daily.cvd’ …
Database test passed.
daily.cvd updated (version: 26414, sigs: 1969520, f-level: 90, builder: raynman)
main database available for download (remote version: 62)
Time: 1.8s, ETA: 0.0s [========================>] 162.58MiB/162.58MiB
Testing database: ‘/var/lib/clamav/tmp.30881f985c/clamav-d7a663194ed38ed1910f2b29641e9b05.tmp-main.cvd’ …
Database test passed.
main.cvd updated (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
bytecode database available for download (remote version: 333)
Time: 0.0s, ETA: 0.0s [========================>] 286.79KiB/286.79KiB
Testing database: ‘/var/lib/clamav/tmp.30881f985c/clamav-c959fafa36ee9ae598991e3821d1ad6e.tmp-bytecode.cvd’ …
Database test passed.
bytecode.cvd updated (version: 333, sigs: 92, f-level: 63, builder: awillia2)
WARNING: Clamd was NOT notified: Can’t connect to clamd through /run/clamav/clamd-socket: No such file or directory
最後にWARNING: Clamd was NOT notified: Can’t connect to clamd through /run/clamav/clamd-socket: No such file or directory と表示されますが問題ありません

1.3 動作確認

①システム全体をスキャン
■ウィルスが検出されなかった場合
# cd
# clamscan –infected –remove –recursive
———– SCAN SUMMARY ———–
Known viruses: 8601674
Engine version: 0.103.4
Scanned directories: 8
Scanned files: 5
Infected files: 0
Data scanned: 0.14 MB
Data read: 0.08 MB (ratio 1.80:1)
Time: 14.010 sec (0 m 14 s)
Start Date: 2022:01:07 13:35:00
End Date: 2022:01:07 13:35:14
■ウィルスが検出される場合
テスト用ウィルスをダウンロードし、スキャンする

# wget http://www.eicar.org/download/eicar.com
# clamscan –infected –remove –recursive
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND  ← ウィルス検知
/root/eicar.com: Removed.  ← ウィルス削除

———– SCAN SUMMARY ———–
Known viruses: 8601674
Engine version: 0.103.4
Scanned directories: 8
Scanned files: 6
Infected files: 1   ←1 つのウィルスを検知した
Data scanned: 0.14 MB
Data read: 0.08 MB (ratio 1.80:1)
Time: 12.965 sec (0 m 12 s)
Start Date: 2022:01:07 13:37:43
End Date: 2022:01:07 13:37:56

1.4 ウィルススキャン自動実行スクリプトの導入

①スクリプト保存ディレクトリーの作成

# mkdir -p /srv/www/system
②自動実行スクリプト作成
# cd /srv/www/system
clamscan.sh を次の内容で/var/www/systemに作成
# vi /srv/www/system/clamscan.sh
#!/bin/bashPATH=/usr/bin:/bin
# excludeopt setup
excludelist=/srv/www/system/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo “$i”|grep \/$) ]; then
i=`echo $i|sed -e ‘s/^\([^ ]*\)\/$/\1/p’ -e d`
excludeopt=”${excludeopt} –exclude-dir=$i”
else
excludeopt=”${excludeopt} –exclude=$i”
fi
done
fi# signature update
freshclam# virus scan
clamscan –recursive –remove ${excludeopt} /

スクリプトに実行権限を与える

# chmod 700 clamscan.sh
sys ディレクトリ、proc ディレクトリは仕様でスキャン出来ないため、対象外にする
# echo “/sys/” >> /srv/www/system/clamscan.exclude
# echo “/proc/” >> /srv/www/system/clamscan.exclude
ウィルススキャンの定期実行設定
# crontab -e
0 1 * * * /srv/www/system/clamscan.sh > /dev/null 2>&
「/var/www/system/clamscan.sh」を実行し、システム全体をスキャン
# /srv/www/system/clamscan.sh

2.  メールサーバー インストール

2.1 前処理

①新規ユーザーの為の前処理
今後、新規でユーザーを追加した場合、自動的にメールの送受信ができるよう設定をします

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/
# echo “~/Maildir/”> /etc/skel/.forward
# chmod 600 /etc/skel/.forward
②既存ユーザーのメール環境前処理
すでに作成してあるユーザーがメールの送受信が出来るよう設定をします。
「一般ユーザー名」の箇所は、あなたが作成した一般ユーザーに変更してください。
# mkdir -p /home/[一般ユーザー名]/Maildir/{new,cur,tmp}
# chown -R lan:users/home/[一般ユーザー名]/Maildir/
# chmod 700 /home/[一般ユーザー名]/Maildir
# chmod 700 /home/[一般ユーザー名]/Maildir/{new,cur,tmp}

2.2 Postfixインストール

①Postfix をインストールして SMTPサーバーを構築します

# zypper -n install postfix
②Postfix設定
メール不正中継防止に、後述の Dovecot の SASL機能を利用し、送信にも認証を要求するように Postfix を設定します。

# vi /etc/postfix/main.cf
# 110行目:コメント解除しドメイン名指定
mydomain = korodes.com  ←自ドメイン名

# 126行目:コメント解除
myorigin = $mydomain

# 287行目:コメント解除し自ネットワーク追記
mynetworks = 127.0.0.0/8, 192.168.11.0/24  ←自ネットワーク

# 442行目:コメント解除しMaildir形式へ移行
home_mailbox = Maildir/

# 705行目:変更
inet_interfaces = all

# 710行目:追記
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 711行目:ホスト名指定
myhostname = mail.korode.com  ←自ホスト名

# 725,726行目
# 必要に応じてメールボックスサイズを制限 (下例は 1G)
mailbox_size_limit = 1073741824
# 必要に応じて送受信メールサイズを制限 (下例は 10M)
message_size_limit = 10485760

# 738行目:変更
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject

# 744-746行目:コメントアウト
#smtp_sasl_auth_enable = no
#smtp_sasl_security_options =
#smtp_sasl_password_maps =

# 747行目あたり:変更
smtpd_sasl_auth_enable = yes

# 752行目あたり:追記
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname

# vi /etc/postfix/master.cf
22行目 行頭の#削除 コメントアウト解除
26行目 行頭の#削除 コメントアウト解除
smtp inet n – n – – smtpd
#amavis unix – – n – 4 smtp
# -o smtp_data_done_timeout=1200
# -o smtp_send_xforward_command=yes
# -o disable_dns_lookups=yes
# -o max_use=20
#smtp inet n – n – 1 postscreen
#smtpd pass – – n – – smtpd
#dnsblog unix – – n – 0 dnsblog
#tlsproxy unix – – n – 0 tlsproxy
submission inet n – n – – smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o content_filter=smtp:[127.0.0.1]:10024
-o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no

# systemctl start postfix
# systemctl enable postfix
③Firewalld を有効にしている場合は SMTP サービスの許可が必要です。SMTP は 25/TCP を使用します
# firewall-cmd –add-service=smtp –permanent
success
# firewall-cmd –reload
success

2.3 Dovecot インストール

①インストール
# zypper -n install dovecot
②Dovecot設定

Postfix に SASL 機能が提供できるよう Dovecot を設定します。
# vi /etc/dovecot/dovecot.conf
# 30行目:コメント解除(IPv6をリスンしない場合「, ::」削除)
listen = *, ::

# vi /etc/dovecot/conf.d/10-auth.conf
# 10行目:コメント解除し変更(プレーンテキスト認証も許可する)
disable_plaintext_auth = no

# 100行目:追記
auth_mechanisms = plain login

# vi /etc/dovecot/conf.d/10-mail.conf
# 30行目:コメント解除
mail_location = maildir:~/Maildir

# vi /etc/dovecot/conf.d/10-master.conf
# 106-108行目:コメント解除し追記
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

③Dovecot起動と自動実行

# systemctl start dovecot
# systemctl enable dovecot
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service.
④Firewalld を有効にしている場合は POP/IMAP サービスの許可が必要
POP は 110/TCP, IMAP は 143/TCP を使用します
# firewall-cmd –add-service={pop3,imap} –permanent
success
# firewall-cmd –reload
success

2.4 作動確認

フリーのメールクライアントThunderbirdにアカウントを設定して作動確認します。
ただし、お使いのプロバイダーによっては送信サーバーに587番ポートを使用する場合がありますので
firewall設定で587を解放しておきます。
# firewall-cmd –add-port=587/tcp –permanent
# firewall-cmd –reload

Thunderbirdを起動し、「ツール」メニューから「アカウント設定」選択  ↓

「アカウント操作」の「メールアカウント追加」選択  ↓

次の通り各項目に入力し、「手動設定」クリック  ↓
あなたのお名前 : 任意の名前
メールアドレス : <メールサーバのユーザー名>@<ドメイン名>
パスワード   : メールサーバのユーザー名のパスワード

下図の通り設定するが、お使いのプロバイダが送信サーバーで25番ポートが許されている場合は「587」のかわりに「25」でもよい。「完了」をクリック  ↓

警告画面が出ますが下図のようにチェックを入れ「確認」をクリック

次の画面になれば成功

3. Mail サーバー : Postfix + Clamav + Amavisd

Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します

3.1 Amavisd および Clamav Server をインストール

# zypper -n install amavisd-new spamassassin
# systemctl start clamd
# systemctl enable clamd
Created symlink /etc/systemd/system/multi-user.target.wants/clamd.service → /usr/lib/systemd/system/clamd.service.

3.2 Amavisd を設定

①設定ファイル編集

# vi /etc/amavisd.conf
# 20行目:自ドメイン名に変更
$mydomain = ‘korodes.com’;
# 152行目:コメント解除して自ホスト名に変更
$myhostname = ‘mail.korodes.com’;
# 154,155行目:コメント解除
$notify_method = ‘smtp:[127.0.0.1]:10025’;
$forward_method = ‘smtp:[127.0.0.1]:10025’;
②起動と自動実行設定
# sa-update
# systemctl start amavis spamd
# systemctl enable amavis spamd
Created symlink /etc/systemd/system/multi-user.target.wants/amavis.service → /usr/lib/systemd/system/amavis.service.
Created symlink /etc/systemd/system/multi-user.target.wants/spamd.service → /usr/lib/systemd/system/spamd.service.

3.3 Postfix の設定

# 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
# vi /etc/postfix/main.cf
# 最終行に追記
content_filter=smtp-amavis:[127.0.0.1]:10024
# systemctl restart postfix

4.ウィルススキャンスクリプト置換

ウイルスチェックスキャン後指定メールアドレスに通知するよう設定する。
① ウィルススキャン除外ディレクトリリストを作成
# cd /srv/www/system/
# vi clamscan.exclude
/sys/
/proc/
/etc/snort/rules/
/.snapshots ← openSUSEは大量のsnapshotをとるように設定されておりますので、もし、必要がない方は設定しておく
②既存スクリプトを無効化して、新ウィルススキャンスクリプトを作成
# cd /srv/www/system/
# mv clamscan.sh clamscan.sh_bak
# vi clamscan.sh
新しい「clamscan.sh」の内容

#!/bin/bash

PATH=/usr/bin:/bin

MAILTO=”<任意のメールアドレス>

# excludeopt setup
excludelist=/srv/www/system/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo “$i”|grep \/$) ]; then
i=`echo $i|sed -e ‘s/^\([^ ]*\)\/$/\1/p’ -e d`
excludeopt=”${excludeopt} –exclude-dir=^$i”
else
excludeopt=”${excludeopt} –exclude=^$i”
fi
done
fi

# signature update
freshclam 2>&1 > /dev/null

# virus scan
CLAMSCANTMP=`mktemp`
#clamscan –recursive –remove ${excludeopt} / > $CLAMSCANTMP 2>&1
clamscan –recursive ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z “$(grep FOUND$ $CLAMSCANTMP)” ] && \

# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s “Virus Found in `hostname`” $MAILTO
rm -f $CLAMSCANTMP

# chmod 700 clamscan.sh
これでウイルスがあればメールにて通知されます。ウイルスがなければ通知が来ません。
タイトルとURLをコピーしました