to post messages and comments.

← All posts tagged work

В поисках средства хранения сегментированных Nginx access логов для аналитики нашего Wifire CDN обратил внимание на InfluxDB.

За ночь получилось:
Со стороны Nginx штатной функциональностью пишутся фрагментарные access_log'и в syslog на удалённый хост, где ловятся rsyslog и пересылаются без лишней информации (timestamp, severity, facility, etc) в InfluxDB через UDP Input (https://docs.influxdata.com/influxdb/v0.10/write_protocols/udp/). Правда, предварительно формат логирования у Nginx пришлось привести к тому, что в InfluxDB называется Line Protocol (https://docs.influxdata.com/influxdb/v0.10/write_protocols/line/). И InfluxDB неожиданно справляется c потоком в 16GB логов в день со всего CDN. Но вылезла вторая сторона медали — ну очень медленная выборка на таких объёмах.

Похоже, проще вернуться к текстовым файлам и писать самостоятельный парсер для генерации статических html-файлов с аналитикой в почасовых разрезах.


Обнаружили прекрасную offline реализацию Reflection Amplification атаки.

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

Схема проста до безобразия. Организаторы DDoS берут телефонные номера из реестра Россвязи и подменяют А-номер. Выбранный номер используется для не более 5 звонков, по нашим наблюдениям, после чего следует циклическая смена. Через некоторое время атакующие прекращают атаку и делают несколько контрольных звонков, проверяя возможность дозвона на номер. Если атакуемый всё ещё доступен и готов принимать звонки, атака продолжается, но, что интересно, только в рабочее время жертвы.

Честно на днях наблюдали, как порядка 400 одновременных входящих звонили атакуемой мини-АТС, правда, попадали уже в ловушку с echo. Номер жертвы к тому моменту уже был сменён.

Актуализируем коллекцию названий Out-of-Band Management систем серверов вендоров:

Supermicro — IPMI
Intel — RMM
Dell — iDRAC
HP — iLO, LO100, GSP
HP Microserver — IPMI
ASUS — ASMB
IBM — IMM
Huawei V2 — iMana
Huawei V3 — iBMC
Sun/Oracle — iLOM

Суровые выходные у людей в Сибири. Выдержка из треда центра мониторинга по ликвидации аварии на ВОЛС:

"Сотрудники попали на опору ЛЭП. Ящик с муфтой был расстрелян из оружия. Запас ВОЛС на опоре тоже поврежден. Необходимо перетягивать несколько пролетов кабеля."

Уже второй год мы ищем замену сто́ящему как золотой самолёт CommuniGate Pro, что обслуживает бесплатную почту клиентов. Весь функционал нам не требуется, только стандартный для почты.

И вот, кажется, iRedMail-Pro — это то, что нам нужно. В бесплатной версии не работают белые/черные списки, грейлистинг и некоторые другие фичи. Но расценки очень демократичные: iredmail.org

Перед покупкой надо проверить. Неделя общения с единственным разработчиком и у нас на руках 14-дневный триал. Сегодня он кончился и мы запросили у разработчика новую триальную версию, не успели всё протестировать в боевых условиях. Разработчик не отказывается.

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

# find . -name "*.bak"
./libs/__init__.pyc.bak
./controllers/decorators.pyc.bak
./controllers/panel/log.pyc.bak

Самые печальные моменты:

1. Оно не проверяет тип лицензии, оно просто показывает строки из XML-файла, которым отвечает ей сервис разработчика по REST-запросу. Подменил на свой сервер, теперь показывает, что безлимитная версия ^_^

2. Триальность версии скрывалась лишь в строках вида

sft = datetime.datetime.now() — datetime.timedelta(days=14)
expd = datetime.datetime(2014, 7, 23, 0, 0, 1)
if expd < sft:
session.kill()
raise web.seeother('/expired')

3. В модуле работы с MySQL зачем-то используется скрытая отсылка версии, лицензии, хостнейма и ещё нескольких параметров на сервер разработчика при логировании событий в администраторской панели iRedAdmin-Pro. Поправил, завернув на статический файл, опять же, на подконтрольном сервере.

В итоге имеем абсолютно "лицензионную" последнюю версию iRedMail-Pro. И стыдно. Надо будет обязательно купить максимальную лицензию для успокоения совести.

Заработался — это когда в выводе show system brief глазами ищешь system mtu и находишь цифры 9120. Радостно выставляешь на других интерфейсах mtu 9120. И только потом замечаешь, что 9120 — это было про FAN speed.

И ещё немного про P6300. Как известно, у этого злополучного массива в каждом контроллере присутствует по 4 FC порта. Не всегда требуется 4 порта одновременно, для Dual Fabric порой достаточно всего лишь 2 портов с контроллера.

И тут, видимо, маркетологи HP придумали гениальный шаг — "устройство" под названием HP EVA Loopback Connector (Part Number: AJ706A). Описание на сайте HP незамысловатое: "The loopback connector is used when an EVA host port is not cabled to a switch or HBA". И начали его продавать по $99 на территории США. Естественно, в России его цена может доходить до 4.5к рублей за штуку.

Казалось бы, работает EVA без этих Loopback и работает. Ирония в том, что практически при первой серьёзной поломке, когда тикет будет эскалирован хотя бы до уровня поддержки L2, первыми вопросами будут корректность кабелирования SAS интерконнектов и наличие Loopback'ов в SFP+ неиспользуемых FC портов контроллеров. И если Loopback'ов нет, то все проблемы с EVA свалят на их отсутствие, заставив приобретать :)

Так что же такое Loopback? Все фото в этих ваших интернетах показывают нечто такое: tiger-wang.appspot.com

На самом деле, внутри нет ничего, кроме маленького отрезка оптики, заворачивающего сигнал TX в RX SFP+. Единственное, я до сих пор не уверен, возможно, там добавлен ещё и аттенюатор.

3-4к рублей за маленький отрезок оптики. Ну не отличный ли маркетинг?

P.S. Филды HP приватно высказывали сомнения о возможности влияния этих самых Loopback'ов на стабильность работы EVA ;)

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

1. Удостоверьтесь в отсутствии IDS на используемом сервера, а также соберите информацию о наличии в компании DLP/CMF-систем.
2. Изучите версию ядра ОС и, соответственно, возможные способы эксплуатации подверженных эксплоитам её систем.
2. Изучите конфигурации bash, syslog, pam, sshd, snmpd, crond, mta чтобы лучше понять как устроена система логирования действий пользователей, начиная от момента аутентификации на сервере.
3. Изучите список работающих процессов. Особое внимание уделите демонам распространения конфигураций приложений и ОС, таким как puppet, chef, ansible, salt, выполняемым ими действиям. Не забудьте обратить вниманием на конфигурации демонов, которые могут страховать нестабильную работу других приложений, например, monit или ps-watcher.
3. Изучите где хранятся базы данных системных пользователей (NIS+/LDAP/локально) и как базы доставляются на сервера. Изучите историю логонов на сервер других пользователей и автоматизированных систем, а при возможности, и их историю команд.
4. Обратите внимание на IP-адресацию сервера, это поможет предварительно понять круг возможностей, особенно в случае когда Вам требуется сервер как часть ботнета для, например, DDoS, а сервер имеет серый IP и где-то NATится.
5. Никогда не пытайтесь без разведки устанавливать софт в системные директории, особенно, если вы уже получили права суперпользователя. Также никогда не удаляйте разом все системные логи в /var/log, гораздо более правильно удалить компрометирующие записи в них.
6. Проверьте с помощью системных утилит, например, rpm --verify --all, файлы ОС. Это даст понимание какие файлы отличаются от базовых в пакетах (см. #2312614). Вполне вероятно, что именно их можно будет модифицировать в процессе работы и это не вызовет особых подозрений у людей, эксплуатирующих сервер.
6. При получении каких-либо данных из интернета (установочные пакеты, скрипты, etc) используйте туннелирование через разные доверенные хосты. Не запрашивайте данные с сервера напрямую.
7. Всегда очищайте свою историю команд.

Помните, если Вы пойманы — Вы проиграли и они уже всё знают.