Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
29 Май 2014

NGINX — защита от DDOS с одного IP. Параметры limit_zone и limit_req.

У одного из клиентов сайт частенько сайт начал «лежать», изучение логов показало множественные запросы (более 10) с одного и того-же IP адреса, которые и давали нагрузку на сайт.
Фронтендом у клиента стоял nginx — поэтому заблокировать подобную активность не составило никакого труда.
В этом мне помогли директивы limit_zone и limit_req.
Собственно, первое — в секцию httpd добавляем запись, ограничивающую активность до 2х запросов в секунду
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
В секцию обработки динамики собственно активируем нашу запись (зону созданную в httpd)
limit_req zone=one burst=3;

Вуаля, от «лоховских» ботов атакующих с одного и того-же IP мы защищены!
Кому интересно поподробнее — запрос «limit_req_zone» в помощь 🙂

P.S.
Чтоб случайно не «резануть» ботов, рекомендую добавить в robots.txt паузу в запросах от ботов в 1 секунду
Crawl-delay: 1

рубрики: security, Администрирование, Полезности | 4 комментария

28 Май 2014

Правка скрипта поиска изменений — не работает фукнция dir->read() !

С недавних пор перестал работать мой сриптик поиска изменений на хостинге (трудно недооценить его полезность в поиске троянов).
Кстати, понял я это уже слишком поздно и для начала пришлось писать скрипт удаления троянов 🙁
Итак, скрипт не пашет — почему я так и не понял, вернее понял почему, но как это вылечить — не совсем (пришлось заменить фукнцию чтения файлов директории на другую).

Исходник старого скприта.
Исходник нового скрипта.

Если кратко, то:
конструкцию

$dir = dir($cat);
while($file = $dir->read()) {
if ($file=='.' or $file=='..') continue;
if (is_dir($cat.'/'.$file)) { ....

пришлось заменить на

if (is_dir($cat)) {
if ($dh = opendir($cat)) {
while (($file = readdir($dh)) !== false) {
if ($file=='.' or $file=='..') continue;
if (filetype($cat.'/'.$file)=='dir') { ......

рубрики: Администрирование, Полезности, Программирование | Комментарии (0)

27 Май 2014

PHP cкрипт поиска и замены — вычищаем троянские инъекции в PHP

Продолжаем изобретать велосипед (скрипт поиска и замены с secu.ru у меня не отработал), поэтому модифицировал свой для вхождения и замены в подпапках.
Исходник лежит в новоиспечённом разделе Инструменты.
Так же пришлось подкинуть скрипту памяти и убрать ограничение по времени — иначе лично у меня скрипт затыкался.
Запускал я его по ssh консольно.
Лично я использовал для поиска и замены троянской иньекции а-ля eval(base64_decode()) — в скрипте увидите где эта строчка 🙂
Сцуки — задолбали уже джумлу пежить, и отследить то не могу дыры 🙁

рубрики: Администрирование, Полезности, Программирование | Комментарии (0)

22 Май 2014

Полезные инструмены администрирования и поисковой оптимизации

Решил сваять отдельную страничку для размещения различных полезных фишек для администрирования и поисковой оптимизации.
Частенько приходится пользоваться и каждый раз ищу одно и то же.
Так всё необходимое будет под рукой 🙂
Страничку прикрепил в верхнее меню — Инструменты.

P.S.
У кого есть чем поделиться — скидывайте ссылочки, размещу.

рубрики: SEO, Администрирование, Полезности, Ссылки | Комментарии (0)

7 Май 2014

PHP OpenSSL — работаем с почтой pop.gmail.com

Чего-то хозяева бэкдора активизировались прямо — вчера домены парсили, сегодня тестят работу с гугулом по SSL.
Собственно, код (имхо полезный):


$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/dev/null", "a")
);
$cwd = '/tmp';
$process = proc_open('openssl s_client -crlf -connect pop.gmail.com:995', $descriptorspec, $pipes, $cwd, $env);
sleep(1);
if (is_resource($process)) {
// fwrite($pipes[0], 'USER hello');
fclose($pipes[0]);
$res=stream_get_contents($pipes[1]);
// var_dump($res);
if (stristr($res,"OK Gpop ready")){
echo md5("openssl");
}
fclose($pipes[1]);
$return_value = proc_close($process);
}

рубрики: security, Полезности, Программирование | Комментарии (1)

7 Май 2014

Списки всех существующих доменов

Общеизвестная информация по «нашим» доменам:
.RU https://partner.r01.ru/ru_domains.gz
.SU https://partner.r01.ru/su_domains.gz
.РФ https://partner.r01.ru/rf_domains.gz

Международники http://premiumdrops.com/zones.html
НО доступ 25$ в месяц — дороговато…

Так же у меня на «поплавке» висит переделанный бэкдор, который по идее должен исполнять посланный ему PHP код,
я же его просто изучаю и делюсь с тобой, уважаемый читатель — думаю у меня на это есть полное право 😉

Сегодня пришел такой довольно интересный код

set_time_limit(0);
ignore_user_abort(1);
if (@ini_get('open_basedir') or @ini_get('safe_mode')){exit;}
function curlu ($url,$ua,$cookie,$ref,$post) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
if (!empty($ref)) {
curl_setopt($ch, CURLOPT_REFERER, $ref);
}
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
if (!empty($post)) {
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
}
if (!empty($cookie)) {
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
}
$response = curl_exec($ch);
$header=substr($response,0,curl_getinfo($ch,CURLINFO_HEADER_SIZE));
$body=substr($response,curl_getinfo($ch,CURLINFO_HEADER_SIZE));
$resp['page']=$body;
preg_match_all("/Set-Cookie: (.*?)=(.*?);/i",$header,$res);
$cookie='';
foreach ($res[1] as $key => $value) {
$cookie.= $value.'='.$res[2][$key].'; ';
};
$resp['cookie']=$cookie;
$err = curl_error($ch);
$resp['inf'] = curl_getinfo($ch);
print_r ($resp['inf']);
curl_close($ch);
return $resp;
}

$ua="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";
for ($i=0;$i<100;$i++){ $p=curlu("http://domain-kb.com/sitemap-index-2013.xml",$ua,"","",""); preg_match_all("/(.*?)<\/loc>/",$p,$match);
foreach ($match[1] as $mu){
$p2=curlu($mu,$ua,"","","");
}
}

рубрики: security, Полезности | Комментарии (0)