Представете си следната ситуация - инвестирали сте много време, пари и усилия в изграждането и развитието на сайта си. Трафикът тъкмо е започнал да се увеличава, когато изведнъж съобщение за „Измамен сайт“ ("Deceptive site ahead") на сайта Ви идва като студен душ. Всъщност, в повечето случаи, които сме виждали, редовни посетители на сайтове са първите, които съобщават за такива проблеми и това определено е лошо за всеки бизнес. Вие не само губите пари заради времето, през което сайтът Ви е недостъпен, но и репутацията на Вашата компания e поставена под въпрос. Дори ако не разполагате със супер важен уеб сайт, чувството не е хубаво.

wordpress security
Съобщението, което Google Chrome показва, когато се опитате да достъпите заразен сайт. Ако сте уебмастър на такъв сайт, можете да поискате Google да го преразгледа тук.

Ще се изненадате колко често биват хакнати сайтове, базирани на WordPress. Нашият екип по сигурността върши чудесна работа за идентифициране на компрометирани сайтове, почиства ги винаги, когато е възможно и, разбира се, уведомява нашите клиенти. Ние правим всичко възможно, за да сведем до минимум щетите за нашите потребители. В повечето случаи, които виждаме, въпросното хакнато приложение е WordPress, като обикновено е негова остаряла версия. Според изследване на Sucuri, WordPress представлява около 90% от всички хакнати CMS сайтове за 2018 г.:

wordpress security
Сравнителна графика от Sucuri показваща заразените сайтове според използвания CMS

Можете да намерите повече информация за Sucuri в това ревю на HostingPill.

Има ли дупки в сигурността на WordPress?

Не ни разбирайте погрешно. Тези проценти не означават, че WordPress е по-уязвим в сравнение с други системи за управление на съдържанието (CMS). Те са просто пряко отражение на това колко популярен е WordPress. Това е доминиращия CMS през последните осем години и с право хакерите са обърнали поглед към него. И макар, според статистиката, OpenCart да представлява едва 0,4% от хакнатите сайтове, това със сигурност не означава, че е най-сигурния CMS.

Няма нещо грешно в разработката на WordPress по отношение на сигурността. Популярността му е най-големия фактор тук. Хакерите се насочват към най-използваните софтуерни приложения по една проста причина - това им позволява да атакуват по-голям брой системи, като по този начин увеличават шансовете за успешен пробив. Доста често нашият екип по сигурността работи по случаи, в които хакери са хакнали стотици сайтове през уязвимост в популярен плъгин или тема.

Винаги, когато разследваме масови хакове, сканираме акаунтите, хоствани при нас, за да идентифицираме всички хакнати и уязвими (все още чисти) инсталации. След това ги защитаваме с парола, за да предотвратим по-нататъчни щети. Проверяваме логовете и накрая възстановяваме сайтовете от чисти бекъп архиви (когато такива са налични). Накрая, разбира се, известяваме всеки афектиран клиент по имейл.

Отдел Сигурност на ICDSoft

Фактът, че има хиляди плъгини и теми за WordPress помага на хакерите, тъй като им дава множество вектори за атака. Всъщност, разширенията на WordPress са най-уязвимата му страна. Много уеб разработчици не са добре запознати със сигурността и често правят неволни грешки, докато разработват плъгини и теми. След това те закърпват тези дупки в сигурността, като пускат актуализации и затова е изключително важно да не изоставате с версиите на плъгините и темите, които използвате.

Сега, след като вече сте наясно с рисковете, нека да разберем как можете да подобрите сигурността на Вашата WordPress инсталация. Имайте предвид, че ще се съсредоточим върху използването на инструменти, които са свободно достъпни в Контролния панел на ICDSoft, така че няма да се налага да харчите пари или да инсталирате допълнителни плъгини. Всички стъпки описани по-долу са лесни за следване и изпълнение.

1. Винаги използвайте най-актуалната версия на WordPress

Сигурно сте чували това хиляди пъти, но хората все още подценяват важността на актуализирането на софтуера, който използват. Според доклада на Sucuri, споменат по-горе, "общо 36,7% от заявките за почистване на WordPress използват стара версия".

Основните вектори за атака продължават да бъдат плъгини и теми. Ето защо е изключително важно да актуализирате не само версията на Вашата инсталация на WordPress, но и всички плъгини и теми, които използвате, без изключение.

Някои потребители се притесняват от актуализирането, тъй като това може да "счупи" сайта им. Въпреки че възможността със сигурност съществува, с ICDSoft няма нужда да се притеснявате, когато актуализирате софтуера, който използвате. Ако нещо се обърка, винаги можете да възстановите сайта си от нашите бекъп архиви. Можете също да създадете личен архив на Вашите данни преди да започнете актуализирането.

Не се тревожете - има бекъп

Нашата система създава автоматични бекъпи на целия Ви акаунт на друга машина – запазвайки файлове, бази данни и имейли. За акаунти на споделени сървъри, системните архиви се пазят седем дни. За акаунти на VPS и WebApps планове, системните архиви се съхраняват петнадесет дни.

Накратко казано, важно е да се актуализира и ако се хоствате при нас, това е напълно безопасно. WordPress предоставя лесен начин за актуализация чрез таблото за управление. Можете да използвате и SSH, който e наличен за всички хостинг акаунти в ICDSoft. Ако използвате SSH, можете да използвате WP-CLI команди, за да актуализирате WordPress и неговите плъгини и теми.

1.1 Актуализация през таблото на WordPress

Таблото за управление на WordPress ви информира, че е налична актуализация

Ако има налични актуализации за Вашата основна версия на WordPress или за един (или няколко) плъгини или теми, ще получите известие веднага след като влезете в таблото си за управление. Обикновено трябва да имате достъп до таблото за управление, като добавите /wp-admin към URL адреса на сайта си, напр. http://example.com/wp-admin.

Можете да изгледате видеото по-долу, което показва актуализацията на WordPress и един от плъгините (Elementor).

1.2 Актуализация с WP-CLI

wordpress security updates wp-cli
С червено са подчертани командите за актуализиране на ядрото и разширенията на WordPress чрез WP-CLI

WP-CLI е интерфейс с команден ред за WordPress, който Ви позволява да управлявате всички аспекти на приложението, без да е необходимо да използвате уеб браузър. WP-CLI е наличен на всички наши сървъри, но изисква SSH достъп.

Можете да активирате SSH през секцията "SSH достъп" на Контролния панел. След като влезете в акаунта си през SSH, трябва да навигирате до директорията на Вашия WordPress сайт. Тогава можете да изпълните WP-CLI командите, описани по-долу:

wp core check-update - проверява за налична нова версия на WordPress
wp core update - актуализира WordPress
wp plugin list - показва списък на инсталираните плъгини, техният статус (активен/неактивен) и евентуалното наличие на актуализации
wp plugin update <plugin-name> - актуализира съответния плъгин 
wp theme list - показва списък на инсталираните теми, техният статус (активен/неактивен) и евентуалното наличие на актуализации
wp theme update <theme-name> - актуализира съответната тема

2. Защитете таблото за управление на WordPress с допълнителна парола

Според доклад на Panda Security, 81% от всички хакове са базирани на несигурна или открадната парола. Опитът ни с хакнати WordPress инсталации показва, че често нападателят добива достъп до таблото за управление използвайки паролата на потребител с администраторски права. Паролата може да попадне в ръцете на хакери чрез вирус в компрометиран компютър на клиент, но има редица други възможности. Например, паролата може да бъде открадната при достъп до таблото за управление през публична Wi-Fi мрежа, или чрез brute-force атака. Веднъж влезли в системата, хакерите обикновено инсталират злонамерен скрипт като плъгин, или инжектират злонамерен код директно с помощта на редактора на плъгини и теми, наличен в таблото за управление на WordPress.

Ефективен начин да защитите Вашата инсталация на WordPress срещу неоторизиран достъп е да добавите втори слой защита. По този начин, дори ако хакерите се домогнат до Вашата WordPress парола, те няма да получат достъп до таблото за управление, тъй като ще имат нужда и от паролата за втория слой защита. Вторият слой, също така, Ви предпазва от brute-force атаки, тъй като ограничава достъпа до логин страницата на таблото за управление на WordPress.

За да активирате този втори слой на защита, просто трябва да защитите с парола файла wp-login.php. Нашият Контролен панел Ви позволява да го направите само с няколко прости стъпки:

1) Влезте в Контролния панел на хостинг акаунта -> "Защити" -> секция "Защита на уеб достъп".

2) Отворете директорията, в която е инсталиран WordPress. Интерфейсът изброява поддиректориите (wp-admin, wp-content и т.н.), както и файла wp-login.php.

3) Използвайте бутоните Plain или Digest до файла wp-login.php и добавете потребител за него.

Натиснете върху бутона Plain или Digest за wp-login.php и задайте потребителско име с парола.

Препоръчваме Ви да използвате метода Digest. По този начин потребителското име и паролата ще бъдат предадени от браузъра в криптиран вид. Методът Plain ще накара браузъра да не криптира данните, когато ги изпраща. Препоръчваме да използвате този метод, само когато достъпът до сайта се осъществява през HTTPS.

Обърнете внимание, че ако добавите парола за wp-login.php, всички потребители, които са се регистрирали на Вашия сайт и трябва да достъпят таблото за управление, ще трябва да въведат тази допълнителна комбинация от потребителско име и парола. В противен случай, те изобщо няма да могат да достигнат страницата за вход в таблото на WordPress. Това може да бъде сложно за инсталациите на WordPress с много потребители. В такива случаи можете просто да предоставите на всички регистрирани потребители едно и също потребителско име и парола за защита на скрипта wp-login.php. Въпреки че ще имат едни и същи идентификационни данни за допълнителния защитен слой, те все пак ще запазят своите собствени данни за вход за таблото за управление на WordPress.

3. Инсталирайте SSL сертификат за Вашия WordPress сайт

SSL сертификатът криптира комуникацията между компютъра на посетителя на сайта и сървъра. Може би се чудите как точно това е свързано с цялостната сигурност на WordPress? За съжаление, сравнително лесно е да се подслуша мрежовия трафик, когато се използва обикновена HTTP връзка. Ако достъпвате страницата си за вход в таблото за управление чрез HTTP, хакер, който е в същата Wi-Fi мрежа, може да види Вашето потребителско име и парола с помощта на инструмент като Wireshark.

Ако инсталирате SSL сертификат на Вашия сайт и направите използването на HTTPS връзки задължително, потребителските данни вече няма да се предават в обикновен текст, а ще бъдат криптирани. Ето защо SSL сертификатът подобрява значително сигурността на Вашата WordPress инсталация.

Можете да поръчате SSL сертификат от нашия сайт на адрес https://www.icdsoft.com/bg/ssl, както и чрез нашия Административен панел. Ние ще го инсталираме на сървъра, без да е необходима намеса от Ваша страна. Просто ще трябва да валидирате своя SSL сертификат по имейл.

Като алтернатива, можете да инсталирате безплатен SSL сертификат от Let's Encrypt. Всички сертификати, включително и безплатните такива, предлагани от Let's Encrypt, се придържат към едни и същи стандарти за сигурност и осигуряват същото ниво на криптиране. Можете да инсталирате сертификат Let's Encrypt от Контролния панел -> "SSL/HTTPS достъп" -> "Сертификати Let's Encrypt" -> изберете въпросния поддомейн (например "www.example.com / example.com") -> "Включи".

След като вече сте инсталирали SSL сертификат, можете да настроите сайта си да използва HTTPS връзки през секцията SSL/HTTPS Достъп в Контролния панел. Освен ако не сте персонализирали външния вид на Вашата форма за вход в WordPress, това трябва да е достатъчно, за да гарантирате криптирана HTTPS връзка с нея. Вашият сайт, обаче, може да започне да връща Mixed-Content грешки. Имаме инструкции за това как да настроите WordPress да използва HTTPS и да разреши този проблем, но можете също така да помолите нашия екип за поддръжка да направи тези промени вместо вас.

4. Ограничете достъпа до FTP услугата

FTP услугата е друг често срещан вектор за атака. Доста често наблюдаваме инциденти със сигурността, при които злонамерен скрипт е качен в главната уеб директория (/www /www) през FTP и по-късно достъпен през браузър и използван за качването на допълнителен злонамерен софтуер.

Най-ефективната защита срещу тази заплаха е да ограничите FTP услугата на Вашия акаунт само до Вашите IP адреси или да я деактивирате напълно. Това става лесно от Контролния панел -> "Защити" -> "Защита на FTP достъп". Интерфейсът автоматично ще вземе текущия Ви IP адрес и ще го попълни предварително под "Добавяне на IP адрес/мрежа", така че да можете бързо и лесно да го добавите.

5. Подобрете сигурността на основните файлове и директории на WordPress

Тази част се фокусира върху няколко подобрения на сигурността на основната инфраструктура на WordPress. Обърнете внимание, че те се предлагат с някои „странични ефекти“, за които трябва да внимавате, защото те могат да нарушат функционирането на Вашия сайт. Ето защо препоръчваме да тествате сайта си след прилагане на всяка промяна, за да сте сигурни, че всичко работи според очакванията. В случай че нещо се обърка, можете лесно да върнете промяната.

5.1 Забрана за изпълнение на PHP скриптове в директориите /wp-content и /wp-includes

Тази забрана намалява щетите от успешна хакерска атака, като забранява изпълняването на PHP скриптове в /wp-content и /wp-include директориите на WordPress. Обикновено, когато хакерите получат достъп до един сайт, те качват многобройни злонамерени файлове и често използват една от тези директории.

Можете да приложите това подобрение на защитата на WordPress директно чрез Контролния панел. Там трябва да отидете в секцията "WordPress" -> "Списък с управлявани инсталации" -> "Редактирай" -> "Защитаване на wp-content и wp-includes директориите" -> "Приложи". В случай, че Вашата инсталация на WordPress не е посочена там, трябва да се върнете в менюто "Сканиране за други инсталации" и да я добавите.

Този инструмент ще добави следния код към .htaccess файловете в директории /wp-content и /wp-include:

### BEGIN PHP Security rules enabled via Control Panel > WordPress ###
Options -Indexes
# Execution prevention
<Files ~ "\.ph(?:p[345]?|t|tml)$">
   deny from all
</Files>
#### END PHP Security rules enabled via Control Panel > WordPress ####

5.2 Забраняване на достъпа до скриптове в директория /wp-includes

Можете да добавите код към .htaccess файла в основната директория на WordPress, който деактивира директния достъп до скриптове в директорията /wp-includes. Добавянето на този код не трябва да създаде проблеми с Вашия сайт, тъй като по подразбиране скриптовете в тази директория не могат да бъдат достъпвани директно от потребителите.

Ето кодът, който трябва да добавите към .htaccess файла в основната директория на WordPress:

# Block the include-only files. 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress

Можете да добавите кода с помощта на редактора на файлове в секция "Файлове" в Контролния панел. Уверете се, че го добавяте извън редовете # BEGIN WordPress и # END WordPress. В противен случай, кодът може да бъде изтрит от WordPress при по-нататъшна промяна. Ако използвате инсталация на WordPress Multisite, трябва да премахнете реда RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] , тъй като той предотвратява изпълнението на легитимния файл ms-files.php, който участва в генерирането на изображения.

5.3 Забрана за редактиране на файлове през таблото за управление на WordPress

Както обърнахме внимание, хакерите често използват таблото за управление на WordPress, за да качват злонамерени плъгини или да вмъкват код в съществуващите плъгини или теми. Ето защо е добра идея напълно да деактивирате редактирането на файлове чрез таблото за управление. Можете да направите това, като добавите следните редове във файла wp-config.php с помощта на редактора на файлове наличен в секция "Файлове" в Контролния Панел:

## Disable Editing in Dashboard 
define('DISALLOW_FILE_EDIT', true);

Трябва да добавите тези редове в средата на файла, където са заложени и другите дефиниции. Имайте предвид, че след като добавите този код, вече няма да виждате редактора на теми под менюто „Външен вид“ на таблото за управление.

Автор

ICDSoft е българска компания с дългогодишен опит в хостинг индустрията. Държим на качество и честност в предоставяните услуги, а екипът ни от професионалисти е винаги готов да Ви помогне при нужда.