
このPuppetモジュールは、安全なssh-clientおよびssh-server設定を提供します。
このPuppetモジュールは、安全なssh-clientおよびssh-server設定を提供します。
saz/ssh (>= 2.3.6)、puppetlabs/stdlib (>= 4.2.0)ipv6_enabled = false - IPv6が必要な場合はtruecbc_required = false - 暗号化方式にCBCが必要な場合はtrue。これは通常、設定済みの安全な暗号化方式が有効になっていない古いM2MメカニズムがSSHと通信する必要がある場合にのみ必要です。CBCは脆弱な代替手段です。これより弱いものは避けるべきであり、利用できません。weak_hmac = false - より弱いHMACメカニズムが必要な場合はtrue。これは通常、設定済みの安全なHMACが有効になっていない古いM2MメカニズムがSSHと通信する必要がある場合にのみ必要です。weak_kex = false - より弱い鍵交換(KEX)メカニズムが必要な場合はtrue。これは通常、設定済みの安全なKEXが有効になっていない古いM2MメカニズムがSSHと通信する必要がある場合にのみ必要です。allow_root_with_key = false - falseはrootログインを完全に無効にします。鍵ベースのメカニズムによるrootログインを許可するにはtrueに設定します。ports = [ 22 ] - ssh-serverが待ち受け、ssh-clientが接続するポートlisten_to = [ "0.0.0.0" ] - ssh-serverが待ち受ける1つ以上のIPアドレス。デフォルトは空ですが、セキュリティ上の理由から設定する必要があります!remote_hosts - ssh-clientが接続できる1つ以上のホスト。デフォルトは空ですが、セキュリティ上の理由から設定する必要があります!allow_tcp_forwarding = false - TCP転送を許可するにはtrueに設定allow_agent_forwarding = false - エージェント転送を許可するにはtrueに設定use_pam = false - pam認証を無効にするにはfalseclient_options = {} - ハッシュ内の値を設定してモジュールの設定を上書きしますserver_options = {} - ハッシュ内の値を設定してモジュールの設定を上書きしますこのモジュールを追加した後、クラスを使用できます:
class { 'ssh_hardening': }
これによりssh-serverとssh-clientがインストールされます。代わりに、以下のいずれかのみを選択することもできます:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
コア属性を設定する必要があります:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
listen_toのデフォルト値は0.0.0.0です。この値を変更することを強くお勧めします。
デフォルトオプションは、client_optionsおよびserver_optionsパラメータで渡されたオプションとマージされます。
オプションがデフォルトとオプションパラメータの両方で設定されている場合、後者が優先されます。
次の例では、デフォルトで無効になっているX11Forwardingを有効にします:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
ローカルテストでは、vagrantとVirtualboxまたはVMWareを使用してローカルでテストを実行できます。システムにVirtualboxとVagrantをインストールする必要があります。システムに適したvagrantパッケージについてはVagrant Downloadsを参照してください。すべてのテストでtest-kitchenを使用します。test-kitchenに慣れていない場合は、their guideを参照してください。
次にtest-kitchenをインストールします:
# 依存関係のインストール
gem install bundler
bundle install
# テストの取得
bundle exec thor kitchen:fetch-remote-tests
# lintチェックの実行
bundle exec rake lint
# specチェックの実行
bundle exec rake spec
# 1台のマシンでの高速テスト
bundle exec kitchen test default-ubuntu-1204
# Debianベースのマシンでのテスト
bundle exec kitchen test
# 開発用
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
詳細についてはtest-kitchenを参照してください
アカウントにログインできません。クライアント鍵を登録しましたが、それでもログインできません。
一般的な問題(ファイアウォール、ネットワーク、鍵の欠落、誤った鍵、アカウントの無効化など)をすべて確認した場合、アカウントがロックされている可能性があります。最も簡単な確認方法は、ユーザーのパスワードハッシュを確認することです:
sudo grep myuser /etc/shadow
ハッシュに!が含まれている場合、アカウントはロックされています:
myuser:!:16280:7:60:7:::
これを解決する適切な方法は、アカウントのロックを解除することです(passwd -u myuser)。ユーザーにパスワードがない場合は、次の方法でロックを解除できます:
usermod -p "*" myuser
あるいは、PAMを使用する予定がある場合は、use_pam = trueで有効にします。PAMを使用すると、ロックされたユーザーでも鍵でログインできるようになります。
アプリケーションがSSH経由で接続できなくなったのはなぜですか?
まず常にログファイルを確認し、可能であれば接続時に完了するクライアントとサーバー間のネゴシエーションを確認してください。
pythonやrubyベースのアプリケーションで、古い暗号化セットを使用しているために発生する問題をいくつか確認しています。これは、暗号化方式、メッセージ認証コード(MAC)、鍵交換(KEX)アルゴリズムのリストをより安全な選択肢に絞り込んだこのハードニングモジュールと衝突します。
これで不十分な場合は、暗号化方式にcbc_required、MACにweak_hmac、KEXにweak_kexを自由に有効にしてください。
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.