serverの設定についてまとめます。serverは/etc/ssh/sshd_configで設定します。読者の方が所属する組織の要件に応じて、厳しいすぎず緩すぎないセキュリティ設定をして頂ければと思います。設定一覧sshdはssh接続を受け付けるプログラムで、/etc/ssh/sshd_configに設定を記述します。SSH接続を受ける側のサーバの/etc/ssh/sshd_configを編集する事で、セキュリティ要件を制御する事ができます。/etc/ssh/sshd_configの中で特に重要な設定を6つ挙げました。他にも着目すべき設定は多数ありますが、私が一番最初にチェックする項目は以下6つです。6.5のデフォルト設定を記載しましたが、デフォルト設定はディストリビューションやバージョンによって異なる事に注意ください。クラウド環境では、クラウドが意図した設定が自動的に投入される事にも注意が必要です。sshをListenするポート版語を指定します。sshのバージョンを指定します。パスワード認証を許容するかどうかです。公開鍵認証を許可するかどうかです。ホストベース認証を許可するかどうかです。ルートログインを許可するかどうかです。セキュリティ設定sshdで最も気を付けるのはセキュリティ関連の設定です。万が一侵入されてしまえば、被害甚大です。守るべき資産の大きさに応じて、セキュリティ設定を行う必要があります。セキュリティ対策と対応可能な脅威を表にまとめると以下の通りです。×Firewallなどで守られていない環境ならば、最低限、ポート番号の変更くらいは行いましょう。「ポート番号変更」はスキャンポートされたら効果のない対策ですが、泥棒が狙いやすい家があるのと同様に、狙われづらいサーバにするだけでも充分効果があります。22でsshをListenする状態にして放置したら、わずか24時間で侵入されました。)最も手堅い対策は「パスワード認証の禁止」です。この対策も完全ではない事を頭の片隅に置いておきましょう。近年、「うっかり秘密鍵をGitHubに公開してしまった」のような流出事故が多発しております。認証種別の許可設定sshdは様々な認証方式を備えています。HostbasedAuthenticationです。PasswordAuthenticationを禁止する事によって、辞書攻撃による侵入を防ぐことができます。レガシー対応/etc/ssh/sshd_configの”Protocol”の指定は、許可するsshのバージョンです。2のみの対応で良いでしょう。1を許可している場合は、何らかのレガシーな仕組みが残っている可能性を疑った方が良いでしょう。インフラエンジニア固有の勘である「嫌な予感」警報がガンガン鳴っています。client(SSH接続を行う側)の設定ファイルです。/etc/ssh/ssh_configはシステム全体の設定を定義するファイルで、~/.ssh/configはユーザ毎の設定を定義するファイルです。特殊な要件がない限りは、デフォルト設定の/etc/ssh/ssh_configでも充分運用可能なので、ssh_configの説明を省略します。ログインある程度規模の大きなインフラになると、サーバをまたぐ処理を手作業で行うのが不可能になります。サーバをまたぐ処理を自動的に行なうツールには、ジョブネット、オーケストレーションツール、デプロイツール等があります。これらツールは、パスワードなしでログインできる事を前提しているものもあります。私が実運用で経験したパスワードなしログインの方法は以下3通りです。この章では、パスワードなしでログインする方法についてまとめます。公開鍵の仕組みを使った認証方式です。非常に用語の使い方が紛らわしいのですが、sshdの文脈では、PubkeyAuthentication(公開鍵認証)とはユーザ単位の鍵認証と指し、HostbasedAuthentication(ホストベース認証)とはOS単位の鍵認証を指す言葉と思って下さい。空パスワードセキュリティ上の危険はありますが、空パスワードのユーザを作成する事によって、パスワードなしのログインを実現する事ができます。以下の要領で、空パスワードのユーザを作成します。見慣れないですが、passwdコマンドに-dオプションを渡す事によって、パスワードを削除する事ができます。PasswordAuthenticationを以下のように編集します。6.X以降限定の話ですが、sshd_configのMatchブロックを使用すると特定のホストに対しての設定を施す事ができます。sshd_configを以下のように編集し、特定のセグメントのみパスワードなしログインを許容する事もできます。yes最後に、sshdを再起動し設定を反映させます。(公開鍵認証)とHostbasedAuthentication(ホストベース認証)があります。どちらかと言えば、PubkeyAuthenticationの方が多数派であり、ブログなどの情報源も多数あります。GitHubやAWSもPubkeyAuthenticationを前提とした構成になっております。特別な理由がない限り、PubkeyAuthenticationを使用する事をお勧めします。以下、PubkeyAuthenticationの使い方について説明します。クライアント側の設定sshクライアントとなるサーバで秘密鍵と公開鍵を生成します。ssh-keygenコマンドで鍵を生成する事ができます。passphraseは空文字を指定して下さい。passphraseに空文字以外を指定すると、sshログインの際にpassphraseを求められてしまいます。~]$秘密鍵と公開鍵が生成された事を確認します。id_rsaが秘密鍵で、id_rsa.pubが公開鍵です。serverに転送します。サーバ側の設定sshサーバは~/.ssh/authorized_keysというファイルで公開鍵を管理します。sshサーバの~/.ssh/authorized_keysに公開鍵を加筆します。この設定はpermissionに注意して下さい。.sshは700、authorized_keysは600にしないとノーパスワードログインが機能しません。ログインが可能である事を確認します。~]$ホストベース認証ホストベース認証とはOS単位の鍵認証です。PaaSの考え方とは合わない思想なので、よっぽど特別な要件がない限りはホストベース認証を使用しない方が良いでしょう。ユーザ単位の認証であるPubkeyAuthenticationをお勧めします。以下、私がホストベース認証を運用していた頃の残念な記憶を元に、ホストベース認証の設定方法を説明します。HostbasedAuthenticationを有効にします。”/etc/ssh/ssh_config”に以下の設定を加筆して下さい。”HostbasedAuthentication”はホストベース認証を有効化する指定で、”EnableSSHKeysign”は後述のssh-keyscanによる公開鍵の読み取りを許可する設定です。serverへ転送し、”/etc/ssh/ssh_known_hosts”へ登録します。このような操作を行う時は、ssh-keyscanという公開鍵を収集するユーティリティを使うと便利です。sshサーバで以下のようなコマンドを実行する事で、sshクライアントの公開鍵を”/etc/ssh/ssh_known_hosts”に登録する事ができます。~]#“/etc/ssh/shosts.equiv”にホストベース認証を許可するホストとユーザを定義します。ユーザ名を省略すると全ユーザに対してアクセスを許可する事ができます。~]#ホストベース認証はデフォルトでは許可されていません。/etc/ssh/sshd_configの”HostbasedAuthentication”を以下のように編集します。no最後に、sshdを再起動し設定を反映させます。restartシェアするツイートフォローするsyauichi関連記事sudoersの設定方法sudoersとはsudoに関する設定の定義ファイルです。業務でよく使用するyumコマンドの使い方についてまとめます。Daemon)はリアルタイムのファイル同期を提供する仕組みのひとつです。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。ネットワークチェンジニアとして。