sshのセキュリティを高める方法

提供: セキュリティ
2014年6月2日 (月) 00:20時点におけるDaemon (トーク | 投稿記録)による版

移動: 案内検索
スポンサーリンク

sshサーバ(sshd)のセキュリティを高めるためには、sshdの設定(sshd_config)を適切に行うこと、iptablesipfwなどのファイアーウォールなどで制限をすることなどが挙げられます。

概要

sshdのデフォルトの設定は、あまり堅牢とは言えるものではありません。

  • パスワード認証を許可しています。
  • すべてのユーザがsshアクセス可能です。

我々は、どのような設定をするべきなのでしょうか?

  • sshアクセスの必要なユーザだけに許可するべきです。
  • パスワード認証を捨て、公開鍵認証のみを許可しましょう。
  • 古いプロトコル(Protocol 1)は、もう必要ありません。
    • 近年のデフォルトの設定は、2 のみのはずです。
  • sftp だけで良いユーザは、sftp だけ許可します。
    • chroot して、ユーザを閉じ込めます。

また、sshdの設定ではありませんが、以下の努力が可能です。

sshd (sshd_config) の設定

/etc/ssh/sshd_config

# sshプロトコルの選択
# Protocol 1 は、許可しません。
Protocol 2
 
# デフォルトは6
MaxAuthTries 3
 
# ログインに成功するまでの制限時間です。
# 0は、無制限です。
LoginGraceTime 60
 
# ログイン前に、ユーザのホームディレクトリのオーナとパーミッションをチェックします。
StrictModes yes
 
# root のログインは、認めません。
PermitRootLogin no
 
# Protocol 2 only
# 公開鍵認証を許します
PubkeyAuthentication yes
 
# サーバ鍵のビット長
ServerKeyBits 2048
 
# 特権を分離します
UsePrivilegeSeparation yes
 
# Protocol 1 only
RSAAuthentication no
 
# パスワード認証は許しません
PasswordAuthentication no
# デフォルトは、no
# パスワード認証をそもそも許してないので不要
PermitEmptyPasswords no
# チャレンジレスポンス認証は許可しません
ChallengeResponseAuthentication no
 
# PAM モジュールは使用しません
UsePAM no
 
# sshを許可するユーザ、もしくは、ユーザグループを指定します。
AllowUsers cd-user
# AllowGroups devops

sshd (sshd_config) の設定の反映

$ sudo service sshd reload

許可すること

  • 公開鍵認証は、許可します。
  • Protocol 2 のみ許可します。
  • sshを許可すべきユーザ、もしくは、グループのみを許可します。

禁止すること

  • PermitRootLogin rootのログインは許可しません。
  • Protocol 1 は、脆弱性があるので使用しません。
  • RSAAuthentication は Protocol 1 のみなので許す必要がありません。
  • PasswordAuthentication パスワード認証は、許可しません。
  • PermitEmptyPasswords 空パスワードは許可しません。
    • そもそもパスワード認証を許可しません。
  • ChallengeResponseAuthentication チャレンジレスポンス認証は、許可しません。
  • UsePAM Pluggable Authentication Modules(PAM)モジュールは使用しません。

sftpでchrootの制限を行う

iptablesによる制限

hosts.allow による制限

  • TBD

関連項目




スポンサーリンク