= bubbalog =Дневникът на моето стадо

Повишаване на сигурноста в WordPress

Thursday 12.02.2009 00:15 EEST · Публикувано от в = Wordpress =

В началото, както сигурно на много други новаци въпроса за сигурноста не е бил на едно от първите места. Че какво толкова може да ни се случи? Голяма работа, някой юял да ми хакне блога… Еми голяма е разбира се, в началото можеби не, но когато напреднете и това недай си боже се случи след месец, два или година направо може да се изяде човек от яд. Ето защо днес седнах и отделих малко време и на това нужно занимание. След доста четене по разни блогове, малко проби кое работи и кое е удобно за мен достигнах до варианта, който е описан в последващата по-долу статия.

Като начало не е зле да сложите един плъгин (Login LockDown), който блогира по IP и за определено време всеки, който се е опитал да се логне в блога ви, но е достигнал определения лимит на грешни логини. Останалото от  защитата може да се раздели в 3 основни категории, които са описани по-долу, а именно:

  1. Защита на основните директории в блога (при версия 2.7 тази защита е направена до някаква степен от самото начало)
  2. Проверка на сигурноста (сканиране за възможни пропуски в сигурноста на блога)
  3. Защита от търсещите машини


Защита на основните директории на блога

Задачата се състои в прекратяване на достъпа до /wp-admin, /wp-content и /wp-includes, и прекратяване на показване на съдърванието им в който и да е браузър.

Първия и най прост вариант е с поставянето на празен индексен файл в тези директории.  Както вече споменах, при WordPress 2.7 това вече е направено до някаква степен. Ето защо, за целта може направо да копирате вече съществуващия /wp-content/index.php в останалите 2 директории. Само по себеси това е достатъчно, но не спира “разлистването на поддиректориите и.

Доста по-сигурно и елегантно решение е използването на .htaccess файл с който се указва как да се ограничи достъпа до директорията при написване за адрес на директен път до нея, като начините са 2 – отказване на достъп до директорията и защитата и с парола. Тук ще обърна внимание на една настройка на httpd.conf файла при Apache 2.2, която оказва какво може да бъде поместено в  .htaccess . Става дума за

AllowOverride All

което при инсталирането е “AllowOverride None“. Това би спестило доста главоболие и главоблъсканици, защото ако не го промените .htaccess файловете просто не сработват. Другото нещо което трябва да се доуточни е, че ако не е изрично указано .htaccess файла важи за конкретната директория, както и за всички нейни поддиректории, като за данеда директория ще ваши този файл, който е най-близо до нея (в случай на много .htaccess файлове).

Варианта за отказ на достъп е по-лесния за изпълнение, като аз избрах именно него. В директорията която желаете поставете .htaccess файл със следното съдържание

Options -Indexes
ErrorDocument 403 /errpages/403.htm

С първия ред се блокира разглеждането на директориите, а втория ви пренасочва към предварително зададена страница в някоя директория в която пазите страниците за грешки. Какво ще гласи тази забранителна страница или как да е оформена няма да се разисква тук и сега, това си е въпрос а лично предпочитание и виждане. Ето поне обаче един списък с най-известните номера на грешки за страници:

Грешки от страна на клиента:
400 Bad syntax
401 Unauthorized
402 Not Used (Payment Granted)
403 Forbidden
404 Not Found

Грешки от страна на сървъра:
500 Internal Error
501 Not Implemented
502 Overloaded
503 Gateway Timeout

Следващата разновидност на защита с .htaccess е малко по-сложен и е свързан със защита на една или повече директории с парола. Метода е доста по-ефективен, но на практика е неприложим, ако блогът ви че се ползва за публикуване от други хора освен от вас… освен ако нямате някакво доверие на другите потребители и да приложите този метод.  При този вариант освен .htaccess файла се използва и .htpasswd файл, в който са поместени паролите за достъп до дадена директория. Файлът .htaccess трябва да съдържа следните редове:

AuthType Basic
AuthName “Login Form”
AuthUserFile “/usr/data/.htpasswd”
require valid-user

където:

– в първия ред указваме, че ще изискване ауторизация от потребителя
– във втория ред задаваме наименование(не мога да измисля по-добро обяснение на български
– на третия ред указваме, къде ни се намира файлът с потребителите и паролите – за него по късно ще стане дума
– с четвъртия ред защитаваме директорията в която се намира файла

Следва стъпката за създаване на самия .htpasswd файл. Тъй като това е файл с пароли, той задължително трябва да е извън публичните директории. Също така той е със специални права на четене, както и някакво просто криптиране на паролите, той не може да бъде създаден с прост текстови редактор като при някои други приложения (mpd напрмер), а се използва htpasswd командата:

#htpasswd -c -b /mqsto/na/.htpasswd potrebitel parola

като приложените параметри означават следното:

c –  параметър за създаване на нов файл. Ако файла вече съществъва параметъра може да се пропусне
b – параметъра оказва за потребителя “potrebitel” да се използва написаната в командния ред парола – в случая “parola”. Ако пропуснете този параметър ще излезе питане каква парола искате за потребителя.

Третия вариант на защита посредством .htaccess файл е най кардинален, а именно – ограничението на по IP на хората и местата от където може да се ровчи по блога. Достатъчно добър начин, но не много приложим, ако не разполагате със статични адреси. Все пак – ето и този вариант на файла:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Access Control”
AuthType Basic
order deny,allow
deny from all
# домашен IP адрес
allow from 192.168.1.10
# работен IP адрес
allow from 172.16.235.10
allow from 10.10.20.1

Проверка/сканиране за евентуални пропуски в сигурноста

В този раздел ще споменем автоматизираното сканиране на блога с няколко пригодени за целта плъгини. Това е един доста удобен начин с оглед на това, че направо си казва куде какво трябва да направите за да избегнете евентуални проблеми с някой чел-недочел пакостник.

Първия плъгин е WP Security Scan. Това е набор от инструменти, които могат да покажат кои файлове и директории са с грешни модове, кои файлове трябва да са по основните директории, как да промените базата си данни и инструмент за пароли. Не е кой знае какво, но има някой тънкости на които се учите с него.

Втория плъгин е wp-scanner plugin. Той също сканира блога за някои евентуални пропуски. Важното при него обаче е, че след като го инсталирате, активирате и сканирате блога от тази страница, задължително го деактивирайте, за да не може някой друг да сканира блога ви и да намери евентуални слаби местенца за атака.

Защита от търсещи машини

Като идея, това е малко противоречиво като мероприятие, но само на пръв поглед.  Но тук реално не става дума за ограничаване на търсачките, а за спиране на индексирането на директориите като пълнеж, и те остава да индексират само това което би трябвало да правят – блога.  Все пак тоталното спиране на търсачките  би ограничило разпространението на блога ви и неговото популяризиране, което надали е точната цел, след като по една или друга причина се пише в една среда като Интернет.

Ограничаването на индексирането от търсачките става посредством едно малко файлче – robots.txt в който е описано всяка ровеща машина какво има право да прави по вашия блог.  Синтаксиса на този файл е изключително прост:

User-agent: < име_на_агент>
Disallow: < име_на_директория>

Както в доста сфери на компютрите, така и тук знака “*” означава “всичко”, а самия синтакс не е ограничен то един агент за една директория. Ето как е записано описание означавашо отказ от обхождане на изброените директории от всички машини:

User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /backups/

Дали създадения от вас файл е коректен може да проверите на този адрес.

Както разбира се и много други неща, така и тук има и лесна страна на въпроса. Има една камара  линкове в нета с генератри на robots.txt като този например. Просто трябва да потърсите вместо да пишете като откачени.

В заключение:

Няколко съвета като за изпроводяк. Обновявайте редовно плъгините и блога си. Редовно правете бекъпи на базата данни и ако е възможно – на целия блог. Следете логовете на сървъра ако е възможно (сървъра си е ваш). Не казвайте на никой паролите си. Знам че звучи адски просто и сигурно ви е писнало, но тези нещица спестяват понягога огромни главоболия, особено ако си заобичате глога, а вярвайте ми, това рано или късно ще стане…

Остави коментар

Писането на кирилица е задължително!
Коментари, които не са на кирилица ще бъдат изтрити без предупреждение.
Всеки коментари съдържащи 1 или повече линка, ще бъдат публикувани след одобрение.