No meu /etc/pam.d/sshd
, tenho uma linha:
session optional pam_exec.so /usr/local/bin/pam_exec_sshd
Ele chama meu script sempre que faço login ou logout no ssh. Conteúdo do script:
#!/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
Ele adiciona ou remove uma regra para acessar minha cadeia de filtros de rede PAM_EXEC_SSHD
quando um pacote de qualquer protocolo para qualquer porta vem de um host de cliente ssh válido.
Se houver 2 ou mais conexões ssh simultâneas de um host, haverá duas ou mais regras idênticas em INPUT
chain - tipo de contagem de referência.
Mas quando voltarmos de PAM_EXEC_SSHD
de volta para INPUT
, se houver outra regra idêntica, saltaremos para PAM_EXEC_SSHD
novamente. Como evitar isso?
Se eu alterar meu script para manter apenas uma regra por host, quando uma das duas sessões for fechada, a única regra para o host será excluída.