2016/10/18 21:06:02

sshd_configの設定項目の理解を目指す

目次(クリックするとジャンプします)
  • 1:sshd_configの設定は重要
  • 2:sshd_configについて
  • 2.1:設定ファイルの場所
  • 2.2:sshd_configのコメント
  • 3:sshd_configの各設定の意味と設定値
  • 3.1:表の見方
  • 3.2:ポート・アドレス関係
  • 3.2.1:Port
  • 3.2.2:AddressFamily
  • 3.2.2.1:IPv4のみ
  • 3.2.2.2:IPv6のみ
  • 3.2.3:ListenAddress
  • 3.3:SSHプロトコル
  • 3.4:ホスト認証
  • 3.5:サーバ鍵
  • 3.6:セッション鍵再生成
  • 3.7:ログ出力
  • 3.7.1:SyslogFacility AUTH
  • 3.7.2:LogLevel
  • 3.8:認証可能時間・接続最大数・ルートログイン・厳密モード・認証トライ回数の設定
  • 3.8.1:LoginGraceTime
  • 3.8.2:PermitRootLogin
  • 3.8.3:StrictModes
  • 3.8.4:MaxAuthTries
  • 3.8.4.1:認証にトライできる回数を0にする
  • 3.8.5:MaxSessions
  • 3.8.5.1:同時接続数を1にする
  • 3.9:認証設定
  • 3.9.1:RSAAuthentication
  • 3.9.2:PubkeyAuthentication
  • 3.10:公開鍵登録ファイルのパスと名前
  • 3.10.1:AuthorizedKeysFile
  • 3.11:principalファイルの設定
  • 3.11.1:AuthorizedPrincipalsFile
  • 3.12:公開鍵探索
  • 3.12.1:AuthorizedKeysCommand
  • 3.12.2:AuthorizedKeysCommandUser
  • 3.13:RHosts等の設定
  • 3.13.1:RhostsRSAAuthentication
  • 3.13.2:HostbasedAuthentication
  • 3.13.3:IgnoreUserKnownHosts
  • 3.13.4:IgnoreRhosts
  • 3.14:パスワード認証に関しての設定
  • 3.14.1:PasswordAuthentication
  • 3.14.2:PermitEmptyPasswords
  • 3.15:チャレンジレスポンス認証の設定
  • 3.15.1:ChallengeResponseAuthentication
  • 3.16:ケロベロス認証に関する設定
  • 3.16.1:ケロベロス認証わかんねっす
  • 3.17:GSSAPIに関しての設定
  • 3.17.1:GSSAPI認証わかんねっす
  • 3.18:PAM
  • 3.18.1:UsePAM
  • 3.19:その他の設定
  • 3.20:その他の設定2
  • 4:後記
  • 4.1:あらためてまとめ
  • 4.2:感想

sshd_configの設定は重要

サーバを立てる機会も結構増えてきていますので、sshdの設定、しっかり理解していきたいでっす。

今回の目標は

  • 各パラメータの理解
  • 推奨設定の把握

を目指します。

sshd_configに記述されている項目1つずつを確認していき、主にセキュリティの観点からそれぞれに推奨されるであろう設定を把握します。骨折れた…。

今回の環境はCentOS7.4です。

sshd_configについて

設定ファイルの場所

設定ファイルは

/etc/ssh/sshd_config

に存在します。

クライアントであるssh_configと名前が似ているので注意。

sshd_configのコメント

sshd_configは複数の設定項目があります。また最初からコメントアウトされている項目も多いです。

例えば以下のようにコメントシンボル(#)の後ろに一個空白があるのはコメント文です。

# SELinux about this change.

#の後ろに空白が無いのはコメントアウトされた設定項目です。

#HostKey /etc/ssh/ssh_host_key

この記述に気をつけることで、コメントアウトされた設定項目なのかそうでないのかがすぐわかりますです。

sshd_configの各設定の意味と設定値

表の見方

以下、各項目とその設定値を見てきます。以下のような感じで表にまとめていきマス。

表の見出し 意味
設定項目 項目の名前
意味 設定の意味
初期値 デフォルトの値
状態 コメントアウトされているか(されている場合は×)
推奨値 頑張って考えましたが、あんまり信用しないでください…

ポート・アドレス関係

ポート・アドレスの設定項目です。

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
設定項目 意味 初期値 状態 推奨値
Port sshdが使うポート 22 × ウェルノウンポート以外の任意のポート(10022など)
AddressFamily 接続を許可するプロトコル any × 初期値
ListenAddress 特定のインターフェースからのみの接続を許可(IPv4) 0.0.0.0 × 状況において
ListenAddress 特定のインターフェースからのみの接続を許可(IPv6) :: × 状況において

Port

SSHdのリッスンポートに関しては様々な意見があるかと思いますが、デフォルトのPort22だと攻撃されやすい点があります。

デフォルト以外のポートにすると攻撃ログがめっきり減りますので精神衛生上良いかもしれま10。

AddressFamily

IPv4とIPv6での接続を許可するかの設定です。初期値では両方を許可します。どちらかだけ許可する場合があまり想像つかなかったので、初期値でいいのでは無いかと思いマス。

それぞれの設定方法です。

IPv4のみ
AddressFamily inet
IPv6のみ
AddressFamily inet6

ListenAddress

複数のNICがある場合などに接続受付するインターフェースを限定することができます。

有効なローカルアドレスで指定します。

サーバの構成によるものですが、入り口を絞る意味では設定を検討したほうが良いかもしれません。

ローカルアドレスIPv4 192.168.3.10に対しての通信のみ許可

ListenAddress 192.168.3.10

ローカルアドレスIPv6 2001:xxxx:bd05:01d2:xxxx:1fc0:0001:10eeに対しての通信のみ許可

ListenAddress 2001:xxxx:bd05:01d2:xxxx:1fc0:0001:10ee

SSHプロトコル

sshのプロトコルバージョンを設定します。

# The default requires explicit activation of protocol 1
#Protocol 2
設定項目 意味 初期値 状態 推奨値
Protocol 2 sshのプロトコルバージョン × アンコメントアウト

sshプロトコルバージョン1には複数の脆弱性があることがわかっているのでできるだけバージョン2を使うことが推奨されています。

明示的にプロトコルバージョン2を使うためアンコメントアウトします。

ホスト認証

ホスト認証における秘密鍵のパスを設定します。

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
設定項目 意味 初期値 状態 推奨値
HostKey ホスト認証の秘密鍵のパス /etc/ssh/ssh_host_key × 初期値
HostKey 同上 /etc/ssh/ssh_host_rsa_key 初期値
HostKey 同上 HostKey /etc/ssh/ssh_host_dsa_key × 初期値
HostKey 同上 /etc/ssh/ssh_host_ecdsa_key 初期値
HostKey 同上 /etc/ssh/ssh_host_ed25519_key 初期値

初期値ではssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_keyと名前のついたファイルを探すよう設定されています。

現在では使用を推奨されていない/etc/ssh/ssh_host_keyとHostKey /etc/ssh/ssh_host_dsa_keyはコメントアウトされています。

この設定項目も特に変更する必要は無いと思います。

サーバ鍵

サーバ鍵に関する項目です。

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024
設定項目 意味 初期値 状態 推奨値
KeyRegenerationInterval サーバ鍵の再生成時間 1h × 初期値
ServerKeyBits サーバ鍵のビット長 1024 × 初期値

この設定項目はサーバ鍵に関するものですが、使用を推奨されていないSSHのプロトコルバージョン1の設定なので特に変える必要はありませんと思いマス。

セッション鍵再生成

セッション鍵についての設定項目です。

# Ciphers and keying
#RekeyLimit default none
設定項目 意味 初期値 状態
RekeyLimit セッション鍵再生成のまでの上限値 default none × 初期値

SSHでは通信を暗号化するためにホストとクライアント間でセッション鍵を交換しています。

暗号化を堅牢に行うために都度鍵を変えているとのことです。

鍵を再生成するトリガは通信データ量だそうで、K(キロ)、M(メガ)、G(ギガ)の単位を使うことが可能です。

初期値のdefaultでは1Gから4Gの間の適切なタイミングで再生成を行うようです。

またOpenSSH6.3移行は時間をトリガにでき、ふたつ目のパラメータで指定します。初期値はnoneで時間による再生成は行わないようです。設定は秒単位で行えます。

この設定項目は通常デフォルトのままでも大丈夫かと思います。

ログ出力

ログのファシリティ・レベルの設定です。

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
設定項目 意味 初期値 状態 推奨値
SyslogFacility ログファシリティ AUTH × 初期値
SyslogFacility ログファシリティ AUTHPRIV 初期値
LogLevel ログレベル INFO × 初期値

SyslogFacility AUTH

現在ではログファシリティとしてAUTHPRIVが推奨されています。分類はAUTHと同じですが出力内容が異なるとのことです。

SSHは主にユーザ認証に関わるものなのでAUTUPRIVで問題無いかと思います。

LogLevel

LogLevelはログレベルの設定です。

この項目も通常では特に設定変更の必要は無いと思います。

ログのレベルとして以下が設定できます。

レベル 意味
emerg alertよりも重大で致命的なエラー
alert critよりも重大で深刻なエラー
crit 重大なエラー
error 一般的なエラー
warn 警告
notice 注意
info 情報
debug デバック情報

認証可能時間・接続最大数・ルートログイン・厳密モード・認証トライ回数の設定

認証についての項目です。

#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
設定項目 意味 初期値 状態 推奨値
LoginGraceTime 認証可能時間 2m × 初期値
PermitRootLogin Rootログインの許可 yes no
StrictModes SSH関連のファイル等のパーミッションのチェック yes × 初期値
MaxAuthTries 最大認証トライ回数 6 × なるべく少なく(なんなら0で)
MaxSessions 最大同時接続数 10 × なるべく少なく(なんなら1で)

LoginGraceTime

認証できる制限時間を設定します。初期値ではsshコマンドを叩いてから2分以内に認証できなければ弾かれることになります。

攻撃者に時間的な余裕を与えない為にもなるべく短く設定するのが良いかと思います。@MINOは20秒で設定しています。

認証できる制限時間を20秒以内に設定

LoginGraceTime 20

PermitRootLogin

Rootでのログインを許可するかの設定です。セキュリティ上Rootでのログインは避けるべきですので、迷わずnoに設定します。

Rootログインを禁止

PermitRootLogin no

StrictModes

ログインするユーザのSSH関連のファイル等のパーミッションをチェックする項目です。うっかり~/.sshのディレクトリ及び中のファイルのパーミッションが不用意にオープンになっていた場合に認証が失敗します。

パーミッションが変だとファイルを上書きされたりして危険なのでこの項目は明示的にアンコメントしましょう。

MaxAuthTries

認証にトライできる回数の設定です。

攻撃者に攻撃機会を与えないために、なるべく少なくするのが良いということです。@MINOは厳しく0にしています。パスワード間違えると即座に弾かれます。

認証にトライできる回数を0にする
MaxAuthTries 0

MaxSessions

同時に接続できる最大接続数です。サーバに同時に接続しうる人数以上にはしないほうが良いと思います。もし一人でサーバ管理を行っているなら思い切って1にしてしまうのありかと思います。

1にすると接続が排他的になるのでセキュリティ的な意味合いもあります。

ただ1にするとtmux等で複数のssh接続ができないので面倒な場合もあります。

sshにはセッションを1つに束ねた通信方法(1つの接続で複数セッションを管理する)もあるので、そういった方法を用いながらバランスを考えるべきかと思います。

同時接続数を1にする
MaxSessions 1

認証設定

認証許可をするための設定です。

#RSAAuthentication yes
#PubkeyAuthentication yes
設定項目 意味 初期値 状態 推奨値
RSAAuthentication RSA認証の許可 yes × アンコメントアウト
PubkeyAuthentication 公開鍵認証の許可 yes × アンコメントアウト

RSAAuthentication

RSA認証を許可するかの設定です。

アンコメントアウトして明示的にyesにします。

PubkeyAuthentication

公開鍵認証の許可をするかの設定です。セキュリティ上重要な項目です。

パスワード認証は攻撃に晒されやすく突破されやすいので認証には公開鍵認証が推奨されています。 yesのまま明示的にアンコメントしておきましょう。

公開鍵登録ファイルのパスと名前

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys
設定項目 意味 初期値 状態 推奨値
AuthorizedKeysFile 公開鍵登録ファイルのパスと名前 .ssh/authorized_keys 初期値

AuthorizedKeysFile

公開鍵登録ファイルのパスと名前の設定です。初期値のままで大丈夫だと思います。

principalファイルの設定

principalファイルの設定です。

#AuthorizedPrincipalsFile none
設定項目 意味 初期値 状態 推奨値
AuthorizedPrincipalsFile Principalファイルの設定 none × 初期値

AuthorizedPrincipalsFile

正直あまりよくわかっていませんが、Principalというのは認証に成功したユーザまたはグループに割り当てられる ID のことをいうようです。

AuthorizedKeysFileを使う設定にしていると使わないものだそうで、特に設定の変更は必要ないと思います。

公開鍵探索

公開鍵を探すプログラムの指定

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
設定項目 意味 初期値 状態 推奨値
AuthorizedKeysCommand 公開鍵を探すスクリプトの絶対パス none × 初期値
AuthorizedKeysCommandUser スクリプトを使うユーザ nobody × 初期値

AuthorizedKeysCommand

認証を行う際にユーザの公開鍵を探すプログラムを指定することができるとのことですが、@MINOははあんまりこの設定項目を理解できていません。

鍵の保存方法をより機能的に行う為の設定と理解しています。

AuthorizedKeysCommandUser

AuthorizedKeysCommandを有効にした場合は必ずこちらの設定が必要とのことです。

RHosts等の設定

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
設定項目 意味 初期値 状態 推奨値
RhostsRSAAuthentication RHostsでの認証を許可するか no × アンコメントアウト
HostbasedAuthentication ホストベース認証を使うか no × 初期値
IgnoreUserKnownHosts ~/.ssh/known_hosts ファイルの無視 no × 初期値
IgnoreRhosts ~/.rhosts ~/.shostsの無視 yes × アンコメントアウト

RhostsRSAAuthentication

RHosts認証はサーバ側に接続元のローカルホスト名とユーザー名を記述したホワイトリストファイル(.rhosts)を用意して認証に使う仕組みです。

静的ファイルを使った仕組みで、現在ではセキュリティ的によろしく無いとされていますので、有無を言わさずアンコメントして明示的にnoにしてやりましょう。

HostbasedAuthentication

ホストベース認証を使うための設定です。この認証はユーザ認証をすっ飛ばして、直接SSHdとクライアントが認証する仕組みです。OS同士の認証といえばいいんでしょうか?

ホストごとに認証できるので、多数のホストを管理している人には必要になってくるのかもしれません。

今のところ@MINOはこの恩恵に預かる機会はありません。

IgnoreUserKnownHosts

~/.ssh/known_hostsファイルを無視するかの設定です。

初期値のままでOKかと。

IgnoreRhosts

~/.rhosts ~/.shostsの無視するかの設定です。

~/.rhosts ~/.shostsはセキュリティ的に使うべきものではないそうなので、アンコメントして明示的にyesにします。

パスワード認証に関しての設定

パスワード認証に関しての設定です。

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes
設定項目 意味 初期値 状態 推奨値
PasswordAuthentication パスワード認証するか yes no
PermitEmptyPasswords パスワードなしでの認証を許可するか no × アンコメントアウト

PasswordAuthentication

パスワードでの認証あセキュアではないので、禁止します。アンコメントしてnoに書き換えましょう。

ただし気を付けて欲しいのが鍵を準備するまえにこの設定をnoにしてしまいSSH接続を切ると、パスワードで接続できなくなり、実機をさわりに行かなくてはならなくなります(レンタルサーバなどで管理画面のコンソールなど)

noにする前には鍵の準備をしてからにしましょう。

PasswordAuthentication no

PermitEmptyPasswords

それを許可するなんてとんでもない!

パスワードを設定していないユーザでのログインを可能にするかの設定なので、有無を言わさずアンコメントでnoです。

チャレンジレスポンス認証の設定

チャレンジレスポンス認証の設定です。

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
設定項目 意味 初期値 状態 推奨値
ChallengeResponseAuthentication チャレンジレスポンス認証の許可 no × アンコメントアウト

ChallengeResponseAuthentication

チャレンジレスポンス認証とは一種のnonceみたいなもののようです。

クライアントの認証要求に対してランダムな数値列(チャレンジ)を送り、クライアント側でパスワードとチャレンジを合成して、数値列(レスポンス)を作成しサーバに送信。

さらにサーバ側では、チャレンジとあらかじめ登録された、ユーザのパスワードから同じようにレスポンスを作成し、送信されてきたレスポンスをチェックする。レスポンスが一致すれば認証成功となります。

これを許可すると結果的にパスワード認証を許してしまうことになり、PasswordAuthentication noを設定していても意味がなくなってしまいます。

鍵認証のみにしたい場合はChallengeResponseAuthenticationnoにする必要があります。

ケロベロス認証に関する設定

若干中2病くさい名称のケロベロス認証に関しての設定です。

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes
設定項目 意味 初期値 状態 推奨値
KerberosAuthentication ケロベロス認証を許可するか no × 初期値
KerberosOrLocalPasswd ケロベロス認証を許可するか yes × 初期値
KerberosTicketCleanup 認証に使うチケットのクリーンアップ yes × 初期値
KerberosGetAFSToken no × 初期値
KerberosUseKuserok yes × 初期値

ケロベロス認証わかんねっす

これらの項目についてはケロベロス認証を用いない限り必要ない設定です。

@MINOの知識の範疇を越しますし、ぐぐってもあんまり情報がありません。

通常では初期値のままでOKかと思います。

GSSAPIに関しての設定

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no
設定項目 意味 初期値 状態 推奨値
GSSAPIAuthentication GSSAPI認証を許可するか yes 初期値
KerberosOrLocalPasswd yes 初期値
KerberosTicketCleanup yes × 初期値
KerberosGetAFSToken no × 初期値
KerberosUseKuserok no × 初期値

GSSAPI認証わかんねっす

こっちの認証方式もよくわからなかったです。デフォルトでyesになっているということは一般的に使われているのでしょうか?

しかしいろいろ調べてみると、GSSAPIAuthenticationをyesにしているとSSH接続にタイムラグが発生することがあるという報告が散見できました。

どうもGSSAPI認証を試行しようとして時間がかかる場合があるそうです。

おそらくGSSAPIAuthenticationをnoにしても問題が無いと思いますので、@MINOはnoに設定しています。

PAM

PAMの使用に関しての設定です。

UsePAM yes
設定項目 意味 初期値 状態 推奨値
UsePAM PAMを使うか yes 初期値

UsePAM

PAMとはPluggable Authentication Moduleの略です。 各種認証処理モジュール群とAPIを備えているユーザー認証システム。アプリケーションはPAMを使うことで独自に認証処理を持つ必要がなくなりあます。

コメントには”Red Hat Enterprise LinuxではUsePAMをサポートしておらず問題が起きるかもしれないよ”と書かれてます。なぜなのかは調べきれませんでした。どうもデリケートな設定のようですね。

すこし難しく@MINOはあまり理解できていませんが、初期値のままで良さそうです。

その他の設定

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
UsePrivilegeSeparation sandbox          # Default for new installations.
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
設定項目 意味 初期値 状態 推奨値
AllowAgentForwarding エージェントフォワーディングを許可 yes × 初期値
AllowTcpForwarding TCPフォワーディングを許可 yes × 初期値
GatewayPorts localhost 以外からの接続もポートフォワード可能にするか no × 初期値
X11Forwarding x11転送許可 yes 初期値
X11DisplayOffset xサーバのディスプレイ番号 10 × 初期値
X11UseLocalhost X11のユーザが同一ホスト上にいる必要があるか yes × 初期値
PermitTTY PermitTTY yes × 初期値
PrintMotd ログイン時に/etc/motd(message of the day)を表示 yes × 初期値
PrintLastLog 最終ログイン日時の表示 yes × 初期値
TCPKeepAlive セッション切れ防止のためのTCPパケット投げを許可 yes × 初期値
UseLogin ログインセッションでloginを使用するか no × 初期値
UsePrivilegeSeparation 子プロセスを作りroot権限を分離する sandbox × 初期値
PermitUserEnvironment ユーザの環境変数を許可する no × 初期値
Compression 圧縮転送 delayed × 初期値
ClientAliveInterval 接続生存確認 0 × 初期値
ClientAliveCountMax 接続タイムアウト時の再接続試行回数 3 × 初期値
ShowPatchLevel パッチ内容の通知 no × 初期値
UseDNS DNSを使うか yes × 初期値
PidFile プロセスIDファイル指定 /var/run/sshd.pid × 初期値
MaxStartups 最大同時起動プロセス数 10:30:100 × 初期値
PermitTunnel トンネリングを使うか no × 初期値
ChrootDirectory ディレクトリを制限(Chroot)するか none × 初期値
VersionAddendum プロトコルバナーに任意の文字列を追加するのを許可するか none × 初期値

これらの設定は基本的に初期値でOKです。@MINOも基本的にはここの設定を変えることはありません。

その他の設定2

その他の設定2です。

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server
設定項目 意味 初期値 状態 推奨値
Banner 任意のバナーテキストを表示するか none × 初期値
AcceptEnv どの環境変数を許可するか 複数 × 初期値
Subsystem サブシステム sftp × 初期値
Match User anoncvs ユーザ毎の権限範囲をつくる サンプル × 初期値

こちらも基本的には初期値でOKです。

後記

あらためてまとめ

ながながとまとめてきましたが、もう一度最低限設定すべき設定項目をまとめてみました。

接続トライ数・最大接続数・認証可能時間はそれぞれの環境によるかと思いますが、少なくとも

  • rootでログインさせない
  • パスワード認証をさせない
  • パスワード無し認証をさせない

に尽きると思います。


#最低限セキュリティを確保する設定

#rootログインを禁止
PermitRootLogin no

#RSA認証・鍵交換認証を行う
RSAAuthentication yes
PubkeyAuthentication yes

#Rhosts認証を禁止
RhostsRSAAuthentication no
Ig>noreRhosts yes

#パスワード認証の禁止・パスワード無し認証の禁止
PasswordAuthentication no
PermitEmptyPasswords no

#チャレンジレスポンス認証の禁止
ChallengeResponseAuthentication no

#接続トライ数・最大接続数・認証可能時間
MaxAuthTries 0
MaxSessions 1
LoginGraceTime 20

感想

一応ざらっとほとんどの項目をまとめてみましたが、改めて見ると知らない項目が結構あります。後半の認証方式(ケロベロスとか)は正直初めて聞きました。

この記事だと流石に内容が薄いので、もっと知識がついたら追記していく形で更新したいと思います。

もっと知識を付けないとダメだな〜と思いつつも、勉強にはなりました。