「Pam abl」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(アーカイブされた記事へのリンクを削除)
(→‎既知の問題: 情報を更新)
82行目: 82行目:
 
Linux のほぼ全てのユーティリティと同様に、[[man ページ]]を使って全てのオプションを確認できます:
 
Linux のほぼ全てのユーティリティと同様に、[[man ページ]]を使って全てのオプションを確認できます:
 
$ man pam_abl
 
$ man pam_abl
==既知の問題==
+
== 既知の問題 ==
pam_abl の現在のバージョン (0.6.0) には特定の状況下でブラックリストに問題が発生することがあります。
 
   
  +
現在のバージョン (1.0) の時点で、pam_abl には特定の条件下でブラックリストに登録する機能に影響を与える可能性がある問題があります。
sshd の挙動と pam モジュールへの情報の渡し方に問題があるため、ログインに失敗しても二回目の試行が行われたり接続が切られるまで記録が行われません。そのため攻撃者が一回の接続で一回しかログイン試行をせず、接続を切らなかった場合、その試行失敗は記録されないことになります。
 
   
  +
sshd の動作方法と pam モジュールに情報が渡される方法により、特定の試行の失敗は、2 回目の試行が行われるか、接続が閉じられるまでログに記録されません。これは、攻撃者が接続ごとに 1 回のみ試行し、接続を閉じない限り、失敗はログに記録されないことを意味します。
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.
 
   
  +
実際には、sshd_config 設定の "MaxStartups" (デフォルト 10) と、程度は低いですが "LoginGraceTime" (デフォルト 120 秒) により、このアプローチの実行可能性は制限されますが、それでも、指定したよりも多くの試行を絞り出すために使用できる可能性があります。
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).
 
  +
  +
それまでの回避策は、"MaxAuthTries" を 1 に設定することです (または、pam_abl 構成で指定した値を超えて追加の "MaxStartups" 試行が行われる可能性があることを期待します)

2023年11月1日 (水) 03:17時点における版

関連記事

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 を作成してください:

# 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
ノート: 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" 試行が行われる可能性があることを期待します)