Configurar porta batendo com iptables na porta única?

3

Eu tenho procurado usar a porta batendo como uma forma de ocultar / proteger o SSHD. Estou ciente de knockd e outras implementações, mas quero algo portátil e simples. Então eu decidi que o iptables com o módulo recente é bom o suficiente.

Já desativei o login com base em senha e preciso de uma chave pública / privada. Eu só quero que ele apareça como SSHD não está no servidor, mesmo para um scanner de porta.

Eu vi muitos exemplos de regras do iptables, e não estou bem claro como eles devem funcionar.

O que eu quero é bater em uma única porta obscura para abrir a porta 22. Ao mesmo tempo, eu quero desabilitar a porta batendo por um tempo se as portas em torno dela forem acessadas. Então, se minha porta batendo fosse 123, bater nessa porta abriria a porta 22 por 5 segundos apenas para a aldrava. Mas se a porta 122 ou 124 fosse batida, ela desabilitaria a batida de porta do aldrava por 15 minutos (assim, mesmo se eles batessem em 123, nada aconteceria nesse intervalo de tempo).

Quais regras do iptables alcançariam isso?

Editar: devo acrescentar que estou usando o CentOS 5.5. módulos iptable podem ser usados.

    
por Luke 23.09.2011 / 00:04

2 respostas

10

Todas essas regras têm iptables -A INPUT na frente delas.

# if port 122 or 124 is touched add to block list
-m state --state NEW -m tcp -p tcp -–dport 122 -m recent --set --name blocked
-m state --state NEW -m tcp -p tcp -–dport 124 -m recent --set --name blocked

# if you are on the block list you cannot touch 123 for 15min
-m state --state NEW -m tcp -p tcp --dport 123 -m recent --rcheck --name blocked --seconds 900 -j DROP

# if port 123 is touched add to the knocked list
-m state --state NEW -m tcp -p tcp --dport 123 -m recent --set --name knocked

# if you are on the knock list you can initiate an ssh session for 5 seconds
-m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name knocked --seconds 5 -j ACCEPT

A única ressalva é que eu não sei se o ipt_recent pode rastrear por 15 minutos.

Editar: tente melhorar os comentários e adicione "recente" ausente.

    
por 23.09.2011 / 00:39
0

Não vejo outra maneira de ter um conntrack helper for netfilter escrito especificamente para este propósito - você não pode "rotear" conjuntos de regras iptables dinâmicos e terá que usar os mecanismos conntrack. Obviamente, isso não funcionaria com o iptables baunilha, mas exigiria um módulo customizado.

    
por 23.09.2011 / 00:18