У меня проблемы с сервером, так как иногда вредоносные программы добавляют свой код в конце или в начало файлов.Я устранил лазейки безопасности в меру своих знаний.Мой хостинг-провайдер сообщил, что безопасность сейчас адекватна, но я стал параноиком из-за активности вирусов и вредоносных программ на моем сайте.У меня есть план, но я не очень хорошо разбираюсь в Linux-редакторах, таких как sed, awk или gawk, поэтому нужна помощь с вашей стороны.Я могу сделать это, используя свои знания PHP, но это будет очень ресурсоемким.
Поскольку вредоносные программы / вирусы добавляют код в начало или конец файла (чтобы на веб-сайте не отображалась какая-либо ошибка), пожалуйста, дайте мне знать, как написать команду, которая рекурсивно просматривает все.Файлы php (я буду использовать справку для внесения изменений в другие типы файлов) в родительском и всех подкаталогах и добавьте определенный тег в начало и конец файла, скажем, XXXXXX_START и YYYYYY_END.
Затем мне нужен скрипт, который будет читать все файлы .php и проверять, является ли первая строка кода XXXXX_START, а последняя строка - YYYYYYY_END, и создавать отчет, если какой-либо файл будет отличаться.
Я настрою cron для проверки всех файлов и отправлю мне отчет по электронной почте, если будет обнаружено какое-либо несоответствие.
Я знаю, что это не на 100% надежно, поскольку вирус может добавлять данные после закомментированных строк, но это лучший вариант, который я мог придумать.
Я пробовал следующие команды для добавления данных в начале -
sed -i -r '1i add here' *.txt
, но это не рекурсивно и добавляет строку только в файлы родительского каталога.
Тогда я обнаружил, что BEGIN и END - это специальные паттерны.Они не используются для сопоставления входных записей.Скорее, они используются для предоставления информации о запуске или очистке вашего сценария awk.Правило BEGIN выполняется один раз перед прочтением первой входной записи.Правило END выполняется один раз после прочтения всего ввода.Например:
awk 'BEGIN { print "Analysis of `foo'" }
/foo/ { ++foobar }
END { print "`foo' appears " foobar " times." }' BBS-list
Но, к сожалению, я не смог ничего расшифровать.
Любая помощь по вышеупомянутым деталям высоко ценится.Любые другие предложения приветствуются.
С уважением,
Нитин