Я пытался найти местоположение сценария perl, который вызывает хаос на сервере, который я контролирую. Я также пытаюсь выяснить, как именно этот скрипт был установлен на сервере - я думаю, с помощью эксплойта WordPress.
Сервер представляет собой базовую веб-установку под управлением Ubuntu 9.04, Apache и MySQL. Я использую IPTables в качестве межсетевого экрана. на сайте работает около 20 сайтов, и нагрузка никогда не поднимается выше 0,7.
Из того, что я вижу, скрипт устанавливает исходящее соединение с другими серверами (скорее всего, пытается выполнить вход грубой силой).
Вот дамп одного из процессов:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22569 www-data 20 0 22784 3216 780 R 100 0.2 47:00.60 perl
Команда, выполняемая процессом: /usr/sbin/sshd
. Я пытался найти точное имя файла, но мне не повезло ... Я запустил lsof -p PID
и вот результат:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
perl 22569 www-data cwd DIR 8,6 4096 2 /
perl 22569 www-data rtd DIR 8,6 4096 2 /
perl 22569 www-data txt REG 8,6 10336 162220 /usr/bin/perl
perl 22569 www-data mem REG 8,6 26936 170219 /usr/lib/perl/5.10.0/auto/Socket/Socket.so
perl 22569 www-data mem REG 8,6 22808 170214 /usr/lib/perl/5.10.0/auto/IO/IO.so
perl 22569 www-data mem REG 8,6 39112 145112 /lib/libcrypt-2.9.so
perl 22569 www-data mem REG 8,6 1502512 145124 /lib/libc-2.9.so
perl 22569 www-data mem REG 8,6 130151 145113 /lib/libpthread-2.9.so
perl 22569 www-data mem REG 8,6 542928 145122 /lib/libm-2.9.so
perl 22569 www-data mem REG 8,6 14608 145125 /lib/libdl-2.9.so
perl 22569 www-data mem REG 8,6 1503704 162222 /usr/lib/libperl.so.5.10.0
perl 22569 www-data mem REG 8,6 135680 145116 /lib/ld-2.9.so
perl 22569 www-data 0r FIFO 0,6 157216 pipe
perl 22569 www-data 1w FIFO 0,6 197642 pipe
perl 22569 www-data 2w FIFO 0,6 197642 pipe
perl 22569 www-data 3w FIFO 0,6 197642 pipe
perl 22569 www-data 4u IPv4 383991 TCP outsidesoftware.com:56869->server12.34.56.78.live-servers.net:www (ESTABLISHED)
Мое внутреннее ощущение, что externalsoftware.com тоже находится под угрозой? Или, возможно, используется как туннель.
Мне удалось найти несколько мошеннических файлов в /tmp
и /var/tmp
, вот краткий вывод одного из этих файлов:
#!/usr/bin/perl
# this spreader is coded by xdh
# xdh@xxxxxxxxxxx
# only for testing...
my @nickname = ("vn");
my $nick = $nickname[rand scalar @nickname];
my $ircname = $nickname[rand scalar @nickname];
#system("kill -9 `ps ax |grep httpdse |grep -v grep|awk '{print $1;}'`");
my $processo = '/usr/sbin/sshd';
Полное содержимое файла можно посмотреть здесь: http://pastebin.com/yenFRrGP
Я пытаюсь достичь здесь пары вещей ...
Во-первых, мне нужно остановить эти процессы. Либо отключив исходящий SSH, либо любые правила IP-таблиц и т. Д., Эти скрипты работают уже около 36 часов, и моя главная задача - остановить эти вещи, запускаемые и возрождающиеся сами по себе.
Во-вторых, мне нужно попытаться найти источник, где и как были установлены эти скрипты. Если у кого-нибудь есть совет о том, что искать в журналах доступа или что-то еще, я был бы очень благодарен.
Никогда не разрешайте использование бита exec в файловых системах, где недоверенные пользователи могут записывать файлы! Обновите / etc / fstab и перемонтируйте, а лучше перезагрузите сервер.
Здесь вы (наконец) поняли, что брандмауэр - это не изящная штука, чтобы просто «защитить» вас от каких-то идиотских атак извне. У вас также должны быть правила брандмауэра для исходящего трафика! Или, по крайней мере, у вас должен быть некоторый мониторинг исходящего трафика. Хорошо, WordPress хотел бы обновиться через http (?), Но почему какое-то веб-приложение должно подключаться к ssh, irc и т. Д.?
Следующее ... Ах, он запускает все ваши сайты под "www-data". Это очень здорово. Вы должны спроектировать это лучше. Запускайте каждого пользователя-клиента под собственным отдельным uid. Вы можете использовать php-fpm или что-то подобное. Таким образом, у вас будет лучший обзор активности ваших пользователей, и вы даже сможете фильтровать через iptables трафик на основе идентификатора пользователя ... Нужно ли пользователю foobar, чтобы его веб-приложение подключалось к irc-серверу? Тогда нет ничего проще, чем добавить правило только для этого конкретного пользователя.
Другой момент ... Порты <1024 могут быть привязаны только пользователем root. Тогда у вас должен быть какой-то мониторинг прослушивающих портов> 1024, чтобы у пользователя не было собственного демона, прослушивающего ваш сервер.
Вы также можете подумать об удалении веб-приложений ...
Если какой-либо ненадежный пользователь может запускать свои собственные двоичные файлы, скрипты на сервере, то есть доступ к пользовательскому серверу или он может использовать ваши ресурсы для чего-то еще.
Некоторая интересная информация о защите PHP-хостинга: Linux: 25 рекомендаций по безопасности PHP для системных администраторов
Вы сказали: «Я также пытаюсь выяснить, как именно этот скрипт был установлен на сервере - я думаю, это через эксплойт WordPress. Сервер представляет собой базовую веб-установку, работающую под управлением Ubuntu 9.04».
Ubuntu 9.04 не пользовался долгосрочной поддержкой и перестал получать обновления в конце 2010 г .:
https://lists.ubuntu.com/archives/ubuntu-security-announce/2010-September/001166.html
так что в основном ваш SSH, Apache и все службы не получали обновления безопасности в течение долгого времени! Лучше всего считать этот сервер «потерянным» и не тратить время на поиски сценария. На нем могут быть руткиты и всякая гадость. Перенесите службы в «чистый ящик» в ОС, в которой в ближайшее время все еще есть обновления, например CentOS 6 или Ubuntu 12.04 LTS Server.