pam_abl
pam_abl は総当り攻撃による SSH パスワードの推測に対してセキュリティレイヤーを追加します。一定の時間内でログイン試行の失敗ができる限度を決めて、ホストやユーザーがその制限を越えた場合、ブラックリストに入れます。一度ブラックリストに入ったら、たとえ正しいパスワードが入力されたとしても認証は失敗します。一定期間ログインの試行を止めたホスト/ユーザーはブラックリストから削除されます。
目次
インストール
makepkg を使って AUR の pam_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 で、次のコマンドを実行:
# 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 コマンド
Linux のほぼ全てのユーティリティと同様に、man ページを使って全てのオプションを確認できます:
$ man pam_abl
既知の問題
現在のバージョン (1.0) の時点で、pam_abl には特定の条件下でブラックリストに登録する機能に影響を与える可能性がある問題があります。
sshd の動作方法と pam モジュールに情報が渡される方法により、特定の試行の失敗は、2 回目の試行が行われるか、接続が閉じられるまでログに記録されません。これは、攻撃者が接続ごとに 1 回のみ試行し、接続を閉じない限り、失敗はログに記録されないことを意味します。
実際には、sshd_config 設定の "MaxStartups" (デフォルト 10) と、程度は低いですが "LoginGraceTime" (デフォルト 120 秒) により、このアプローチの実行可能性は制限されますが、それでも、指定したよりも多くの試行を絞り出すために使用できる可能性があります。
それまでの回避策は、"MaxAuthTries" を 1 に設定することです (または、pam_abl 構成で指定した値を超えて追加の "MaxStartups" 試行が行われる可能性があることを期待します)