LoginSignup
10
5

SSH 接続時(ログイン前)のメッセージ表示を任意に変更する(sshd)

Last updated at Posted at 2017-06-23

SSH 接続の利用規約表示

SSH のパスワード入力時(ログイン)に、任意のメッセージを表示させたい。

「ssh接続 ログイン前 任意 メッセージ 表示」で Qiita 記事をググってもヒットしなかったり、ログイン成功後に表示される motd などの設定ばかりだったので自分のググラビリティとして。

TL; DR (今北産業)

  1. /etc/ssh/sshd_configBanner に表示したいテキストのファイル・パスを記載します。
  2. この設定は、基本的に法務的な目的で利用されます。(詳しくは TS; DR 参照)
  3. 動作確認済み環境:
  • 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接続例
$ 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 ファイル内に表示させたいテキスト・ファイルのパスを記載します。

  1. banner 情報(表示させたいテキスト)を記載したテキスト・ファイルを作成
  2. /etc/ssh/sshd_config 内に Banner に続けてパスを記載
  3. sshd サービスを再起動( $ systemctl restart sshd

記載行ですが、sshd_configBanner の行がコメントアウトされているのでコメントインするか、その直後に作成したテキストファイルへのパスを記載するのが安心だと思います。

/etc/ssh/sshd_config
#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.nettelnet 時代のファイル名の慣習で、確かにインターネットの制定団体 IETFRFC 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 接続前のメッセージ表示は「トラブル時の法務的な対策」、または「国によっては法令で利用する」事が多いようです。

どうやら、以下のようなケースに対して「法務的なアクションを取るための名目」としているようです。

  1. SSH のポート番号を「22」のウェルノウンポート番号から、あえて一般的でない番号に変えたのに、わざわざポートを探してアクセスしようとしている場合
  2. 関連業者などによるイレギュラーな SSH 経由の作業によって提供するサービスが損なわれた場合

しかし、このレベルだと民事裁判レベルです。「国によって法令で利用する」理由を調べると、「公的機関による調査をスムーズに進めるための事前対策」として明記が必要な国で利用されるようです。

この「公的機関によるうんぬん」は 1990 年からあり3、その延長として EU の GDPR(EU一般データ保護規則) そしてクッキー法があります。

2018 年ごろから、「OK」を押すまで「このサイトはクッキーを利用しています」的なメッセージがサイトの品質向上の名の下に表示されるサイトが増えたと思います。アレです。

これら法案は「個人情報の取り扱いを明確にさせるためのもの」とされています。意図しない個人情報の不正な売買の取り締まり目的です。

しかし、お気づきでしょうか。「OK」ボタンのみでキャンセル出来ないサイトが大半であることを。

これは、それ以上(個人情報保護以上)にテロ行為やロンダリングなど、「国の監視対象」となった場合に、追跡に必要な許可を国が得るために、法務的な手続きをスムーズに進めるためのものというのが本質だと思われます。

いつか、サイトを表示するたびにマニュアル本くらいの同意書が表示されるようになるんでしょうか、それとも EU めんどくせぇと、EU 圏からのアクセスはブロックするような、金盾ならぬ、なんちゃらファイアーウォールといった壁ができるんですかねぇ。某国は壁を作りたがってるし。

_(:⁍」 )_

参考文献

  1. motd のQiita記事検索 @ Google

  2. Regulation of Investigatory Powers Act 2000 @ Wikipedia

  3. Computer Misuse Act 1990 @ Wikipedia

10
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5