私の中には/etc/pam.d/sshd
次の行があります。
session optional pam_exec.so /usr/local/bin/pam_exec_sshd
sshが入ったり出たりするたびに、私のスクリプトが呼び出されます。スクリプト内容:
#!/bin/bash
IPTABLES=/usr/sbin/iptables
case $PAM_TYPE in
open_session) act=-I;;
close_session) act=-D;;
*) exit 0;;
esac
$IPTABLES "$act" INPUT -s "$PAM_RHOST" -j PAM_EXEC_SSHD
PAM_EXEC_SSHD
任意のポートに送信された任意のプロトコルパケットが有効なSSHクライアントホストから来ると、私のカスタムnetfilterチェーンに移動するルールを追加または削除します。
INPUT
ホストに複数の同時SSH接続がある場合、チェーンには一種の参照カウントである2つ以上の同じ規則があります。
しかし、PAM_EXEC_SSHD
後ろから戻るときにINPUT
別の同じ規則がある場合は、PAM_EXEC_SSHD
再びその規則にジャンプします。これが起こるのを防ぐ方法は何ですか?
ホストごとに1つのルールのみを保持するようにスクリプトを変更すると、2つのセッションの1つが閉じられたときにそのホストの唯一のルールが削除されます。