pam_abl

提供: ArchWiki
2023年11月1日 (水) 03:29時点におけるKgx (トーク | 投稿記録)による版 (→‎PAM 認証スタックに pam_abl を追加: 情報を更新)
ナビゲーションに移動 検索に移動

関連記事

pam_abl は総当り攻撃による SSH パスワードの推測に対してセキュリティレイヤーを追加します。一定の時間内でログイン試行の失敗ができる限度を決めて、ホストやユーザーがその制限を越えた場合、ブラックリストに入れます。一度ブラックリストに入ったら、たとえ正しいパスワードが入力されたとしても認証は失敗します。一定期間ログインの試行を止めたホスト/ユーザーはブラックリストから削除されます。

インストール

makepkg を使って AURpam_ablAUR の PKGBUILD をインストールしてください。

設定

PAM 認証スタックに pam_abl を追加

ノート: これにより、system-remote-login を使用するすべてのサービス (ssh、php など) で 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" 試行が行われる可能性があることを期待します)