Eu tenho esta regra no meu iptables:
iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP
Eu realmente preciso de "-m tcp"? Eu já estou usando "-p tcp", então devo usar "-m tcp" para ser mais seguro?
Com a -p tcp
opção, o módulo tcp já está carregado e, portanto, é um pouco redundante e não é obrigatório usar a -m tcp
opção, e não vejo nenhuma razão para usar essa opção para tornar a regra mais segura.
Consulte a página de manual do iptables para uma melhor compreensão e comparação:
Protocolo -p, --protocol [!]
O protocolo da regra ou do pacote a ser verificado. O protocolo especificado pode ser tcp, udp, icmp ou all, ou pode ser um valor numérico, representando um desses protocolos ou um diferente. Um nome de protocolo de / etc / protocols também é permitido. UMA "!" argumento antes do protocolo inverte o teste. O número zero é equivalente a todos. O protocolo all corresponde a todos os protocolos e é considerado o padrão quando esta opção é omitida.
...
Extensões de correspondência
O iptables pode usar módulos estendidos de correspondência de pacotes. Eles são carregados de duas maneiras: implicitamente, quando -p ou --protocol é especificado, ou com as opções -m ou --match, seguidas pelo nome do módulo correspondente; depois disso, várias opções extras de linha de comando ficam disponíveis, dependendo do módulo específico. Você pode especificar vários módulos de correspondência estendida em uma linha e pode usar as opções -h ou --help após a especificação do módulo para receber ajuda específica para esse módulo.
E para obter uma lista das opções disponíveis, -p tcp
consulte aqui:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
Como mencionado acima, com o uso da -m
opção é possível adicionar módulos de extensão e mais opções correspondentes são disponibilizadas. Por exemplo, o módulo da CPU :
CPU
[!] - número da CPU
Combine a CPU com este pacote. As cpus são numeradas de 0 a NR_CPUS-1. Podem ser usadas em combinação com RPS (Remote Packet Steering) ou NICs de múltiplas filas para espalhar o tráfego de rede em diferentes filas.
Exemplo:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Disponível desde o Linux 2.6.36.
Lista completa de extensões de iptables.
Pergunta adicional do OP: Não entendo o que -m corresponde. Qual string? -m tcp corresponde a quê? Ele tenta encontrar a palavra "tcp" onde?
Resposta: -m
é para combinar o nome do módulo e não a string. Ao usar um módulo específico, você obtém certas opções para corresponder. Veja o exemplo do módulo da CPU acima. Com o -m tcp
módulo o tcp é carregado. O módulo tcp permite certas opções: --dport, --sport, --tcp-flags, --syn, --tcp-option
para usar nas regras do iptables. Mas o uso -p tcp
já habilita o módulo tcp, é por isso que ainda é possível usar essas opções mesmo sem o uso -m tcp
. Espero que isso limpe toda a sua confusão.
-m
opção é realmente usada para carregar,extension modules
que fornece opções extras. Veja minhas respostas atualizadas e o link, por exemplo.-m tcp
opção--dport
faz parte do módulo tcp e funcionará-p tcp
apenas com . Por favor, consulte a minha resposta novamente.