SSH 接続の利用規約表示
SSH のパスワード入力時(ログイン前)に、任意のメッセージを表示させたい。
「ssh接続 ログイン前 任意 メッセージ 表示」で Qiita 記事をググってもヒットしなかったり、ログイン成功後に表示される motd
などの設定ばかりだったので自分のググラビリティとして。
TL; DR (今北産業)
-
/etc/ssh/sshd_config
のBanner
に表示したいテキストのファイル・パスを記載します。 - この設定は、基本的に法務的な目的で利用されます。(詳しくは TS; DR 参照)
- 動作確認済み環境:
- macOS HighSierra(OSX 10.13.6), OpenSSH_7.8p1, LibreSSL 2.6.2
- Raspbian GNU/Linux 8(Jessie), OpenSSH_6.7p1, OpenSSL 1.0.1t 3 May 2016
- CentOS Linux 7(Core), OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
$ cat /etc/ssh/sshd_config
...
#Banner none
Banner /path/to/your/ssh_banner.txt
...
$ cat /path/to/your/ssh_banner.txt
----------------------------------------------------------
ALERT! You are entering into a secured area!
Your IP, Login Time, Username has been noted and has been
sent to the server administrator!
This service is restricted to authorized users only. All
activities on this system are logged. Unauthorized access
will be fully investigated and reported to the appropriate
law enforcement agencies.
----------------------------------------------------------
$ ssh -l <ssh user> 192.168.xxx.xxx
----------------------------------------------------------
ALERT! You are entering into a secured area!
Your IP, Login Time, Username has been noted and has been
sent to the server administrator!
This service is restricted to authorized users only. All
activities on this system are logged. Unauthorized access
will be fully investigated and reported to the appropriate
law enforcement agencies.
----------------------------------------------------------
Last login: Sun Mar 31 10:19:19 2019 from XXXX::XXXX:XXXX:XXXX:XXXX%en0
Password:
~$
TS; DR (メッセージ表示のタイミングにこだわるコマケーこと)
SSHログイン時のパスワード入力前のメッセージ表示変更
サーバーに SSH で接続する際にメッセージを表示するタイミングは2つあります。
- パスワード入力(ログイン)前
- パスワード入力(ログイン)後
一般的に、任意のメッセージはログイン後に表示させる事が多いと思います。その場合は、banner
(表示させる情報)を motd
ファイル1に記載します。
しかし、SSH 接続のパスワードを入力しようとしているユーザー、つまりログイン前に任意のメッセージを表示させたい場合には sshd_config
ファイル内に表示させたいテキスト・ファイルのパスを記載します。
-
banner
情報(表示させたいテキスト)を記載したテキスト・ファイルを作成 -
/etc/ssh/sshd_config
内にBanner
に続けてパスを記載 -
sshd
サービスを再起動($ systemctl restart sshd
)
記載行ですが、sshd_config
に Banner
の行がコメントアウトされているのでコメントインするか、その直後に作成したテキストファイルへのパスを記載するのが安心だと思います。
#Banner /etc/issue.ssh
Banner /path/to/your/banner_msg.txt
また、banner
ファイルの設置先やファイル名ですが、一般的な習慣では /etc/issue.net
を使う/etc/issue
を使います。
🐒 最初、Banner に使うテキストのファイル名は BSD 系のマニュアルにある issue.net が一般的だと勘違いしていました。 @ttdoda さんより
RFC 4252でも書かれているように、一般的には /etc/issue だと思う
とコメントをいただき、調べてみました。issue.net
はtelnet
時代のファイル名の慣習で、確かにインターネットの制定団体 IETF の RFC 4252 では以下のように書かれていました。UNIX/Linux では /etc/issue が一般的な慣習と言えそうです。5.4. Banner Message
In some jurisdictions, sending a warning message before authentication may be relevant for getting legal protection.
Many UNIX machines, for example, normally display text from /etc/issue, use TCP wrappers, or similar software to display a banner before issuing a login prompt.
( 5.4 Banner Message | Authentication Requests | RFC 4252 "The Secure Shell (SSH) Authentication Protocol" @ IETF より)(筆者訳)
5.4. バナーメッセージ一部の国や地域(司法の管轄区域下)では、認証の前に警告メッセージを送信することは法的保護を得ることに関係している/適切とされる場合があります。
例えば、多くの UNIX マシンは、通常 /etc/issue からのテキストを表示したり、TCP ラッパーや同様のソフトウェアを使用してログイン・プロンプトを発行する前にバナーを表示します。
しかし、読み取り権限(chmod 0644
)が設定されていれば、/etc/issue.ssh
/etc/ssh/ssh_banner.txt
/path/to/my/welcome_ssh.txt
/etc/issue.net
など、自分で適当に作成したファイルやパスでも動くようです。
また、変更後は sshd
(ssh デーモン)を再起動しないといけません。OS を再起動するか、systemctl reload sshd && systemctl restart sshd
などを実行してください。
用途と所感
とある案件で SSH 接続時のログイン前のメッセージを設定するように言われました。
基本的に、この設定は「イタズラする人への警告文」や「利用規約」を表示するといった、技術的には何の対策にもならない設定です。個人的には、むしろ「押すなよ!押すなよ!」的な呼び水にも見えます。
「(こんな無駄なことをしても)」と思っていたのですが、英国・米国やメキシコなどでは「対サイバーテロ法」として制定されている2らしく、特に 行政機関や企業の業務内容によっては明記するように指導されるようです。
調べてみたところ、この SSH 接続前のメッセージ表示は「トラブル時の法務的な対策」、または「国によっては法令で利用する」事が多いようです。
どうやら、以下のようなケースに対して「法務的なアクションを取るための名目」としているようです。
- SSH のポート番号を「22」のウェルノウンポート番号から、あえて一般的でない番号に変えたのに、わざわざポートを探してアクセスしようとしている場合
- 関連業者などによるイレギュラーな SSH 経由の作業によって提供するサービスが損なわれた場合
しかし、このレベルだと民事裁判レベルです。「国によって法令で利用する」理由を調べると、「公的機関による調査をスムーズに進めるための事前対策」として明記が必要な国で利用されるようです。
この「公的機関によるうんぬん」は 1990 年からあり3、その延長として EU の GDPR(EU一般データ保護規則) そしてクッキー法があります。
2018 年ごろから、「OK」を押すまで「このサイトはクッキーを利用しています」的なメッセージがサイトの品質向上の名の下に表示されるサイトが増えたと思います。アレです。
これら法案は「個人情報の取り扱いを明確にさせるためのもの」とされています。意図しない個人情報の不正な売買の取り締まり目的です。
しかし、お気づきでしょうか。「OK」ボタンのみでキャンセル出来ないサイトが大半であることを。
これは、それ以上(個人情報保護以上)にテロ行為やロンダリングなど、「国の監視対象」となった場合に、追跡に必要な許可を国が得るために、法務的な手続きをスムーズに進めるためのものというのが本質だと思われます。
いつか、サイトを表示するたびにマニュアル本くらいの同意書が表示されるようになるんでしょうか、それとも EU めんどくせぇと、EU 圏からのアクセスはブロックするような、金盾ならぬ、なんちゃらファイアーウォールといった壁ができるんですかねぇ。某国は壁を作りたがってるし。
_(:⁍」 )_
参考文献
- Computer Misuse Act 1990 @ wikipedia
- Regulation of Investigatory Powers Act 2000 @ wikipedia
- Banner Files | TipsAndTricks | wiki @ CentOS
- Protect SSH Logins with SSH & MOTD Banner Messages @ Tecmint
- ssh waring banner @ Lazy Geek -:)
- SSH接続時にmotdでメッセージを表示・非表示 @ Qiita
- サーバーログイン時に便利なメッセージを表示する @ Qiita
-
motd
のQiita記事検索 @ Google ↩ -
Regulation of Investigatory Powers Act 2000 @ Wikipedia ↩
-
Computer Misuse Act 1990 @ Wikipedia ↩