bukachuk

bukachuk
Рейтинг
97
Регистрация
07.09.2008
killerok:
Применил ваши настройки, а вчера опять все коренные .htaccess заразили мобильным редиректом, хотя на всех права стояли 444, вот че это может быть :(

Да права ничего тут не решат. Смотрите вирусы на компьютере и шеллы на сайте. Если есть шеллы - надо смотреть как их залили

alex-sandro:
Каждый по своей практике судит. Лично мне сложнее всего давалась чистка. Когда в 10тыс файлов прописываются скрипты, да еще и разные - хз. Чистить не особо удобно.

А принять меры предосторожности можно.

Чтобы не делать все руками, можно использовать find,grep,sed в linux, то есть войти на сервер по ssh и там работать

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

Если высота сайта фиксированная, можете поставить футеру position:absolute; и потом подровнять как надо с помощью top:400px;left:0 итд

alex-sandro:
Чистка самое сложное.

А найти как попали не обязательно. Вполне достаточно провести стандартный комплекс мер. Полечить комп, обновить CMS и тд..

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

alex-sandro:
А вот такой штукой кто-нибудь пользовался?

http://www.symantec.com/ru/ru/ssl-certificates

Это не имеет никакого отношения к теме

---------- Post added 15-03-2013 at 16:38 ----------

Допустим у вас на сайте нашлись вирусы. Вы их удачно почистили. Но надо выяснить каким образом они попали на сервер, тем более если у Вас закрыт фтп и прочее.

Обычно оставляют на сайте шелл скрипт php аля FilesMan, главное запомнить имя файла, если вы его нашли. После чистки сайта идем в логи сервера. Обычно они лежат в /var/www/http-logs для Debian, и /var/www/сайт/logs

В первом месте лежит обычно архивы gzip, во втором лог за сегодня. Сначала ищем по файлу за сегодня, потом по истории: Допустим шелл назывался topnews.php Выполянем команду

grep 'topnews.php' файл лога_access.log

Нашлась одна запись:

x.x.x.x - - [21/Feb/2013:08:20:15 +0000] "GET /engine/cache/system/topnews.php HTTP/1.0" 200 16198 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"

x.x.x.x - IP нарушителя.

Почему одна? Потому что залили шелл этот с другого шелла и с другого IP, который потом самоликвидировали. Можно теперь поискать ходы по этому IP или поискать в логе записи раньше этой, к IP привязываться не стоит, тк его обычно меняют между действиями. Особое внимание обратить на загрузку файлов и регистрацию новых пользователе, которые были до этого. Возможно это поможет найти вам дырявое место.

Просмотреть какие страницы открывал пользователь. Если например видно много подряд запросов POST к файлу php, которого на сервере нет, значит это работали в шелл и надо смотреть какие страницы открывали после этих POST запросов, тк обычно это делают вставки в код сайта типа system($_GET['blbllb']), а потом для проверки открывают страницу пораженую. А сам шелл потом грохают.

Очень часто стали ставить скрытые ссылки на сайт. Обычно это делают через подгрузку ссылки с удаленного узла. То есть в шаблоне ссылки не будет, но на сайте она есть.

Как можно поискать на сайте данный код. Как правило он не закодирован и выполнен красиво, как код движка.

Ищем по содержимому всех файлов строки функций подгрузки удаленного файла, например file_get_contents

Как правило код, который подгружает ненужные ссылки содержит вам узел в закодированном или неявном виде

Типа file_get_contents(base64_decode("blalala"));

или например $u = base64_decode("blabla"); $v = file_get_contents($u); Итд

Конечно нужно понимать, что при поиске по файлам выйдет несколько результатов, в том числе коды бирж итд. Надо просто просмотреть куда идет обращение.

Как расшифровать что в этих каракулях base64

Например у Вас код

 eval(base64_decode("blablabla"));

Заменяем eval на echo, получаем в итоге:

echo base64_decode("blablabla");

После него можно поставить exit; Чтобы не искать результат на сайте. Если в результате Вы видите опять тоже самое, значит надо делать по кругу. Конечно это самый простой способ, но для новичка пойдет:)

В настройках Apache должна стоят директива open_base_dir для каждого сайта отдельная, указывающая на дирректорию сайта

Самый простой вариант проверить наличие странных редиректов на сайте:

1. Чистим все куки в браузере по домену

2. Открываем яндекс и ищем в нем сайт, например по запросу домена

3. Переходим на сайт с Яндекса и смотрим наличие редиректов

Проверяем файл .htaccess на наличие длинных записей modrewrite проверяющих Юзерагент на mobi|mobile итд, список обычно большой, удаляем эти правила.

Если вы нашли вирус, но он прописался в тысячах файлов на сервере, делаем массовую замену по ssh, для этого:

1. Заходим на ssh

2. Делаем копию сайта в другой каталог на всякий пожарный

3. Составляем команду в shell

Например такую:

find . -name "*.php" -print0 | xargs -0 sed -i -e 's/eval(base64_decode("DQplcnJvcl9yDQp9"));//'

Общий синтаксис

find . -name "*.php" -print0 | xargs -0 sed -i -e 's/Сигнатура вируса//'

Сигнатуру берем в любом зараженном файле. В ней нужно заэкранировать символы регулярного выражения или заменить их символом "."

Для поиска шелл вставок в кодах, которые например не ищет айболит, делаем поиск по содержимому, например через mc по ssh:

1. system($_REQUEST

2. system(

Проверяем все файлы на error_reporting и смотрим нужный ли это файл

И еще много много нюансов, которые невозможно все описать:)

Geers:
По вашему методу получилось, убрал left:0;, но таблица все равно прижимается к левой части, а надо чтобы в центре была. :)

left:50%;

margin-left:-485px;

-458 - ширина:

Geers:
К сожалению это не то.
Пусть даже будет одна таблица на странице, и ничего кроме.

А fixed чем не устраивает? Надо тогда больше информации:)

Смотря как вам нужно, если зафикстировать то:


position:fixed;
top:100%;
margin-top:-200px;
left:0;

margin-top это высота блока, left поставить в зависимости от ширины блока ну и там margin-left:

Если внутри блока, то родителю relative, ему absolute и значения относительно родителя.

Всего: 312