Съобщение

Collapse
No announcement yet.

Да стегнем малко горкия, беззащитен Wordpress :)

Collapse
Това е важна тема.
X
X
  • Филтър
  • Период
  • Показване на
Clear All
нови коментари

  • Да стегнем малко горкия, беззащитен Wordpress :)

    Здравейте.

    Напоследък всяка втора тема е за хакнат Wordpress и за това реших да въведа малко промени по моите WP-базирани сайтове. Вече си избрах самите промени и ги имплементирах (ммм йеа, любимата ми дума от университета ) в един сайт. Тъй като си ги записах в един файл за по-нататъшно ползване, реших да взема да ги споделя и тук за публично ползване (тъй като не поддържам блог на такава тематика в момента ).

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

    Та ето какво може да направите:
    1. През cPanel-а можете да добавите .htaccess парола на вашата wp-admin папка. Ако случайно имате плъгини, които при това положение няма да работят правилно и ще изискват достъп на потребителите, то изтеглете файла, който се създаде и заобиколете реда
    Code:
    Require valid-user
    по следния начин:
    Code:
    <Limit POST>
    Require valid-user
    </Limit>
    и запазете промените и го качете (ако не се лъжа, Cloxy ме научи на това последното, така че благодаря ). След това просто като влезете в админ панела ще си въведете паролата и юсера и ще накарате браузъра да ги помни, че да не ги пишете вече. Само ще цъквате ОК.

    Ако получавате 404 грешка при влизане в админ панела, то добавете в началото на .htaccess файла следния ред:
    Code:
    ErrorDocument 401 default
    2. Така и така сте почнали да ръчкате в този .htaccess файл на папката wp-admin, то можете да добавите и следния код:
    Code:
    <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://www.example.com [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]
    Това ще блокира разните му там заявки без юсер агент и рефърър. Тук отново благодаря на Cloxy, той го сподели в друга тема. Червеното трябва да се редактира с вашия сайт. След това има и код, който забранява опасни методи за достъп и след това такъв, който предотвратява проблеми с предния код за някакъв плъгин или нещо такова. Последните два кода ги видях от плъгина BulletProof Security.

    3. Добавете следния код във robots.txt на вашия сайт:
    Code:
    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)
    Code:
    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 файла на темата:
    Code:
    remove_action('wp_head', 'wp_generator');
    След това премахнете надписа 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 за идеята)
    Code:
    <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 файла на темата ви:
    Code:
    function removeHeadLinks() {
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    }
    add_action('init', 'removeHeadLinks');
    Така в head секцията на сайта ви няма да се виждат адресите на файловете през които се правят тези работи. И на края може директно да изтриете файла xmlrpc.php, който е в главната директория (като ъпдейтнете WP може би пак ще трябва да го изтриете).

    Също може да се наложи сами да махнете от header.php файла на темата си някои редове. Зависи от темата. На моята примерно изчезнаха само първите два с този код отгоре, но другия ръчно го махнах. Става дума за редове подобни на тези:
    Code:
    <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. Изтрийте темите, които не използвате. По този начин техните дупки в сигурността няма да могат да бъдат използвани. Например много хора оставят стандартните теми въпреки че са си активирали друга тема.
    Последна редакция от scoobydoo; 06-07-2013, 12:27 PM.

  • diabolic.bg
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Май през миналата седмица стана приказка за ботнета, който провежда brute force атака и чупи паролите на Wordpress сайтове по целия свят. Тези, които използват безплатния ZB Block, вече могат да се възползват от още една екстра - специална защита срещу този тип атака. Повече подробности за начина на употреба и изискванията може да прочетете във форума на автора тук.

    Leave a comment:


  • scoobydoo
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Който е приложил нещата от темата, е защитен от тази атака и то по няколко начина дори. Така че поздравления на всеки, който е решил да инвестира времето в прилагането на съветите от темата .

    Leave a comment:


  • gogobg
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Тук от Суперхостинг са писали доста за атаките и някои начини за защита. Глобална Brute Force атака към WordPress сайтовете | Блог на SuperHosting.BG
    Аз лично съм задал да мога да достъпвам wp-admin само от моето IP, това в комбинация с някои други методи които са споменавани в тази и други теми на форума.

    Leave a comment:


  • diabolic.bg
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Защо да няма? Ако те е набелязал преди час и сега с влизането задава директно заявка към твоя wp-login.php, мисля, че няма да има referer. Не случайно и броячите отчитат реферални посещения и директно влизане. Може и да греша де, не споря, ама си мисля, че referer не е задължителна величина при всяко влизане. Ако пък дойде от wp-admin/index.php, както пише s1yf0x, как ще го спре този код?
    Последна редакция от diabolic.bg; 13-04-2013, 05:40 PM.

    Leave a comment:


  • cloxy
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Относно текущата атака, до колкото гледам от мои блогове заявките са без referrer. Предлагам да се направи едно изискване в htaccess, което да проверява заявките към wp-login.php дали имат referrer. Може би нещо подобно (не е тествано):

    Code:
    <FilesMatch "^wp-login\.php$">
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^$
    RewriteRule .* - [F,L]
    </FilesMatch>
    Няма логика там да отиват заявки без referer.

    Leave a comment:


  • s1yf0x
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    123456 се брои за трудна парола. Повечето спират като стигнат до 5
    Последна редакция от s1yf0x; 13-04-2013, 02:25 PM.

    Leave a comment:


  • diabolic.bg
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Напълно съм съгласен с теб. Винаги съм твърдял, че паролата е най-важната защита и самият аз за моя админ панел ползвам 16 символна парола, като половината са служебни символи и главни букви. Но на нашенския потребител, колкото и да му се обяснява, него го мързи да мисли и предпочита зашеметяващите пароли от типа 123456, които най-трудно се отгатват...

    Leave a comment:


  • s1yf0x
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Първоначално публикувано от diabolic.bg View Post
    Ето една съвсем прясна информация, касаеща любимата на доста хора Уърдпрес, която може да ги накара да се замислят и да обърнат внимание на ZB Block. Тук има хора, които го ползват вече и могат да дадат точна оценка на работата му. Отново напомням, че системата е безплатна и аз нямам никаква далавера от това да ви я препоръчвам, освен че съм доволен от защитата.

    Никога не съм мисли, че ще кажа нещо в защита на WP, но специално в този случай грешиш. Вината за "създаването" на този ботнет е изцяло на собствениците на сайтовете. Лесният начин на работа с WP превърна всеки олигофрен с достъп до интернет в webmaster guru. Ако тези хора използват нормални пароли, разбирай поне 10 символа със смесен регистър (големи и малки букви), поне една цифра и поне един служебен символ, никога няма да станат жертва на подобни атаки. Общо взето качват php shell директно през админ панела. Заявките за налучкване на пролата са към wp-admin/index.php, а не директно към wp-login.php . Качения php shell го именуват като плъгин "tell a friend"

    Code:
    /usr/local/apache/domlogs/*********:87.244.157.41 - - [10/Apr/2013:23:00:29 +0300] "POST /wp-admin/update.php?action=upload-plugin HTTP/1.1" 200 4533 "http://*********/wp-admin/plugin-install.php?tab=upload" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
    
    /usr/local/apache/domlogs/**********:87.244.157.41 - - [10/Apr/2013:23:00:31 +0300] "GET /wp-admin/load-scripts.php?c=1&load=admin-bar,hoverIntent,common,jquery-color&ver=3.4.2 HTTP/1.1" 200 5480 "http://*********/wp-admin/update.php?action=upload-plugin" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
    
    /usr/local/apache/domlogs/*********:87.244.157.41 - - [10/Apr/2013:23:00:36 +0300] "GET /wp-content/plugins/tell-a-friend/tell-a-friend.php HTTP/1.1"  200 113 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

    Leave a comment:


  • diabolic.bg
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Ето една съвсем прясна информация, касаеща любимата на доста хора Уърдпрес, която може да ги накара да се замислят и да обърнат внимание на ZB Block. Тук има хора, които го ползват вече и могат да дадат точна оценка на работата му. Отново напомням, че системата е безплатна и аз нямам никаква далавера от това да ви я препоръчвам, освен че съм доволен от защитата.

    Leave a comment:


  • scoobydoo
    replied
    За: Да стегнем малко горкия, беззащитен Wordpress

    Днес добавих още един съвет - номер 14. Идеята е да се премахнат темите, които не се ползват, вместо да стоят напразно заедно със своите евентуални дупки в сигурността. Въпреки че не са активирани и не се ползват, хакерите могат да правят разни заявки към файловете им.

    Leave a comment:


  • nikkola
    replied
    Re: Да стегнем малко горкия, беззащитен Wordpress

    Първоначално публикувано от scoobydoo View Post
    При мен си работи след като промених правилата на папките. Не знам защо при теб не става. Аз много не разбирам от права и т.н., така че някой друг да помогне тук.
    А за плъгина, моето лично предпочитание е да не слагам такива сложни плъгини дето ръчкат навсякъде по разни htaccess файлове щото правят една голяма каша на края . За това ръчно си правя промените и си знам поне какво съм направил и как да го премахна.
    И аз като видях какво съдържа ми прилоша, освен това ползва много натрапчив банер, за ъпгрейд. Нямам нищо против платените неща, но малко по-културно

    Leave a comment:


  • scoobydoo
    replied
    Re: Да стегнем малко горкия, беззащитен Wordpress

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

    Leave a comment:


  • nikkola
    replied
    Re: За: Да стегнем малко горкия, беззащитен Wordpress

    и още нещо се сетих, след тези настройки има ли смисъл от Bullet Proof Security Plugin, най-малкото изглежда много изнервящ

    Leave a comment:


  • nikkola
    replied
    Re: Да стегнем малко горкия, беззащитен Wordpress

    Темата е уникална. Спестява много енергия и време
    Иначе по някаква причина, не мога да си оправя с правата на папките, единичните файлове ок, но не и папките. Главната папка, в която е wp , както и wp-admin, wp-conten, wp-includes водят или до цялостна забрана за достъп (в първия случай) или до липса на връзка с дб. В момента са на 755 , Каква би могла да бъде причината ?

    Leave a comment:

Изчакайте...
X