web-dev-qa-db-ja.com

ESXファイルのssh構成が変更され、非永続的および永続的になります

Esxi専用のサーバーがあります。 esxiにユーザーを追加し、そのキーを/etc/keys/keys-user/authorized_keysに追加しました

次に、サーバーを再起動すると、そのキーフォルダーがなくなりました。次に、いくつかの永続ストレージにキーをコピーしてから/etc/rc.local.d/local.shにコマンドを入力する必要があることがわかりましたが、そのファイルでさえ再起動後に書き換えられることがわかりました。だから私の質問は

  1. 再起動しても持続するように、どのファイルに書き込む必要がありますか
  2. パスワード認証を無効にしたい。私はsshd_configでそれができることを知っています。しかし、私はそれを非永続的にしたいと思っています。つまり、手動で無効にしたいのですが、再起動した場合は、認証を有効にして元のファイルにリセットします

UPADTEホームIPのみがesxiにアクセスでき、他には何もアクセスできないファイアウォールルールを設定しました。これで、接続できない場合に備えて、SSHで接続してファイアウォールをしばらく無効にし、新しいIPのファイアウォールルールを変更してからファイアウォールを再度有効にすることができます。だから私はsshアクセスが欲しかったのです。数日前、ブルートフォース攻撃のためにrootアカウントがロックされました。したがって、問題を修正するためにsshで接続できる追加のユーザーが必要な場合に備えて。 sskキーベースの認証を有効にしましたが、公開されています。したがって、sshをホームIPのみに制限したいので、緊急時にIPが変更された場合は、esxiを再起動して、パスワードベースの認証が機能するようにしてからファイアウォールを修正できます。私はホームユーザーなので、ESXIでハードウェアファイアウォールを購入する余裕はありません。

私は内部マシン用のpfsenseを持っています。公開サイトはありませんが、ラボのものだけです。 pfsenseの後ろにesxiを置きたくないのは、pfsenseに問題があるとロックアウトされ、すべてを再インストールする以外に方法がないからです。

2
user3214546

1.SSHキーの永続化

私の経験では、/etc/rc.local.d/local.shは実際には再起動しても持続します。ファイルは1時間に1回だけ、またはクリーンシャットダウン中にのみ保存されることに注意してください( ESXiがブートディスクに書き込む頻度は? を参照)。

したがって、変更が保存されない理由の1つは、rebootではなく、ハードリセットまたは電源の入れ直しを行った場合です。

/sbin/auto-backup.shを発行すると、システムが変更を保存するかどうかを確認できます。これにより、ファイルがすぐにブートバンクに保存されます( ESXi 4.x/5.xで構成の変更を永続化する方法 を参照してください。 v6.xに適用されます)。

2.パスワード認証を無効にします

私のESXiもパブリックネットワーク上にあります。 /etc/ssh/sshd_configで変更しました

PermitRootLogin yes

PermitRootLogin prohibit-password
PubkeyAuthentication yes

これにより、rootユーザーが無効なパスワードの試行にロックされる可能性がすでに減少します(そもそもrootユーザーにはパスワードが許可されていないため)。さらに、キーベースの認証は、パスワード認証よりもはるかに節約できると考えられています(キーを安全に保管している場合)。

パスワード認証を完全に無効にする場合は、次の設定も必要になります

UsePAM no
PasswordAuthentication no

ただし、これらの変更は永続的/etc/ssh/sshd_config/sbin/auto-backup.shで保存されるため)および即時(no sshdは実際にはinetdによって起動されるため、sshdの場合は再起動します。したがって、ここでは非永続的な変更を行う方法はありません。

3.ファイアウォール

それでもファイアウォールルールを変更したい場合は、内容を含むファイルssha_from_anywhere.xmlを作成できます。

<ConfigRoot>
  <service id='1000'>
    <id>sshServer</id>
    <rule id='0000'>
      <direction>inbound</direction>
      <protocol>tcp</protocol>
      <porttype>dst</porttype>
      <port>22</port>
    </rule>
    <enabled>true</enabled>
    <required>true</required>
  </service>
</ConfigRoot>

永続ストレージに保存し、起動時に/etc/vmware/firewall/にコピーします(これも/etc/rc.local.d/local.shから)。次に、vSphereクライアントで既存のファイアウォールルールを変更して、ローカルアドレスのみを許可します。

システムが再起動すると、sshポートが世界中に公開されます。次に、ログインして/etc/vmware/firewall/ssha_from_anywhere.xmlを削除し、ファイアウォールをリロードする必要があります。

esxcli network firewall refresh

ただし、beforeを実行するには、接続を許可するIPアドレスを調整する必要があります。 ssh。これは、vSphereクライアントでも、または直接/etc/vmware/firewall/service.xmlで実行することをお勧めします。前者の場合(vSphereクライアントインターフェイスを無効にしなかった場合)、vSphereクライアントでログインしてIPアドレスを変更するだけなので、手順全体が無意味に見えます。

VSphereクライアントで行われた変更は、/etc/vmware/esx.confファイルに次のように反映されます。

/firewall/services/sshServer/allowedip[0000]/ipstr = "192.168.1.1"
/firewall/services/sshServer/allowedip[0001]/ipstr = "192.168.2.0/24"

このファイルは再起動しても保持されることはわかっていますが、変更がどのようにアクティブ化されるかはわかりません。たぶん、ファイルを編集してからreboot?そして、2回目の再起動後、/etc/vmware/firewall/ssha_from_anywhere.xmlを削除し、ファイアウォールをリロードします。

ソース


幸運を!
マーティン

3
Martin Rüegg