내 안에는 /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
호스트에 2개 이상의 동시 SSH 연결이 있는 경우 체인에는 일종의 참조 카운트인 2개 이상의 동일한 규칙이 있습니다 .
하지만 PAM_EXEC_SSHD
뒤에서 돌아올 때 INPUT
또 다른 동일한 규칙이 있으면 PAM_EXEC_SSHD
다시 그 규칙으로 점프합니다. 이런 일이 발생하는 것을 방지하는 방법은 무엇입니까?
호스트당 하나의 규칙만 유지하도록 스크립트를 변경하면 두 세션 중 하나가 닫힐 때 해당 호스트의 유일한 규칙이 삭제됩니다.