「Pam abl」の版間の差分
(en:Pam ablへの転送ページ) |
|||
1行目: | 1行目: | ||
+ | [[Category:Secure Shell]] |
||
− | #redirect[[en:Pam abl]] |
||
+ | [[Category:セキュリティ]] |
||
+ | [[en:Pam abl]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|One Time PassWord}} |
||
+ | {{Related|S/KEY 認証}} |
||
+ | {{Related|Secure Shell}} |
||
+ | {{Related|SSH 鍵}} |
||
+ | {{Related|ポートノッキング}} |
||
+ | {{Related articles end}} |
||
+ | '''Pam_abl''' は総当り攻撃による SSH パスワードの推測に対してセキュリティレイヤーを追加します。一定の時間内でログイン試行の失敗ができる限度を決めて、ホストやユーザーがその制限を越えた場合、ブラックリストに入れます。一度ブラックリストに入ったら、たとえ正しいパスワードが入力されたとしても認証は失敗します。一定期間ログインの試行を止めたホスト/ユーザーはブラックリストから削除されます。 |
||
+ | |||
+ | ==インストール== |
||
+ | [[makepkg]] を使って [[AUR]] の {{AUR|pam_abl}} PKGBUILD をインストールしてください。 |
||
+ | |||
+ | ==設定== |
||
+ | ===PAM 認証スタックに pam_abl を追加=== |
||
+ | お好きなエディタを使って {{ic|1=/etc/pam.d/sshd}} を root で開いて下さい。一番上の行に以下を追加します: |
||
+ | auth required pam_abl.so config=/etc/security/pam_abl.conf |
||
+ | |||
+ | 他に何も修正を加えていない場合、{{ic|1=/etc/pam.d/sshd}} は以下のようになります: |
||
+ | #%PAM-1.0 |
||
+ | auth required pam_abl.so config=/etc/security/pam_abl.conf |
||
+ | auth include system-login |
||
+ | account include system-login |
||
+ | password include system-login |
||
+ | session include system-login |
||
+ | |||
+ | 上記の設定では ssh でのみ pam_abl が有効になります。他のサービスに影響はありません。 |
||
+ | |||
+ | ===pam_abl.conf の作成=== |
||
+ | サンプル設定ファイルをコピーして {{ic|1=/etc/security/pam_abl.conf}} を作成してください: |
||
+ | # cp /etc/security/pam_abl.conf.example /etc/security/pam_abl.conf |
||
+ | |||
+ | バージョン 0.6.0 現在、サンプル設定は以下のようになっています: |
||
+ | db_home=/var/lib/abl |
||
+ | host_db=/var/lib/abl/hosts.db |
||
+ | host_purge=1d |
||
+ | host_rule=*:30/1h |
||
+ | user_db=/var/lib/abl/users.db |
||
+ | user_purge=1d |
||
+ | user_rule=*:3/1h |
||
+ | host_clear_cmd=[logger] [clear] [host] [%h] |
||
+ | host_block_cmd=[logger] [block] [host] [%h] |
||
+ | user_clear_cmd=[logger] [clear] [user] [%u] |
||
+ | user_block_cmd=[logger] [block] [user] [%u] |
||
+ | limits=1000-1200 |
||
+ | host_whitelist=1.1.1.1/24;2.1.1.1 |
||
+ | user_whitelist=danta;chris |
||
+ | |||
+ | ルールなどをカスタマイズする方法は {{ic|1=man pam_abl.conf}} を見て下さい。 |
||
+ | |||
+ | ===ブラックリストデータベースの作成=== |
||
+ | root で、データベースのディレクトリを作成 (上記で示したパスを指定した場合): |
||
+ | # mkdir /var/lib/abl |
||
+ | |||
+ | root で、pam_abl ユーティリティを実行してデータベースを初期化: |
||
+ | # pam_abl |
||
+ | |||
+ | これで Pam_abl が動作するようになります。PAM はデーモンではないため、変更を適用するために何かを再起動する必要はありません。故意にリモートホストをブラックリストに入れることで pam_abl がちゃんと動作しているか確認することを強く推奨します。手動でホストやユーザーをブラックリストに追加・削除する方法は下を見て下さい。 |
||
+ | |||
+ | ==ブラックリストデータベースの管理== |
||
+ | ===ブラックリストのホスト/ユーザーの確認=== |
||
+ | root で、次のコマンドを実行: |
||
+ | # pam_abl |
||
+ | |||
+ | {{Note|pam_abl はデーモンとしては実行されないため、ブラックリストから削除されるのはすぐに行われるわけではありません。つまり、認証試行がされるまでブラックリストからユーザー/ホストが削除されることはありません。とくに機能に影響はありませんが、上記のコマンドでブラックリストを確認したときに多目にユーザーやホストが表示されることになります。強制的に削除させるには、次のコマンドを実行: {{ic|# pam_abl -p}}。}} |
||
+ | |||
+ | ===手動でブラックリストからホストやユーザーを削除=== |
||
+ | root で、次を実行: |
||
+ | # pam_abl -w -U <user> |
||
+ | もしくは: |
||
+ | # pam_abl -w -H <host> |
||
+ | 上記のどちらのコマンドでも * をワイルドカードとして使って複数のホスト/ユーザーにマッチさせることができます。 |
||
+ | ===手動でブラックリストにホストやユーザーを追加=== |
||
+ | root で、次を実行: |
||
+ | # pam_abl -f -U <user> |
||
+ | または: |
||
+ | # pam_abl -f -H <host> |
||
+ | ===他の pam_abl コマンド=== |
||
+ | Linux のほぼ全てのユーティリティと同様に、[[man ページ]]を使って全てのオプションを確認できます: |
||
+ | $ man pam_abl |
||
+ | ==既知の問題== |
||
+ | pam_abl の現在のバージョン (0.6.0) には特定の状況下でブラックリストに問題が発生することがあります。 |
||
+ | |||
+ | sshd の挙動と pam モジュールへの情報の渡し方に問題があるため、ログインに失敗しても二回目の試行が行われたり接続が切られるまで記録が行われません。そのため攻撃者が一回の接続で一回しかログイン試行をせず、接続を切らなかった場合、その試行失敗は記録されないことになります。 |
||
+ | |||
+ | In practice, the sshd_config settings "MaxStartups" (default 10) and to a lesser degree "LoginGraceTime" (default 120s) limit the viability of this approach, but it still could be used to squeeze out more attempts then you specify. |
||
+ | |||
+ | In the meantime, the workaround is to set "MaxAuthTries" to 1 (or expect that an additional "MaxStartups" number of attempts could be made above and beyond what you specify in your pam_abl config). |
2015年11月14日 (土) 15:18時点における版
Pam_abl は総当り攻撃による SSH パスワードの推測に対してセキュリティレイヤーを追加します。一定の時間内でログイン試行の失敗ができる限度を決めて、ホストやユーザーがその制限を越えた場合、ブラックリストに入れます。一度ブラックリストに入ったら、たとえ正しいパスワードが入力されたとしても認証は失敗します。一定期間ログインの試行を止めたホスト/ユーザーはブラックリストから削除されます。
目次
インストール
makepkg を使って AUR の pam_ablAUR PKGBUILD をインストールしてください。
設定
PAM 認証スタックに pam_abl を追加
お好きなエディタを使って /etc/pam.d/sshd
を root で開いて下さい。一番上の行に以下を追加します:
auth required pam_abl.so config=/etc/security/pam_abl.conf
他に何も修正を加えていない場合、/etc/pam.d/sshd
は以下のようになります:
#%PAM-1.0 auth required pam_abl.so config=/etc/security/pam_abl.conf auth include system-login account include system-login password include system-login session include system-login
上記の設定では ssh でのみ pam_abl が有効になります。他のサービスに影響はありません。
pam_abl.conf の作成
サンプル設定ファイルをコピーして /etc/security/pam_abl.conf
を作成してください:
# cp /etc/security/pam_abl.conf.example /etc/security/pam_abl.conf
バージョン 0.6.0 現在、サンプル設定は以下のようになっています:
db_home=/var/lib/abl host_db=/var/lib/abl/hosts.db host_purge=1d host_rule=*:30/1h user_db=/var/lib/abl/users.db user_purge=1d user_rule=*:3/1h host_clear_cmd=[logger] [clear] [host] [%h] host_block_cmd=[logger] [block] [host] [%h] user_clear_cmd=[logger] [clear] [user] [%u] user_block_cmd=[logger] [block] [user] [%u] limits=1000-1200 host_whitelist=1.1.1.1/24;2.1.1.1 user_whitelist=danta;chris
ルールなどをカスタマイズする方法は man pam_abl.conf
を見て下さい。
ブラックリストデータベースの作成
root で、データベースのディレクトリを作成 (上記で示したパスを指定した場合):
# mkdir /var/lib/abl
root で、pam_abl ユーティリティを実行してデータベースを初期化:
# pam_abl
これで Pam_abl が動作するようになります。PAM はデーモンではないため、変更を適用するために何かを再起動する必要はありません。故意にリモートホストをブラックリストに入れることで pam_abl がちゃんと動作しているか確認することを強く推奨します。手動でホストやユーザーをブラックリストに追加・削除する方法は下を見て下さい。
ブラックリストデータベースの管理
ブラックリストのホスト/ユーザーの確認
root で、次のコマンドを実行:
# pam_abl
手動でブラックリストからホストやユーザーを削除
root で、次を実行:
# pam_abl -w -U <user>
もしくは:
# pam_abl -w -H <host>
上記のどちらのコマンドでも * をワイルドカードとして使って複数のホスト/ユーザーにマッチさせることができます。
手動でブラックリストにホストやユーザーを追加
root で、次を実行:
# pam_abl -f -U <user>
または:
# pam_abl -f -H <host>
他の pam_abl コマンド
Linux のほぼ全てのユーティリティと同様に、man ページを使って全てのオプションを確認できます:
$ man pam_abl
既知の問題
pam_abl の現在のバージョン (0.6.0) には特定の状況下でブラックリストに問題が発生することがあります。
sshd の挙動と pam モジュールへの情報の渡し方に問題があるため、ログインに失敗しても二回目の試行が行われたり接続が切られるまで記録が行われません。そのため攻撃者が一回の接続で一回しかログイン試行をせず、接続を切らなかった場合、その試行失敗は記録されないことになります。
In practice, the sshd_config settings "MaxStartups" (default 10) and to a lesser degree "LoginGraceTime" (default 120s) limit the viability of this approach, but it still could be used to squeeze out more attempts then you specify.
In the meantime, the workaround is to set "MaxAuthTries" to 1 (or expect that an additional "MaxStartups" number of attempts could be made above and beyond what you specify in your pam_abl config).