Quando ocorre uma tentativa de conexão TCP, normalmente você só conhece o quadlet padrão TCP / IP: IP de origem, IP de destino, porta de origem e porta de destino. A porta de origem é normalmente alocada dinamicamente no host de origem e geralmente não é um indicador confiável de nada.
Você não sabe ao certo quem é o usuário de conexão: para descobrir isso, você deve inicialmente aceitar a conexão e executar o procedimento de autenticação, o que geralmente requer alguma comunicação bidirecional. Então, se o nome de usuário for aceitável e , o usuário forneceu credenciais de autenticação válidas, o acesso ao sistema pode ser concedido. Caso contrário, a conexão será interrompida após um pequeno número de tentativas de autenticação com falha.
iptables
pode certamente restringir o acesso de determinados intervalos de IP a determinadas portas. Mas iptables
não pode saber o nome de usuário associado à conexão de entrada, já que deve tomar sua decisão antes do procedimento de autenticação.
Qualquer decisão de controle de acesso baseada em nome de usuário deve acontecer dentro do serviço real que lida com a autenticação da conexão. Em outras palavras, se a conexão de entrada for uma conexão SSH, a primeira coisa que terá a capacidade de tomar decisões de acesso baseadas em nome de usuário será o daemon sshd
. Se sshd
estiver configurado para usar o PAM, as regras do PAM também poderão ser usadas; Se sshd
for compilado para usar a biblioteca libwrap
, /etc/hosts.allow
e / ou /etc/hosts.deny
também poderão ser úteis.