AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-106246

MoonSweep's questions

Martin Hope
MoonSweep
Asked: 2018-05-06 08:26:02 +0800 CST

Módulo iptables conntrack: estado SNAT (ou DNAT) no lugar de ESTABLISHED/RELATED?

  • 4

Por um tempo agora (introduzido na versão 1.3, acredito), iptables' o módulo conntrack pode rastrear dois estados virtuais, SNAT e DNAT:

SNAT Um estado virtual, correspondendo se o endereço de origem original for diferente do destino de resposta. DNAT Um estado virtual, correspondendo se o destino original for diferente da fonte de resposta.

No meu roteador/host de firewall, tenho algumas regras para SNAT como esta:

# SNAT
iptables -t filter -A FORWARD -i $FROM_IFACE -o $TO_IFACE -s $FROM_IP -d $TO_IP -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i $TO_IFACE -o $FROM_IFACE -s $TO_IP -d $FROM_IP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $TO_IFACE -s $FROM_IP -d $TO_IP -j SNAT --to-source $SNAT_IP

# DNAT
iptables -t nat -A PREROUTING -i $FROM_IFACE -d $FROM_IP -p $PROTO --dport $PORT -j DNAT --to-destination $TO_IP
iptables -t filter -A FORWARD -i $FROM_IFACE -o $TO_IFACE -d $TO_IP -p $PROTO --dport $PORT -j ACCEPT
iptables -t filter -A FORWARD -i $TO_IFACE -o $FROM_IFACE -s $TO_IP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Depois de pesquisar bastante no Google, não consegui encontrar nenhum exemplo de iptablesregras usando esses "novos" SNATou DNATestados, mas tentei de qualquer maneira substituir ESTABLISHED,RELATEDpor SNATou DNAT, assim:

# SNAT
iptables -t filter -A FORWARD -i $FROM_IFACE -o $TO_IFACE -s $FROM_IP -d $TO_IP -m conntrack --ctstate NEW,SNAT -j ACCEPT
iptables -t filter -A FORWARD -i $TO_IFACE -o $FROM_IFACE -s $TO_IP -d $FROM_IP -m conntrack --ctstate SNAT -j ACCEPT
iptables -t nat -A POSTROUTING -o $TO_IFACE -s $FROM_IP -d $TO_IP -j SNAT --to-source $SNAT_IP

# DNAT
iptables -t nat -A PREROUTING -i $FROM_IFACE -d $FROM_IP -p $PROTO --dport $PORT -j DNAT --to-destination $TO_IP
iptables -t filter -A FORWARD -i $FROM_IFACE -o $TO_IFACE -d $TO_IP -p $PROTO --dport $PORT -j ACCEPT
iptables -t filter -A FORWARD -i $TO_IFACE -o $FROM_IFACE -s $TO_IP -m conntrack --ctstate DNAT -j ACCEPT

Pareceu funcionar , e esse método tem pelo menos um benefício que pude notar: meu firewall costumava descartar pacotes RST indo de meus hosts internos para a Internet (já que estão no INVALIDestado), mas com esse novo método, eles foram autorizados a passar .

Infelizmente, embora conveniente, não tenho certeza se esse método é realmente adequado, porque meu conhecimento teórico sobre redes não é suficiente para entender se é muito permissivo (ou seja, permitir que alguns pacotes indesejados de fora da minha LAN cheguem ao interior).

Acho que minha pergunta poderia ser formulada assim: um pacote pode ter o estado SNATor DNATsem ter o estado ESTABLISHEDor RELATED(exceto, obviamente, o primeiro que tem o NEWestado)?

Nota: Eu tentei logar tais pacotes, mas pelo que sei é impossível, pois iptablesaceita apenas uma --ctstateopção e !não pode ser usado dentro dela (ou seja, não posso dizer, ou pelo menos não consegui encontrar uma maneira de dizer, "registrar pacotes que têm SNATestado, mas não ESTABLISHEDou RELATEDestado"). Se houver um método alternativo para registrá-los em que não pensei, isso também seria muito bem-vindo.

EDIT 1: depois de algumas tentativas e erros, percebi que estava errado (daí o texto riscado): alguns pacotes ainda estão no estado INVALIDe, portanto, finalmente descartados.

EDIT 2: se usar SNAT/ DNATno lugar de ESTABLISH,RELATEDnão for seguro, forneça alguns exemplos concretos de casos em que os pacotes podem estar nesses estados anteriores sem estar nos últimos.

security iptables
  • 2 respostas
  • 5119 Views
Martin Hope
MoonSweep
Asked: 2018-04-10 13:36:46 +0800 CST

Adequa os valores de variável TERM para um console serial

  • 6

Para habilitar um console serial no Linux, usa-se getty(geralmente, sua variante agetty). Este binário recebe como argumento, entre outros, o valor com o qual inicializar a variável TERM .

No Debian, com Sys V init, o padrão era vt100 . Com systemd, o padrão costumava ser vt102 , e hoje em dia é vt220 .

Depois de brincar um pouco com máquinas virtuais QEMU e virt-viewer, além de virsh consolecomando, notei algumas coisas:

  • Com vt100 , ls --colorexibe cores, mas vimo realce de sintaxe não funciona
  • com vt102 ou vt220 , nenhum deles exibe cores
  • Somente com a variável TERM definida como linux , faça ambos lse vimuse cores

Portanto, acho que, independentemente do "suporte de cores" real, cada aplicativo analisa a variável TERM e age de acordo, o que explicaria as diferenças observadas acima.

Depois de ler o COMO FAZER do Console Serial , entendo que o valor da variável TERM deve depender do modelo real do terminal físico que seria conectado à porta serial, de acordo com suas capacidades.

Observe que, de acordo com o blog de Lennart Poettering , o TERM deve ser definido como linux apenas com terminais virtuais reais (em oposição aos seriais). Por outro lado, o Wiki do Arch Linux não parece se importar (veja as /etc/inittablinhas que ele propõe).

Então minhas perguntas são:

Em um caso geral, o que acontece se a variável TERM for definida como linux em um console conectado a um terminal menos capaz, como um DEC VT100, VT102 ou VT220, ou alguns emuladores de terminal de software RS-232 como minicomou termite?

Mais realisticamente (no meu caso particular), posso definir a variável TERM como linux em um console serial "virtual" em uma VM QEMU, à qual me conectarei por meio de virt-viewerou virsh console?

linux console
  • 1 respostas
  • 2131 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve