pam_abl

提供: ArchWiki
2023年11月1日 (水) 03:19時点におけるKgx (トーク | 投稿記録)による版 (→‎pam_abl.conf の作成: 情報を更新)
ナビゲーションに移動 検索に移動

関連記事

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

インストール

makepkg を使って AURpam_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 を編集して、ルールやその他の設定をカスタマイズします。

詳細については、man pam_abl.conf を参照してください。

ブラックリストデータベースの作成

root で、データベースのディレクトリを作成 (上記で示したパスを指定した場合):

# mkdir /var/lib/abl

root で、pam_abl ユーティリティを実行してデータベースを初期化:

# pam_abl

これで Pam_abl が動作するようになります。PAM はデーモンではないため、変更を適用するために何かを再起動する必要はありません。故意にリモートホストをブラックリストに入れることで pam_abl がちゃんと動作しているか確認することを強く推奨します。手動でホストやユーザーをブラックリストに追加・削除する方法は下を見て下さい。

ブラックリストデータベースの管理

ブラックリストのホスト/ユーザーの確認

root で、次のコマンドを実行:

# pam_abl
ノート: pam_abl はデーモンとしては実行されないため、ブラックリストから削除されるのはすぐに行われるわけではありません。つまり、認証試行がされるまでブラックリストからユーザー/ホストが削除されることはありません。とくに機能に影響はありませんが、上記のコマンドでブラックリストを確認したときに多目にユーザーやホストが表示されることになります。強制的に削除させるには、次のコマンドを実行: # 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

既知の問題

現在のバージョン (1.0) の時点で、pam_abl には特定の条件下でブラックリストに登録する機能に影響を与える可能性がある問題があります。

sshd の動作方法と pam モジュールに情報が渡される方法により、特定の試行の失敗は、2 回目の試行が行われるか、接続が閉じられるまでログに記録されません。これは、攻撃者が接続ごとに 1 回のみ試行し、接続を閉じない限り、失敗はログに記録されないことを意味します。

実際には、sshd_config 設定の "MaxStartups" (デフォルト 10) と、程度は低いですが "LoginGraceTime" (デフォルト 120 秒) により、このアプローチの実行可能性は制限されますが、それでも、指定したよりも多くの試行を絞り出すために使用できる可能性があります。

それまでの回避策は、"MaxAuthTries" を 1 に設定することです (または、pam_abl 構成で指定した値を超えて追加の "MaxStartups" 試行が行われる可能性があることを期待します)