Como faço para colocar um ip na lista de permissões por um tempo limitado?

1

Estou tentando criar uma lista de permissões automática de IPs com um tempo limite baseado em determinados eventos usando firewalld e ipsets.

Isto é o quão longe eu cheguei

firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip --option=timeout=30
firewall-cmd --reload
firewall-cmd --zone=external --add-rich-rule='rule source ipset=whitelist accept'
firewall-cmd --ipset=whitelist --add-entry=AA.BB.CC.DD

Mas receba esta mensagem de erro do último comando:

Error: IPSET_WITH_TIMEOUT: whitelist

Tenho a sensação de que estou sentindo falta de algo óbvio aqui.

    
por dragz 20.01.2018 / 22:20

1 resposta

1

Eu realmente estava sentindo falta de algo óbvio e descobri algo não tão óbvio:

Esta é a cadeia de comandos que irá criar um ipset com um tempo limite no firewalld

firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip --option=timeout=30
firewall-cmd --reload
firewall-cmd --zone=external --add-source=ipset:whitelist

Eu estava sem o bit --add-source (note que a regra rich não é necessária). Mas, tentar adicionar uma entrada ao ipset através do firewall-cmd ainda dá o mesmo erro da pergunta inicial. No entanto, é possível usar diretamente o comando nativo ipset:

#ipset add whitelist AA.BB.CC.DD
#ipset list whitelist
Name: whitelist
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536 timeout 30
Size in memory: 16592
References: 7
Members:
AA.BB.CC.DD timeout 22

Esta configuração coloca na lista de permissões o endereço IP fornecido por 30 segundos. Apenas o que eu precisava.

O motivo de tudo isso é poder fornecer um mecanismo automático para fornecer acesso a um serviço de área de trabalho remota para usuários que fazem login em nossos servidores com o ssh. O comando ipset add é executado a partir de um manipulador de eventos syslog que detecta logins ssh bem-sucedidos e captura o ip de origem associado do qual o usuário está efetuando login. O tempo limite da lista branca limita a janela de ataque para a conexão vnc remota de forma significativa. Temos usado uma configuração semelhante no CentOS6 com base no tcp-wrapper. Agora estamos nos movendo para o CentOS7 e usar o tempo limite do ipset elimina a necessidade de nossa própria contabilidade fechar os endereços IP permitidos após a expiração da janela de tempo limite.

    
por 21.01.2018 / 22:33