2024年7月1日、OpenSSHに深刻な脆弱性が確認されたので、至急対処しましょう。
影響のバージョン
OpenSSH 8.5p1 から 9.7p1
OpenSSHをアップデート
私の環境では、Debian/Redhatサーバを運用しているので、それぞれ最新のOpenSSHに更新(対処されたOpenSSHであることを確認)することで対応することができます。
緩和策
すぐにアップデートを行えない場合は、sshd_config内のLoginGraceTimeを修正しすることで臨時的に対応が可能です。
ただし、サービス拒否(DoS)攻撃の影響を受ける恐れがある点に留意が必要です
ansibleで常に更新を行なうと一気に複数の機器に対応が可能なので、、一時的なssh_configの修正を入れて対応すると楽です。
今回のみのansible
# /etc/sshd_configを修正する
- name: Fix sshd_config
hosts: all
gather_facts: false
become: true
tasks:
# `#LoginGraceTime`で始まる行を`LoginGraceTime 0`に変更する
- name: Fix sshd_config
ansible.builtin.lineinfile:
path: /etc/ssh/sshd_config
regexp: "^#?LoginGraceTime"
line: "LoginGraceTime 0"
# systemctl restart sshd.serviceを実行する
- name: Restart sshd
ansible.builtin.systemd:
state: restarted
daemon_reload: true
name: ssh
roleで管理している場合は、tasksを分けても良いでしょう。
LoginGrateTimeについて、GPTの回答
sshd_config
の LoginGraceTime
は、SSH サーバーが認証手続きを完了するまでにユーザーに与えられる時間の制限を指定する設定項目です。この時間が経過すると、認証が完了していないセッションは切断されます。
具体的な意味と用途は以下の通りです:
- 認証タイムアウト:
LoginGraceTime
は、ユーザーがログインしようとしてから認証が完了するまでの猶予時間を秒単位で設定します。この時間内に認証が成功しないと、SSH サーバーは接続を切断します。 - セキュリティ強化:この設定を短くすることで、不正なログイン試行を制限し、ブルートフォース攻撃のリスクを減少させることができます。
- デフォルト値:
LoginGraceTime
のデフォルト値は120秒です。これは、ユーザーが通常の認証プロセスを完了するのに十分な時間ですが、必要に応じて変更できます。 - 設定例:
LoginGraceTime 60
これは、ユーザーに60秒の認証時間を与える設定です。
- 無効化:この時間を無制限にする設定は推奨されませんが、
0
に設定すると無制限になります(ただし、これはセキュリティ上のリスクがあります)。
設定ファイルに LoginGraceTime
を指定することで、SSH サーバーの認証プロセスに対する時間制限を管理し、サーバーのセキュリティを向上させることができます。
LoginGraceTime 0
では、すべての MaxStartups 接続が使用されるため、sshd がサービス拒否の危険にさらされますが、リモート コード実行のリスクは回避されるとの事です。