Desde a atualização do CentOS 7 para o Rocky Linux 8, nosso maxlogins
limite de PAM não está mais sendo aplicado para sessões SFTP.
Os usuários do SFTP pertencem ao sftp
grupo e temos isso em/etc/security/limits.d/10-maxlogins.conf
@sftp - maxlogins 1
Usamos internal-sftp
para sessões SFTP e temos isso em/etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
No entanto, os usuários ainda conseguem abrir > 1 sessão SFTP simultânea. Deveríamos fazer algo diferente no EL8 para impor esses limites?
ATUALIZAÇÃO:
O registro de depuração do PAM está habilitado e é possível verificar se ele está lendo os arquivos de configuração relevantes. No entanto, o limite não é imposto.
Apr 10 16:13:04 sftp-test sshd[40955]: Accepted password for sftptest from 10.3.200.146 port 60976 ssh2
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/10-max-logins.conf'
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): checking if sftptest is in group sftp
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): process_limit: processing - maxlogins 1 for GROUP
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): checking logins for 'sftptest' (maximum of 1)
Apr 10 16:13:04 sftp-test systemd[40960]: pam_unix(systemd-user:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
Apr 10 16:13:04 sftp-test sshd[40955]: pam_unix(sshd:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
Apr 10 16:13:26 sftp-test sshd[40986]: Accepted password for sftptest from 10.3.200.146 port 52110 ssh2
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/10-max-logins.conf'
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): checking if sftptest is in group sftp
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): process_limit: processing - maxlogins 1 for GROUP
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): checking logins for 'sftptest' (maximum of 1)
Apr 10 16:13:26 sftp-test sshd[40986]: pam_unix(sshd:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
Embora eu tenha respondido a essa pergunta nos fóruns, vou respondê-la aqui também, porque não será específica para o Rocky Linux. Será específica para qualquer versão do Enterprise Linux 8 e 9 (e potencialmente 10).
Em vez de definir
maxlogins
, você deveria definirnproc
. Isso é apenas um truque para contornar o design deSFTP
.Para calcular isso, use a equação
2 * X + 2
:SFTP
conexão1
)+ 2
O gerenciador de usuários final do systemd consome2
processos por usuário.Isso é fácil de verificar. Abaixo, já estou logado na minha máquina.
Vamos tentar fazer login novamente.
Com o sftp, ele irá travar até que finalmente desista.
Se eu fizer logout enquanto o sistema estiver travado, ele eventualmente me dará um aviso.