Search
Write a publication
Pull to refresh
1
0
postdig @postdig

User

Send message

Генерация уникального идентификатора пользователя средствами Nginx

Reading time5 min
Views15K
Приветствую Вас, хабрачитатели!

Расскажу об одной задачке, которая встала передо мной, и как я ее решил.

Сразу оговорюсь — часовой поиск в G и в Я удовлетворяющего результата не принес, но за следующий час было реализовано собственное решение.

Все это пока не более чем эксперимент — есть белые пятна как в идеи, так и в реализации, на данном этапе нужно понять жить или не жить.


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

В качестве веб-сервера и первичного балансировщика нагрузки у меня имеется Nginx.

В моей системе для php используетcя php-fpm через fastcgi, так же через fastcgi работает c++ сервер бизнес логики.

Читать дальше →

Мониторинг прогнозированием, оповещения о потенциальном сбое

Reading time6 min
Views5.6K

Этот пост является продолжением предыдущего. Мониторинг прогнозированием – не стандартный метод мониторинга. Поэтому и оповещения необходимо использовать не совсем стандартные. Рассмотрим, как это делается и почему именно так.
Читать дальше →

Сети для самых маленьких. Часть нулевая. Планирование

Reading time7 min
Views2.2M
Это первая статья из серии «Сети для самых маленьких». Мы с товарищем thegluck долго думали с чего начать: маршрутизация, VLAN'ы, настройка оборудования.
В итоге решили начать с вещи фундаментальной и, можно сказать, самой важной: планирование. Поскольку цикл рассчитан на совсем новичков, то и пройдём весь путь от начала до конца.

Предполагается, что вы, как минимум читали о эталонной модели OSI (то же на англ.), о стеке протоколов TCP/IP (англ.), знаете о типах существующих VLAN’ов (эту статью я настоятельно рекомендую к прочтению), о наиболее популярном сейчас port-based VLAN и о IP адресах (более подробно). Мы понимаем, что для новичков «OSI» и «TCP/IP» — это страшные слова. Но не переживайте, не для того, чтобы запугать вас, мы их используем. Это то, с чем вам придётся встречаться каждый день, поэтому в течение этого цикла мы постараемся раскрыть их смысл и отношение к реальности.

Схема сети

Начнём с постановки задачи. Есть некая фирма, занимающаяся, допустим, производством лифтов, идущих только вверх, и потому называется ООО «Лифт ми ап». Расположены они в старом здании на Арбате, и сгнившие провода, воткнутые в пожжёные и прожжёные коммутаторы времён 10Base-T не ожидают подключения новых серверов по гигабитным карточкам. Итак у них катастрофическая потребность в сетевой инфраструктуре и денег куры не клюют, что даёт вам возможность безграничного выбора. Это чудесный сон любого инженера. А вы вчера выдержали собеседование и в сложной борьбе по праву получили должность сетевого администратора. И теперь вы в ней первый и единственный в своём роде. Поздравляем! Что дальше?
Читать дальше →

Борьба с одновременным перестроением кеша с помощью RED

Reading time6 min
Views2K

Описание проблемы


Представим среднестатистический высоконагруженный сайт. Обычно на таких сайтах между backend'ом и DB ставят прослойку кеша. С увеличением количества посетителей, вероятность того, что несколько пользователей одновременно наткнутся на "протухший" кеш увеличивается. Если такое случается, то нагрузка на backend и DB возрастает, что в свою очередь увеличивает время обработки запроса и увеличивает вероятность возникновения подобной ситуации. Вот такая вот система с положительной обратной связью:Маленькие красные горбики — это "затупившие" на множественном обновлении кеша запросы. Эта статья будет описывать один из подходов к решению проблемы на примере(patch attached) связки PHP/APC, однако теоретическая база применима к любому языку и системе кеширования.
Читать дальше →

XenApp: Опыт установки и настройки

Reading time6 min
Views91K
Доброго времени суток, Хабровчане.

Преамбула

XenApp (читается «ЗенАп») придуман компанией Citrix для виртуализации и доставки приложений через тонкий клиент, посредством своего собственного протокола CIA. Надо сказать, что идея сама по себе хороша, потому что в теории избавляет от многих головняков, типа покупки лицензионного софта от Империи Зла и других, чуть менее жадных вендоров. Конечно, это интересно, только если брать приложения в аренду, потому что лицензии на XenApp стоят достаточно дорого. Хочется отметить, что XenApp работает только под Windows.
Не знаю, к сожалению или к счастью, но все крупнейшие производители самого потребляемого софта сейчас имеют свои полнофункциональные продукты, доступные либо через web-интерфейс, либо через тонкий клиент, поэтому мне кажется, что XenApp, как отдельный продукт, очень скоро станет неинтересен конечному потребителю, и останется в поле зрения у компаний, которые сами занимаются арендой приложений. Как раз на аренду приложений сделала ставку моя компания.
И после того, как я был озадачен этой интересной затеей, я понял, что гугль ничего внятного на русском языке про XenApp не выдаёт, а всё, что можно покурить — это обширный мануал на сайте Citrix.com на английском языке. Но разве для нас это проблема?
Руководствуясь чувством «помочь ближнему своему» я решил описать процесс установки и настройки XenApp, который мне пришлось расковыривать самостоятельно, используя англоязычный мануал и плохо знакомого человека, который лицензированный специалист Citrix.
Читать дальше →

Наносим удар по ddos ботнету своими силами

Reading time7 min
Views35K


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

Читать дальше →

Практический эпизод борьбы с DDoS

Reading time4 min
Views9.2K
Один юноша очень любил ругаться на тематическом ресурсе. И за это его регулярно банили. А один раз взяли, да и не разбанили.

Обиделся юноша, и решил отомстить. Поднакопил денег, взял да и заказал DDoS ресурса. Благо это в РФ не уголовно, к сожалению, наказуемое деяние.

DDoS, на который юноше удалось накопить, заключался в отсылке армией ботов одинаковых HTTP-запросов.

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

Тем, кто (предпо)читает Хемингуэя в подлиннике, можно сразу отправляться сюда. Там и код тоже можно найти.

Читать дальше →

Простой HotSpot на FreeBSD

Reading time7 min
Views23K
День добрый.
Появилась необходимость в создании HotSpot точки. Как человек, немного знакомый с UNIX, я решил искать софтверные решения. Тем более что покупать специальное железо для этого дела не было возможности. Да и требования были весьма минимальными. А именно организовать раздачу WiFi так, как это сделано, к примеру, в сети McDonnalds. Т.е. пользователь пришел, подключился к сети и спокойной получил свои 30 минут интернета. Либо 15 мегабайт трафика.

Читать дальше →

Еще одна исторя войны со спамом на форуме

Reading time3 min
Views6.4K


В продолжение темы, я решил поделиться своим опытом борьбы с ботами.

Однако, в отличие от предыдущего поста, я решил обратиться к сторонним сервисам.
Читать дальше →

Перехват PPPoE сессии

Reading time1 min
Views61K


На видео показан практический способ угона сессии PPPoE с помощью врезки в кабель. При этом не происходит перехвата логина или пароля и не имеет значения используемый тип авторизации (CHAP/PAP).

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

Читать дальше →

Развертывание биллинга для небольшой сети с нуля

Reading time11 min
Views63K
Предыстория:
Некие хорошие люди решили начинать провайдерский бизнес. Растянули и разварили оптику в небольшом районе, поставили ящички, засунули туда минимальные свичи, с помощью которых можно организовать VLAN-Per-User, закупили небольшой, для начала, канал у ближайшего магистрала. Встал у них вопрос о том, чем же считать пользователям трафик/денежки и нарезать скоростя.
Общая схема сети должна выглядеть следующим образом:



Кому интересно, далее под катом очень много букв и картинок.
Читать дальше →

Про опасность и безопасность в сетях Cisco

Reading time6 min
Views19K
image

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

Так что же такое защищенная информация в области сетей передачи данных? Абсолютно защищенной сети не бывает и быть не может и полностью защищенной она может считаться, вероятно, только если отключить каждое устройство от сети (или даже, пожалуй, лучше вообше выключить, для надежности). Но кому нужна такая сеть, данные в которой не передаются? Верно, никому. Таким образом, встает вопрос о том как же сделать её максимально защищенной, учтя вместе с тем все те возможные уязвимости, снова и снова подкидываемые нам производителями (софт/хард)вара.

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

Читать дальше →

Проксируем Cookies на Nginx при помощи модуля lua-nginx

Reading time4 min
Views31K


Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

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

В чем суть проблемы


Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

Решение


Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
Тогда добро пожаловать под кат!

Dlink DIR-320 для организации резервного канала

Reading time7 min
Views32K
Вы же знаете, как это иногда бывает: погружённый в фантастический мир новых знаний, вы сидите, расслабившись, перед мануалом, и тут влетает некий истеричный субъект, мечет гром, молнии и икру. Когда удастся погасить взрыв эмоций, ситуация начнёт проясняться.
Итак, суть проблемы: есть некий компьютер/терминал в труднодоступном месте, до которого организован не очень стабильный канал связи. Если связи нет в нужный момент, этот терминал становится местом локального смерча, в вихре которого носятся все от мала до велика.
Суть задачи: организовать резервный канал связи с автопереключением на него, в случае падения основного и назад, когда основной поднимется.
Резервный канал на DLink DIR-320
В этой публикации я опишу своё решение на приснопамятном DLink DIR-320.
Я потратил много времени на тщетные поиски сначала способов и реализаций, потом прошивок и скриптов, прежде чем пришёл к ответу. Надеюсь эта информация окажется полезной.
Читать дальше →

Дозаправка в дороге — мобильная USB зарядка

Reading time2 min
Views70K
Почти все современные гаджеты могут заряжаться от USB порта компьютера или зарядки с таким портом.
Мода на компактные устройства привела к тому, что аккумуляторы в них не слишком емкие. Например мой HTC HD2 едва выдерживает рабочий день при активном использовании, а в режиме GPS навигатора и того меньше. В итоге приходится бегать от зарядки до зарядки или носить с собой запасные аккумуляторы к каждому устройству. Но комплект разных аккумуляторов обойдется недешево да и замена аккумулятора на прогулке — это минут 5: выключить, сменить аккумулятор, включить, запустить софтинку, дождаться пока снова найдет спутники. Неприятно.

Я покажу как сделать USB зарядку, которую можно взять с собой.
RMPS
«RMPS»
Она позволяет зарядить через стандартный USB порт все, что ест не больше 3А, а сама питается постоянным напряжением примерно от 7.2В до 22В. (авиамодельные, автомобильные аккумуляторы, все, что есть под рукой).
Себестоимость порядка 280-300 рублей. Времени на изготовление примерно 1 час. Размер — чуть больше батарейки АА.
Читать дальше →

«Правильная» utf-8 кодировка в настройках nginx/apache

Reading time3 min
Views98K
Надеюсь, что данный пост окажется полезным многим разработчикам, т.к. судя по многочисленным тредам в интернете, проблема-то довольно частая. Суть проблемы в следующем: неправильное наименование кодировки utf-8 в настройках nginx/apache. При этом отдаваемый сервером контент воспринимается нормально во всех браузерах, кроме Internet Explorer-a.
Читать дальше →

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

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

Как же от этого защититься? К сожалению, универсальных мер защиты от DDoS-атак до сих пор не существует. Тут необходим комплексный подход, который будет включать меры аппаратного, программного и даже организационного характера.
Читать дальше →

Pinba — мониторим php в реальном времени

Reading time4 min
Views58K
Как сказано на официальном сайте
Pinba is a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.

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

Прочитать еще

Прячем, обфусцируем и криптуем клиентскую часть веб-приложений

Reading time14 min
Views117K
Обфускация — это приведение исходного текста программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. Применительно к JavaScript данная технология используется в таких видах теневого онлайн-бизнеса, как загрузки (iframe), спам и SEO. Наша задача на сегодня — изучить все методы скрытия JS-кода, которые, я надеюсь, ты будешь использовать только во благо.

Обфусцированный скрипт

Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity