私のsshdを安全に設定する(自動化を介して)

私のsshdを安全に設定する(自動化を介して)

複数のシステムを手動で構成しました。もう少し体系的に仕事を始めたいです。

パスワード推測攻撃を除外するために、Debianのデフォルト設定よりも厳密にopenssh-serverを設定しました。

だから私はいくつかのシステム構成シーケンスを見ました。 SSHが問題であることがわかりました。 Debian に openssh-server をインストールすると、Fedora とは異なり、デフォルト設定ですぐに実行が開始されます。

問題:この競合状態を回避するには、SSHが構成される順序を安全に構成することをお勧めします。


たとえば、デスクトップシステムでSSHを使用しようとしていますが、他のユーザーにSSHアクセスは必要ありません。彼らはリモートアクセスシステムを使用しません。 「セキュリティパスワード」を実施するのは時間の無駄です。リモートアクセスを制限する方が/etc/sshd_config簡単で、より良いセキュリティを提供します。

時にはテスト目的でローカルアカウントを作成することもあります。 (恥ずかしいことに、私のアカウントの1つがSSHワームの犠牲になりました。)

答え1

注文する

  1. /etc/ssh/sshd_not_to_be_runopenssh-serverがインストールされていない場合は、空のファイルが生成されます。 (この条件を作成するためのいくつかのオプションここ)
  2. openssh - サーバーのインストール
  3. /etc/ssh/sshd_config必要に応じて編集
  4. 削除する/etc/ssh/sshd_not_to_be_run

  5. 走る

    systemctl enable ssh
    systemctl systemctl restart ssh
    

    または完全にテストされた同等の製品です。 restartサービスがまだ開始されていない場合は正常に動作しているようです(比較condrestart try-restart)。systemctl enable --nowサービスが有効になっているが実行されていない場合、サービスは開始されないことがわかりました。

未使用オプション

これは私が見つけて使用しないことを決めた別のオプションです。

  1. この問題は以下で議論された。Debian ユーザー。残念ながら、競争条件はまだ解決されていません。 Debian 管理者は、パッケージからコールをpolicy-rc.dブロックするように設定することをお勧めします。かさばるものもあります。invoke-rc.d ssh startpostinstall詳細詳細は厄介ですが達成可能です。残念ながらそうではありません。競合状態を防ぎません。パッケージが実行するコマンドとは何の関係もありませんpolicy-rc.dupdate-rc.d ssh enableこれは、間違った時間に停電やシステムのクラッシュが発生する可能性があります。

  2. openssh-server梱包に記載されている推奨事項を必ず参照してくださいufw:) Ubuntuはufw非常に簡単なファイアウォールで作られています。 「ユーザーストーリー」とは少し混乱しています。最初はWindowsと同様に、信頼できるネットワークの概念をサポートするためにUbuntu Oneiricで書かれています。

    これをインストールしufwてそれを設定するまで、SSHをブロックするように乱用する可能性があります。もちろん、これはufw現在ネットワークを信頼できると見なす構成がないと仮定します。へへ。

    このオプションが好きではないには2つの異なる理由があります。私はシーケンスを別のansible文字で書いてきました。まず、このオプションは、SSHの役割がファイアウォール構成を妨げることを意味します。ホストにもファイアウォールは必要ありません。 (またはこれらのシーケンスを徐々に作成する場合は、簡単な自動化のためにufwなどのコマンドでさえもない既存のファイアウォールがあるかもしれません。)

    2番目の欠点は、Ansibleの役割が冪等性を持つように設計されていることです。 Ansible ロールを更新し、単一のコマンドを実行してそれを適用できます。実際にシステムを変更するタスクと一致するタスクを強調表示します。構成が変更されているか(すでに一致していない)かによってサービスを再起動できます。ファイアウォール構成を無条件にオン/オフするモデルには適合しません。 openssh-serverがまだインストールされていない場合は、これを条件付きで設定できますが、これはドキュメントの例で見られる一般的なイディオムの1つではありません。適用するにはansible 2.2が必要check_mode: yesです。service name=sshdpkg関連スクリプト

  3. 編集:あなたはできますシンボリックリンクの生成マスクをssh.serviceインストールする前にパッケージをインストールしてください。 systemdを使用すると仮定しても大丈夫です。しかし、それを自動化することは少し面倒かもしれません。パッケージのインストール時にエラーが返され、インストールされたパッケージはそのまま残りますが、「構成されていません」状態のようです。構成を変更した後、パッケージを「再構成」することは難しくありません。面倒なことに、パッケージのインストール中にエラーを無視する必要があります。他のエラーが発生した場合、続行するリスクがあります。これは特に適切な自動化の問題ですが、手動チェックリストに従う場合にも迷惑なことがあります。

  4. sshd_config事前に作ってみてください。これをテストしましたが、適用されませんでした。問題:梱包がsshd_configありません。 (Fedoraでもこれを試しました。警告メッセージが表示され、sshd_config.rpmnewが生成されます)

  5. @Ipor-Sircerにリンクされている答えの1つは、Debianを使用できると言いますdpkg-divert。オプション1を組み合わせて転送できます。今、私たちは2つの一時スクリプトを書いています...debootstrapstart-stop-daemonupdate-rc.d

  6. 邪魔にならないので、転送にこれを試すことができます/etc/sshd_config。これにより、圧縮された構成ファイルをスキャン用に保存でき、明示的に上書きするのを防ぐことでより強力になります。残念ながら、ファイルはインストール後にスクリプトによって動的に生成されるため、dpkg-divert影響を与えないことがわかりました。sshd_configこれは、オプション5に警告がないことを説明できます。

最後の部分は、パッケージを指している誰かが私に説明しました。ソースコード。それからsshd_not_to_be_runpostrmスクリプトで参照を見つけました。

関連情報