![동일한 사용자 정의 체인으로 두 번 점프하지 마십시오.](https://linux55.com/image/78888/%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EC%B2%B4%EC%9D%B8%EC%9C%BC%EB%A1%9C%20%EB%91%90%20%EB%B2%88%20%EC%A0%90%ED%94%84%ED%95%98%EC%A7%80%20%EB%A7%88%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
내 안에는 /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
다시 그 규칙으로 점프합니다. 이런 일이 발생하는 것을 방지하는 방법은 무엇입니까?
호스트당 하나의 규칙만 유지하도록 스크립트를 변경하면 두 세션 중 하나가 닫힐 때 해당 호스트의 유일한 규칙이 삭제됩니다.