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スクリプトはデフォルトでrootとして実行されます。

ベストアンサー1

[OK]私の問題は、$ 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が有効になっていることを確認してください。

おすすめ記事