У нас вы можете скачать бесплатно Как защитить свой сайт .

Как защитить свой сайт

 

Изначально выясним что мы понимаем под понятием уязвимости, дабы знать в дальнейшем какие задачи пред нами стоят. Для нас уязвимость это какой-либо недостаток в защите сайта, при котором иной пользователь (ака злоумышленник) может получить достук к админке и/или фтп доступ, или же путём создания собственного файла на сервере (шелл, эксплоит... все называют по разному) манипулировать сайтом. В любом из вышеуказанных случаев злоумышленник имеет возможность слить вашу БД или внести в неё изменения, изменить шаблон сайта, если количество мозгов в черепе побольше, то также можно организовать удалённый доступ и удалённую манипуляцию сайтом, проделывая те или иные действия уже в автоматическом режиме. Иногда "ломанные" сайты соединяют в сети для более удобного управления.
Примером удалённой манипуляции сайтом может послужить создаваемая мной сеть сателлитов на ДЛЕ, которая благодаря особому построению управляется с единой админки, где можно изменять настройки и управлять базой как одного сайта из сетки, так всей сети или её части. Причём потеря N-го количества сайтов из сети не несёт вреда сети в общем.

Теперь зная от чего нужно защититься перейдём непосредственно к методам защиты.
1. Изначально нужно защитить "хранилище" сайта, тоесть базу данных, для этого нужно как минимум делать бэкап каждые 2-3 дня. Также не забываем в папке /backup создать файл .htaccess со следующим содержимым:
Order Deny,Allow
Deny from all

Это сделает невозможным скачивание дампа базы. Как тогда копировать дамп? С помощь фтп-доступа. И не забываем удалять дамп с сервера, ибо он там ненужен.
2. Дальнейшим шагом будет защита доступа в админку. Заранее скажу что вам придётся отказаться от десятка журналистов, которых вы набрали в "команду сайта", давать административные права следует только проверенным людям, в которых вы на 99,9% уверены. Далее в файле admin.php (кстати файл советовалось бы переименовать) после строки:
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

пишем:
$ip_diapazones=array(
'99.99', // Администратор
'99.999', // Журналист 1
'92.123', // Журналист 2
'23.321', // Журналист 3
'123.999', // Модератор
);

$user_ip_net=explode(".",$_SERVER['REMOTE_ADDR']);
$user_diap=$user_ip[0].'.'.$user_ip[1];

if(!in_array($user_diap,$ip_diapazones)){
$die='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL '.$_SERVER['REQUEST_URI'].' was not found on this server.</p>
<hr>
<address>'.$_SERVER['SERVER_SIGNATURE'].'</address>
</body></html>';
@header( "HTTP/1.0 404 Not Found" );
die( $die ); }

Потом вместо вымышленных диапазонов ip пишем нужные вам. Данный подход позволяет ограничить доступ к админке даже если злоумышленник использует вашу учётную запись администратора. В некоторых случаях подобной защиты админки оказывается недостаточно, поэтому советовал бы сделать ещё и следующее:
В файле .htaccess, который находится в корне вашего сайта, находим строку:
RewriteEngine On

и после её пишем:
ErrorDocument 403 "<h1>Forbidden</h1>"

<Files "admin.php">
Deny from all
Allow From 99.99. #Администратор
Allow From 99.999. #Журналист 1
Allow From 92.123. #Журналист 2
Allow From 23.321. #Журналист 3
Allow From 123.999. #Модератор
</files>

Диапазон нужных вам IP адресов придётся продублировать.
3. Дальнейшим шагом будет установка запрета на выполнение каких-либо скриптов не относящихся к нормальной работе сайта. Опять же в файле .htaccess находим строку:
RewriteEngine On
ErrorDocument 403 "<h1>Forbidden</h1>"

и после неё пишем:
<FilesMatch ".(php|h|c)$">
Order allow,deny
Deny from all
</FilesMatch>

<FilesMatch "(index.php|go.php|ajax.php|download.php)$|^$">
Order deny,allow
Allow from all
</FilesMatch>

Это запретит вызов каких-либо php-файлов кроме как index.php, go.php, ajax.php и download.php, всеобщего доступа к этим файлам вполне достаточно для нормальной работы сайта.
4. Ну и для организации защиты собственно файлов - установите на все папки (кроме uploads) права CHMOD 0555, на файлы CHMOD 0444. Папкам /engine/data и /engine/cache и их подпапкам даём права 0777 а внутри лежащим файлам - 0666.
Автор: Gauss
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
 

Опросы

Какой CMS вы пользуетесь?

DataLife Engine
Joomla
WordPress
Bitrix
Eleanor
Live street
Самопис

Календарь новостей

«    Май 2012    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Самое читаемое