Usando knockd com shorewall

4

Gostaria de migrar minha antiga configuração de firewall do iptables puro para uma configuração shorewall. Eu obtenho o básico, mas não consegui replicar minha configuração existente de knockd:

  • Eu tenho uma cadeia ' tmpknock ' que abre algumas portas, por exemplo porta 22, por 30 segundos (múltiplos IPs permitidos ao mesmo tempo na cadeia tmpknock, se várias pessoas tentarem logar simultaneamente!).
  • Eu tenho uma cadeia ' permknock ' que abre algumas portas (por exemplo, 80) para sempre, mas apenas para um IP de cada vez (que é substituído, quando o próximo tenta bater de um diferente IP - isso me permite testar alguns serviços que não estão abertos ao público no momento)

A configuração em /etc/knockd.conf é simples:

[tmpAndPermKnock]
    sequence      = 10000,11000,12000
    seq_timeout   = 9
    tcpflags      = syn
    start_command = /sbin/iptables -I tmpknock -s %IP% -j ACCEPT; 
                    /sbin/iptables -F permknock;
                    /sbin/iptables -I permknock -s %IP% -j ACCEPT
    cmd_timeout   = 30
    stop_command  = /sbin/iptables -D tmpknock -s %IP% -j ACCEPT

Agora posso vincular facilmente minhas cadeias existentes a essas cadeias, por exemplo:

iptables -A open-in -p tcp --dport 22 -j tmpknock
iptables -A open-in -p tcp --dport 80 -j permknock

Como posso integrar isso com uma simples configuração shorewall? Eu estou realmente começando com o shorewall, e não sei como fazer o salto para as minhas correntes. Eu imagino, seria algo assim:

/ etc / shorewall / rules ( não funciona ):

#ACTION         SOURCE        DEST      PROTO      DEST
JUMP(tmpknock)  net           fw        tcp        22
JUMP(permknock) net           fw        tcp        80

... mas não há ação de JUMP no link ...

    
por Chris Lercher 16.05.2012 / 22:28

1 resposta

4

Não parece haver uma boa solução para isso (boo Shorewall): - / Parece haver duas opções:

  1. Escreva um módulo Shorewall personalizado em Perl. Existe alguma documentação sobre como escrever módulos para implementar o knock, seja usando a correspondência recente desejada ou usando cadeias manuais .
  2. Escreva um script de extensão start (que é executado após o Shorewall ter configurado todas as suas regras) para inserir uma regra de salto para as correntes de impacto na cadeia INPUT.
por 16.05.2012 / 22:51