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 / computer / Perguntas / 1878512
Accepted
John
John
Asked: 2025-02-13 00:22:05 +0800 CST2025-02-13 00:22:05 +0800 CST 2025-02-13 00:22:05 +0800 CST

Como verificar/inspecionar conexões de rede de saída no Linux para garantir que o conteúdo e as senhas estejam realmente criptografados?

  • 772
Esta pergunta foi migrada do Information Security Stack Exchange porque pode ser respondida no Super User. Migrada há 2 dias .

Fundo

Sou um desenvolvedor web tentando garantir que as conexões IMAP de saída sejam feitas com segurança . Infelizmente, estou preso usando a extensão IMAP do PHP (por enquanto). A documentação para imap_open() é... insuficiente. Exemplos:

  • A ordem dos sinalizadores para o mailboxparâmetro é aparentemente importante o suficiente para sabotar strings não compatíveis, mas não o suficiente para documentar.
  • Aparentemente, a /sslbandeira usa TLS.
  • A /tslbandeira não funciona.
  • A /securebandeira resulta em Can't do secure authentication with this server.

Essa última questão é meu foco de caso de uso. A documentação implica que se o /securesinalizador não for definido, a senha será enviada como texto simples! (A menos que isso seja algo como criptografar a string apesar da conexão em si talvez já estar criptografada?) Se for, então não importa se todo o resto estiver criptografado, porque qualquer invasor pode simplesmente se virar e usar as credenciais que acabou de encontrar. Não, não estamos falando sobre autenticação de dois fatores, pois isso evita explicitamente esse tópico e é uma desculpa para enfraquecer o reforço da autenticação base.

Isso funciona: {mail.example.com:993/ssl/imap}.

Isso não funciona: {mail.example.com:993/ssl/imap/secure}.

Existem muito poucas páginas que os mecanismos de busca retornam com o erro Can't do secure authentication with this server, e isso implica no que vejo a maioria das pessoas fazendo: copiar e colar o código às cegas, fazendo apenas pequenas modificações e então presumindo que, porque funciona, a implementação está correta.

No entanto, insisto em verificar a aparência. Isso me leva a lembrar do programa Fiddler no Windows no final dos anos 2000, quando a Microsoft estava voltando a trabalhar no Internet Explorer. Você podia inspecionar todos os tipos de coisas sobre cada conexão de rede.

Ambiente do servidor

  • Tenho cPanel e CloudLinux.
  • Tenho acesso root.
  • Já dei uma olhada em outros tópicos; meu servidor tem tsharke tcpdumpinstalou.
  • Ficarei feliz em instalar outro programa se isso facilitar minha vida aqui.
  • Os cabeçalhos das mensagens de e-mail sugerem o uso de uma conexão TLS 1.2, mas não sei se esse é meu servidor de envio ou o servidor de recebimento.
  • Meu servidor está configurado para TLS 1.2 e 1.3 pelo menos em 443; 1.1, 1.0 e SSL estão desabilitados em 443.
  • O protocolo SSL está desabilitado em 443 e 993, embora eu ainda não tenha descoberto como desabilitar o TLS 1.0 e 1.1 na porta 993 (fora do tópico, apenas esclarecendo que pelo menos estou ciente das coisas).

Condições de teste

Estou intencionalmente tentando testar as condições de teste, caso contrário não verei nenhum contraste e, portanto, não aprenderei nada. As instruções do e-mail de e para:

  • De example1.com para example1.com (nunca saindo do servidor).
  • De example1.com para example2.com (domínio diferente, mas ainda sem sair do servidor).
  • De example1.com para differentserver.com (para sair intencionalmente do servidor).
  • Quero evitar usar o /novalidate-certsinalizador que parece funcionar bem para solicitações de servidor para o mesmo servidor.

Intenção de Interpretação

Sim, a porta 993 deve ser criptografada, novamente, o ponto principal é verificar o que está acontecendo em vez de usar confiança cega. Idealmente, eu gostaria de fazer uma solicitação de texto simples explicitamente para contrastar uma solicitação criptografada. Obviamente, o contraste seria que com um programa sniffer eu seria capaz de ver a solicitação de texto simples como, bem, texto simples! Então, o exemplo criptografado eu esperaria basicamente apenas dados binários confusos. Se eu puder verificar que as solicitações são aquelas que estou interpretando, então tenho a verificação que estou procurando! Contanto que eu possa repetir esse processo de verificação, então essa é minha resposta! O mais importante é que as credenciais sejam criptografadas, o que eu esperaria depois que os dois servidores tivessem seu "handshake"?

Aspectos técnicos do farejador

Não sou um cara de servidores ou Linux, embora eu consiga me virar no terminal. Então, espero ajuda especificamente com os programas sniffer, por favor:

  • Qual programa sniffer devo usar para poder inspecionar o conteúdo (não apenas os cabeçalhos) das solicitações de rede?
  • Se forem aplicáveis : ambos tsharke tcpdumpparecem ser programas de cauda; como limito sua saída à porta 993?
  • Se muitas coisas estão acontecendo na porta 993 (servidor de uso mínimo, mas ainda assim), como posso reduzir ainda mais a saída para poder encontrar as solicitações que estou fazendo?
  • Se aplicável, como posso esclarecer cabeçalhos, conteúdo ou ambos para ter uma ideia do que estou vendo?
  • Qual é uma maneira simples/fácil de enviar uma solicitação de texto simples (em qualquer contexto) que eu possa usar para contrastar as solicitações (espero) criptografadas da porta 993?

A questão

Como posso inspecionar o tráfego de rede no meu servidor Linux ativo a partir do terminal como root para verificar se as solicitações do meu foco estão realmente criptografadas?

Com efeito aqui no Windows, eu poderia usar o Notepad++ para "inspecionar" um arquivo de texto e lê-lo normalmente. Se eu abrir uma imagem raster, veria os dados binários. Quero garantir que as credenciais estejam realmente sendo criptografadas, apesar da documentação confusa da imap_open()função do PHP.

A resposta

Um grande obrigado a @grawity. Em resumo:

  1. Windows para Linux: PuTTY.
  2. Listar dispositivos de rede: ifconfig -a | sed 's/[ \t].*//;/^$/d'.
  3. Inspecionar solicitações de saída da porta 993: tcpdump -A -n -i [NETWORK DEVICE] "port 993".
encryption
  • 1 1 respostas
  • 66 Views

1 respostas

  • Voted
  1. Best Answer
    grawity
    2025-02-13T02:21:54+08:002025-02-13T02:21:54+08:00
    • O sinalizador /ssl aparentemente usa TLS.
    • O sinalizador /tsl não funciona.

    O programa usa o termo "SSL" para significar o uso direto (também conhecido como "implícito"; "modo wrapper") de SSL/TLS em uma porta dedicada, onde o handshake TLS começa no 1º byte – da mesma forma que HTTPS – e o termo "TLS" para significar o uso explícito de SSL/TLS na porta de texto simples, onde o cliente primeiro recebe uma saudação em texto simples, emite o STARTTLScomando e então o handshake TLS começa.

    Embora ambos usem o mesmo protocolo TLS e ambos possam ser igualmente seguros, atualmente considera-se que o SSL/TLS direto na porta dedicada é mais seguro porque é mais fácil de programar — ele efetivamente garante "TLS ou nada" — enquanto o STARTTLS na porta de texto simples tem muitas oportunidades para erros de implementação.

    (Por exemplo, alguns clientes não deixam claro qual configuração é "STARTTLS obrigatório" (seguro) e qual é "STARTTLS se oferecido" (inseguro). Alguns clientes têm bugs e podem ser convencidos a continuar, apesar de STARTTLS não ser oferecido; eu até vi um cliente LDAP que, se definido como STARTTLS, simplesmente não o ativava e continuava em texto simples.)

    Cabe ao administrador de cada servidor decidir se deseja oferecer TLS direto na porta 993 para IMAP, ou se deseja oferecer STARTTLS na porta 143 para IMAP, ou ambos. O Gmail oferece apenas TLS direto.

    Essa última questão é meu foco de caso de uso. A documentação implica que se o sinalizador /secure não estiver definido, a senha será enviada como texto simples! (A menos que isso seja algo como criptografar a string apesar da conexão em si talvez já estar criptografada?) Se for, então não importa se todo o resto estiver criptografado, porque qualquer invasor pode simplesmente se virar e usar as credenciais que acabou de encontrar. Não, não estamos falando sobre autenticação de dois fatores, pois isso evita explicitamente esse tópico e é uma desculpa para enfraquecer o reforço da autenticação base.

    A /secureopção funciona em um nível diferente: ela não interage com a segurança de transporte (como no TLS executado "por baixo" do IMAP e criptografando todos os dados transferidos), em vez disso, ela solicita um handshake de autenticação seguro no nível do protocolo IMAP/POP/SMTP.

    A maioria dos protocolos criados antes da era atual do TLS onipresente tende a oferecer suporte a algum tipo de handshake de autenticação que não envia apenas a senha bruta — normalmente uma forma de "desafio/resposta" — para que, mesmo que seu e-mail tenha sido transmitido sem criptografia, pelo menos sua senha não possa ser roubada.

    Por exemplo, HTTP tem Kerberos e Digest; SMB tem Kerberos e o infame NTLM; e similarmente POP/IMAP/SMTP tem a opção de suportar CRAM-MD5 e SCRAM-SHA1 (e também o mesmo Kerberos e NTLM).

    É /securepara isso que serve a opção: ela pede à biblioteca do cliente IMAP para limitar a seleção de mecanismos àqueles que não revelam credenciais diretamente (restringindo as opções de "PLAIN/Kerberos/CRAM/NTLM" para apenas "Kerberos/CRAM/NTLM").

    Então, concluindo: quando a documentação da /secureopção diz "como texto simples", o que realmente quer dizer é "nenhuma proteção adicional além do resto da conexão IMAP" – o que no momento da escrita significava de fato "nenhuma proteção" porque poucos, se algum, servidores de e-mail suportavam SSL. Claro, se TLS for usado para toda a conexão, então a senha "simples" também será protegida por TLS.

    (Atualmente, é raro que servidores suportem CRAM ou SCRAM, pois eles dificilmente oferecem vantagens quando o TLS é usado, além de trazer suas próprias limitações, enquanto o Kerberos só é encontrado em servidores de e-mail locais corporativos.)

    Qual programa sniffer devo usar para poder inspecionar o conteúdo (não apenas os cabeçalhos) das solicitações de rede?

    Qualquer.

    Versões antigas do tcpdump tinham um limite padrão de capturar apenas os primeiros 64 bytes de cada pacote (que pode ser aumentado usando -s); versões modernas capturam o pacote inteiro. Use -Aou -xpara mostrar o conteúdo bruto dos pacotes.

    O Tshark usa as opções -Ve -Opara expandir "protocolos" individuais (como mostrado na interface gráfica do usuário do Wireshark), por exemplo, -VO imap,datapara expandir cargas úteis IMAP e/ou 'dados brutos'.

    Se forem aplicáveis: tanto o tshark quanto o tcpdump parecem claramente ser programas tail; como limito sua saída à porta 993?

    Ambos usam a sintaxe libpcap e, consequentemente, a sintaxe pcap-filter(7) para o filtro de captura; o tshark usa a opção -fpara especificar o filtro de captura; o tcpdump não.

    tcpdump -A -n -i eth0 "port 993"
    

    Um filtro de port 993corresponde tanto a TCP quanto a UDP. Você pode ser específico e usar tcp port 993. Dada a questão, no entanto, você deve capturar port 993 or 143.

    Ao capturar via SSH, sempre use pelo menos not port 22se você não estiver limitando por host/porta – não filtrar nada faz com que cada pacote impresso acione outro pacote e assim por diante, gerando uma enxurrada de saídas mesmo que a rede esteja razoavelmente ociosa.

    Se muitas coisas estão acontecendo na porta 993 (servidor de uso mínimo, mas ainda assim), como posso reduzir ainda mais a saída para poder encontrar as solicitações que estou fazendo?

    Limite-o ao endereço IP do servidor específico usando hostou net.

    tcpdump -Ai eth0 "host imap.example.com and (port 993 or 143)"
    

    Como alternativa, capture em um arquivo .pcap e carregue-o em um Wireshark instalado localmente, o que permite filtrar por "conversa" específica – clique com o botão direito do mouse em um pacote e selecione "Seguir > Fluxo TCP" para ver apenas os dados dessa conexão.

    tcpdump -i eth0 -w foo.pcap "port 993"
    

    Há uma maneira de capturar via SSH diretamente em uma interface gráfica local do Wireshark:

    ssh root@myserver "tcpdump -i eth0 -s 65535 -Uw - port 993" | wireshark -k -i -
    

    Se aplicável, como posso esclarecer cabeçalhos, conteúdo ou ambos para ter uma ideia do que estou vendo?

    O "TCP Stream" do Wireshark extrairá automaticamente apenas a carga TCP.

    Qual é uma maneira simples/fácil de enviar uma solicitação de texto simples (em qualquer contexto) que eu possa usar para contrastar as solicitações (espero) criptografadas da porta 993?

    Clientes TCP básicos como nc, ncatou telnetpodem ser usados ​​para conectar a qualquer porta TCP e enviar texto simples. Se você fizer isso na porta 993, o servidor irá desconectá-lo, pois espera um handshake TLS válido, mas seu pacote ainda estará visível em uma captura.

    Para uma melhor comparação, você precisa de um servidor IMAP que aceite conexões TLS na porta 993 e conexões plain/starttls na porta 143. Como o Gmail só faz a primeira, um cliente IMAP tentando falar texto simples na porta 993 geralmente nem chega à etapa de autenticação – ele espera uma eternidade pela "saudação" inicial que os servidores IMAP enviam.

    • 2

relate perguntas

  • Como resolver: AVISO: derivação de chave obsoleta usada. Usar -iter ou -pbkdf2 seria melhor

  • Suporte OpenSSL para ed25519, criptografando conteúdo?

  • Qual é o tamanho da chave de criptografia padrão para dm-crypt / cryptsetup no modo LUKS?

  • A maneira mais segura de fazer backup de arquivos confidenciais, possivelmente sem armazenamento em nuvem?

  • não é possível ver os arquivos depois de montar o diretório encfs

Sidebar

Stats

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

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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