マストドンセキュリティガイドライン

これからマストドンインスタンスを建てようと思っている鯖缶の人たちへ セキュリティに関して気をつけるべき事項をまとめます。

ドメイン

Whois

それぞれのドメインには管理者の情報が登録されており、迷惑行為があった場合などに管理者に連絡がとれるように情報が検索できるようになっています。

実際に whois コマンドを使って検索することができます。

[~] whois kantei.go.jp
Domain Information: [ドメイン情報]
a. [ドメイン名]                 KANTEI.GO.JP
e. [そしきめい]
f. [組織名]                     内閣総理大臣官邸
g. [Organization]               The Prime Minister's Official Residence
k. [組織種別]                   政府機関
l. [Organization Type]          Government
m. [登録担当者]                 MK072JP
n. [技術連絡担当者]             KW15930JP
p. [ネームサーバ]               ns7.kantei.go.jp
p. [ネームサーバ]               ns8.kantei.go.jp
s. [署名鍵]
[状態]                          Connected (2019/06/30)
[登録年月日]                    1994/06/24
[接続年月日]                    1994/06/27
[最終更新]                      2018/07/01 01:05:05 (JST)

もし特定のサイトから迷惑メールを送りつけられるとか、攻撃的なアクセスがあった場合などはここの情報をもとに連絡を取ることになります。

ここに表示される情報はトップレベルドメイン(TLD)ごとにポリシーが異なりますが、デフォルトの状態では個人でドメインを買った場合でも本名、メールアドレス、住所、電話番号などがそのまま掲載されてしまいます。 個人の場合は公開されたくないでしょうからその場合は ほとんどのレジストラで提供しているWhois情報公開代行サービスを最初から設定しておきましょう(後から設定すると追加料金を取るレジストラもあります)。

情報公開代行を行った場合は一旦レジストラが連絡を受けてドメインの登録者に中継してくれるようになります。ただしTLDによっては公開代行を禁止しているものもありますので、ドメインを取る前にポリシーを確認しましょう。

DNS CAA

DNS Certification Authority Authorization (CAA) は証明書の誤発行を防止する仕組みです。

設定しておくと証明書を発行できる認証局を制限することができます。実際に認証局が誤って証明書を発行してしまうということも起きていますのでなるべく設定しておきましょう。

Webサーバ

HTTPS (TLS)

マストドンHTTPSの利用が必須です。 HTTPSの設定確認には Qualys SSL LABS SSL Server Test が便利です。レーティングがA以上になれば問題ありません。

どういうTLSの設定が良いかわからない場合はMozilla SSL Configuration Generator を利用するのはおすすめです。

TLSバージョンですが、マストドンは新しいブラウザしかサポートされていないため、TLS1.2のみをサポートするようにすれば問題ありません。Mozilla SSL Configuration GeneratorではModernの設定がおすすめです。

HSTS

HTTP Strict Transport Security (HSTS) はHTTPの代わりにHTTPSを使って通信するようにブラウザに伝えるための機能です。一度アクセスしてしまえばたとえ http でアクセスしてもブラウザが自動でより安全な https で接続しに行くようになります。mastodonhttpsしかサポートされていないためこの設定も入れておくと良いでしょう。Mozilla SSL Configuration GeneratorではHSTSの設定を追加することができます。

HTTPヘッダ

HTTPヘッダにはデフォルトではいろいろな情報が含まれています。 Apche HTTPDやnginxはOSやWebサーバのバージョンなどの情報を出力します。 最新のバージョンを利用するのは当たり前ですが、無駄に情報を与えてもいいことはありませんので設定で出力しないようにしましょう。

securityheaders.comではサーバが送信してくるヘッダの一覧を確認することができます。

nginxでサーバのバージョン情報を隠蔽したい場合は以下のように設定します。

http {
    server_tokens off;
}

SSH

管理用にSSHを有効にすると思いますが、パスワード認証は絶対に使わないようにしましょう。絶対に破られます。 公開鍵認証を設定し、十分に長い鍵を利用しましょう。

SSHでログインした際には /etc/ssh/sshrc が実行されるますのでログインした場合にメールなどで通知するようにすればより安全です。

さらにはインターネット側からSSHにアクセスするのではなく、AWS VPCなどを利用してプライベートネットワークからのみ接続できるようにするとより安全です。

ポートスキャン

必要最低限のポートしかアクセスできないようにするというのが基本です。 マストドンの場合は443番だけ開いていればサービスが可能です。同時に立ち上げる必要があるPostgresSQL、Redis、ElasticSearchのサービスがインターネットからアクセスできないようにiptablesやfirewalldを設定しましょう。

特定のポートが開いていないかしらみつぶしに調べる方法をポートスキャンと呼びます。

自分でポートスキャンを行うにはnmapコマンドを使って調べることができます。 自分の管理しているホスト以外には実行しないこと!!

[~] sudo nmap -v -sS -oA nmap_outout --port-ratio=0.0 example.jp
Starting Nmap 7.70 ( https://nmap.org ) at 2018-08-26 22:18 JST
Initiating Ping Scan at 22:18
Scanning example.jp (192.0.2.0) [4 ports]
...snip...
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https

DDoS

個人でDDoS対策をするのはかなり難しいです。 どうしても対策したい場合はAWSであればELBでAWS Shield Standardが無料で使えるのでそれを入れるか、Cloudflare を導入するのが簡単です。

IPv6

IPv6を設定する場合はiptablesに注意しましょう。IPv6はip6tablesに設定を書く必要がありますがこれを忘れてIPv6だけ穴だらけという事例が散見されます。

またIPv4でICMPをフィルタしている場合があるかと思いますが、IPv6ではICMPをすべてフィルタすると通信できなくなります。これはPath MTU Discoveryが必要になっているためです。よく考えて設定しましょう。

メールサーバ

マストドンはメール通知の仕組みがあります。 ユーザー登録時はメールで送られてくる認証リンクを踏む必要があり、メールがとどかないことは問題になります。 一般的にメールサーバを運用することはかなり難しく、また手間もかかります。 MailgunAmazon SES を利用するのがおすすめです。

ブラックリスト

自分でメールを送信する場合は気をつけることがたくさんあります。 まずメールの出口に割り当てられたグローバルIPアドレスを確認します。 通常IPアドレスは複数のユーザ間で使い回されるものですが、以前に使っていたユーザが迷惑メールをばらまいていたかもしれません。その場合ブラックリストに載っているかもしれません。

メールを受け取る方はいくつかのブラックリストを参照して、危ないホストからはメールを受け取らないように設定されていることがほとんどです。

複数あるブラックリストMX Toolbox BLACKLIST CHECK でチェックできます。IPアドレスを設定した時点で最初にチェックしておきましょう。

SPF

Sender Policy Framework (SPF) は送信ドメイン認証のひとつです。差出人のメールアドレスが他のドメインになりすましをしていないか検出することができます。

SPFドメインのTXTレコードに記載します。digコマンド を使って以下のように調べることができます。

[~] dig +short TXT muknown.jp
"v=spf1 ip4:133.130.97.174 include:muknown.jp ~all"

上記はmuknown.jpが差出人になっているメールは「133.130.97.174」からのみ送信するという意味ですので、受け取る方はこのアドレス以外からのメールは破棄するようになります。

SPFはちゃんとかけているか確認するのが難しいのですが、 MxToolBox でチェックすることができます。

逆にメールを送らないホストがある場合にも、メールは送らないと書いておくと迷惑メールになりすまされてしまうことがなくなります。

料金監視

クラウド利用の場合一番怖いのが従量課金です。従量課金がないConohaなどを利用するのも手ですが、AWSを利用している場合はCloudwatchで料金監視を入れることができます

プロバイダ責任制限法

プロバイダ責任制限法とは名誉毀損著作権侵害、プライバシー侵害などの権利侵害が発生した場合に損害賠償責任を制限する法律です。ここでのプロバイダとはインターネットサービスプロバイダ(ISP) に限らずコンテンツプロバイダなどを含みます。つまりマストドンの管理をする上では必ず目を通しておく必要があります。

通常掲示板などで権利侵害が発生した場合、権利を侵害した側、権利侵害がを受けた側の双方からサーバの管理者が訴訟の対象になる可能性があります。 ただしこの法律に従って運用している限りは管理者は免責されます。

権利侵害が発生したことにを認識しながら対応を放置してると管理者にも損害賠償責任が発生する可能性があります。なにか起こる前に確認しておきましょう。

さいごに

インターネットは怖いところです。初心者であったとしてもそこは魔王城の前の毒の沼地です。ご丁寧にスライムを配置した街からスタートできるわけではありません。 常に最新の情報を仕入れて対応するようにしましょう。