LINUX.ORG.RU

Отслеживание выполнения php скриптов


0

2

Есть сервер с несколькими сайтами, переодически сайты «ломают» - заливают php-шелл, внедряют напрямую в базу html-код.
На днях подкрутил права на каталоги(убрал запись от апача везде, кроме cache,tmp) - шелы заливать перестали, но все-таки как-то залили в /cache
Так же, не исключаю, что взлом базы делается через sql-иньекцию. Можно ли как-то защитится от этого? (не меняя код скриптов)

Как можно отслеживать и выявлять такие вещи?
Как автоматом определять какой скрипт на сервере свой, а какой - чужой? (что-нить типа SElinux?)

★★★★★

Зачем selinux?

Первое, что в голову пришло:

du -s

раз в 10 минут на папку с сайтом. Если поменялось -

find -mtime чего-то там | mail -t 'strange new files' admin@example.com

Подумав: в cache и tmp скриптов ведь вообще не должно быть, правильно? Тогда можно смотреть права на файлы, если есть x - алертить. Это поможет, если php-скрипты не обрабатываются через mod_php (в этом случае права не исполнение не ставятся), а именно запускаются. Если используется mod_php - нужно аккуратненько смотреть, что внутри новых файлов, искать там, например, «<?»

p.s. первая мысль - плохая, наверное - кеши и логи будут вызывать 99% срабатываний. Нужно, наверное, сразу find делать и смотреть содержимое файлов.

pianolender ★★★
()
Ответ на: комментарий от pianolender

да, про find + mail - понятно.
Но тут проблема в том, что на сайтах скорее всего уже лежат левые скрипты(или просто дырявые) через которые постоянно ломают.
И нет возможности покопаться по всех скриптам и найти их, т.к. кода очень много.

dreamer ★★★★★
() автор топика
Ответ на: комментарий от pianolender

Если используется mod_php - нужно аккуратненько смотреть

Зачем разрешать исполнение php-файлов из директории cache?

VirRaa ★★★
()
Ответ на: комментарий от dreamer

Как минимум погляди на upload-скрипты, через которые что-то можно заливать.

VirRaa ★★★
()
Ответ на: комментарий от ef37

snort умеет такое отслеживать?

dreamer ★★★★★
() автор топика

В высшей степени странная тема. «Я не хочу пофиксить баги но не хочу что бы эти баги эксплойтили. Вместо того что бы фиксить баги я придумаю ненадёжный костыль.» Что то мне этот подход напоминает. Ах да - мелкийсофт с его костылями в виде антивирусов.

psp13
()
Ответ на: комментарий от psp13

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

+ через полгода проекты буду переведены на новый движок, нужно просто продержаться это время.

dreamer ★★★★★
() автор топика
Ответ на: комментарий от VirRaa

Ну да, все равно это более или менее аудит кода.

Нужно додуматься, каковы основные сигнатурные признаки вредоносных скриптов и поискать.

pianolender ★★★
()
Ответ на: комментарий от dreamer

А что лет 5 назад можно было писать с багами? Или что то изменилось? Может кодер писавший это использовал идиотскую фичу PHP - magic_quotes_gpc, т.к. в старых версиях она была включена по умолчанию. Отсюда и SQL injection.

psp13
()
Ответ на: комментарий от psp13

Про мелкософт - стоял бы и слушал. :)

Когда-то читал, не помню подробностей, про некий баг в некоем продукте, о котором написали пост то ли в support@M$.com, то ли куда, с ним долго мучались, а потом появилось резюме от мелкософта вида «this bug can occur sometimes».

pianolender ★★★
()
Ответ на: комментарий от psp13

вижу, вы не работали с реальными долгоживущими проектамми.

dreamer ★★★★★
() автор топика
Ответ на: комментарий от dreamer

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

нанять программистов для ревиззии кода - очень дорого.

Т.е. на поддержку кода все забили, и твой начальник решил сэкономить и свалить на тебя эту работу забесплатно.

+ через полгода проекты буду переведены на новый движок, нужно просто продержаться это время.

А если через пол года тебе начнут рассказывать сказки, что ситуация изменилась, денег нет, и нужно подождать еще пол года?

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

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

P.P.S. Если ты не уловил сути происходящего - повторю. Есть сайты, которые:

1. нужны,

2. требуют поддержки,

3. требуют расходов на поддержку.

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

anonymous
()
Ответ на: комментарий от anonymous

какой же бред ты написал. вижу, у тебя неслабый батхерт.
Все что ты сказал(и выводы, которые сделал) - неверно и к моему случаю отношения не имеет.(к теме топика кстати тоже)

dreamer ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Что изменится через полгода? Что значит «продержаться»? Это ж полный бред. Если код содержит ошибки - единственное что может помочь это их устранение. Так же если код содержит такие проблемы => он был написан нанятым за копейки быдлокодером типа того что писал github на rails. Люди которые платят тысячи долларов за дизайн но при этом хотят получить server-side кодинг за $200 меня всегда веселили. За что платили то и получили. Но всё ещё не образумились и всё ещё экономят. Если нет денег на срочную переписку этого быдлокода значит проект нерентабелен. Если вдруг обнаружится что вашу дверь можно открыть отвёрткой вы будете срочно менять замок или тоже скажете что денег на замену замка нет и будете спрашивать как бы так заклеить дверь пластилином что бы она подольше простояла?

psp13
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.