「sshのセキュリティを高める方法」の版間の差分
提供: セキュリティ
行1: | 行1: | ||
− | [[ssh]]サーバ([[sshd]])のセキュリティを高めるためには、[[sshd]]の設定([[sshd_config]])を適切に行うこと、[[iptables]]や[[ipfw]]などの[[ | + | [[ssh]]サーバ([[sshd]])のセキュリティを高めるためには、[[sshd]]の設定([[sshd_config]])を適切に行うこと、[[iptables]]や[[ipfw]]などの[[ファイアーウォール]]などで制限をすることなどが挙げられます。 |
__TOC__ | __TOC__ | ||
行7: | 行7: | ||
* パスワード認証を許可しています。 | * パスワード認証を許可しています。 | ||
* すべてのユーザがsshアクセス可能です。 | * すべてのユーザがsshアクセス可能です。 | ||
+ | |||
+ | 我々は、どのような設定をするべきなのでしょうか? | ||
+ | * sshアクセスの必要なユーザだけに許可するべきです。 | ||
+ | * パスワード認証を捨て、[[公開鍵認証]]のみを許可しましょう。 | ||
+ | * 古いプロトコル(Protocol 1)は、もう必要ありません。 | ||
+ | ** 近年のデフォルトの設定は、2 のみのはずです。 | ||
+ | * sftp だけで良いユーザは、sftp だけ許可します。 | ||
+ | ** [[chroot]] して、ユーザを閉じ込めます。 | ||
+ | |||
+ | また、[[sshd]]の設定ではありませんが、以下の努力が可能です。 | ||
+ | * [[iptables]]等の[[ファイアーウォール]]で、アクセスを限定しましょう。 | ||
+ | ** 試行回数 | ||
+ | ** アクセス元 | ||
+ | * [[ファイアーウォール]]と同様にアクセス元の制限を [[hosts.allow]] でも設定ができます。 | ||
== sshd (sshd_config) の設定 == | == sshd (sshd_config) の設定 == | ||
行77: | 行91: | ||
* UsePAM [[Pluggable Authentication Modules]](PAM)モジュールは使用しません。 | * UsePAM [[Pluggable Authentication Modules]](PAM)モジュールは使用しません。 | ||
+ | == sftpでchrootの制限を行う == | ||
+ | * [[sftpのみを許可する方法]] | ||
+ | * [[sftpでchrootする設定]] | ||
+ | == iptablesによる制限 == | ||
+ | * [[iptables アクセス回数を制限する]] | ||
+ | == hosts.allow による制限 == | ||
+ | * TBD | ||
== 関連項目 == | == 関連項目 == | ||
* [[sshd]] | * [[sshd]] | ||
* [[Secure Shell]] | * [[Secure Shell]] | ||
− | * [[ | + | * [[ファイアーウォール]] |
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
2014年6月2日 (月) 00:20時点における版
sshサーバ(sshd)のセキュリティを高めるためには、sshdの設定(sshd_config)を適切に行うこと、iptablesやipfwなどのファイアーウォールなどで制限をすることなどが挙げられます。
目次
概要
sshdのデフォルトの設定は、あまり堅牢とは言えるものではありません。
- パスワード認証を許可しています。
- すべてのユーザがsshアクセス可能です。
我々は、どのような設定をするべきなのでしょうか?
- sshアクセスの必要なユーザだけに許可するべきです。
- パスワード認証を捨て、公開鍵認証のみを許可しましょう。
- 古いプロトコル(Protocol 1)は、もう必要ありません。
- 近年のデフォルトの設定は、2 のみのはずです。
- sftp だけで良いユーザは、sftp だけ許可します。
- chroot して、ユーザを閉じ込めます。
また、sshdの設定ではありませんが、以下の努力が可能です。
- iptables等のファイアーウォールで、アクセスを限定しましょう。
- 試行回数
- アクセス元
- ファイアーウォールと同様にアクセス元の制限を hosts.allow でも設定ができます。
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
許可すること
禁止すること
- PermitRootLogin rootのログインは許可しません。
- Protocol 1 は、脆弱性があるので使用しません。
- RSAAuthentication は Protocol 1 のみなので許す必要がありません。
- PasswordAuthentication パスワード認証は、許可しません。
- 許可するのは、公開鍵認証のみです。
- PermitEmptyPasswords 空パスワードは許可しません。
- そもそもパスワード認証を許可しません。
- ChallengeResponseAuthentication チャレンジレスポンス認証は、許可しません。
- UsePAM Pluggable Authentication Modules(PAM)モジュールは使用しません。
sftpでchrootの制限を行う
iptablesによる制限
hosts.allow による制限
- TBD