scoobydoo
Know you can!
Здравейте.
Напоследък всяка втора тема е за хакнат Wordpress и за това реших да въведа малко промени по моите WP-базирани сайтове. Вече си избрах самите промени и ги имплементирах (ммм йеа, любимата ми дума от университета ) в един сайт. Тъй като си ги записах в един файл за по-нататъшно ползване, реших да взема да ги споделя и тук за публично ползване (тъй като не поддържам блог на такава тематика в момента ).
Държа да отбележа, че аз не съм измислил нито един от методите, а съвсем нагло съм ги взел от разнообразни източници в интернет пространството. Също не разбирам много от някои от нещата по-долу, така че ако случайно има нещо, което смятате, че трябва да бъде поправено или подобрено, пишете .
Та ето какво може да направите:
1. През cPanel-а можете да добавите .htaccess парола на вашата wp-admin папка. Ако случайно имате плъгини, които при това положение няма да работят правилно и ще изискват достъп на потребителите, то изтеглете файла, който се създаде и заобиколете реда
по следния начин:
и запазете промените и го качете (ако не се лъжа, Cloxy ме научи на това последното, така че благодаря ). След това просто като влезете в админ панела ще си въведете паролата и юсера и ще накарате браузъра да ги помни, че да не ги пишете вече. Само ще цъквате ОК.
Ако получавате 404 грешка при влизане в админ панела, то добавете в началото на .htaccess файла следния ред:
2. Така и така сте почнали да ръчкате в този .htaccess файл на папката wp-admin, то можете да добавите и следния код:
Това ще блокира разните му там заявки без юсер агент и рефърър. Тук отново благодаря на Cloxy, той го сподели в друга тема. Червеното трябва да се редактира с вашия сайт. След това има и код, който забранява опасни методи за достъп и след това такъв, който предотвратява проблеми с предния код за някакъв плъгин или нещо такова. Последните два кода ги видях от плъгина BulletProof Security.
3. Добавете следния код във robots.txt на вашия сайт:
4. Сега ще добавим малко код в .htaccess файла на главната ви директория на сайта (не на wp-admin, както беше в стъпка 1 и 2)
Това са 8 отделни кода. Първия забранява отварянето на папки без индекс файлове, тоест все едно всички имат индекс файлове. Втория защитава htaccess файла. Третия изключва сигнатурата на сървъра, където се вижда информация полезна за хакерите. Четвъртия забранява методи за достъп ползвани от хакери (за това ще кажа още нещо след малко). Петия защитава сървърните файлове започващи с точка. Шестия защитава някои важни файлове, включително wp-config.php, който е много важен. От втория до шестия ги видях в плъгина BulletProof Security. Седмия защитава файловете, които само се include-ват (от тук: ЦЪК) . Осмия защитава от script injection (от тук: ЦЪК).
Относно забраната на TRACE метода, въпреки че го има в кода за всеки случай, той не може да се спре от htaccess файла и трябва да кажете на хоста си да го спре. Той може и вече да е спрян. За да тествате трябва да направите заявка през telnet сайт, например този. Заявката да е тази отдолу, също попълнете вашия хост долу и в другото поле в сайта също, а порта да е 80:
TRACE / HTTP/1.0
A: b
C: d
Host: example.com
Ако се върне статус 200 OK значи НЕ е забранен метода и трябва да се забрани.
5. Сега махнете от сайта си нещата, които издават версията на вашия Wordpress и това, че е Wordpress (или поне част от тях). Първо добавете този код във functions.php файла на темата:
След това премахнете надписа Powered by Wordpress, който обикновено е във footer.php файла на темата ви. И третото нещо е да изтриете readme.html файла от главната директория, защото в него пише версията на Wordpress.
6. Използвайте SFPT вместо FTP. Промяната в повечето случай е много лесна и възможна. На мен ми се наложи само да сменя едно число (порта) в FTP програмата ми и готово. През SFTP данните се криптират и ако бъдат прихванати, ще бъдат нечетими. Вижте примерно за HostGator какво да смените, също за SuperHosting.bg. Ако има проблеми, питайте вашия хостинг доставчик. Това няма да стане на всеки хостинг между другото.
7. Сменете стандартния префикс на таблиците на базата ви данни. По подразбиране е wp_ и така лесно се правят SQL инджекти до колкото разбирам. За да го смените с нещо друго, примерно c25n87_ то вижте тази статия: ЦЪК. Не е трудно, само трябва да редактирате един файл, после да промените няколко неща в phpmyadmin и готово. А в бъдеще като правите нова инсталация просто променяйте префикса още от тогава във wp-config.php файла или там в браузъра като ви пита при инсталацията.
8. Последното е съвет. Всъщност няколко. Не ползвайте други плъгини и теми освен тези в официалната колекция на WP. Или ако го правите нека да са платени и от реномирани сайтове. Също правете бакъп на всичко редовно. И също имайте хубави пароли. Аз винаги ползвам пароли от сорта на nu7dnw8304jd. Четох някъде, че 40% от паролите, които се ползват, могат да бъдат налучкани от програма. Дори и да си мислите, че е много умна, примерно някаква подредба по клавиатурата, то знайте, че може да грешите и лесно да ви бъде позната. Също премахнете плъгините, които не ползвате. Хвърляйте по едно око на google webmaster tools, там казват ако са видяли вирус. Може и да сканирате един път месечно с разни онлайн тулове като: ЦЪК. И също нещо супер важно е да защитите своя компютър с каквото решите, там антивирусни и файърловове. Защото там ако пробият, нататък е лесно.
9. Този код да се добави в .htaccess файла на wp-content/uploads. Той забранява изпълняването на php файлове от там. (Благодаря на Sucuri SiteCheck Malware Scanner за идеята)
10. Може да се инсталират следните два плъгина, които са много полезни. Първия автоматично засича всяка промяна на файловете ви и дава отчет, така че ако някой вирус промени някакъв файл, вие ще знаете. Всякакви други промени също са видими, за това е добре да се игнорират някои папки, примерно uploads или cache. А с втория можете да сканирате за вируси когато поискате.
WordPress File Monitor Plus (Благодаря на Cloxy за идеята)
Sucuri SiteCheck Malware Scanner (Благодаря на accent за идеята)
11. Сменете правата на някои файлове и папки. Става лесно през ftp програма с десен бутон на файла. Възможно е, но е малко вероятно някои плъгини да искат достъп до wp-config.php файла и да не го получат. Имайте едно на ум за това. (Взето от плъгина BulletProof Security)
.htaccess -> 404 - (бележка: няма да можете да редактирате файла през cPanel-а, например блокиране на IP адреси и т.н.)
wp-config.php -> 400
index.php -> 400
wp-blog-header.php -> 400
главна папка -> 705
wp-admin папка -> 705
wp-includes папка -> 705
wp-content папка -> 705
12. Който не ползва пингбак и тракбак функционалностите може да ги спре от настройките (в дискусия първите две отметки да се махнат дето пише нещо от сорта на да опитва да известява и да получава известия). След като ги спрете добавете тези редове във functions.php файла на темата ви:
Така в head секцията на сайта ви няма да се виждат адресите на файловете през които се правят тези работи. И на края може директно да изтриете файла xmlrpc.php, който е в главната директория (като ъпдейтнете WP може би пак ще трябва да го изтриете).
Също може да се наложи сами да махнете от header.php файла на темата си някои редове. Зависи от темата. На моята примерно изчезнаха само първите два с този код отгоре, но другия ръчно го махнах. Става дума за редове подобни на тези:
Източник на кода и повече за самия файл тук: ЦЪК
13. Уверете се, че във wp-config.php файла ви го има този ред: define('WP_DEBUG', false); Стойността трябва да е false за да не се изписват грешки, които ще разкрият полезна за хакерите информация.
14. Изтрийте темите, които не използвате. По този начин техните дупки в сигурността няма да могат да бъдат използвани. Например много хора оставят стандартните теми въпреки че са си активирали друга тема.
Напоследък всяка втора тема е за хакнат Wordpress и за това реших да въведа малко промени по моите WP-базирани сайтове. Вече си избрах самите промени и ги имплементирах (ммм йеа, любимата ми дума от университета ) в един сайт. Тъй като си ги записах в един файл за по-нататъшно ползване, реших да взема да ги споделя и тук за публично ползване (тъй като не поддържам блог на такава тематика в момента ).
Държа да отбележа, че аз не съм измислил нито един от методите, а съвсем нагло съм ги взел от разнообразни източници в интернет пространството. Също не разбирам много от някои от нещата по-долу, така че ако случайно има нещо, което смятате, че трябва да бъде поправено или подобрено, пишете .
Та ето какво може да направите:
1. През cPanel-а можете да добавите .htaccess парола на вашата wp-admin папка. Ако случайно имате плъгини, които при това положение няма да работят правилно и ще изискват достъп на потребителите, то изтеглете файла, който се създаде и заобиколете реда
Код:
Require valid-user
Код:
<Limit POST>
Require valid-user
</Limit>
Ако получавате 404 грешка при влизане в админ панела, то добавете в началото на .htaccess файла следния ред:
Код:
ErrorDocument 401 default
2. Така и така сте почнали да ръчкате в този .htaccess файл на папката wp-admin, то можете да добавите и следния код:
Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule .* - [F]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://[COLOR="#FF0000"]www.example.com[/COLOR] [NC]
RewriteRule .* - [F]
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC]
RewriteRule ^(.*)$ - [F,L]
# Allow wp-admin files that are called by plugins
# Fix for WP Press This
RewriteCond %{REQUEST_URI} (press-this\.php) [NC]
RewriteRule . - [S=1]
3. Добавете следния код във robots.txt на вашия сайт:
Код:
User-Agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
4. Сега ще добавим малко код в .htaccess файла на главната ви директория на сайта (не на wp-admin, както беше в стъпка 1 и 2)
Код:
Options All -Indexes
<files .htaccess>
order allow,deny
deny from all
</files>
ServerSignature Off
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK|DEBUG) [NC]
RewriteRule ^(.*)$ - [F,L]
# DENY ACCESS TO all file names starting with dot
RedirectMatch 403 /\..*$
<FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|readme\.html)">
Order allow,deny
Deny from all
</FilesMatch>
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]
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Това са 8 отделни кода. Първия забранява отварянето на папки без индекс файлове, тоест все едно всички имат индекс файлове. Втория защитава htaccess файла. Третия изключва сигнатурата на сървъра, където се вижда информация полезна за хакерите. Четвъртия забранява методи за достъп ползвани от хакери (за това ще кажа още нещо след малко). Петия защитава сървърните файлове започващи с точка. Шестия защитава някои важни файлове, включително wp-config.php, който е много важен. От втория до шестия ги видях в плъгина BulletProof Security. Седмия защитава файловете, които само се include-ват (от тук: ЦЪК) . Осмия защитава от script injection (от тук: ЦЪК).
Относно забраната на TRACE метода, въпреки че го има в кода за всеки случай, той не може да се спре от htaccess файла и трябва да кажете на хоста си да го спре. Той може и вече да е спрян. За да тествате трябва да направите заявка през telnet сайт, например този. Заявката да е тази отдолу, също попълнете вашия хост долу и в другото поле в сайта също, а порта да е 80:
TRACE / HTTP/1.0
A: b
C: d
Host: example.com
Ако се върне статус 200 OK значи НЕ е забранен метода и трябва да се забрани.
5. Сега махнете от сайта си нещата, които издават версията на вашия Wordpress и това, че е Wordpress (или поне част от тях). Първо добавете този код във functions.php файла на темата:
Код:
remove_action('wp_head', 'wp_generator');
6. Използвайте SFPT вместо FTP. Промяната в повечето случай е много лесна и възможна. На мен ми се наложи само да сменя едно число (порта) в FTP програмата ми и готово. През SFTP данните се криптират и ако бъдат прихванати, ще бъдат нечетими. Вижте примерно за HostGator какво да смените, също за SuperHosting.bg. Ако има проблеми, питайте вашия хостинг доставчик. Това няма да стане на всеки хостинг между другото.
7. Сменете стандартния префикс на таблиците на базата ви данни. По подразбиране е wp_ и така лесно се правят SQL инджекти до колкото разбирам. За да го смените с нещо друго, примерно c25n87_ то вижте тази статия: ЦЪК. Не е трудно, само трябва да редактирате един файл, после да промените няколко неща в phpmyadmin и готово. А в бъдеще като правите нова инсталация просто променяйте префикса още от тогава във wp-config.php файла или там в браузъра като ви пита при инсталацията.
8. Последното е съвет. Всъщност няколко. Не ползвайте други плъгини и теми освен тези в официалната колекция на WP. Или ако го правите нека да са платени и от реномирани сайтове. Също правете бакъп на всичко редовно. И също имайте хубави пароли. Аз винаги ползвам пароли от сорта на nu7dnw8304jd. Четох някъде, че 40% от паролите, които се ползват, могат да бъдат налучкани от програма. Дори и да си мислите, че е много умна, примерно някаква подредба по клавиатурата, то знайте, че може да грешите и лесно да ви бъде позната. Също премахнете плъгините, които не ползвате. Хвърляйте по едно око на google webmaster tools, там казват ако са видяли вирус. Може и да сканирате един път месечно с разни онлайн тулове като: ЦЪК. И също нещо супер важно е да защитите своя компютър с каквото решите, там антивирусни и файърловове. Защото там ако пробият, нататък е лесно.
9. Този код да се добави в .htaccess файла на wp-content/uploads. Той забранява изпълняването на php файлове от там. (Благодаря на Sucuri SiteCheck Malware Scanner за идеята)
Код:
<Files *.php>
deny from all
</Files>
10. Може да се инсталират следните два плъгина, които са много полезни. Първия автоматично засича всяка промяна на файловете ви и дава отчет, така че ако някой вирус промени някакъв файл, вие ще знаете. Всякакви други промени също са видими, за това е добре да се игнорират някои папки, примерно uploads или cache. А с втория можете да сканирате за вируси когато поискате.
WordPress File Monitor Plus (Благодаря на Cloxy за идеята)
Sucuri SiteCheck Malware Scanner (Благодаря на accent за идеята)
11. Сменете правата на някои файлове и папки. Става лесно през ftp програма с десен бутон на файла. Възможно е, но е малко вероятно някои плъгини да искат достъп до wp-config.php файла и да не го получат. Имайте едно на ум за това. (Взето от плъгина BulletProof Security)
.htaccess -> 404 - (бележка: няма да можете да редактирате файла през cPanel-а, например блокиране на IP адреси и т.н.)
wp-config.php -> 400
index.php -> 400
wp-blog-header.php -> 400
главна папка -> 705
wp-admin папка -> 705
wp-includes папка -> 705
wp-content папка -> 705
12. Който не ползва пингбак и тракбак функционалностите може да ги спре от настройките (в дискусия първите две отметки да се махнат дето пише нещо от сорта на да опитва да известява и да получава известия). След като ги спрете добавете тези редове във functions.php файла на темата ви:
Код:
function removeHeadLinks() {
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
}
add_action('init', 'removeHeadLinks');
Така в head секцията на сайта ви няма да се виждат адресите на файловете през които се правят тези работи. И на края може директно да изтриете файла xmlrpc.php, който е в главната директория (като ъпдейтнете WP може би пак ще трябва да го изтриете).
Също може да се наложи сами да махнете от header.php файла на темата си някои редове. Зависи от темата. На моята примерно изчезнаха само първите два с този код отгоре, но другия ръчно го махнах. Става дума за редове подобни на тези:
Код:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://xxxxxxxx.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://xxxxxxxxxx.com/wp-includes/wlwmanifest.xml" />
<link rel="pingback" href="http://xxxxxxxxxxxxxx.com/xmlrpc.php" />
Източник на кода и повече за самия файл тук: ЦЪК
13. Уверете се, че във wp-config.php файла ви го има този ред: define('WP_DEBUG', false); Стойността трябва да е false за да не се изписват грешки, които ще разкрият полезна за хакерите информация.
14. Изтрийте темите, които не използвате. По този начин техните дупки в сигурността няма да могат да бъдат използвани. Например много хора оставят стандартните теми въпреки че са си активирали друга тема.
Последно редактирано: