Повече PHP време, подозирам разни ботове...Трябва ми съвет

lqllqlq

Well-Known Member
Става дума за следното:
Гледах днес статистиките и последните 45 дни плавно, но константно расте PHP CPU времето на хостинга. След като прехвърлих нещата в awstats, както подозирах се оказа един домейн с Wordpress. На пръв поглед бие на очи, че това IP 209.126.222.254, което ми излиза като centos5222254.aspadmin.net има 3,743 хита, а освен това wp-login.php има над 4000 хита, и най-вече Unknown robot (identified by 'bot*') 42,303+717 хита с 1.54 GB трафик.
Последното най-много ме смущава, тъй като не ми дава кой бот го прави този проблем...
Знам, че отговора на питането ми е "Виж си добавките", но преди 2,5 месеца ги разчистих и заковах минутките на 20-25 на ден. От тогава не се публикува, не са инсталирани други - никакви промени.
Имам 1 кеширащ - hyper cache extended, related post и social share...
Въпреки, че в акаунта има още 2 сайта съм убеден, че причината е в 3тият с WP, тъй като статистикте като посещения на останалите не са мръднали и няма така открояващи се както при wordpress-a. Интересно е, че няма скокове във посещенията и варират +- 25-40 на ден по статистики за последните 60 дни.
И преди съм питал за съвет по този проблем, предприемал съм мерки и смятах, че нещата са се нормализирали, но явно нещо пак се е променило и е пак старото положение.
Какво бихте ме посъветвали, защото сайта е некомерсиален и ми е хоби и ми е жал да го затрия само заради PHP CPU време. От хостинга ми твърдят, че няма как да се види какво точно от PHP-тата товари, в което не съм много убеден, но не мога да споря, тъй като не разбирам от тези неща.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Същия тоя (bot*) и при мен прави мизерии. Обикаля като ненормален.
Живо се интересувам от решение срещу него. (Както и срещу други такива Unknown bots)
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

ами варианти много...
Първо - знаете ли какво се опитва да прави въпросния бот? Докато кажете - ето малко htaccess гъзарийки

Код:
# deny access to evil robots site rippers offline browsers and other nasty scum
# може да си добавяте още ботове, ако им знаете името
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]

Ако се знае от къде идва:

Код:
RewriteCond %{HTTP_REFERER} ^http://www.idvaot.com$
RewriteRule !^http://[^/.]\.yourdomain\.com.* - [F,L]

Ето известна защита срещу ddos атаки

Код:
# Modification for dealing with botnet DDoS via high CPU utilization
# by overwhelming PHP with POST data
#
# Referer is empty
RewriteCond %{HTTP_REFERER} ^$
# User agent is empty
RewriteCond %{HTTP_USER_AGENT} ^$
# The request is for the home page
RewriteCond %{REQUEST_URI} ^/$
# It is a POST request
RewriteCond %{REQUEST_METHOD} POST
# Forbid the request
RewriteRule ^(.*)$ - [F,L]

Този код е малко по-сложен, но ако се настрои върши доста полезна работа:

Код:
# set variables for user agents and referers and ip addresses
SetEnvIfNoCase User-Agent ".*(user-agent-you-want-to-block|php/perl).*" BlockedAgent
SetEnvIfNoCase Referer ".*(block-this-referrer|and-this-referrer|and-this-referrer).*" BlockedReferer
SetEnvIfNoCase REMOTE_ADDR ".*(666.666.66.0|22.22.22.222|999.999.99.999).*" BlockedAddress

# set variable for any class B network coming from a given netblock
SetEnvIfNoCase REMOTE_ADDR "66.154.*" BlockedAddress

# set variable for two class B networks 198.25.0.0 and 198.26.0.0
SetEnvIfNoCase REMOTE_ADDR "198.2(5|6)\..*" BlockedAddress

# deny any matches from above and send a 403 denied
<Limit GET POST PUT>
 order deny,allow
 deny from env=BlockedAgent
 deny from env=BlockedReferer
 deny from env=BlockedAddress
 allow from all
</Limit>

Ако се опитват да спамят по коментарите във УП, ето едно елегантно решение:

Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

Има и още, но дайте подробности какво правят ботовете...
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Понеже преди 3 месеца имах подобен проблем. Пратих няколко IP-та през HTACCESS да пасат в един друг сайт. Просто маркираш IP-то и го пращаш - все имаш някой друг на който му имаш зъб.

Относно wp-login.php - напоследък има някаква мания да се хакват и пълзят всякакви ботове. Аз си инсталирах limit login attempts - при който след Х опита не можеш да се логнеш за Y часа. Следващтата стъпка е да разреша само логването от определени IP-та или да направя wp-login да сочи към някой конкурент.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Аз гледам в awstats, че гоогле бот-а ми е направи 1гб трафик.. и той ми товари ЦПУ-то.. чудя се, ако го огранича от GWT да намали обхода на по рядко дали ще имам спад в позициите си в серпа?

Поздрави
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Първо... не знам как съпорт на хостинг би могъл да каже, че не може да се наблюдава кои процеси товарят.. Помолете ги да ви дадат достъп по SSH, свалете си програмата putty, логнете се и дайте команда ps auwx . Така се вижда кои процеси са активни в момента и респективно гълтат CPU. Също в phpMyAdmin - линк най-горе "Status" и се вижда какви процеси са активни в базата данни. При cPanel не винаги работи, обаче.

И най-важното - прекарайте си сайте през Cloudflare.com . В Page rules задайте правило "www.domain.com/* " , като по този начин Cloudflare безплатно кешира абсолютно всичко в сайта ви. Колкото и тежки и повтарящи се заявки да има към сайта ви, само първата или няколко ще бъдат обслужени от хостинг сървъра ви, след това конкретната страница/файл от вашия домейн се сваля на сървърите на Cloudflare. От този момент Cloudflare започва да предоставя кеширана версия на проблемната заявка във вашия сайт, без въобще да се допитва до хостинг сървъра, където имате акаунт и си плащате. Така към сървъра, където имате хостинг съответно заявките падат от стотици на... близо до 0 ;)
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Първо... не знам как съпорт на хостинг би могъл да каже, че не може да се наблюдава кои процеси товарят.. Помолете ги да ви дадат достъп по SSH, свалете си програмата putty, логнете се и дайте команда ps auwx . Така се вижда кои процеси са активни в момента и респективно гълтат CPU. Също в phpMyAdmin - линк най-горе "Status" и се вижда какви процеси са активни в базата данни. При cPanel не винаги работи, обаче.

И най-важното - прекарайте си сайте през Cloudflare.com . В Page rules задайте правило "www.domain.com/* " , като по този начин Cloudflare безплатно кешира абсолютно всичко в сайта ви. Колкото и тежки и повтарящи се заявки да има към сайта ви, само първата или няколко ще бъдат обслужени от хостинг сървъра ви, след това конкретната страница/файл от вашия домейн се сваля на сървърите на Cloudflare. От този момент Cloudflare започва да предоставя кеширана версия на проблемната заявка във вашия сайт, без въобще да се допитва до хостинг сървъра, където имате акаунт и си плащате. Така към сървъра, където имате хостинг съответно заявките падат от стотици на... близо до 0 ;)

И като видиш 5 php процеса, това какво ти говори? Кзва ти точно кой сайт от хостинга прави проблем, кой php скрипт и коя php функция от този скрипт прави натоварването ли? ps auxf |grep ser мога да изкарам всичките процеси на даден потребител в Linux но това не показва нищо. За да се установи евентуално кой е скрипта, трябват дни на наблюдение, с ptrace/ strace/ xhprof/ mysql profiling и куп други операции, като следене на обема access- логове за всеки един сайт в акаунта, дали не е хакнат CMS-а, дали не зарежда информация от външен източник, който в момента е недостъпен, дали генерира бавни mysql заявки, дали генерира mysql грешки, дали генерира php грешки.

Защо пишете глупости без дори да сте наясно как се трасира един процес в linux и какво изобщо означава cpu time.

Към автора на темата, защити си wp-login.php с парола за достъп и опитите на всички ботове ще спрат до там. Ако го направи през apache с header 401 дори няма да ти се отчита процесорно време, защото то обикновено върви като потребител nobody. А ако си инсталираш плъгин, който да ти следи неуспешните логини - това е допълнително процесорно време, разходвано от PHP
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Ами ако човек иска да си проследи проблема и има достъп по SSH, защо да не наблюдава няколко дни кой процес се стартира най-често?! Не смятам, че това е глупост, защото аз именно с такива постоянни наблюдения съм си изчиствал натоварвания. Не е казано, че съпортът трябва да се наеме с това, но ако човек сам си следи кой процес най-често се стартира, то значи с голяма вероятност именно този процес предизвиква натоварване, все пак то не идва от въздуха. С тази команда човек си наблюдава кои процеси са активни, съответно най-вероятно ти предизвикват натоварване.

Иначе наистина, наблюдаване на логовете също е добър начин да се види кое предизвиква натоварване, даже паралелно наблюдаване на логове + ps auwx няма как да не покаже къде е проблемът.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

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

Screenshot.png

айде кажи ми сега, този процес, от кой скрипт е стартиран, коя функция изпълнява и какви systemcalls прави в момента?
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Мерси на всички включили се!
Остава обаче въпроса как мога да хвана кои са ботовете, които влизат под общото Unknown robot (identified by 'bot*') за да ги стопирам? Защото в тази графа може да влиза 1, но може и да са 10... Варианта с имената по-горе е добър, но това специално за WP не го виждам. В магазините имам на самият скрипт статс за роботи и с бърз поглед виждам кой точно е блъскал като луд и кое му е IP–то, но за WP нещата не са така.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

От постовете не разбрах последно има ли SSH или не?

От хостинга ми твърдят, че няма как да се види какво точно от PHP-тата товари, в което не съм много убеден, но не мога да споря, тъй като не разбирам от тези неща.

Винаги може да се види кой процес точно какво прави. Дали с mod_status, lsof, strace, дали с дебъг, дали пък ще следиш mysql-a и i/о на сървърa кой какво къде пише и т.н. , варианти много. По-скоро не им се занимава.

s1yf0x - точно за 5 минути през ssh ще разбера кой е скрипта.

Колкото до проблема, аз по-скоро бих спрял достъпа от тези айпита като начало и след това ще си прегледам кода.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

s1yf0x - точно за 5 минути през ssh ще разбера кой е скрипта.

Да, затова клиентите ти на безплатния сървър те чакаха два дни да разбереш кой кретен ти чеше ламарините на желязото. Твоите мнения ми бяха в игнор листа, как по дяволите си излязал от там.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

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

На този сървър проблема не беше точно това, а bug oт firmware-а на raid-a с 279 kernel-a. От там един единствен сайт можеше да събори целия сървър, (този на uphero :D). Имаше по 4-6к awaits понякога. Иди разбери какво става ако хардовете спрат да пишат точно при peek-a. Колкото искаш репорти преди мен в бъг тракера на центос и хп. Логове? :) А седя няколко дни, защото исках да съм сигурен, че е това и нямам време да се занимавам само с него вече.

Не излизай в офтопик. Най-добре си ме дръж в игнор-а,
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

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

Виж файлът 5829

айде кажи ми сега, този процес, от кой скрипт е стартиран, коя функция изпълнява и какви systemcalls прави в момента?

Ако обичаш не се конфронтирай с хора, които по никакъв начин не са те нападали, а са искали да помогнат. Първо процес като цитирания от теб може да се погледне синхронно с трупаните логове. Второ човек може да започне да си изключва плъгините един по един и да види в кой момент подобни конкурентни процеси ще намалеят. Трето - leeyaa е дала още алтернативи. И, четвърто, и най-важно - един потребител може да покаже на съпорта, че не е тотален "загубеняк" и най-малкото да го "подсети" къде да погледне и да му окаже съдействие. Защото на съпорта често първата реакция е да каже "не може" от мързел.

Също така като цяло съм дал насока за SSH, пък който иска търси в Гугъл, чете команди, коя какво значи и какво стартира/проверява, и оттам насетне - действа.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Колега @leeyaa е мъж,може ида си объркал де ама аз да кажа
Ако обичаш не се конфронтирай с хора, които по никакъв начин не са те нападали, а са искали да помогнат. Първо процес като цитирания от теб може да се погледне синхронно с трупаните логове. Второ човек може да започне да си изключва плъгините един по един и да види в кой момент подобни конкурентни процеси ще намалеят. Трето - leeyaa е дала още алтернативи. И, четвърто, и най-важно - един потребител може да покаже на съпорта, че не е тотален "загубеняк" и най-малкото да го "подсети" къде да погледне и да му окаже съдействие. Защото на съпорта често първата реакция е да каже "не може" от мързел.

Също така като цяло съм дал насока за SSH, пък който иска търси в Гугъл, чете команди, коя какво значи и какво стартира/проверява, и оттам насетне - действа.
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Понеже и мен ме налазиха гадните ботове май ще реша проблема генерално.

Набарах списък с много ИП-та от Индия, Бангладеш и Пакистан, и ако утре пак е същия ненормален трафик заминават в "deny from" :)

И без това само ботове идват от там, никакъв реален посетител....
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

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

Поздрави !
 
От: Повече PHP време, подозирам разни ботове...Трябва ми съвет

Аз си реших проблема със ЦПУ времето.. намалих обхождането на Г. бота и всичко се оправи от 200 минути слезнах на 25-30..
Гугъл няма да ме свалят от серпа заради това или поне така пише в инструкциите на GWT :)

Поздрави
 

Горе