Packet desconfiguração utilidades além iptables? [fechadas]
-
06-07-2019 - |
Pergunta
Eu estou procurando um utilitário linux que pode alterar as cargas de pacotes de rede com base em um conjunto de regras. Idealmente, eu usaria iptables
e o módulo do kernel netfilter
, mas eles não suportam mangling payload genérica: iptables
irá alterar vários cabeçalho Campos (endereços, portos, TOS, etc), e pode < em> jogo arbitrária bytes dentro de um pacote, mas aparentemente não é capaz de alter dados arbitrários dentro do pacote.
Um kernel módulo seria uma grande vantagem, como a eficiência é uma preocupação, mas estou feliz para explorar outras opções que iria fazer o trabalho.
Obrigado por suas idéias!
Atualização longo atraso:
Nós escolhemos usar o módulo NFQUEUE
, que é a mais recente implementação dos módulos fila que Robert Gamble sugeriu. Parecia ser bastante simples, com um bônus de segurança para permitir que o nosso código para ser executado no usuário, não do kernel, espaço.
A implementação teria sido quase trivial se tivéssemos simplesmente queria alterar a carga útil sem alterar seu tamanho. Nesse caso, nós definir uma regra iptables
para selecionar os pacotes "interessantes" para nós e enviá-los um alvo NFQUEUE
. Nós iria escrever uma função de retorno de chamada que iria inspecionar os pacotes de NFQUEUE
, modificar os dados, conforme necessário, e recalcular as somas de verificação em seus cabeçalhos TCP e IP.
No entanto, o nosso caso de uso envolve a injeção de caracteres adicionais no fluxo de dados. Isto tem o efeito secundário um pouco óbvio de aumentar o número SEQ / ACK correspondentes no fluxo TCP, e o efeito secundário não tão óbvia de confundir o conntrack
módulo o suficiente para que ele quebra NAT inteiramente. Depois de um muito de pesquisa, de coçar a cabeça, e experimentação, a solução mais conveniente era para desabilitar o controle de conexão para estes pacotes particulares (com o alvo NOTRACK
na tabela de raw
) e manipulá-lo em nosso retorno. Salvar seus tomates e mensagens de ódio; Não estou nada orgulhoso de deixá-lo sob o capô, mas era a única maneira de obter um produto confiável para o cliente antes da próxima Era Glacial. E é uma história boa. Mas eu realmente aprecio, e compartilhar, seus sentimentos sentido.
Version 2 irá alavancar nossa nova iluminação, substituindo o nosso retorno e várias regras iptables
com um NAT personalizado e / ou conntrack
ajudante . Estamos confiantes de que o exercício atual nos deu experiência suficiente para criar um módulo do kernel que vai caber organicamente na arquitetura netfilter para resolver os problemas que encontramos.
Obrigado novamente por seu interesse e sugestões!
Solução
Eu não tê-lo usado, mas o alvo FILA netfilter parece que ele poderia funcionar. Ele usa um soquete nflink e um aplicativo de espaço do usuário registrado para o soquete para realizar as modificações de carga útil.
O href="http://linux.die.net/man/3/libipq" rel="noreferrer"> libipq página homem
Outras dicas
Resolução:
Nós acabamos com um módulo personalizado para netfilter, que é claramente a ferramenta "certa" para o trabalho.