Злобный barbut.bsd


Пост про системное администрирование, а не про продвижение, исследования и рекламу. Тем, кто размещает свои и клиентские проекты на собственных серверах, приходится сталкиваться с администрированием, попытками взлома сайтов и серверов. В последние полгода несколько раз пришлось столкнуться со взломами сервера, в результате чего на сервере возрастает активность и генерируется большой внешний трафик. Осложнялось все тем, что запускались вредительские процессы по субботам и воскресеньям, когда все в расслабленном состоянии и есть вероятность, что оперативно исправить проблему никто не сможет.
Вскрытие показало, что причиной аномальной активности сервера является некий процесс barbut.bsd, сидящий в /tmp. Может также содержать цифры от 1 до 9, т.е. barbut1.bsd, barbut4.bsd. Процесс пристреливается, файлы удаляются, но через неделю все повторялось снова. Администраторам серверов на Linux скорее всего можно не беспокоиться, поскольку ломается FreeBSD.

Решение проблемы можно разделить на две части:

  1.  Устранить следствие – проще всего закрыть возможность запуска скрипта в /tmp
  2.  Устранить причину – найти и закрыть дыры, через которые этот скрипт устанавливается в системе

Устраняем следствие

Для того, чтобы запретить запуск файлов в /tmp, надо поставить noexec на нее. Этот процесс описан в сети, в моем случае вся файловая система была на одном разделе, поэтому под рутом надо выполнить следующие действия:
# dd if=/dev/zero of=/tmpMnt bs=1m count=1024
# mdmfs -F /tmpMnt -o rw,nosuid,noexec -s 1024m md /tmp

Здесь в первой строке с помощью утилиты dd создается пустой файл /tmpMnt размером в 1 Гигабайт (1024 блока по 1 Мегабайту), во второй строке к этому файлу монтируется раздел /tmp с нужными нам параметрами и сразу начинает использоваться. Для того, чтобы этот раздел монтировалась при загрузке системы, необходимо добавить строку в файл /etc/fstab:
md   /tmp   mfs   rw,noexec,nosuid,-s1024m,-F/tmpMnt  2  0

Лучше, чтобы эти манипуляции выполнял квалифицированный специалист, потому что можно легко наделать делов, если не знаете, что такое df, fstab, mount,nosuid и тому подобное. После выполнения всех команд и добавления строчки о разделе в /etc/fstab лучше всего перегрузиться, поскольку много что может использовать /tmp, а вы его подменили. У меня, например, перестал работать MySQL, который пишет в /tmp свой сокет, данные сессий PHP часто хранятся там же, поэтому лучше всего сделать reboot.
Теперь можно спокойно спать по выходным!

На форумах и блогах системных администраторов упоминается неизвестная дыра в веб-сервере Apache и рекомендация исследовать логи этого самого Apache. Что я и сделал, причем неоднократно!
Оказалось, что никакой дыры в самом Apache нет, зато есть куча дырявых скриптов и неубранных остатков инталляций этих скриптов. Немного забегая вперед, лидером является phpMyAdmin.

По устранению дыр, через которые устанавливается barbut.bsd, напишу позже, там довольно много информации и примеров.


Leave a Reply

Your email address will not be published. Required fields are marked *