PAM 매개변수를 UFW에 전달

PAM 매개변수를 UFW에 전달

개발 서버에서 SSH 로그인 후 특정 IP 주소에 대한 모든 포트를 열고 싶습니다.

하지만 내 SSH 로그인 스크립트가 작동하지 않습니다.

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then                    
 ufw delete from $PAM_RHOST
else                                                          
 ufw allow from $PAM_RHOST
fi

/etc/pam.d/sshd에서

session    optional     pam_exec.so quiet /etc/pam_session.sh

내 스크립트가 작동하지 않는 이유 및/또는 디버깅 방법에 대한 정보가 필요합니다.

내 기억이 맞다면 PAM 스크립트는 기본적으로 루트로 실행됩니다.

답변1

좋아요 내 문제는 $PAM_RHOST가 IP 대신 호스트 이름을 반환한다는 것입니다.

올바른 스크립트

#!/bin/sh
ip=$(getent hosts "$PAM_RHOST" | awk '{ print $1 }')
if [ "$PAM_TYPE" = "close_session" ]; then
  ufw delete allow from $ip
else
  ufw allow from $ip
fi

참고: "getent Hosts"가 IPv6 또는 IPv4를 반환할 수 있으므로 ufw에 IPv6가 활성화되어 있는지 확인하세요.

관련 정보