Linux Security: 第9章 - メールサーバーのセキュリティ

| ← |


9.3 適切なリレー設定

access.db

sendmail ではリレーの制御を /etc/mail/access で行う。 (postfix でも同様の /etc/postfix/access があるが書式は異なる)

[タグ] :[ターゲット](タブ|空白)[アクション]

access を変更したら、DB形式に変換する(aliasese同様)

# cd /etc/mail
# vi access
   (修正)
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
Connect:localhost.localdomain		RELAY
Connect:localhost			RELAY
Connect:127.0.0.1			RELAY
Connect:192.168.151.0			RELAY

# makemap -v hash access.db < access
key=`connect:localhost.localdomain', val=`RELAY'
key=`connect:localhost', val=`RELAY'
key=`connect:127.0.0.1', val=`RELAY'
key=`connect:192.168.151.0', val=`RELAY'

* CentOS では、詳しいドキュメントは sendmail-doc パッケージに含まれる。
/usr/shar/doc/sendmail/README.cf

9.4 RBL : Realtime Blackhole List

RBL(TM)はトレンドマイクロ社の登録商標であり、一般的には DNSBL (DNS Blackhole List) と呼称する。
迷惑メールや不正DNSなどのホスト名を収集したリスト。Realtime black list, block list など様々な呼び方がある。
基本的には、検証したいドメイン名に続けて、RBLサイトのドメインを連結したホスト名で A レコードがあれば、
迷惑サイトという扱いになる。

例)
xxx.com が RBL に該当するかどうかを確認
$ nslookup   xxx.com.RBL-DOMAIN
同様に IP  1.2.3.4 について検査する場合は
$ nslookup   4.3.2.1.RBL-DOMAIN
主な RBLサイト
ドメイン概要
sbl-xbl.spamhaus.orgspamhaus NPO, SBL/XBL/PBL/DBLなど多くの情報を提供。
bl.spamcop.netSpamCop社によるSPAMおよび中継ホストリスト
list.dsbl.org
virus.rbl.jpウイルスが発信された IP アドレス
short.rbl.jpSPAM が発信された IP アドレス
all.rbl.jpvirus.rbl.jp と short.rbl.jp の合算
url.rbl.jpSMAP中にあるURLのホスト
dyndns.rbl.jpSPAM中のダイナミックDNSホスト
DNSBLは手軽だが、精度が低い場合も多く運用には十分な検証が必要。
ref. ☞IPアドレス検索(www.tcpiputils.com)

9.5 SMTP認証

9.9 メールフィルタリング
Procmail は MTA とメールボックスの間で振り分け処理を行う。
Procmail によるサーバサイドでのフィルタ処理
  1. main.cf の mailbox_command 追加
    #mailbox_command = /some/where/procmail
    #mailbox_command = /some/where/procmail -a "$EXTENSION"
    # ycos enable
    mailbox_command = /usr/bin/procmail # 追加

  2. /etc/procmailrc(レシピ) の作成
    20MB以上のメールは破棄する
    :0
    * > 20000000
    /dev/null
レシピのフォーマット各種設定
# コメント
環境変数=値 

:0 [ フラグ ] [: ロックファイル ]
* 条件
アクション

フラグ処理
 Hヘッダのみスキャン(デフォルト)
 B本文のみスキャン。HBで両方
 C処理の継続(続くレシピへメッセージを渡す)
条件処理
 !否定
 < nnメッセージサイズが nnBytes より小さい
 > nnメッセージサイズが nnBytes より大きい
 ?指定したプログラムが正常(戻り値0)

アクション処理
 ファイル名メッセージをファイルへ保存。
競合回避のため、ロックファイルを指定する
 | commandメッセージをプログラムへ
 ! who@comメッセージを転送。
複数指定は空白区切り
 ?指定したプログラムが正常(戻り値0)

ClamAV の導入(9-8)
ClamAV はフリーのウイルススキャナで、ファイル、ディレクトリ、標準入力からウイルスを検知する。

  1. ClamAV は RPMForge から入手。clamd (ClamAVエンジン)、clamav(freshclam パターンファイルと更新ツール)
    # yum install clamav clamd
    		:
    Dependencies Resolved
    
    ================================================================================
     Package           Arch         Version                  Repository        Size
    ================================================================================
    Installing:
     clamav            i386         0.97.5-2.el5.rf          rpmforge         2.2 M
     clamd             i386         0.97.5-2.el5.rf          rpmforge         243 k
    Installing for dependencies:
     clamav-db         i386         0.97.5-2.el5.rf          rpmforge          34 M
    
    Transaction Summary
    ================================================================================
    Install       3 Package(s)
    Upgrade       0 Package(s)
    		:
    
  2. パターンファイルの更新
    # freshclam
    ClamAV update process started at Wed Aug  8 08:20:49 2012
    main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
    Downloading daily.cvd [100%]
    daily.cvd updated (version: 15229, sigs: 250067, f-level: 63, builder: jesler)
    Downloading bytecode.cvd [100%]
    bytecode.cvd updated (version: 188, sigs: 38, f-level: 63, builder: neo)
    			: 

  3. ClamAV 動作確認
    # /etc/init.d/clamd start
    Starting Clam AntiVirus Daemon:       [  OK  ]
    
    (http://www.eicar.org/85-0-Download.html からテストウイルス入手)
    $ http://www.eicar.org/download/eicarcom2.zip
    
    # clamscan -r /home/
    /home/user/.bash_logout: OK
    /home/user/john179w2.zip: OK
    /home/user/.elinks/globhist: OK
    		:
    /home/user/tmp/eicarcom2.zip: Eicar-Test-Signature FOUND
    /home/user/html: Symbolic link
    		:
    
    ----------- SCAN SUMMARY -----------
    Known viruses: 1293663
    Engine version: 0.97.5
    Scanned directories: 24
    Scanned files: 320
    Infected files: 1
    Data scanned: 79.60 MB
    Data read: 38.17 MB (ratio 2.09:1)
    Time: 35.916 sec (0 m 35 s)
    # ls -l /var/log/clamav/
    total 28
    -rw-r----- 1 clamav clamav 19719 Aug 10 08:44 clamd.log
    -rw-r----- 1 clamav clamav  4267 Aug 10 08:44 freshclam.log
    #  tail /var/log/clamav/clamd.log
    Fri Aug 10 08:42:58 2012 -> SelfCheck: Database status OK.
    Fri Aug 10 08:44:09 2012 -> Reading databases from /var/clamav
    Fri Aug 10 08:44:19 2012 -> Database correctly reloaded (1293669 signatures)
    
  4. ClamAV のスケジュール実行
    当ファイルは ClamAV インストール時に作成され、毎日 04:00 に起動される。
    clamscan オプションのうち、-i はウイルスに関する情報のみ表示、-r はサブディレクトリもチェックするの意味。
    # chkconfig --level 2345 clamd on
    # vi /etc/cron.daily/freshclam
    #!/bin/sh
    PATH=/sbin:/usr/sbin:/bin/:/usr/bin
    
    ### A simple update script for the clamav virus database.
    ### This could as well be replaced by a SysV script.
    
    /usr/bin/freshclam --quiet
    
    # ycos add 2012/08/08
    /usr/bin/clamscan  -ir /home /tmp /var/tmp /var/spool/mail
    
    

AMaViS の導入

AMaVis はオープンソースのメールフィルターで、添付ファイルの展開、解凍などを行います。
ClamAV と連携させることで、ウイルス付きメールを遮断することができます。

  1. amvis-new を RPMForge からインストール
    amvis は Perl で実装されており、多くの前提パッケージが必要。
    # yum -y install amavisd-new
    	:
    ================================================================================
     Package		     Arch     Version		       Repository  Size
    ================================================================================
    Installing:
     amavisd-new		     i386     2.6.6-3.el5.rf	       rpmforge	  857 k
    Installing for dependencies:
     altermime		     i386     0.3.10-1.el5.rf	       rpmforge	   55 k
     arc			     i386     5.21p-1.el5.rf	       rpmforge	   64 k
     arj			     i386     3.10.22-6.el5	       epel	  169 k
     cabextract		     i386     1.4-1.el5.rf	       rpmforge	   49 k
     freeze			     i386     2.5.0-9.el5	       epel	   26 k
     lha			     i386     1.14i-19.2.2.el5.rf      rpmforge	   48 k
     lzo			     i386     2.06-1.el5.rf	       rpmforge	  135 k
     lzop			     i386     1.03-2.el5	       epel	   52 k
     ncompress		     i386     4.2.4-47		       base	   23 k
     nomarch		     i386     1.4-2.el5		       epel	   17 k
     p7zip			     i386     9.20.1-2.el5	       epel	  748 k
     perl-Archive-Zip	     noarch   1.16-1.2.1	       base	  138 k
     perl-BerkeleyDB	     i386     0.43-1.el5.rf	       rpmforge	  271 k
     perl-Convert-BinHex	     noarch   1.119-5.el5	       epel	   47 k
     perl-Convert-TNEF	     noarch   0.17-7.el5	       epel	   19 k
     perl-Convert-UUlib	     i386     2:1.4-1.el5	       epel	  229 k
     perl-Crypt-OpenSSL-RSA	     i386     0.28-1.el5.rf	       rpmforge	   61 k
     perl-Crypt-OpenSSL-Random   i386     0.04-7.el5	       epel	   21 k
     perl-Digest-SHA	     i386     5.71-1.el5.rf	       rpmforge	   93 k
     perl-Email-Date-Format	     noarch   1.002-4.el5	       epel	   15 k
     perl-IO-stringy	     noarch   2.110-5.el5	       epel	   70 k
     perl-MIME-Lite		     noarch   3.028-1.el5.rf	       rpmforge	   97 k
     perl-MIME-tools	     noarch   5.420-3.el5	       epel	  285 k
     perl-Mail-DKIM		     noarch   0.39-1.el5.rf	       rpmforge	  129 k
     perl-MailTools		     noarch   2.09-1.el5.rf	       rpmforge	  100 k
     perl-Net-Server	     noarch   0.99-1.el5.rf	       rpmforge	  171 k
     perl-Pod-Escapes	     noarch   1.04-5.el5	       epel	   15 k
     perl-Pod-Simple	     noarch   3.16-1.el5.rf	       rpmforge	  212 k
     perl-Test-Pod		     noarch   1.45-1.el5.rf	       rpmforge	   13 k
     perl-TimeDate		     noarch   1:1.16-5.el5	       base	   32 k
     perl-Unix-Syslog	     i386     1.1-1.el5.rf	       rpmforge	   51 k
     ripole			     i386     0.2.0-1.2.el5.rf	       rpmforge	   47 k
     unrar			     i386     4.2.3-1.el5.rf	       rpmforge	  123 k
     zoo			     i386     2.10-2.2.el5.rf	       rpmforge	   71 k
    
    Transaction Summary
    ================================================================================
    Install	     35 Package(s)
    Upgrade	      0 Package(s)
    	:
    
  2. ClamAV の修正
    受信メールをスキャンするため、ClamAV の動作ユーザを root に変更
    /etc/clamd.conf を修正し、再起動
    # Run as another user (clamd must be started by root for this option to work)
    # Default: don't drop privileges 
    #User clamav
    User root 
    

  3. Postfix のコンテンツフィルタ機能の追加(1) /etc/postfix/master.cf
    master.cf の末尾に以下を追加します。
    # AMaViSd
    smtp-amavis unix - - n - 10 smtp
      -o smtp_data_done_timeout=1200
      -o smtp_send_xforward_commands=yes
      -o disable_dns_lookups=yes
    
    127.0.0.1:10025 inet n - n - - smtpd
      -o content_filter=
      -o local_recipient_maps=
      -o smtpd_helo_restrictions=
      -o smtpd_client_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks=127.0.0.0/8
    
    master.cf ファイルのフォーマットは以下の通りで、各項目は空白またはタブで区切る。
    先頭が空白の場合は、継続行と見なされる。
    Private, Unprivileged, Chroot は y(オプションを使う)、n(使わない)、-(デフォルト)の何れかを選択。
    # コメント
    サービス名
    service
    タイプ
    type
    当事者
    private
    権限なし
    unpriviledged
    場所制約
    Chroot
    自動起動
    Wake up time [s]
    プロセス数
    Wake up time [s]
    コマンドと引数
    Command name + arguments
    以下に各項目の解説、名称直後のカッコ内はデフォルト値
    • サービス名 ... 導入する機能の名前
    • タイプ ... デーモンの待ち受け方法
      inet - TCP/IP 待ち受け、unix - ソケット待ち受け、fifo 名前付きパイプ待ち受け
    • 当事者(y) ... メールサービスに組み入れるかどうか(y)。
      タイプが inet 時は n を指定(y は不可)。
    • 権限なし(y) ... サービスを postfix ユーザで走らせる(y)、または root で動作させる(n)
    • 場所制約(y) ... キューディレクトリへ chroot する(y)、またはしない(n)
    • 自動起動(0) ... サービスを予め起動する場合の猶予時間。0 で自動起動させない。
    • プロセス数($default_process_limit) ... 実行可能なプロセス最大数。0 で無制限(n)
    • コマンド ... 起動コマンドと引数

  4. Postfix のコンテンツフィルタ機能の追加(2) /etc/postfix/main.cf
    main.cf の末尾に以下を追加し、再起動
    # for AMaViSd / ycos 2012/08/10
    content_filter = smtp-amavis:[127.0.0.1]:10024
    
動作確認は、先のテストウイルスを添付したメールを送信します。
$ mutt -a tmp/eicarcom2.zip -s "Test virus" root
	( 内容を確認し、'y' で送信)
当該ログ (/var/log/maillog)
Aug 10 14:17:07 localhost postfix/qmgr[24208]: 847932900126: from=<virusalert@bbtec.net>, size=2365, nrcpt=1 (queue active)
Aug 10 14:17:07 localhost postfix/smtpd[24219]: disconnect from localhost.localdomain[127.0.0.1]
Aug 10 14:17:07 localhost amavis[23412]: (23412-03) Blocked INFECTED (Eicar-Test-Signature), <user@softbank219198124025.bbtec.net> -> <root@softbank219198124025.bbtec.net>, quarantine: virus-SU83CKwB2G4u, Message-ID: <20120810051707.GA24247@softbank219198124025.bbtec.net>, mail_id: SU83CKwB2G4u, Hits: -, size: 1201, 299 ms
Aug 10 14:17:07 localhost postfix/smtp[24216]: 3F97C2900128: to=<root@softbank219198124025.bbtec.net>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.32, delays=0.01/0/0.01/0.3, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=23412-03 - INFECTED: Eicar-Test-Signature)
Aug 10 14:17:07 localhost postfix/qmgr[24208]: 3F97C2900128: removed
Aug 10 14:17:07 localhost postfix/local[24220]: 847932900126: to=<root@softbank219198124025.bbtec.net>, orig_to=<virusalert@bbtec.net>, relay=local, delay=0.04, delays=0.01/0/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
Aug 10 14:17:07 localhost postfix/qmgr[24208]: 847932900126: removed
届いたメール
From: "Content-filter at softbank219198124025.bbtec.net" <virusalert@bbtec.net>
Date: Fri, 10 Aug 2012 14:17:07 +0900 (JST)
Subject: VIRUS (Eicar-Test-Signature) in mail FROM <user@softbank219198124025.bbtec.net>
To: <virusalert@bbtec.net>

This is a multi-part message in MIME format...

------------=_1344575827-23412-0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

A virus was found: Eicar-Test-Signature

Scanner detecting a virus: ClamAV-clamd

Content type: Virus
Internal reference code for the message is 23412-03/SU83CKwB2G4u


Return-Path: <user@softbank219198124025.bbtec.net>
From: SAMBOA USER <user@softbank219198124025.bbtec.net>
Message-ID: <20120810051707.GA24247@softbank219198124025.bbtec.net>
Subject: Test virus
The message has been quarantined as: virus-SU83CKwB2G4u

Notification to sender will not be mailed.

9.10 spam フィルタリング(2)

用語補足


9.11 POP3S

APOP : Authenticated POP は、認証部分に MD5 を用いていたが、脆弱性により非推奨
POP3 におけるサーバ認証鍵については、Apache SSL/TLS と同様。
LPIC2 SSL/TLS参照

Tips:
* spamassassin は 5.8 より default install
* ベイジアンネットワーク ... 機械学習(統計解析)


その他
バナー削除など