おうちサーバーが整ったら、次は外からアクセスできるようにしたい。旅行先からJellyfinで映画を見たり、外出先からSSHでメンテしたり。でもグローバルIPアドレスは大抵動的に変わるし、ルーターのポート開放はセキュリティリスクもある。
まずDDNS(動的DNS)でドメイン名を自宅のIPに紐付ける。MyDNS.JPが無料で使えてオススメ。ルーターやラズパイにDDNS更新スクリプトを仕込んでおけば、IPが変わっても自動で追従する。
ポート開放で気をつけるべきこと:
- 最小限のポートだけ開ける — 80(HTTP)、443(HTTPS)、SSH用の変態ポート(22は避ける)。ゲームサーバー用にUDPも数個。それ以外は全部閉じる。
- SSHは公開鍵認証のみ — パスワード認証は無効化。ポート22を避けて変なポート番号にするだけでも不正アクセスが激減する(obscurityはセキュリティではないけど、ノイズ除去にはなる)。
- fail2banを入れる — 数回の認証失敗でIPを自動BAN。これを入れてからSSHブルートフォースがほぼゼロになった。
プロバイダの問題。光回線でポート開放ができないプロバイダ(v6プラスとか)もある。その場合はCloudflare Tunnelが救世主。ポート開放不要でHTTPS公開できる。設定も超簡単。これはまた別の記事で詳しく書く。
DDNSが更新されてるかは定期的に確認しよう。僕は一度、更新スクリプトが死んでて3日間外からアクセスできなくなった。cronで週1回チェックスクリプトを仕込んでからは安心。