Pull to refresh
0
0
Александр Саенко @saanneekk

Пользователь

Send message

Оперативная реакция на DDoS-атаки

Reading time 4 min
Views 51K
Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — Linux,Nginx,PHP-FPM(+APC),MySQL, версии — самые последние. На сайтах крутится Drupal и phpBB. Оптимизация на уровне софта (memcached, индексы в базе, где их не хватало) чуть помогла, но кардинально проблему не решила. А проблема — большое количество запросов, к статике, динамике и особенно базе. Поставил следующие лимиты в Nginx:

на соединения
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 100;

и скорость запросов на динамику (fastcgi_pass на php-fpm)
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
limit_req zone=dynamic burst=10 nodelay;

Сильно полегчало, по логам видно, что в первую зону никто не попадает, зато вторая отрабатывает по полной.

Но плохиши продолжали долбить, и захотелось их отбрасывать раньше — на уровне фаервола, и надолго.

Сначала сам парсил логи, и особо настырных добавлял через iptables в баню. Потом парсил уже по крону каждые 5 минут. Пробовал fail2ban. Когда понял, что плохишей стало очень много, перенёс их в ipset ip hash.

Почти всё хорошо стало, но есть неприятные моменты:
— парсинг/сортировка логов тоже приличное (процессорное) время отнимает
— сервер тупит, если началась новая волна между соседними разборками (логов)

Нужно было придумать как быстро добавлять нарушителей в черный список. Сначала была идея написать/дописать модуль к Nginx + демон, который будет ipset-ы обновлять. Можно и без демона, но тогда придётся запускать Nginx от рута, что не есть красиво. Написать это реально, но понял, что нет столько времени. Ничего похожего не нашёл (может плохо искал?), и придумал вот такой алгоритм.

При привышении лимита, Nginx выбрасывает 503-юю ошибку Service Temporarily Unavailable. Вот я решил на неё и прицепиться!

Для каждого location создаём свою страничку с ошибкой
error_page 503 =429 @blacklist;

И соответствующий именованный location
location @blacklist {
    fastcgi_pass    localhost:1234;
    fastcgi_param   SCRIPT_FILENAME    /data/web/cgi/blacklist.sh;
    include         fastcgi_params;
}

Дальше интересней.
Нам нужна поддержка CGI-скриптов. Ставим, настраиваем, запускаем spawn-fcgi и fcgiwrap. У меня уже было готовое для collectd.

Сам CGI-скрипт
Читать дальше →
Total votes 57: ↑50 and ↓7 +43
Comments 50

Оптимизируем VPS за 5$ (512MB RAM / 1 CPU) так, что сайт на wordpress выдерживает нагрузку в 42,735,587 хитов в день

Reading time 9 min
Views 95K
Когда вы приобретаете сервер VPS с 256MB или 512MB оперативной памяти на борту и лишь часть мощности процессора, то использовать для таких сервисов как MySQL/PHP/Apache настройки по умолчанию является очень плохой идеей. В настоящее время у меня запущено 3 сайта на самом дешевом тарифном плане с 512MB RAM/1 CPU. Не уверен полностью, но посещаемость составляет порядка 5-10 тысяч посетителей в день. Далее я хочу поделиться инструкцией как оптимизировать LAMP используя всего лишь 512 MB и при этом не уходя в swap. Обычно при такой настройки используется 256 – 378Mb памяти и все работает довольно быстро.

Определяем доступную память и активность swap.

Перед началом оптимизации давайте взглянем на количество используемой памяти. Для этого необходимо выполнить следующую команду:

$ free -m

Для того. чтобы посмотреть список запущенных процессов и отсортировать их по использованию памяти, необходимо выполнить вот такую команду:

$ ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less


Настраиваем LAMP сервер для потребления малого количества оперативной памяти. Останавливаем, отключаем ненужные сервисы

Первый и очевидный вопрос, который необходимо задать — это «какие сервисы мне не нужны в использовании?». Недавно, я обнаружил очень удобную утилиту для управления сервисами. Она называется "sysv-rc-conf" и управляет сервисами при помощи псевдографики и флажками. Выгдялит вот так:



Здесь представлен список сервисов, которые я изменил.

  • Postfix. Этот сервис позволяет отправлять и получать почтовые email сообщения для домена. Я использую для этих целей Google Apps для отправки почты и mailchimp для новостных подписчиков. Таким образом я остановил и отключил этот сервис.
  • Bind9. Он нужен для управления DNS записями Вашего домена. Его можно отключить, так как все DNS записи хранятся у хостера.
  • SSHD. Имеются и другие реализации, которые используют гораздо меньше памяти, но они не поддерживают sftp, поэтому данный сервис я оставил без изменений.


Не запускайте X-сервер, выключите все ненужные сервисы и настройте Apache, MySQL, PHP только с базовой необходимой функциональностью.
Читать дальше →
Total votes 131: ↑81 and ↓50 +31
Comments 85

10 ответов на вопросы по работе с заказчиком

Reading time 1 min
Views 32K
После прошедшего PM-Weekend удалось поймать selikhovkin и попросить записать несколько видео по самым популярным вопросам про управление проектами. Сегодня — первое видео:

10 ответов на вопросы про работу с заказчиком




В рамках видео Иван тезисно раскрыл следующие вопросы:
  1. Как заинтересовать бизнес в повышении зрелости системы управления?
  2. Методы по формированию ожиданий у заказчика по проекту и их использование
  3. Как понять, что хочет заказчик?
  4. Как удерживать заказчика от раздувания требований?
  5. Как научить заказчика доверять разработчику?
  6. Какие методики/методологии ведения проектов и общения с заказчиком существуют?
  7. Саботаж сотрудников заказчика (как бороться)?
  8. Как сообщить заказчику, что проект идет не по плану, какие фразы использовать, как сгладить впечатление?
  9. Особенности работы с гос.заказчиками
  10. Что делать менеджеру на проекте, который заказчик пускает на самотек?

Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 2

Разгоняем Wordpress до скорости света

Reading time 7 min
Views 140K
image
Скорость и отказоустойчивость – одни из тех факторов, что неизменно влияют на популярность вашего ресурса, ведь даже с лучшим в мире контентом медленно работающий сайт будет раздражать читателей и рано или поздно вы их потеряете. В этой статье мы будем оптимизировать самый популярный блоговый движок — Wordpress, работающий на PHP. А заодно рассмотрим несколько общих моментов в оптимизации сайтов.
Читать дальше →
Total votes 77: ↑63 and ↓14 +49
Comments 60

К черту веб-разработку или «Как я ушел головой в электронные письма»

Reading time 8 min
Views 12K
Меня зовут Артур Кох, и я не вижу своей жизни без интернет-рассылок. Многие читатели хабра знают меня по длинной серии публикаций на тему верстки HTML-писем, но это не все, чем я занимаюсь. Я с большим интересом работаю в сфере email маркетинга уже не первый год, и за это время накопилось очень много интересных наблюдений как на российском рынке, так и за его пределами, о которых я бы хотел рассказать. Будет здорово, если все ниже описанное не вызовет типичный для этой темы холивар на тему “email рассылки не нужны, горите в аду”. Местами будет сумбурно, субъективно, но скорее всего, интересно.
Читать дальше →
Total votes 52: ↑41 and ↓11 +30
Comments 15

Почтовые рассылки как часть клиентского сервиса

Reading time 11 min
Views 11K
Disclaimer мелкими буквами: автор хорошо понимает болезненность темы массовых почтовых рассылок. Статья написана для профессионального читателя, который считает электронную почту этичным средством коммуникации бизнеса с клиентом, но осознаёт, что тема замусорена «эффективными маркетологами» (они же спамеры), и поэтому крайне осторожен в своих телодвижениях в районе e-mail-маркетинга.

Почему одни письма клиенты воспринимают как спам, а другие — как полезные напоминалки? Какими должны быть письма, помогающие людям покупать? Какие ошибки почтовых рассылок как клиентского сервиса простительны, а какие — фатальны? Посмотрим на кейсы и обсудим плюсы-минусы решений.
Читать дальше →
Total votes 35: ↑27 and ↓8 +19
Comments 15

Исчерпывающее руководство по составлению почтовых рассылок

Reading time 13 min
Views 175K


Несмотря на то, что большая часть общения онлайн перешла в социальные сети, почтовые рассылки по-прежнему остаются важной частью любой маркетинговой кампании.
Читать дальше →
Total votes 33: ↑30 and ↓3 +27
Comments 12

Планирование аварийного восстановления. Вторая часть

Reading time 6 min
Views 30K

Готовимся к любым падениям




Это продолжение цикла публикаций, посвященных вопросам планирования аварийного восстановления. В предыдущей статье речь шла об определении зоны планирования и нахождении точек отказа, которые могут приводить к сбоям в работе пользовательских сервисов. Следующий шаг – опираясь на информацию о точках отказа определить минимально возможные сроки устранения инцидентов, которые могут обеспечить технические специалисты при наличии всех необходимых ресурсов.

Собственно, необходимые ресурсы будут в дальнейшем предметом торга с руководством компании, помогая найти баланс между инвестициями в информационные технологии, временем простоя и потерей данных в случае сбоя. Но это потом, а пока нам нужно определить какие сроки восстановления мы в принципе можем выжать из ИТ-инфраструктуры в случае сбоя. Поехали:
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 11

Защита подъезда методом организации разумного видеонаблюдения без консьержа

Reading time 13 min
Views 258K
Так получилось, что какой бы ни был аккуратный микрорайон, он всегда с чем-нибудь соседствует, плюс всегда есть праздношатающиеся, непраздношатающиеся и «этождети». Это если забыть про наркоманов, целенаправленных воров и разбойников. Твой дом — твоя крепость. Подъезд твоего дома — тоже твой дом. (Да, этот пункт многие не понимают, но учиться никогда не поздно). Классические методы защиты подъезда — установка укреплённых дверей; установка домофона; инсталляция консьержки; организация видеонаблюдения над входами.

Вот только двери легко открываются при малейшей ошибке их производства, многие домофоны подвержены ключам-«вездеходам», консьержки часто спят и ничего не делают, а видеонаблюдение за которым никто не наблюдает превращается в бесполезную трату денег. В результате, почти все попытки улучшить общественную ситуацию зарезаются соседями методом слонёнка: «а нафига они нам нужны».

Однако, если включить мозги и подумать, на самом деле можно весьма небольшими вложениями получить очень эффективный результат.
Читать дальше →
Total votes 298: ↑294 and ↓4 +290
Comments 314

Увеличиваем конверсию в форме оплаты с помощью визуального улучшения полей

Reading time 4 min
Views 14K
В этой статье пойдет речь о повышении конверсии платежных форм. Кстати, выводами, которые в ней представлены пренебрегают до 90% сайтов. Если же учесть изложенные ниже рекомендации, то можно повысить конверсию платежей на несколько десятков процентов. Исследования юзабилити платежных форм показали, что многие пользователи не задумывались о безопасности, пока им не пришлось вводить данные своей кредитной карты. Кроме того, было сделано другое интересное наблюдение: несколько участников исследования высказали свое мнение по поводу отдельных частей платёжной формы как о «надёжных» и «ненадёжных».

Например, одна часть платежной формы, имеющая иконки и значки безопасности, текстовые или прочие усиления защиты воспринималась как более надежная, а вторая, без визуальных знаков, вызывала меньше доверия — несмотря на то, что эти поля были частью одной формы и располагались на одной и той же странице. С технической точки зрения, разумеется, между этими формами нет никакой разницы, так как все поля на HTTPS-странице одинаково зашифрованы. Тем не менее, большинство людей не знают об этом, и считают некоторые части платежной формы более безопасными, а другие – менее безопасными вопреки всякой логике.
Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Comments 11

Кейс увеличения конверсии интернет-магазина на 14% с помощью отзывов о товарах

Reading time 2 min
Views 21K


Об эффективности отзывов как инструмента, повышающего доверие к покупкам в интернете, сказано многое. В данной статье речь пойдет конкретно об отзывах о товарах и о том, насколько их наличие или отсутствие в карточках товаров интернет-магазина влияет на продажи.

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

 Мы попытались выяснить, как наличие отзывов в карточках товаров сказывается на продажах. Рассмотрим влияние отзывов на конверсию ИМ на конкретном кейсе (по просьбе магазина его название не публикуется).

Читать дальше →
Total votes 13: ↑7 and ↓6 +1
Comments 33

Как пользователи ведут себя на сайте?

Reading time 4 min
Views 52K
image

Представим себе, что поведение пользователя на сайте похоже на поведение лабораторной мыши в лабиринте: мышь должна пройтись по лабиринту и найти кусочек сыра. С точки зрения создателя сайта задача состоит в том, чтобы создать такой удобный лабиринт для мыши, который позволяет беспроигрышно найти свой кусочек сыра. Вопрос затрагивает сразу три аспекта: юзабилити, конверсии и ранжирование сайта. Поэтому и рассматривать данную задачу нужно комплексно, а увидеть «лабиринт» глазами «мыши» позволяет целый ряд инструментов.

Читать дальше →
Total votes 49: ↑38 and ↓11 +27
Comments 15

Баллада о продающих письмах

Reading time 9 min
Views 38K
В Facebook мне попался очень интересный пост «Баллада о продающих письмах» на странице Антона Гладкова. Не могу не поделиться этим с Хабром, так как материал считаю чрезвычайно полезным. Но для этого пришлось произвести рерайт, поскольку оригинал насыщен запрещенными здесь словами. Надеюсь безобидный овощ под холодец сможет хотя бы частично передать эмоции автора, не нарушая правил.



В последнее время мне особенно часто попадаются в социальных сетях и прочих Интернетах статьи и посты, ругающие эффективность LinkedIn. Особенно в России, где бизнесмены даже фейсбук считают более подходящим для деловых переговоров. На западе LinkedIn тоже модно не любить: статьи о вреде эндорсов, 10 причин не писать и не принимать рекомендации, и тому подобная чушь.

На самом деле ругать инструменты придумали еще до появления Интернета и скорее всего задолго до нашей эры. Нам посчастливилось трудиться сейчас, когда Интернет у нас в кармане и я хотел бы поговорить о главной причине нелюбви к тем или иным современным каналам Интернет-продаж — о хреновых первых письмах.
Читать дальше →
Total votes 50: ↑32 and ↓18 +14
Comments 14

Чек-лист по юзабилити интернет-магазинов

Reading time 7 min
Views 88K
Апофеоз сотни холиваров и улучшения работы QA — чек-лист по юзабилити интернет-магазинов. В нем частично задействованы прошлые документы — чек-листы по формам и фильтрам. Пользуйтесь.


Читать дальше →
Total votes 68: ↑58 and ↓10 +48
Comments 4

Взгляните на свою страницу глазами робота Googlebot

Reading time 2 min
Views 93K
Уровень подготовки веб-мастера: любой

Функция «Просмотреть как Googlebot» в Инструментах для веб-мастеров позволяет понять, как ваша страница выглядит для роботов Googlebot. Заголовки серверов и код HTML помогают выявить ошибки и последствия взлома, но иногда разобраться в них бывает затруднительно. Веб-мастера обычно хватаются за голову, когда им приходится заниматься решением таких проблем. Чтобы помочь вам в подобных ситуациях, мы усовершенствовали эту функцию, и теперь она может показывать страницу с помощью того же алгоритма, который использует робот Googlebot.
Читать дальше →
Total votes 29: ↑21 and ↓8 +13
Comments 1

Ускоряем Wordpress

Reading time 4 min
Views 66K
image

Wordpress в стандартной установке довольно медленный. По умолчанию движок не использует некоторые возможности современного Веба для значительного своего ускорения. Существует целая куча плагинов для оптимизации Wordpress'a. Давайте наведем в них порядок и проведем капитальную оптимизацию.
Читать дальше →
Total votes 54: ↑37 and ↓17 +20
Comments 27

Методы борьбы с DDoS-атаками

Reading time 5 min
Views 113K
Хотелось бы поговорить с вами на актуальную нынче тему, а именно — про DDoS и методы борьбы с ним. Рядовые администраторы знают, что это такое, а вот для большинства вебмастеров это аббревиатура остается загадкой до того момента пока они на личном опыте не столкнуться с этой неприятностью. Итак, DDoS — это сокращение от Distributed Denial of Service (распределенный отказ в обслуживании), когда тысячи зараженных компьютеров отправляют на сервер множество запросов, с которыми он, в последствии, не может справиться. Целью DDoS атаки является нарушение нормальной работы сервера, а в дальнейшем — «падение» сайта или сервера целиком.

Как же от этого защититься? К сожалению, универсальных мер защиты от DDoS-атак до сих пор не существует. Тут необходим комплексный подход, который будет включать меры аппаратного, программного и даже организационного характера.
Читать дальше →
Total votes 123: ↑94 and ↓29 +65
Comments 66

Эрон-дон-дон или на что ещё может сгодиться ваш Windows Phone

Reading time 7 min
Views 50K
image

Привет всем хабражителям!

Наверняка, многим в детстве нравились машинки на радиоуправлении. Да и не только в детстве: я уверена, что и в возрастной категории 30+ найдётся масса любителей лихой езды в миниатюрном масштабе. Вот и я с детства мечтала о такой машинке, однако девочкам обычно дарят не машинки, а кукол, и моя мечта оставалась невоплощённой до недавнего времени. Но теперь я выросла, и простая радиоуправляемая машинка показалась мне достаточно скучной. И в один прекрасный день мне в голову пришла идея, как себя развлечь и заодно модернизировать машинку: я решила организовать её управление со смартфона по каналу WiFi.
Читать дальше →
Total votes 123: ↑111 and ↓12 +99
Comments 57

Простой способ защиты от классического HTTP DDoS

Reading time 5 min
Views 35K
Данное решение позволяет вычислять любых ботов, за исключением тех, которые полностью имитируют работу браузера.

Как это работает


Бот запрашивает страницу, например habrahabr.ru/search. Бот не умеет загружать вместе со страницей картинки, скрипты, css и пр. Значит в логе будет отображен запрос к /search/ и всё.
Если на habrahabr.ru/search заходит живой человек через браузер, то вместе с /search/ в лог попадет множество картинок, скриптов, css и пр.
Читать дальше →
Total votes 113: ↑71 and ↓42 +29
Comments 109

DDOS любого сайта с помощью Google Spreadsheet

Reading time 3 min
Views 250K
Google использует своего «паука» FeedFetcher для кэширования любого контента в Google Spreadsheet, вставленного через формулу =image(«link»).

Например, если в одну из клеток таблицы вставить формулу
=image("http://example.com/image.jpg")
Google отправит паука FeedFetcher скачать эту картинку и закэшировать для дальнейшего отображения в таблице.

Однако если добавлять случайный параметр к URL картинки, FeedFetcher будет скачивать её каждый раз заново. Скажем, для примера, на сайте жертвы есть PDF-файл размером в 10 МБ. Вставка подобного списка в таблицу приведет к тому, что паук Google скачает один и тот же файл 1000 раз!
=image("http://targetname/file.pdf?r=1")
=image("http://targetname/file.pdf?r=2")
=image("http://targetname/file.pdf?r=3")
=image("http://targetname/file.pdf?r=4")
...
=image("http://targetname/file.pdf?r=1000")

Все это может привести к исчерпанию лимита трафика у некоторых владельцев сайтов. Кто угодно, используя лишь браузер с одной открытой вкладкой, может запустить массированную HTTP GET FLOOD-атаку на любой веб-сервер.

Атакующему даже необязательно иметь быстрый канал. Поскольку в формуле используется ссылка на PDF-файл (т.е. не на картинку, которую можно было бы отобразить в таблице), в ответ от сервера Google атакующий получает только N/A. Это позволяет довольно просто многократно усилить атаку [Аналог DNS и NTP Amplification – прим. переводчика], что представляет серьезную угрозу.



С использованием одного ноутбука с несколькими открытыми вкладками, просто копируя-вставляя списки ссылок на файлы по 10 МБ, паук Google может скачивать этот файл со скоростью более 700 Мбит/c. В моем случае, это продолжалось в течение 30-45 минут, до тех пор, пока я не вырубил сервер. Если я все правильно подсчитал, за 45 минут ушло примерно 240GB трафика.
Читать дальше →
Total votes 181: ↑174 and ↓7 +167
Comments 62
1

Information

Rating
Does not participate
Location
Украина
Registered
Activity