「Pam abl」の版間の差分
(項目を整理) |
Kusanaginoturugi (トーク | 投稿記録) |
||
(他の1人の利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
{{DISPLAYTITLE:pam_abl}} |
{{DISPLAYTITLE:pam_abl}} |
||
− | [[Category: |
+ | [[Category:セキュアシェル]] |
[[Category:認証]] |
[[Category:認証]] |
||
[[en:Pam abl]] |
[[en:Pam abl]] |
||
20行目: | 20行目: | ||
=== PAM 認証スタックに pam_abl を追加 === |
=== PAM 認証スタックに pam_abl を追加 === |
||
+ | {{Note|これにより、system-remote-login を使用するすべてのサービス (ssh、php など) で pam_abl が有効になります。}} |
||
− | お好きなエディタを使って {{ic|1=/etc/pam.d/sshd}} を root で開いて下さい。一番上の行に以下を追加します: |
||
− | auth required pam_abl.so config=/etc/security/pam_abl.conf |
||
+ | 選択したエディターで root として {{ic|/etc/pam.d/system-remote-login}} を開きます。次の行を他のすべての行の上に追加します。 |
||
− | 他に何も修正を加えていない場合、{{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 |
||
+ | {{hc|/etc/pam.d/system-remote-login|2= |
||
− | 上記の設定では ssh でのみ pam_abl が有効になります。他のサービスに影響はありません。 |
||
+ | auth required pam_abl.so config=/etc/security/pam_abl.conf |
||
+ | }} |
||
+ | |||
+ | 他に何も変更を加えていないとすると、{{ic|1=/etc/pam.d/system-remote-login}} は次のようになります。 |
||
+ | |||
+ | {{hc|/etc/pam.d/system-remote-login|2= |
||
+ | #%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 |
||
+ | }} |
||
=== pam_abl.conf の作成 === |
=== pam_abl.conf の作成 === |
||
45行目: | 51行目: | ||
root で、次のコマンドを実行: |
root で、次のコマンドを実行: |
||
# pam_abl |
# pam_abl |
||
− | |||
− | {{Note|pam_abl はデーモンとしては実行されないため、ブラックリストから削除されるのはすぐに行われるわけではありません。つまり、認証試行がされるまでブラックリストからユーザー/ホストが削除されることはありません。とくに機能に影響はありませんが、上記のコマンドでブラックリストを確認したときに多目にユーザーやホストが表示されることになります。強制的に削除させるには、次のコマンドを実行: {{ic|# pam_abl -p}}}} |
||
=== 手動でブラックリストからホストやユーザーを削除 === |
=== 手動でブラックリストからホストやユーザーを削除 === |
||
62行目: | 66行目: | ||
または: |
または: |
||
# pam_abl -f -H <host> |
# pam_abl -f -H <host> |
||
+ | |||
+ | === 古いユーザー/ホストのエントリを削除する === |
||
+ | |||
+ | pam_abl はデーモンとして実行されないため、ブラックリストの "遅延パージ" を実行します。つまり、認証が試行されるまで、古いユーザー/ホストのエントリはブラックリストから削除されません。これは機能には影響しませんが、ブラックリストに登録されたホスト/ユーザーをチェックするときに追加のエラーが表示されることがよくあります。強制的にパージを実行するには、次のコマンドを実行します。 |
||
+ | # pam_abl -p |
||
+ | |||
=== 他の pam_abl コマンド === |
=== 他の pam_abl コマンド === |
||
2024年8月16日 (金) 18:37時点における最新版
pam_abl は総当り攻撃による SSH パスワードの推測に対してセキュリティレイヤーを追加します。一定の時間内でログイン試行の失敗ができる限度を決めて、ホストやユーザーがその制限を越えた場合、ブラックリストに入れます。一度ブラックリストに入ったら、たとえ正しいパスワードが入力されたとしても認証は失敗します。一定期間ログインの試行を止めたホスト/ユーザーはブラックリストから削除されます。
目次
インストール
makepkg を使って AUR の pam_ablAUR の PKGBUILD をインストールしてください。
設定
PAM 認証スタックに pam_abl を追加
選択したエディターで root として /etc/pam.d/system-remote-login
を開きます。次の行を他のすべての行の上に追加します。
/etc/pam.d/system-remote-login
auth required pam_abl.so config=/etc/security/pam_abl.conf
他に何も変更を加えていないとすると、/etc/pam.d/system-remote-login
は次のようになります。
/etc/pam.d/system-remote-login
#%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
pam_abl.conf の作成
/etc/security/pam_abl.conf
を編集して、ルールやその他の設定をカスタマイズします。
詳細については、man pam_abl.conf
を参照してください。
ブラックリストデータベースの管理
ブラックリストのホスト/ユーザーの確認
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 はデーモンとして実行されないため、ブラックリストの "遅延パージ" を実行します。つまり、認証が試行されるまで、古いユーザー/ホストのエントリはブラックリストから削除されません。これは機能には影響しませんが、ブラックリストに登録されたホスト/ユーザーをチェックするときに追加のエラーが表示されることがよくあります。強制的にパージを実行するには、次のコマンドを実行します。
# pam_abl -p
他の pam_abl コマンド
Linux のほぼ全てのユーティリティと同様に、man ページを使って全てのオプションを確認できます:
$ man pam_abl
既知の問題
現在のバージョン (1.0) の時点で、pam_abl には特定の条件下でブラックリストに登録する機能に影響を与える可能性がある問題があります。
sshd の動作方法と pam モジュールに情報が渡される方法により、特定の試行の失敗は、2 回目の試行が行われるか、接続が閉じられるまでログに記録されません。これは、攻撃者が接続ごとに 1 回のみ試行し、接続を閉じない限り、失敗はログに記録されないことを意味します。
実際には、sshd_config 設定の "MaxStartups" (デフォルト 10) と、程度は低いですが "LoginGraceTime" (デフォルト 120 秒) により、このアプローチの実行可能性は制限されますが、それでも、指定したよりも多くの試行を絞り出すために使用できる可能性があります。
それまでの回避策は、"MaxAuthTries" を 1 に設定することです (または、pam_abl 構成で指定した値を超えて追加の "MaxStartups" 試行が行われる可能性があることを期待します)