Clam Chowder in Bread Bowl by marvin L@flickr
Привет. Меня зовут Борис. В шкафу, в котором меня запирают, когда приходят посетители, стоит сервер. Давайте поговорим о том, как я поддерживаю его в чистоте.
В чем, собственно, заключается проблема?
Проблема заключается в том, что на вашем файловом сервере под управлением Mac OS X могут храниться копии malware.
Это может случиться, если сервер обслуживает не только Маки, но и PC под управлением Windows — многие образцы malware интенсивно создают собственные копии, в том числе на сетевых томах. Это может случиться, если ваша компания переходит с PC на Мак на РС и хранит на сервере архив созданных под Windows данных.
Конечно, эти черви и вирусы будут просто лежать там и ничего не делать — но зачем им там лежать, если мы можем их удалить?
В чем, собствено, заключается решение?
Первое, что приходит на ум — купить коммерческий антивирус. Это в целом прекрасная идея, и если в вашей компании используются РС, на них, конечно же, стоит регулярно обновляемый антивирус. Но у этой идеи есть два недостатка:
- Антивирус надо покупать и продлевать. Мы говорим о Mac OS X — найти, купить и продлевать антивирус для серверной версии может оказаться нетривиальной задачей, требующей длинных разговоров с бухгалтерией и начальством, сколько бы он ни стоил.
- Резидентный монитор, конечно же, будет бороться с malware на лету — но на лету их никто туда не будет писать! Если ваши РС не защищены антивирусом, начинать надо именно с них, а ресуры, которые занял бы резидентный сканер, пригодятся и самой Mac OS X Server.
Мы воспользуемся ClamAV — открытым (и бесплатным) антивирусом, который, помимо прочего, встроен в систему.
Clamscan, scan!
Вообще, Mac OS X Server использует ClamAV для сканирования почты, так что если ваш сервер используется для пересылки почты, ClamAV включен там постоянно и проверяет каждое проходящее письмо. Но его консольные утилиты — и, в частности, команду clamscan — можно использовать как заблагорассудится.
Первое, что мы сделаем — освежим базы антивируса (если этого не сделать, он будет напоминать об этом при каждом запуске). Если у вас включен почтовый сервер, этого делать не нужно (она сама его обновляет), если не включена — откройте Terminal.app (/Applications/Utilitites/Terminal.app), локально на сервере, или зайдите туда по SSH, и отдайте команду sudo freshclam — без аргументов.
После того, как обновление завершится, можно приступать к сканированию. По умолчанию, без ключей, clamscan сканирует указанные ему пути и сообщает о найденном malware, но можно заставить его перемещать эти файлы в карантин.
- Создайте папку Quarantine (или !!!DANGER, или Nude Pictures — как вам захочется) в удобном месте. Если вы хотите сделать эту папку сетевой, сделайте это так, чтобы никто не мог читать ее содержимого, кроме вас. Проверьте, что у пользователя clamav (от его имени запускается сканирование) есть право на запись в эту папку (читать ему там тоже нечего).
- Вот какие ключи мы будем использовать: –quiet (мы будем видеть только сообщения об ошибке), -r (мы будем сканировать папки рекурсивно), –move=/Путь/к/карантину (чтобы clamscan знал, куда перемещать пораженные файлы) и –exclude=/Путь/к/карантину, чтобы исключить карантин из сканирования, если он лежит там же, где и файлы. Все доступные ключи вы можете просмотреть сами (man clamscan), их много, но они все могут быть полезны. Итоговая команда будет выглядеть так:
/usr/bin/clamscan -r –quiet –move=/Quarantine –exclude=/Quarantine /
Так я попрошу clamscan тихо просканировать /, то есть всю файловую систему (включая внешние тома, системные папки и так далее — кроме папки Quarantine), и переместить все пораженные файлы в карантин.
Автоматизация
Можно сделать такое сканирование регулярным — просто на всякий случай. Поместите папку Quaranine себе в Док, чтобы видеть, когда там появляются новые файлы — и смело запускайте сканирование, например, в ночь с субботы на воскресенье, или ежедневно в два утра — в общем, когда процессор и память сервера не нужны пользователям. Совместите сканирование с бэкапом — в общем, выберите подходящий для вашего сервера режим.
Для запуска сканирования по расписанию есть команда crontab -e. Хорошая идея — запускать перед каждым сканированием freshclam.
Можно запускать обе утилиты непосредственно из cron, например: /usr/bin/freshclam && /usr/bin/clamscan [ключи clamscan] -r /Shared.
Можно написать маленький bash-скрипт, который, к примеру, будет отправлять вам по почте уведомление о том, что malware было (или не было) обнаружено — чтобы сохранять покой ума или быстрее реагировать на эпидемию.
Так вы избавитесь от валявшихся по дискам с 1997 года макровирусов в документах Microsoft Word и очистите от потенциально опасного мусора свои сетевые тома. А мне пора обратно в шкаф.