Transcrição do áudio
pacotes, IP tables e NF tables. Vamos dar uma olhada agora nos projetos da netfilter e como eles impactam na decisão sobre o que vai acontecer com os pacotes que passam pela rede. Então é com isso que nós, naturalmente, construímos faro ao gate e criamos regras. Primeiro, projeto netfilter, a iniciativa netfilter.org desenvolve softwares para o kernel Linux. Você não vai achar isso aqui para o Windows, que é lançado sobre os termos de licença do GNU, então você pode pôr no Linux. O Linux pode ser um Linux, por exemplo, de uma empresa. Na verdade, o Debian já vem com isso instalado, tá? Mas você poderia remover um projeto e por outro, por exemplo. Digamos que você tenha o IP tables lá no Debian 12 e você vir e falar, nossa, eu quero fazer com NF tables. Então você remove o pacote e adiciona o pacote com NF tables conforme o capítulo desse livro que você já leu, que é o capítulo de instalação de pacotes. Bom, vamos lá. No mundo netfilter, nós temos vários projetos, vários, tá? Ó, tem essa lista e essa lista de projetos. Nós vamos trabalhar com esses dois que estão em verde, que é o IP tables, o Debian 12 e o NF tables, Debian 13. Bom, vou explicar. Toda base mundial de conhecimento está ali em cima do Debian 12 com o IP tables. O Debian 13, ele é recente, então ele está adentrando e adentrando base de conhecimento no mundo. Mas o melhor ponto de partida para estudar NF tables é estudar IP tables. Uma das grandes reclamações que nós tínhamos no mundo do IP tables é que IP tables vinha preconfigurado, chumbado, não vinha chumbado, tá? É o cara que não sabia alterar. E realmente alterar era um inferno, inferno. Eu tenho dó da galera que já é do Runex. Runex é um Linux voltado ali ao Anonimato. Cara, tinha um arquivo lá com mais de mil regras IP tables, tudo customizada, cara. Esse cara sofreu para fazer isso. Bom, coleguinha, então, era difícil realmente. As IP tables, ele ventou do aberto. Sem contar que os IP tables também, ele já vem nativo IPv6, MbTables, entre outras módulos que lá no IP tables você tinha que ficar adicionando e que era muito comum adicionar. Hoje em dia trabalhar com IPv6 é muito comum. Então, NF tables, ele vem ali no meu ponto de vista com mais recurso por padrão, mas recurso por padrão. Não estou dizendo que IP tables não tenho recurso. Bom, então vamos estudar os dois e nessa sequência IP tables, NF tables. Vamos lá. Outra reclamação da galera. De outra reclamação da galera. Ah, que o IP tables vem com os nomes que eu não gostei. Eu queria o meu nome na minha vida. Tudo bem. E aí hoje nós vamos ver que a galera faz o contrário, segue o padrão IP tables lá dentro da NF tables de nomes. Que tristeza, né? A PT list, o que está instalado? WAP, NF tables. Então você verifica se está instalado NF tables assim. Então, se é o Debian e não tem NF tables instalados, pode ser obrigatoriamente PT tables. Nem precisa consultar, tá? Legal. Lembre-se, Kernel é uma área da memória, tá? Uma área da memória do sistema. Qualquer programa do usuário tá no espaço da memória do usuário, é chamado de user space. User space, ele tá falando da área da memória que ficam os processos dos usuários. Eu não traduzi esse nome do projeto oficial deles para português, porque é uma palavra reservada. Beleza? Então, o projeto IP tables e NF tables permitem então a filtragem, por exemplo, de pacote. Tradução de endereços, mudar endereços para mudar rotas, né? E naturalmente também portas de rede. Fazer registros em filaramento de pacotes lá no espaço do usuário, o que seria muito difícil. Por quê? Os eventos do Kernel, eles acontecem no espaço do Kernel, ou seja, no espaço de memória do sistema opressional. Só que são invocadas requisições para a validação para a camada do usuário. Se você ler o livro do TANIBODE e se temos operacionais modernos, ele não fala que o trâmite de fazer requisição de top-down é tão complexo, mas ele fala que é complexo, né? É o trâmite de requisições de dao para top, ou seja, quando eu tô falando do espaço, um processo no espaço do Kernel, passando informações para um processo do espaço do usuário. Então, ele não fala muito bem sobre isso, mas temos que ter essa visão porque, a questão de segurança, inclusive, né? Então, saiba que IP tables, ele tem vulnerabilidade, que ele roda no espaço do usuário e aí tem n fatores sobre isso aí. Eles utilizam uma coisa que tem no Kernel do Linux. O que é que tem no Kernel do Linux? Também tem no Windows. Um negócio chamado cadeia de eventos, corrente de eventos, vai depender do livro. Eu costumo dizer que é uma cadeia de eventos que acontece. Então, por exemplo, imagine que chega um pacote do seu DVD da Shakira, você tá recebendo o DVD da Shakira na sua casa, chegou um pacote e aí ele vai subir por toda a pilha do modelo OZ, lógico. Na prática, usamos o modelo TCP barri P. Tô falando da teoria, modelo OZ, né? Isso. Ele vem subindo. Naquilo que ele vem subindo, é possível lançar alguns eventos em alguns momentos da transmissão e é possível também em alguns momentos da comunicação passando. E esses eventos do sistema podem ser interceptados. Ou seja, você poderia fazer um programa em CESI mais mais, acessar esses hooks do sistema e, naturalmente, lógico, as devidas permissões interceptar. Quando você intercepta um evento, você pode agir sobre o evento. Então, você poderia simplesmente parar o evento, ou seja, parar o trânsito daquele pacote, você pode permitir. Então, dá pra se trabalhar a ação sobre o evento. E isso é legal. Os caras sabendo disso fizeram IPTables, lógico. Por exemplo, tem um evento do sistema operacional chamado NFIP Prerogating. Esse evento do sistema operacional que tá na cadeia de eventos do hook deles lá, ele é acionado quando algo, ou seja, quando o pacote do DVD da Shakira chega na placa de rede. Tá zoando você. Eu não podia dar uma aula assim pra fazer uma piada, né? Então, o pacotinho tá chegando na placa de rede, vai ter um evento chamado Prerogating. Ou seja, eu poderia ali mudar as coisas. Tem, por exemplo, um evento que, digamos que um pacote está entrando para processamento. Então, digamos assim, imagine que você tem um RSQL e tem um pacote que tá indo para o RSQL. Ele já passou pelo Prerogating, por exemplo, entrou no processamento interno, já foi chamado Schedule e aí já tá indo pro processo que vai assumir aquela requisição. Então, você poderia, por exemplo, dependendo da origem, bloquear a conexão para uma RSQL, por exemplo, utilizando esse evento. E P4W, isso aqui, esse evento ocorre quando um pacote tá trocando de placa de rede. Então, se você tem um pacote que tá trocando de placa de rede, nesse momento vai acontecer um evento no sistema opressional chamado NFP4W. Então, você pode capturar essa mudança de placa. Beleza? Output. Imagine que o seu manhã SQL recebeu a requisição que você deixou. Então, quando o seu manhã SQL for responder, ele vai passar por um evento chamado local output, que tá saindo, tá saindo de um processo da sua máquina, que é sua máquina, tá nessa máquina. E você também tem o POSRouting. Imagina assim que uma mensagem tá saindo da sua máquina e indo para rede mundial ou para redes local, não importa. Tá saindo da máquina, tá lá na placa de rede, tá pra sair. Adivinha? Tem um evento e a gente pode brincar com ele. Então, eu mapei, eu sou muito bom de desenho, né cara. Eu acho que do meu livro, esse aqui eu acho que é o desenho mais caprichado que eu tenho. Só pra vocês saberem, eu peguei, né, fui mandar o meu material para uma empresa de tradução para traduzir o meu material para inglês, para dar material de graça para todo mundo inglês. Beleza? Aí olha só, os caras queriam 16 mil, aí eu reclamei, pouca 16 mil. Eles falaram que ia gastar 4 mil para fazer a correção autográfica e se eu pudesse arrumar as imagens, senão ia sair mais caro. Não, não, não, deixa eu por lá. Eu gosto das imagens, eu mandei uma mensagem assim de resposta, deixa eu por lá, eu gosto das imagens como elas estão. Aí logo em seguida, eu comecei a refazer as imagens, né, porque eu senti a crítica. Então conforme eu falei, tá chegando algo aqui pela placa de rede, bate num evento chamado pre-roaching, certo? Depois pode ter ou não o roteamento do sistema operacional, que é uma decisão do sistema operacional. Bom, digamos que ele não roteou, tá? Ou seja, a mensagem que chegou pela placa de rede era para tipo uma inesquela que estava naquela máquina. Então passa pelo local in, evento local in e entra no processo mais que ele, por exemplo. Agora vamos voltar lá, então pre-roaching chegou. Digamos que há o roteamento, ou seja, não é para essa máquina. Então se não é para essa máquina, ele vai passar para o evento for horte. Esse cara aqui, aqui, por exemplo, nós vamos usar para decidir se vamos deixar ou não. Imagina, se aqui eu bloqueio, acabou, não tem a conexão, acabou. Mas digamos que passou, então, ele vai para o post-roaching, na saída da placa de rede, ele vai para uma saída de placa de rede. Que pode ser a mesma placa de rede, aqui eu coloquei duas, né, na imagem, poderia ser a mesma, cara, poderia ser a mesma placa de rede. Poderiam ser uma placa de rede diferente ou a mesma placa de rede, os dois desenhos aqui. E se está saindo do meu processo, se está saindo do meu processo, ele naturalmente não será roteado, está indo embora. Aí ele passaria para o local hought, put, passaria pelo post-roaching, iria para a placa de rede como resposta, tá? Então eu coloquei baseado na passagem, na chegada e na saída de pacotes, esses três casos. Os eventos e como os eventos são acionados para cada pacotinho do DVD da Shakira. Quantos pacotinhos tem o DVD da Shakira? Vamos lá, meu coleguinha. Número de música, eu não sei, mas funciona mais ou menos assim, tá? Vai ser feito porções de 512 bits nas camadas mais altas. Então tem noção, né? Acho que tem 4.7 giga. Vamos lá, que seria o máximo do DVD. Tô assumindo isso. Vamos ver um exemplo. Na verdade, vamos ver o exemplo e vamos discutir como estão organizadas as regras dentro desse negócio de P-Tables. Cara, isso aqui é válido para P-Tables. Isso aqui também é válido para NF-Tables. Já falei, P-Tables é aplicado lá em NF-Tables. Então vamos lá. Traço T, Table NAT. Então nós temos, os caras decidiram organizar princípio em três tabelas. NAT, Filter e Mangle, tá? Legal. Então, nesse exemplo de comando, ele está dizendo, a Table é a Table NAT. Dentro da Table NAT, você vai colocar, apendar em uma chain chamada Pre-Routing. NAT chain Pre-Routing, para o caso de entrada C pela interface de rede 1, TCP, Deport 80. Ou seja, aqui vem a regra de filtro. Essa aqui é a regra de filtro. O amarelo e o azul é a regra de filtro. E aqui em branco está a ação que será executada, tá? Então quer dizer que eles pensaram no seguinte, tenho várias T-Balls. Já falei que tem três T-Balls. Cada Table tem mais de uma chain, mais uma cadeia. E cada chain pode ter zero ou muitas regras, tá? Então poderia ter várias regras aqui. Tem que ser satisfeito. Se não for satisfeita, ou seja, imagine que está sendo passado por essa porta, não o TCP, mas o DP. Então essa regra não seria válida. Não seria válido. Então se fosse, digamos, um pacote, o DP não seria válido. Passaria por todas as regras e nada seria válido. Então ele executaria o que eles chamam de Default Polly, que não é colocado aqui. Default Polly, se é a regra padrão, a gente decide o que faz. Por padrão, a regra padrão é permitir passagem, permite entrada e permite saída. Por padrão. Tudo bem? Porque senão o Linux nem se conecta para atualizar, nem instala. Então tem que deixar mesmo. Depois você entra e customiza. Então quer dizer que inverte a Table, aqui em vermelho que eu coloquei a chain, e amarelo mais azul é a regra. Em branco é o que vai ser executado. Legal. Então vamos lá. As Tables Filter, que nós utilizamos para filtrar o tráfico. Ou seja, deixar passar ou negar. Tem muitas formas de se negar. Negar do tipo. Eu nego, mas não reporto. Eu nego, mas eu reporto. A regra padrão é não reportar. NAT. É usado para direcionamento, redirecionar coisas. Então chega até a máquina, ele pode fazer um redirecionamento para outra máquina, e NAT. Ele pode fazer um redirecionamento para outra máquina. Naturalmente, um outro, outra porta de processo. Deu necessariamente a mesma porta que entrou. Eu posso fazer um redirecionamento até interno, entre processos da minha própria máquina. Que eu estou. E a Mangle é utilizada para fazer algumas alterações, umas contagens, uns blogs. Porque é executado antes de qualquer coisa. Já vou mostrar isso para vocês. Legal. Então vamos lá. Prerouting. Aí, lógico que a NAT Filter não vai fazer o seguinte. Eu vou criar uma chain chamada NFP Prerouting. Esses caras vão criar um nome mais humano. Prerouting. Que significa NFP Prerouting, basicamente. Input, que é o local IN. Forward, que é o NFP. E para que eles foram criando vários nomes mais humanos, para os americanos, lógico, para nós não. Mas eu concordo que é mais humano. Porque ele monta de underline ali. Prerouting, input, forward, post-rotting e output. Só as 5 chains. 5 chains que nós vamos localizar, associada aos 5 eventos que podemos ter. Um nome um pouco mais bonitinho. Por exemplo, Prerouting, que naturalmente podemos manipular objetos, no caso envelopes ou pacotes. Que está chegando na placa de rede, conforme mostrei no desenho dos eventos. Aqui são eventos. O que a NAT Filter fez? Trocou esses nomes. Novamente, post-rotting está saindo da placa de rede. Output, saindo de um processo. Input. Falta o resto. Input. Entrando no processo e forward, passando de uma placa de rede para outra. Faltou ali um slide. Pode ser que eu tenha até movimentado errado. Não, eu faltou mesmo. Vamos ver alguns exemplos aqui. Eu coloquei as 3 chains da NAT. Ou seja, a NAT só tem as seguintes chains. Prerouting, post-rotting e output de processo. Ok? Tá. IpTable, stra. t, ou seja, Table NAT. Eu vou apendar no final, não vou inserir no início. Eu vou apendar no final da lista de regras. A seguinte regra. Tudo que entrar por eth1, ForteCP, está indo para algum processo que atende na porta 80. Eu vou mudar para tal endereço. Então, repare que essa regra está redirecionando uma comunicação. Essa é uma regra de redirecionamento para outra máquina, outra porta. Veja. Chegou pela porta 80, indo para porta 80. E mais ele vai ser redirecionado para 8080 de uma outra máquina. Essa regra está sendo colocada aqui, nesse evento do Prerouting, chegando na placa de rede. Legal. Agora vamos lá. Vamos falar aqui de IpTables. Table NAT, post-rotting, ou seja, novamente, agora em outra chain da Table NAT. Agora, nessa saída aqui, aqui, ele está criando a seguinte regra. Post-rotting, que a Out, I, de entrada, Output, Output, saída, ENP0S8. Eu vou fazer um masquerade. Então, quer dizer que eu vou mascarar tudo que sair pela porta 80. Então, vamos lá. Lembra do guarda-chuva que eu falei para vocês? Usamos a técnica de guarda-chuva para que um espião aqui não consiga enxergar lá dentro. Então, quer dizer que toda carta que passa pela interface aqui vermelha, indo para lá, indo para lá. Aqui, nesse ponto vermelho, no post-rotting, vai ser feita essa regra aqui. Ela vai acontecer e vai mascarar. Quer dizer que toda comunicação vindo daqui com os IPs daqui, quando passar aqui, os IPs serão alterados para o IP da placa que está em vermelho aí, nessa imagem. Então, o espião não enxerga. Essa é a técnica que utilizamos para esconder detalhes da infraestrutura, como se fosse aqueles guarda-chuvas ali que você não sabe dizer o que tem ali de baixo, o que está acontecendo ali de baixo. Nesse exemplo, a IP Table está sendo utilizada para fazer um redirecionamento de uma porta interna para outra porta interna na própria máquina. Repare que o destino aqui não tem bem um... Opa, foi mal. Não tem um endereço IP. Por exemplo, olha só, aqui nós temos um endereço IP, o 929813, uma máquina dentro da infraestrutura. Dois pontos, processo que está respondendo pela porta 8080. Aqui não, olha só. Subintende-se que é a máquina local. Esse redirecionamento então ele é só de portas. Então, na Table, na ACH, na Chamber, na Interface de entrada, ENP-SR-S3, protocolo UDP, é TESCP, que a porta foi 80, eu vou redirecionar internamente para 31-28. E esse exemplo nós usamos aonde? Nós utilizamos isso na aula de proxy. Nós vamos ver que é uma coisa que eu não gosto. Você vai me ver reclamando essa regra. Calma aí. A Table Filter, então, ela é quem permite ou nega a passagem, certo? Lembrando que se não tem regra nenhuma, segue-se a política padrão. Então, vamos lá. Função da Table Filter é restringir ou permitir a passagem de fluxo. Beleza. Então, está na placa de rede, passa pela input para entrar num processo na própria máquina, nela mesma. Vamos imaginar agora que eu estou retransmitindo de uma placa de rede para outra. Eu tenho duas placas de rede. Chega numa placa de rede, passa pelo roteamento interno, passa pela 4-Word e sai. Então, pela outra placa de rede. É uma outra forma de você utilizar a Filter para analisar a passagem. Então, analisem a entrada, analisem a passagem. E digamos que agora você tem um processo que está dando a resposta. Então, já chegou a requisição. Então, quando ele está dando a resposta, passa pela chain Output, seguido da Network Interface. Então, repare que tem tanta entrada, como saída e passagem. Basicamente, nós trabalhamos com essas três necessidades. Vamos lá. Input, filter de entrada, Output, saída conforme mostrei e 4-Word, passagem conforme mostrei. Então, agora vamos fazer um exemplo um pouco mais complexo. Olha, eu falei para você das chains da Filter. Eu falei para você das chains da NAT. Todas essas chains e essas tables estão lá. A mensagem passa por todas as chains de todas as tables. Entendeu? Não é seletivo. Então, é natural colocar em verde quais são as chains da NAT, da Tabulática. E coloquei em amarelo quais são as chains da Filter utilizados aonde. Quando eu tenho a seguinte necessidade, a comunicação chega por uma placa de rede. E está indo para outra placa de rede. Então, vamos lá. IPTables, T NAT, T NAT, T NAT, T NAT, Chain, Prerebooting, na chegada aqui. Certo? Vai ter uma regra. Se chegar pela placa de rede ENP0S3, FOPOT e CP, porta 80, eu vou mandar para uma máquina que está ligada na Network 1. A máquina que está ligada na Network 1 tem um enderecipio 9.2.1.8.202, porta 80. Legal. Então, essa regra aqui na Prerebooting vai garantir que seja feito esse redirecionamento. Na verdade, iniciado esse redirecionamento. O Linux tem que ser atualizado um arquivo lá, permitindo que a comunicação passe. É o Linux, não é a questão das chains. Então, ele passa pela filter da forward. Vamos lá. IPTables, T filter, forward, passagem, apendar, lógico, TCP. Que o destino for a máquina 9.2.1.8.202. Aqui no caso, eu nem olhei a porta. Eu falei, o destino é a dois. ETCP, porta 80, manda, deixa passar, accepta. Manda e é o outro. Esse aqui é o ACEP, deixa passar. E aí ele deixa passar. Não tem nenhuma regra para post-roaching, então ele vai embora. Cai na Network 1 e chega na máquina 9.2.1.8.202. Repare que aqui foi o uso de várias chains, de mais de uma table para permitir a passagem. Agora, digamos que eu tenho alguém aqui que está tentando se conectar no seu MySQL, nessa mesma máquina, nessa mesma máquina. Aqui está seu MySQL. Ou seja, não é para ser redirecionado nada. É só aceitar ou não. Eu passo pela pre-roaching da NAT, não faço nada. Eu passo pela chain input da Table Filter e aí eu tenho alguma coisa para fazer assim. IPTables, a Table Filter, na Chain Input, na entrada ENP0S3, protocolo TCP, porta 22 eu vou aceitar. No caso ali não é mais QL, porta 22 SSH. Então ele entra. O SSH responde. Vamos lá. Resposta. O SSH responde para a placa de rede. Vamos lá. IPTables Filter, a Table Filter, na Chain Output de saída a resposta. A saída foi essa placa de rede aqui, que é a mesma que entrou. A mesma que entrou e a mesma que vai sair. Que for TCP, porta 22 eu vou aceitar. Então ele vai permitir essa passagem e no POSRoute não vou fazer nada. Foi, tchau. Para. Na sua máquina, conforme o capítulo 8 de redes, lembrando que esses números podem mudar, porque eu sempre adiciono novos capítulos, você tem também as duas placas, a placa de rede chamada Loopback, responsável pelo endereço 727.0.0.1. Também conhecido como Local Host. A placa de rede Loopback, imagine que você tem um Apache Tonket com Java se conectando no MySQL. Então você tem que colocar uma regra aqui e uma regra aqui. Porque na mesma máquina, requisição da mesma máquina para aquela máquina, geralmente nós não fazemos assim, por porta, por IP, por porta, por processo, por protocolo. Geralmente nós permitimos o Loopback. Então IPTables, Filter, Table, na Champut, que é entrada Loopback, eu vou aceitar. Independente de CTCP ou DP, se dependente de porta 80, porta 8080, porta 22, ou seja, internamente eu estou deixando. Porque a máquina tem inúmeros processos que conversam com outros processos usando uma pilha de protocolos de rede. Então você tem que deixar. E o Output, L-O, você vai permitir. Bom, por que isso? Porque depois você vai dropar tudo. Se você dropar tudo sem colocar as regras do Loopback, os seus programas não vão funcionar e tudo vai crescer na sua máquina. Tudo vai crescer na sua máquina. Então aqui tem a regra de redirecionamento, aqui tem a regra de permitir entrar e sair da porta 22 para a manutenção da máquina. Aqui tem os processos locais, podendo falar com os processos locais, depois, meu, dropa todo o resto, não quero saber. Sempre assim, adiciono que eu permito e nego todo o resto. Adiciono que permito e nego todo o resto. Sempre assim. Tem gente que fica assim, ah não. Eu vou criar as regras do que eu não permito. Cara, quem é você? Quem seria eu para localizar tudo que não pode? Não tem como? Por isso que você coloca as regras do que pode e nega todo o resto. Pronto. Ah, vai bater um bilhão de gente aqui nessa porta pedindo coisa. Porque as regras não vão satisfazer o que eles vão querer. Tudo bem, eu vou atender. Melhor que bater o quê? Bater a auditoria aqui e me ferrar. Porque fomos invadidos, porque fomos roubados, porque a empresa está quebrando, porque você cagou nas regras. Simples assim. Bom, sempre no início dos scripts que criam as regras, você pode fazer isso aí, tá? Você pode criar ali um IPTables, filter, FX para poder limpar da memória. E limpar de execução. A filter inteira. Tudo que está acontecendo. Depois você faz a regra. Porque se você fizer essas regras aqui, executar uma vez, executar duas vezes, executar três vezes o script, vai criando, vai criando, vai criando. Entende? Então você limpa e cria. Coloca no mesmo script, por favor. Cara, olha isso aqui. Isso aqui é muito útil, cara. Principalmente para gateways. Configuração de gateway. Principalmente ali para defesa. De qual rede pode iniciar a conexão com qual rede? Qual rede pode iniciar o flag sim e o RST com qual rede? Então vamos lá. Seria essa regra aqui. Então você coloca ali IPTables, input. Por que não tem a table aqui? Porque é a filter. A filter pode ser negada a adicionar aqui. Falei a palavra errada. Negada não. Eu posso não colocar. Ele entende impriscidamente que é a filter. Protocolo TCP com esse flag sim RST. Aqui estou dropando. E obrigatoriamente tem que ter lá. O sim e o RST. Tem que estar lá. No protocolo. No caso, no pacote. Eu vou dropar. E aí falta colocar o que? Lembra que vocês viram aqui. Que chegar da placa de rede. Que chegar da placa de rede e NP0S3. Que estiver indo para a NP0S8. Que for um sim RST. Você pode ir somando essas regras, coleguinha. Então você permite a conexão de um lado com outro lado, mas nega a conexão de um lado para outro lado. Simples. Dá para fazer várias regras com isso. Entende? Legal. Você pode usar todos os flags. É o primeiro parâmetro. Que bater na regra. Que coincidir. E aqui que tem que verificar se está lá. Obrigatória verificação. Tem que coincidir. Tudo. Tem que verificar tudo. É isso que ele quer dizer. Aqui as flags fim, o org puxa. Tem que estar lá no protocolo para satisfazer. E você obrigatoriamente tem que ter no protocolo. Não pode faltar. O fim, o org e o PST. Se não, não entra. Na regra. Isso aqui é o módulo chamado TCP flags. Do IP Tables. No caso do NF Tables, não tem isso. Principal tables e chains. Quais são os principais tables e chains? Do IP Tables. Agora fiz uma mudança. A chain está dentro da Table. Só que natural que, por exemplo, Output, você tem na TableMangle. Output você tem na Arte. Output você tem na Filter. Qual que é executado primeiro? Sim, ele vai bater uns três. Então, digamos que tem um processo local. E do processo local está saindo. Vai executar o Output da Mangle. O Output da Arte. Depois o Output da Filter. Aí vai sair. Aí vai passar pela POSWOLT da Mangle. POSWOLT da Arte. E vai sair pela Placa de Rede. Repare que a visão, eu inverti. Quem está dentro do que? Só para você enxergar. Está chegando de uma Placa de Rede. E saindo por outra Placa de Rede. Então, eu chegue aqui, Network. Passa pela Prerooting da Mangle. Passa pela Prerooting da Arte. Vai passar pela Foward da Mangle. Foward da Filter. E logo em seguida, POSWOLT da Mangle. E POSWOLT da Arte. E sai. Repare que a Mangle sempre está na frente. Então, nós utilizamos a Mangle para fazer uma alteração muito customizada. No protocolo. Na informação dentro do protocolo. Como um contador. Como flegar um campo. Às vezes nós usamos a Mangle como um contador. Um contador. Também é possível. Então, já coloquei para você que já no esquema. Beleza? Pacote NF Tables. 2014 mais Linux de 2026 que vai ser. Utilizado ali o NF Tables como padrão. 12 anos aí. Para ser utilizado como padrão no Debian. Porque o cara o IPTables é estável para caramba. É bom para caramba. Poucas vulnerabilidades e show de bola. Então, é natural que muita gente tem medo. De sair de algo tão estável para algo novo. Então, demorou-se 12 anos mesmo. Para substituir NF Tables. Ptables do mundo. Netfilter. Pacote NF Tables vem para substituir tudo. E eles, por exemplo, aqui você teve que importar o módulo. TCP. Lá na NF Tables tem um parâmetro chamado NIL. O NIL já garante que você está verificando. O SIN. O SIN acnulad. Por exemplo. Então, nós sabemos. De uma forma muito mais simples. É como se a NF Tables tivesse todos aqueles módulos que nós sempre adicionamos na IPTables. Que sempre temos que adicionar na IPTables. Sempre. Comando, é assim, NF Tables. Sigue do de um comando interno do NF Tables. Sigue do de um subcomando interno do NF Tables. A chain e a rule. A regra. Vamos lá. Comando. Delete. Delete e flush. Então, nós podemos usar isso aqui. O comando. Legal. Subcomando. Table, chain, rule. Regra. Então, vamos lá. Aqui. Table. NF Tables. NF Tables. List. Ah, legal. O que eu posso fazer? Acept que o aceito pacote. Tá? E mantém o processamento. Continua. Ah, não, desculpe. Interrompe o processamento. Já validou. O continue. Aceito o pacote. Continua o processamento. O drop interrompe. Não informa para quem mandou o pacote que foi dropado. Goutu, ele envia. Você consegue fazer um salto nas tabelas. Olha o poder do NF Tables. Consegue fazer um salto de processamento. Por uma cadeia muito especificada. Você pode criar uma cadeia do zero. Mas, não retorna para onde estava quando você saltou. Você salta e continua para lá. Jump. Você salta. Para outra cadeia. Aqui eu mostrei uma cadeia. Não mostrei uma cadeia? NF Tables, você cria as cadeias. Então, você consegue saltar para a cadeia. Jump. E quando eu termina lá, ele volta para onde parou. Na cadeia que deu jump. Limite. Processa o pacote. De acordo com regras. De limite de tamanho. De tempo. Vários limites. Logo. Interrompe o processamento e envia o pacote para o processo do espaço do usuário. Para algum programa. Tipo um fire ou de usuário. Um programa, de log. Reject. Ele interrompe o processamento e rejeita o pacote. Mas, ele informa. E, retorno. Ele envia o processamento de volta para a cadeia de chamada. Então, eu imagino que um processo, o Jumpy mandou para que está a cadeia, você vai lá, começa a processar as chains dele lá, aí você tem um retâneo, ele volta para onde parou aqui, aonde você mandou para o Jumpy, fez o comando Jumpy, é isso? Sobre o que eu posso aplicar? Você pode aplicar sobre a interface de rede, por índice ou por name, você pode aplicar sobre o tipo de protocolo, pacote que está passando, sobre o tamanho em bytes, por alguma marcação que foi feito, você pode marcar alguns campos do protocolo, alguns campos, então por exemplo, você conseguiria depois verificar se aquele campo já foi marcado e aí fazer alguma coisa, como um Jumpy para outra cadeia de tratamento. Para de rede de saída ou e tanto por índice como por nome, você pode analisar a prioridade do pacote, principalmente com relação a congestionamento, protocol, intertype, lá na camada 2 do modelose, prototype. Então vamos a uns exemplos aqui, primeira coisa, você começa em campo vazio, ou seja, na IPTables você tem tudo criado, na NFTables não, então está na hora de você criar a Table, primeira coisa, NFT comanda dd, subcomando Table, filter, então estou adicionando uma Table chamada Filter, por mais poderia ser filtro, poderia ser meu filtrinho, poderia ser minha regrinha de parar isso aqui, de para joguinho, então zoando, é a galera por falta de criatividade, mantém os mesmos nomes, não estou brincando. NFT add chain sobre IPv4, Inet IPv4, IPv6, IPv6, IPv6 somente, então estou lá criando uma chain do tipo IPv4 para a nossa filter que acabamos de criar e essa chain vai se chamar input, por mais de novo, mesmo nome semelhante que já existia, é exatamente. Tipo de Hooked Filter, input, prioridade zero, número pode ser menos negativo, pode ser igual a zero, positivo, lá para cima tipo 100, o que a galera faz? Para você recriar isso aqui, eles colocariam aqui a prioridade menos 100, aqui na Mangle, colocaria prioridade zero e prioridade 100, é como os caras fazem, entendeu o que é prioridade ali, é, criou a chain, então vamos lá, por exemplo, de como criar, nós já fizemos esse exemplo, quer dizer, nós usamos esse exemplo porque já estava pronto, nós criamos aqui a NAT e a filter, criamos o pre-revolting e o forward apenas, beleza, Inet, então IPv4 e IPv6 e foi dada as prioridades, logo em seguida vamos criar duas regras, a primeira regra é a pre-revolting de passagem, lembra você já fez ela, só que você usou o 9208 e o 202 aqui, lembra? Volta aí que você vai achar, NFTable, ADDRULLE e IPv6 e IPv4, não precisaria, poder ser apenas IP, por IPv4, na table NAT, na chain pre-revolting, na interface de rede de entrada, ENP0, RS3, protocolo FOTCP e a porta de destino for Porto 80, eu vou fazer o fio de destino chamado D NAT, D NAT significa destination NAT, eu chamo de desvio de destino, protocolo IP, IPv4 para o 9208-205 Porto 80, beleza? Segunda regra que é a permissão da forward, NFT, ADDRULLE e NAT, filter for forward, interface de rede NP0 e RS3 indo para interface de rede ENP0 e RS8, o protocolo naturalmente é IPv4 destino 9208-205, TCP de porto 80 aceitar, 8080 aceitar, que é muito parecido com isso aqui, é exatamente isso aqui, só mudei o IP, que vacilo meu para esse negócio não ficar exatamente igual, aqui, lá eu coloquei um 5 aqui, vacilo, essas duas regras em Ptables é assim em NFTables, que assim, entenderam? Só que a vantagem que aqui eu consigo trabalhar com outras camadas por padrão dentro do NFTables e também uma NFTables, tá? Eu criou todas as chains como eu quero, aqui é um POSVOLTING, você fez o mascareide, volta para trás e você vai encontrar o mascareide, você teve que adicionar a T-Ball NAT, depois na T-Ball NAT, você teve que adicionar uma chain chamado POSVOLTING com prioridade 100, depois você foi lá e criou assim a the the rule inet, PIVA4PV6 NAT, POSVOLTING que é interface de saída for ENP0S3 e for mascareide, então você faz o mascaramento da porta chamado DS NAT, tem um exemplo lá como fazer PV6, ha coleguinha, vamos para a aula prática de roteamento, firewall e gateway, agora que vocês mandam tudo vai ser show de bola, até mais, tchau