私の目標は、Linuxシステム(特にLubuntu 14.10 - はい、以前のバージョンはハードウェア互換性の理由で今は変更できません)で脆弱なSSHパスワードを無効にすることです。
まず、さまざまなパスワードを使用して、実際にマシンにSSHで接続できることを確認しました。たとえばssh USER@HOST -c aes256-cbc
、ssh USER@HOST -c aes256-ctr
パスワードを求めるメッセージを表示して入ってもらってください。
/etc/ssh/sshd_config ファイルの下部に以下を追加しました。
# Cryptographic Policy
# See https://www.ssh.com/academy/ssh/sshd_config#cryptographic-policy
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-256,hmac-sha2-512
これで、これらの変更が適用され、sshdサービスを再起動する必要があるというメッセージがどこにでも表示されます。私はこれがSSH接続またはそのようなものを受け取るサービスであるに違いないと思います。しかし、私は実行しているものが1つもないようです。サービスリストにありません。再起動しようとすると、次のメッセージが表示されます。
$ service sshd restart
sshd: unrecognized service
だから私はコンピュータを再起動しました。
私が追加した行は、このサービスが実行されていない場合でもアクションを実行します。構成ファイルを更新して再起動した後は、どのパスワードでもSSHにアクセスできないためです。期待される「一致するパスワードが見つかりません」(現在無効と見なされているパスワードの場合)というメッセージを表示するのではなく、接続を拒否します。
$ ssh USER@HOST -c aes256-cbc
ssh: connect to host <IP REDACTED> port 22: Connection refused
$ ssh USER@HOST -c aes256-ctr
ssh: connect to host <IP REDACTED> port 22: Connection refused
この行を削除して再起動すると、以前と同じようにSSHを介して再度ログインできます。
sshd_configファイルにこの行を追加すると、sshがクラッシュするようです。実際、sshdが実行されていないため、再起動できないようです。奇妙です。たぶん私がやっていることを誤解したかもしれません。それとも古いバージョンを使用していて問題が発生する可能性がありますか?
$ ssh -V
OpenSSH_6.6.1p1 Ubuntu-8, OpenSSL 1.0.1f 6 Jan 2014
あなたの洞察に感謝します。私が書いた内容が明確であることを願っており、必要ならより詳細な内容を喜んで提供します。
- - 更新 - -
ご回答とコメントありがとうございます。これから、私はこのコンピュータでsshdを再起動しないでください。再起動する必要があるサービスがsshであることがわかりました。サービスを再起動して実行して/etc/ssh/sshd_configに変更を適用できましたsudo service ssh restart
。これは再起動よりも便利で、すべて指摘したように危険も少なくなります。
SSHを再起動した後、以前の再起動後と同じ動作が発生します。すべての接続が拒否されました。今私の考えでは、Shadurが正しい、オタイルだけであるか、私が使用するように要求した1つ以上のパスワードまたはアルゴリズムがこのバージョンでは許可されていないようです。
---- アップデート 2 ---- HostKeyAlgorithms オプションを削除すると機能します。これはOpenSSH 6.6の設定オプションではないようです。私の考えでは今回提出してください追加できるところですね。
$ ssh USER@HOST -c aes256-cbc
Unable to negotiate with <IP REDACTED> port 22: no matching cipher found. Their offer: aes128-ctr,aes192-ctr,aes256-ctr
$ ssh USER@HOST -c aes256-ctr
USER@HOST's password:
Welcome to Ubuntu 14.10 (GNU/Linux 3.16.0-23-generic i686)
答え1
サービスが戻ってくるかどうかわからないときに再起動したのは深刻な間違いでしたが、状況をこのまま処理しましょう。
ハードウェアについて言及しましたが、すぐにコンソールにログインできるようにコンピュータに物理的にアクセスできることを意味しています。
ssh
これを行うと(または、コンピュータが別の場所でホストされている場合は、他の人が代わりに管理できるようにする)、サービス名が代わりに存在することがわかります。つまり、概要を提供する必要があることをsshd
意味します。service ssh status
このように:
shadur@periapsis:~$ service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-21 21:45:37 CEST; 12h ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 1357 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 1362 (sshd)
Tasks: 4 (limit: 19080)
Memory: 7.2M
CPU: 5.703s
CGroup: /system.slice/ssh.service
├─ 1362 "sshd: /usr/sbin/sshd -D [listener] 2 of 10-100 startups"
├─42848 "sshd: [accepted]"
├─42903 "sshd: root [priv]"
└─42904 "sshd: root [net]"
以下は、sshd
プロセスで最後に述べたいくつかの事項を詳細に説明するいくつかのログエントリです。
あるいは、journalctl -u ssh.service
ログ出力が何であるかを確認できます。
私の考えでは、どこかにタイプミスがあるか、以前のバージョンのsshが知らない暗号化方法を参照しているようです。
後で参照できるように構成のテスト実行テストを実行し、エラーをエクスポートするため、回復するかどうかわからない場合は、sshdプロセスを再起動するリスクはありませんsshd -t
。sshd -T