ホーム » コンピュータ » Network (ページ 8)

Network」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

DMARCレポートを出力

DMARCの設定をして、なりすましなどのレポートをメールで送る設定をしたけど、xmlファイルはzip圧縮でメール添付だし、xml ファイルも内容が読みづらい。

dmarc-catを使ってみる

“aptitude search dmarc”を実行すると、dmarc-cat というソフトが見つかり、”sudo aptitude install dmarc-cat” インストールして使ってみる。

dmarc-cat 0.9.2/j4 by Ollivier Robert

Reporting by: google.com — noreply-dmarc-support@google.com
From 2020-02-12 09:00:00 +0900 JST to 2020-02-13 08:59:59 +0900 JST

Domain: tsaitoh.net
Policy: p=quarantine; dkim=r; spf=r

Reports(1):
IP                      Count   From        RFrom       RDKIM   RSPF    
xxxxx-xx-x-x.xxx.ne.jp. 1       xxxxxxx.xxx xxxxxxx.xxx pass    pass    

これなら、なんとなく読みやすい。でも、どちらにしろ、添付ファイルのzip抽出、zip解凍、dmarc-cat の実行、んで、これらの内容を最終的にメールで読みたい。

メールを dmarc-cat で変換してレポート

ということで、その一連の処理を、procmail から実行させるための perl script をチロっと書いてみた。

#!/usr/bin/perl

# DMARC のレポートメールを dmarc-cat で文字情報にして送信しなおす
#
#       .procmailrc に以下を記載
#       | dmarc-report-mail.pl メールアドレス

my $mailto = $ARGV[0] ; # 送りなおすメールアドレス

# 添付ファイルを抽出するディレクトリ
my $tmpdir = "/tmp/dmarc-report-$USER-$$" ;

if ( mkdir( $tmpdir ) ) {
  # 標準入力のメールから添付ファイルを抽出
  system( "/usr/bin/munpack -q -C $tmpdir > /dev/null 2>&1" ) ;

  if ( opendir( my $dh , $tmpdir ) ) {

    # 保存された全ての添付ファイルの処理
    while( my $file = readdir( $dh ) ) {
      if ( -f "$tmpdir/$file" ) {

        # .zip ファイルだけ処理を行う
        if ( $file =~ /\.zip$/ ) {
          my $zipfile = "$tmpdir/$file" ;
          my $xmlfile = $zipfile ;
          $xmlfile =~ s/\.zip$/.xml/ ;
          $xmlfile =~ s/X/!/g ;

          # 圧縮解除 .zip => .xml
          system( "/usr/bin/unzip -q -d $tmpdir '$tmpdir/$file'" ) ;
          if ( -f $xmlfile ) {

            # .xml => dmarc-cat の出力をメールに送る
            if ( $mailto ne ""
                 && open( $mh , "| /usr/sbin/sendmail $mailto" ) ) {
              print $mh "Subject: DMARC report\n\n" ;
              if ( open( my $fh , "/usr/bin/dmarc-cat '$xmlfile' |" ) ) {
                while( <$fh> ) {
                  print $mh $_ ;
                }
                close( $fh ) ;
              }
              close( $mh ) ;
            }
            unlink( $xmlfile ) ;    # 解凍されたファイルを消す
          }
        }
        unlink( "$tmpdir/$file" ) ;     # 添付ファイルを消す
      }
    }
    closedir( $dh ) ;
  }
  rmdir( $tmpdir ) ;
}

この script を以下の様な procmailrc にかけて、report-a 宛のレポートを変換後 report-a-dmarc 宛に再転送させる。

:0
* ^To.*report-a@xxxxxxx\.xxx
| /...path.../dmarc-report-mail.pl report-a-dmarc@xxxxxxx.xxx

:0
* ^To.*report-f@xxxxxxx\.xxx
| /...path.../dmarc-report-mail.pl report-f-dmarc@xxxxxxx.xxx

自宅メールサーバをDKIM対応へ

Yahoo のメールアカウントに、迷惑メール対策のため「DMARC」導入を開始しますとのメールが届いている。送信側ドメイン認証のひとつで、なりすましだった場合の取り扱いを設定することができるらしい。

しかし、自宅メールサーバは、mydns.jp を用いたダイナミックDNSを用いたサイト。このため、メールサーバを立ち上げても spam 送信元と誤認(なりすましと誤認)される可能性も高く、自宅サーバからのメールは、受け取り側で迷惑メールフォルダに落ちないか心配したり、すぐに相手に届くか不安であった。

ということで、DMARC の前に、DKIM にて信用してもらえるように設定を行う。DKIMは受信したメールが正しいメールサーバから送られ改ざんされていないか確認する方式SPFは以前に導入済みだけど、正しいメールサーバから発信されたか確認する方式なので、DKIM ほどの信頼はない。

opendkim のインストール

Debian では、opendkim のパッケージが配布されているので必要なパッケージをインストールする。設定のために セレクタ名 を postfix としてプライベートキーを生成する。/etc/dkimkeys/postfix.txt には、DNS に登録する “IN TXT” の設定が生成される。

$ sudo aptitude install opendkim opendkim-tools
$ cd /etc/dkimkeys
$ sudo opendkim-genkey -D /etc/dkimkeys -b 1024 -d tsaitoh.net -s postfix
$ sudo chown opendkim:opendkim /etc/dkimkeys/*

opendkim の設定として、上記処理で作られたプライベートキーを登録し、DKIM キーを付加する処理のためのサーバと接続するためのソケットを定義する。

((( 以下のファイルを編集 )))
$ sudo vi /etc/opendkim.conf
Domain   tsaitoh.net
KeyFile  /etc/dkimkeys/postfix.private
Selector postfix

Socket   inet:8892@localhost

DKIM 電子署名を付加するための postifix の設定

postfix でメールを送信する時に opendkim に接続し DKIM の電子署名を付加するために、前述のソケットに対応する設定を以下の様に記載する。

((( /etc/postfix/main.cf )))
$ sudo vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8892

DKIM のための DNS の設定

DNSに、公開鍵などの設定を行う。mydns.jp を使っているので、mydns.jp にログインし、DOMAIN INFO にて、以下の設定を加える。

_adsp._domainkey   IN TXT dkim=unknown
postfix._domainkey IN TXT v=DKIM1; h=sha256; k=rsa; p=XXX...XXX

DNS設定が正しく反映されているか確認。

$ nslookup -query=TXT _adsp._domainkey.tsaitoh.net 8.8.8.8
_adsp._domainkey.tsaitoh.net    text = "dkim=unknown"
$ nslookup -query=TXT postfix._domainkey.tsaitoh.net 8.8.8.8
postfix._domainkey.tsaitoh.net  text = "v=DKIM1; h=sha256; k=rsa; p=XXX...XXX

サーバの再起動とDKIMの確認

$ sudo service opendkim start
$ sudo service postfix restart

試しに Google のアカウントにメールを送ったら、メールヘッダに以下が表示されるようになった。SPF は、以前に設定済みなので、自宅サーバからのメールは、確実に相手に届くようになったと思われる。

ARC-Authentication-Results: i=1; mx.google.com;
        dkim=pass header.i=@tsaitoh.net ....
        spf=pass (google.com: domain of ....

我が家のWiFi機器の登録

子どもに「ネットワーク機器」が新たに届く。そろそろ、専門用語も通じる様になってきたので、セットアップ方法を伝授。

普通の家なら、WiFiルータのAOSSのボタンを押して…と言うところだろうが、我が家はネットワークの登録は手作業。

(1) ルータの設定画面 http://192.168.11.1 に接続し、login: admin , password: ●●●
(2) 詳細設定→無線設定→MACアクセス制限
(3) 登録リストの編集で、登録リストの新規追加

普通の家なら、WiFiルータで DHCP サーバ機能(プライベートアドレスの貸し出し機能)が動いているので、これで終わり。

ただし、我が家では、ネットワーク機器の稼働状況を管理するために、

(4) 固定IPアドレスを割り振るために DHCP サーバへの登録、/etc/dhcp/dhcpd.conf の編集
(5) IPアドレスを名前で呼び出せるようにするための DNS サーバへの登録 /etc/db.xxxx の編集
(6) 登録されていない MAC アドレス機器を監視するために、監視対象から外すための /etc/arpalert/maclist.allow への追記
(7) その他にも hosts への追記、Samba のための lmhosts への追記

と、面倒な設定が必要。これを全部管理するのは大変なので、これらの管理の自動化を行うプログラムが作ってあるので、その設定ファイルに、機器の ホスト名・IPアドレス・MACアドレスを記載すればいい。

詳細は、各設定ファイル内のテンプレート部に併記してあるコメントを参照。

EdgeRouter-X ver 2.0.8 に更新

12/5 に、EdgeRouter-X のファームウェア 2.0.8 が公開されたみたい。さっそく適用。

といっても、何が変わったかしらんけど。(^_^;

EdgeRouter-X を L2-Switch

先日、EdgeRouter-X を reboot したら設定が飛んでしまった。

VPN は WRM-D2133HP に移行

外部からの L2TP による VPN 接続用に導入していた。しかし新たに導入したWiFi ルータ WRM-D2133HP は L2TP/IPSec に対応していたので、我が家の複雑なネットワーク構成を単純化するためにも VPN は WRM-D2133HP で対応させることにした。

WiFiルータの VPN だから、設定は簡単に終了。

EdgeRouter-X は 単純な L2-Switch 化

VPN を移行し本来なら不要になった EdgeRouter-X だけど、何も使わないのはもったいないし、自宅内の HUB ポートが埋まっているので、単純に L2-Switch の設定に変更。(といってもVLANは切らないけど)

ネットワークが繋がらない filter-aaaa-on-v4

最近、職場や自宅にて時々ネットワークが繋がらないときがある。

ネットワークの設定などは自前サーバを配置しているとはいえ、ちゃんと設定してあるはず。

繋がらないという状態でも、異なるサイトなら問題なくつながるので、プロバイダーや自宅ネットワークが落ちているということはない。でも、ふと IPv6 アドレスが問題になっているのかと反省。

自宅内は閉じているとはいえ、IPv6が使える状態。もしかして、上流接続はIPv4しか使えないけど、たまにIPv6アドレスを引いてしまうとかであろうか。

filter-aaaa-on-v4

そこで、色々調べ、IPv4 アドレスからの問い合わせは、IPv6 を使わせないための設定をしてみた。

((( /etc/bind/named.conf.options )))
options {
    :
    listen-on-v6       { any; } ;
    filter-aaaa-on-v4  yes ;
}

動作確認

$ nslookup localhost 
Name:    localhost
Address: 127.0.0.1

$ nslookup localhost ::1
Name:    localhost
Address: 127.0.0.1
Name:    localhost
Address: ::1

気のせいかもしれないけど、職場の環境も filter-aaaa-on-v4 つけたけど、IPv4 fallback がなくなったのかな。応答が速くなったように感じる。

Buffaloのファームウェア更新情報のRSS生成

我が家のネットワークは、Buffalo 製品で統一しているけど、ファームウェアの更新は自動取得にしている。

ファームウェア更新の情報を確認したいので、Buffalo の firmware ダウンロードページを自宅の機器に厳選してクローリングし RSS 情報に変換するスクリプトを書いてみた。

PWなしWiFiとVPNの利用

夏休みの家族旅行でホテル。ただ、最近は減ってるけど、ホテルのWiFiがパスワードなし。こういうWiFiは、通信データが盗聴される可能性がある(参考「ホテルのWiFiの危険性は高い?)」ので、最近は使用を避けたい。

でも、家では以前から VPN サーバを使えるようにしているので、この際、家族にも使い方を説明して積極的に使ってもらおう。サーバ,ユーザID,PW,事前共有キーは、別途メールするとして、設定方法は他の人の解説記事をみてもらおう。

VPN接続だと、セキュリティが安心というのもあるけど、自宅だけに制限している機能(WordPressへの記事の投稿とか、自宅ネットワーク状況の表示など)も使える。

WRM-D2133HP v2.84

先日新しく導入したWiFiルータの新しいファームウェア v2.84 が公開されていたので、早々にインストール。

EdgeRouter-X EdgeOS v2.0.6

Edgerouter-X の最新 OS EdgeOS v2.06 が 7/17 より公開となっていたので、更新。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト