pam_abl

提供: ArchWiki
移動先: 案内検索

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

既知の問題

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).