概要
前回の「Amazon Linux 2のsshサーバをよりセキュアに!」に続き、SSHサーバ全体の設定を残したいと思います
以下の項目値がsshd_configに設定されていない場合はデフォルト値で動作するので、項目値を追加することで動作を制限することができます。なお、OpenSSHのバージョンによっては設定できないものもありますので、マニュアルを確認してから設定してください
また、設定したことによって、古いSSHクライアントが接続できなくなったり、SSHサーバに接続できなくなることもありますので、事前に確認してから設定を行ってください!
プロトコルのバージョン(必須)
Protocol 1は中間者攻撃に問題があるため、Protocol 2を使用しましょう
OpenSSH 7.6以上はデフォルトで2になっています(Protocol 1はサポートされていない)
Protocol 2
パスワード認証を無効(必須)
どうしてもパスワード認証しなければならない場合は、安全なパスワードを設定してください
IPAのチョコっとプラスパスワードや日本語パスワードなどが参考になります
PasswordAuthentication no
チャレンジ/レスポンス認証を無効(必須)
パスワード認証を安全に行えるようにするための仕組みですが、パスワード認証を無効にするのが前提なので、こちらも無効とする
ChallengeResponseAuthentication no
空パスワードを無効(必須)
開発中はいいが、本番環境はNG
PermitEmptyPasswords no
rootユーザのログインを禁止(必須)
基本rootユーザで操作しないのが原則なので、rootユーザのログインから禁止
PermitRootLogin no
ログレベル(必須)
ログインに関するログ(成功、失敗)が出力されるようにする
問題が発生した時に状況をトレースしやすくするため
SyslogFacility AUTHPRIV
LogLevel VERBOSE
※あわせてrsyslogのログテンプレートを設定しておくと情報が過不足にならずに済みます
接続できるユーザを制限する(任意)
AllowUsers work_user
特定のユーザからの接続を拒否する(任意)
AWS EC2のようにデフォルトユーザ(ec2-user
)が知れ渡っているような場合は、
デフォルトユーザを削除したり、接続禁止設定しとくと安全でしょう
DenyUsers ec2-user
SSH接続ポートの変更(任意)
デフォルト22番ポート以外の任意のポートに割り当てることで攻撃を遅らせることができます
※割り当て予定のポートを事前にファイアウオールで許可するようにしてください!
Port 1022
SSHポートフォワードの禁止(任意)
SSH接続を経由して、他のサーバに転送通信(トンネリング)をできなくする
AllowTcpForwarding no
AllowStreamLocalForwarding no
GatewayPorts no
PermitTunnel no
参考