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-490858

Zippy1970's questions

Martin Hope
Zippy1970
Asked: 2023-09-20 20:21:17 +0800 CST

Bloqueio de tráfego de países específicos. Como matar a conexão existente?

  • 6

Usando Linux Debian Bookworm.

Problema

Quero bloquear todas as conexões de entrada do meu servidor provenientes de países específicos.

Editar

Como alguém apontou nos comentários, eu realmente não deveria fazer isso com o iptables, pois isso paralisará meu servidor quando a lista de endereços IP que ele bloqueia crescer para um tamanho incontrolável (como milhares de endereços IP). Em vez disso, devo usar ipset(para bloquear intervalos inteiros). O problema é que depende das listas que preciso baixar regularmente. Quero algo que configurei uma vez (de preferência).

Então, como posso interromper conexões de países específicos? O tráfego (e por vezes ataques de força bruta) proveniente da China e da Rússia está a ficar fora de controlo. Eles colocam meu servidor de joelhos regularmente. Eles não aderem ao arquivo robots.txt e rastreiam o site de forma muito agressiva (com centenas, às vezes milhares de conexões simultaneamente). Eu realmente preciso parar com isso. Minha estimativa é que mais de 90% de todo o tráfego que meu servidor gerencia é malicioso/malformado.

Editar 2

Encontrei alguns tutoriais online ( como este ) sobre como fazer isso, mas parece que esses tutoriais são bem antigos. Além disso, requer download e compilação/instalação de alguns módulos. Estou preocupado que isso possa falhar no futuro (ao atualizar/atualizar outros pacotes ou até mesmo a distribuição) ou possa se tornar um risco de segurança no futuro. Eu mantenho meu servidor atualizado e atualizado (executando apt-get update / apt-get upgrade / apt-get dist-upgrade regularmente).

mensagem original

Encontrei um script on-line que (em poucas palavras) obtém uma lista de endereços IP de conexões estabelecidas a cada segundo e depois usa o geoiplookup para obter o país do endereço IP. Se o país estiver na lista de países que você deseja bloquear, ele adiciona o endereço IP ao filtro do firewall usando iptables. Fiz algumas pequenas alterações no script (tornando-o mais legível e porque não estava interessado neste script me enviando um e-mail toda vez que bloqueava um endereço IP). Este script é executado a cada minuto através do crontab:

#!/bin/bash
# Script found on lautenbacher.io"

end=$((SECONDS+55))

while [ $SECONDS -lt $end ]; do
  echo $SECONDS
  netstat -ant | egrep ':.*ESTABLISHED' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c > testcc.txt
  sed 's/^[ t]*//' -i testcc.txt
  sed '/^$/d' -i testcc.txt

  while read c d; do

    if [[ $c > "0" ]]; then
      bGF1dGVuYmFjaGVyLmlv=$(geoiplookup $d | awk -v ip="$d" '{FS=" "} {if($4 == "RU," || $4 == "CN," || $4 == "BLR,") {print 1}}')

      if [[ $bGF1dGVuYmFjaGVyLmlv = "1" ]]; then
        echo "running geolookup"
        echo checking ip $d
        geoiplookup $d

        isCloudflare=0
        # The original script made an exception for CLOUDFLARE. I don't want that exception
        # bGF1dGVuYmFjaGVyLmlX=$(whois $d)
        # if [[ "$bGF1dGVuYmFjaGVyLmlX" == *"CLOUDFLARE "* ]]; then
        #  isCloudflare=1
        #  echo Cloudflare detected
        # fi

        if [[ "$isCloudflare" != 1 ]]; then
          echo try to add ip $d to blocklist
          sudo iptables -I INPUT -s $d -j DROP
          ### I would like to sever the connection here ###
        fi

      fi

    fi
  done < testcc.txt

  sleep 1
    :
done

Aliás, não tenho ideia de por que o autor do script usa nomes de variáveis ​​tão estranhos ("bGF1dGVuYmFjaGVyLmlv").

De qualquer forma, o problema é que sempre que encontra uma conexão com um endereço IP de um país banido, ele executa

sudo iptables -I INPUT -s $d -j DROP

no endereço IP. Tudo bem, mas a maioria dessas conexões é um tanto persistente, o que significa que um segundo depois o mesmo endereço IP é encontrado e adicionado novamente usando iptables. Não tenho certeza do que acontece (isso cria regras duplicadas?), mas gostaria de interromper imediatamente a conexão após o endereço IP ser adicionado ao iptables.

Resumindo: como posso eliminar todas as conexões com um endereço IP?

linux
  • 1 respostas
  • 74 Views
Martin Hope
Zippy1970
Asked: 2022-03-01 09:01:10 +0800 CST

Após atualizar o Debian Buster para Bullseye, os sites Wordpress não atualizam mais

  • 0

Hoje eu atualizei meu servidor web do Debian Buster para Bullseye e foi de fato uma atualização bastante simples. Tudo parecia funcionar até que tentei acessar alguns sites WordPress no servidor. No começo, recebi algum erro sobre um módulo MySQL ausente. A mensagem de erro que recebi do PHPMyAdmin me deu uma pista melhor: dizia que estava faltando o módulo mysqli.

Então eu instalei apt install php7.4-mysqli e isso de fato fez meus sites WordPress funcionarem novamente.

O único problema agora é que não consigo atualizar o Wordpress. Toda vez que tento atualizar o WordPress, recebo um erro:

Erro de atualização do WordPress

Eu suspeito que preciso instalar o suphp. Mas antes de eu fazer, alguém pode confirmar que este é realmente o caso? Ou preciso fazer outra coisa após a atualização do Buster para o Bullseye?

EDIT: Demorei um pouco para descobrir o que realmente estava acontecendo. Agora eu sei, não tenho idéia de como resolver o problema.

A mensagem de erro que o WP está dando, na verdade está incorreta. Como se vê, é capaz de descompactar a atualização muito bem na pasta apropriada. Mas é quando ele verifica se os arquivos foram realmente descompactados, que dá errado. O problema está neste pedaço de código em update-core.php :

foreach ( $roots as $root ) {
  if ( $wp_filesystem->exists( $from . $root . 'readme.html' )
    && $wp_filesystem->exists( $from . $root . 'wp-includes/version.php' )
  ) {
    $distro = $root;
    break;
  }
}
    
if ( ! $distro ) {
  $wp_filesystem->delete( $from, true );
  return new WP_Error( 'insane_distro', __( 'The update could not be unpacked.' ) );
}

O que ele faz aqui é simplesmente verificar se existem dois arquivos na pasta para a qual acabou de descompactar o arquivo zip. Isso falha. E o motivo é o seguinte:

Eu uso o método FTP para instalar atualizações. Então, quando eu digo para atualizar, ele primeiro descobre a pasta para a qual deve baixar o arquivo zip. Esta pasta é armazenada em $working_dir e é usada a partir desse momento para o resto do processo de atualização. O verdadeiro caminho no servidor é, /domains/domainname.com/htdocs/wp-content/upgrade/mas como os usuários de FTP estão em chroot, o WP encontra e armazena /htdocs/wp-content/upgrade/. O arquivo de atualização é baixado para esta pasta e, em seguida, descompactado.

Em seguida, ele faz a verificação acima. E isso falha porque tenta encontrar um arquivo /htdocs/wp-content/upgrade/enquanto o local verdadeiro é /domains/domainname.com/htdocs/wp-content/upgrade/.

Eu entendo por que ele baixa o pacote muito bem (já que os usuários de FTP estão em chroot). Mas não entendo por que não falha ao descompactar depois, mas falha ao verificar a existência dos arquivos ...

Eu verifiquei todas as configurações do php e não consigo encontrar nada diferente com as configurações de antes da atualização do Debian…

wordpress php7 debian-bullseye
  • 1 respostas
  • 145 Views
Martin Hope
Zippy1970
Asked: 2020-06-28 07:14:09 +0800 CST

Debian Buster: linux-image-amd64 retido

  • 2

Talvez uma pergunta simples, talvez uma pergunta estúpida, mas não consigo encontrar uma resposta...

Sempre que eu faço

apt-get update
apt-get upgrade

eu recebo

The following packages have been kept back:
  linux-image-amd64

Soooo, o que exatamente está acontecendo aqui?

linux debian apt
  • 2 respostas
  • 4666 Views
Martin Hope
Zippy1970
Asked: 2020-03-13 11:41:23 +0800 CST

rsync: Atualizar apenas o proprietário/grupo e as permissões?

  • 1

Estou duplicando um servidor web remoto e estou usando o rsync para transferir os arquivos:

rsync -rvz --ignore-existing -e ssh . root@(localip):/usr/files

Demorou cerca de 12 horas para transferir 115 GB de arquivos apenas para descobrir que esqueci a opção "-a". Então agora eu tenho 115 GB de arquivos com o proprietário/grupo e permissões errados.

Existe uma maneira de usar o rsync para que ele atualize apenas o proprietário/grupo/permissões sem transferir os arquivos novamente?

linux rsync
  • 1 respostas
  • 489 Views

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 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