• Создание дизайна Landing Page

    • Tutorial


    Landing Page – (далее по тексту Целевая страница) – одностраничный сайт, построенный таким образом, чтобы обеспечить сбор контактов максимального количества целевых посетителей и максимальную конверсию в контексте его использования.

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

    Так научимся же создавать качественные и красивые целевые страницы. Разобьём урок на 3 части. Содержание, Оформление и Практика.
    Читать дальше →
  • Оперативная реакция на DDoS-атаки

    Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — 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-скрипт
    Читать дальше →
  • Пара полезных команд, которые могут пригодиться при DDoS и не только

      В моем случае, в качестве frontend сервера, стоит nginx и формат access-лога имеет вид:

      log_format main '$remote_addr — $remote_user [$time_local] "$host" "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for" -> $upstream_response_time';

      Что на выходе дает что-то вроде такой строки:

      188.142.8.61 — - [14/Sep/2014:22:51:03 +0400] «www.mysite.ru» «GET / HTTP/1.1» 200 519 «6wwro6rq35muk.ru» «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.191602; .NET CLR 3.5.191602; .NET CLR 3.0.191602» "-" -> 0.003

      1. tail -f /var/log/nginx/nginx.access.log | cut -d ' ' -f 1 | logtop

      Позволяет получить общую картину: распределение уникальных IP, с которых идут запросы, кол-во запросов с одного IP и т.д.
      Самое ценное — что все это работает в режиме реального времени и можно мониторить ситуацию, внося какие-либо изменения в конфигурацию (например просто забанить ТОП 20 самых активных IP через iptables или временно ограничить географию запросов в nginx через GeoIP http://nginx.org/ru/docs/http/ngx_http_geoip_module.html).
      Читать дальше →
    • Хостинг: продолжайте делать то же самое, вас уже съели

        imageМы не очень любим провокационные заголовки, но если вы работаете в индустрии хостинга, то вам будет интересно узнать, что увидели мы в Parallels, изучая тенденции хостинга по всему миру (включая российский). А увидели мы, что традиционный рынок стремительно завоевывают нетрадиционные провайдеры типа Digital Ocean и Linode, пока большинство наших и западных хостеров продолжает сидеть ровно и делать то, что работало 10 лет назад.
        Под катом – разная статистика, информация к размышлению для тех из вас, кто хочет развивать свой хостинг-бизнес. И мы будем рады обсудить в комментариях ваше собственное (даже радикально противоположное) мнение.

        Читать дальше →
      • Практические рекомендации: устраняйте неполадки, используя команду 'Top' в Linux

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

        Load average может представлять собой непростой для понимания показатель производительности сервера. В этой статье мы попытаемся дать некоторое представление о том, что означают те величины, которые можно найти в выводе команды «top» и в других linux-командах. В статье, также объясняются параметры специфичные для виртуального хостинга, которые обычно не отображается в стандартном выводе команды top.
        Читать дальше →
      • Памятка пользователям ssh

          abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

          Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

          Оглавление:
          • управление ключами
          • копирование файлов через ssh
          • Проброс потоков ввода/вывода
          • Монтирование удалённой FS через ssh
          • Удалённое исполнение кода
          • Алиасы и опции для подключений в .ssh/config
          • Опции по-умолчанию
          • Проброс X-сервера
          • ssh в качестве socks-proxy
          • Проброс портов — прямой и обратный
          • Реверс-сокс-прокси
          • туннелирование L2/L3 трафика
          • Проброс агента авторизации
          • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
          Читать дальше →
        • Приводим иконки Скайпа к общему стилю системы

            В интерфейсе каждой операционной системы существует такое понятие, как область уведомлений.

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

            Иконка скайпа до и после
            Читать дальше →
          • LVM — это просто!

              Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
              Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
              Читать дальше →
            • GPL панель управления сервером Vesta



                Сейчас уже сложно сказать, когда именно я начал работу над вестой. Если считать первые скрипты добавления виртуальных хостов в апач, то это был 2007 год. Получается 5 лет тому назад. Помню тогда на работе состоялся примерно такой диалог:
                — Ты решил написать свою панель управления?
                — Ага, ведь cPanel это ужас, Plesk хоть и лучше, но сильно дорогой. Да и вообще у меня уже почти все готово
                — Хм… для того чтобы просто приблизиться к сPanel тебе потребуется минимум 2 года

                Не помню, что тогда ответил, но фразу про то, что почти все готово, я повторял еще не раз. Сейчас еще я хочу рассказать что готово в версии 0.9.7
                Читать дальше →