Comments 53
После того как инфраструктура выросла до 20+ узлов переехал на личный Step-CA. Немного бесит необходимость начальной установки времени, у OpenWRT могут быть с этим заморочки когда инет недоступен, но в целом решаемо.
есть понимание, кто стоит за атакой? обиженный ученик?
Летом я зарелизил два проекта - Рублокс (аналог роблокса) и свой мессенджер на подобии вичата, назвал Маська. Обо всем снимал видео в тикток для сбора аудитории. За пару месяцев пришло примерно 8к регистраций, и с ними пришли рейдеры. Мои сервисы рейдили пару недель каждый день всеми возможными способами. Одному это удалось, хотя скорее я там оставил дверь открытой) Да, всех рейдеров, их ip и данные знаю.
чаще всего это были дети, которые насмотрелись мистера робота и с помощью нейронок занимались пинтестом. Большая часть взломщиков писали мне на почту или в тиктоке. Характер сообщений четко указывал на возраст. Чаще всего они парсили открытые данные моих сервисов и скдиывали мне с гордым видом, что они взломщики. Реальные уязвимости вскрыло всего несколько человек, и все они писали о них и просили исправить а не использовали в своих целях. Скорее всего мне так повезло, но и не стоит отрицать что я не все знаю и ваш комментарий имеет место быть)
Самое интересное не написали. Во сколько вы оцениваете размер ущерба от потери, в деньгах, и какова вероятность такого инцидента после всех ваших изменений?
Ущерб только репутационный. Взлом начался в 12 ночи по мск, к 8 утра уже все полностью было восстановлено и работало. В деньгах посчитать сложно - 10 литров бензина на поездку к серверу в соседний город для восстановления. Базы данных шифруются, но полного списка всего что сделал взломщик у меня не было. Сейчас вероятность конкретно такого взлома нулевая, ведь это и взломом в полной мере не назвать. Я оставил дверь открытой.
Почему-то сложилось впечатление после прочиения статьи, что проект с десятками виртуалок должен содержать что-то стоящее. А тут оказывается буря в стакане. /s Нулевая вероятность инцедента это скорее неправильная оценка для реальной системы.
глупый вопрос - а провайдер кто? если селектел и их же образ proxmox, то я могу рассказать как сломали и сертификаты/fail2ban вообще не помогли бы
... 10 литров бензина это не хухры-мухры!
У меня был один пароль. На всё.
Дальше, в принципе, можно не читать, кмк.
Использовать пароль для SSH в наше время — это смело 😄 На некоторых "известных мне" серверах Fail2Ban фиксирует до 20 000 попыток подключения в сутки, причём всего 3-х попыток достаточно для блокировки IP атакующего.
FYI На скорости 10000 попыток в сенунду, для полного перебора 8-символьного пароля, состоящего из полного набора печатных символов ASCII, потребуется 21,02 столетия.
Но вы же в курсе что никто не перебирает посимвольно, а проверяет слитые базы паролей, на случай если админ не использует уникальный пароль для каждого логина
Там шансы намного больше, особенно с подходом - один пароль на много серверов, может быть этот же пароль быть в какой нибудь базе, и займёт, при условии правильной сортировки слитых данных, сильно меньше
Кто думает что можно подобрать 10символьный пароль - просто не умеет в арифметику 1 класса.
Кстати, fail2ban из коробки стоит только в ламерской убунте. В redhat и debian его нет.
Я лично переношу ssh на порт повыше, чтобы не засирали логи (максимальный вред от брутфорсеров)
К вопросу кто как решает — в широком смысле решаю сертификатами и аппаратными ключами, TOTP. В узком смысле для SSH аппаратные ключи.
Уважаемый ТС, если вы самостоятельно не можете настроить безопасность своих серверов или сомневаетесь в результате самостоятельной настройки, установите openclaw иди hermes agent и поручите это сделать им. А заодно поручите им сделать cron задание по мониторингу активности и безопасности с оповещением в телеграм.
А по тексту статьи и рисункам / графикам разве не понятно, что там 146% ИИ сделано?
Я вообще бы сказал, что все в целом придумано нейронкой: от автора, до взлома и анализа, но не могу этого доказать. Особенно то, как мгновенно было проведено расследование и восстановление при нулевых знаниях по безопасности.
Весьма поучительная история. Хорошо, что все обошлось.
Если проект для вас важен - сейчас самое время провести аудит, вероятно, техдолг у вас накопился приличный.
кто как решает вопрос с хранением секретов
Для секретов в репозитории есть sops, например, и vault как KMS/PKI.
Для ssh есть системы типа Teleport, но вам, наверное, проще просто перейти на ключи и настроить fw (либо вообще разрешать ssh только через VPN).
есть ли у вас мониторинг, который реально будит ночью
Это обычная практика, но нужно ли это вам? И не забудьте, что мониторинг тоже может сломаться или быть на той же инфре, что и все остальное.
BTW, для простых внешних проверок и алертинга есть uptime-kuma.
Интересная история. Я сам пару лет назад вместе с ии начал изучать, пробовать сервера, проксмокс, сети, сервисы и прочее. Признаю и понимаю что глубина и серьёзность знаний тут сомнительная, но прикладная выгода и удобства - несравнимы.
Сделал на работе сервер, убунту,
самба, шары, файловое хранилище и прочее -что реально сделало часть всего процесса нашего цеха куда проще , понятнее и прозрачнее
И вот почти год как старый amd и ddr3 работают без всяких нареканий, под речами о том что нужен нормальный бэкап, и сам решивший что нужен проксмокс - гораздо удобнее и разделять сервисы и экспериментировать, пробовать. В ожидании нового железа готовлю инфраструктуру -добавил ещё один древний офисный комп с дебиан - как независимый мониторинг всех компов, сети, и прочего

И буквально два запуска ватчера показали странную активность на сервере - 8 ядер под 100 процентов
С помощью ии конечно посмотрели процессы, папки, логи - оказалось Nocobase -тестовый контейнер , пробовал делать централизованную БД производства , имеет в старой установленной версии изъян в безопасности + открытая регистрация + открытый порт (с мыслями что вроде не страшно, тест, важных данных нет, да и честно "проиграл забыл") - эта связка привела к появлению суперадмина в БД с говорящим именем backdoor и паре майнеров на сервере которые неделю где то как то насиловали бедный and
Выводы интересные
Обновляться стоит чаще и тщательнее
Что то попробовал, потыкал - закрой за собой
Старый amd ещё как могёт - ЦЕХ вообще не заметил тормозов в работе с файлами и сервисами
Человек якобы без опыта который ставит везде один пароль и использует рутовую учётку, а потом делает такой разбор инцидента. Слабо верится в отсутствие художественной составляющей этой литературы.
С другой стороны, если учесть, что человек может развиваться по мере роста своего сервиса, а времени на выплату технического долга, заложенного в начале пути —хронически не хватать, то история перестаёт быть такой уж невероятной.
Да не, люди ленивые. Один пароль - самый частый грех. Пока тебя не ломанут, будешь забивать. Я забивал, пока не купил менеджер паролей.
Я забивал, пока у меня не взломали и не зашифровали 2 виндовых сервера.
Один пароль админа на обоих. Хранился в Evernote.
Один из серверов торчал голой жопой RDP в интернет, без VPN.
Сам дурак, да. Не надо так делать.
После этого сложные и разные пароли, никакого облачного хранения секретов, менеджер паролей.
Дорогой был опыт, но небесполезный.
И я все это знал, в теории, но лень и надежда на "авось".
Возможно, пропустил в тексте. Удачливый взломщик добрался до документации и в ней нашёл пароль? Или он умудрился подобрать пароль? Тогда, раз всё равно уже поимели, не могли бы вы написать, какой он (пароль) был, когда был целым? Мне как аматеру-содержателю аналогичной инфраструктуры, хотелось бы получше понять картину.
ну давайте теперь бросаться в другую крайность: ключи, только ключи
А потом получится внезапно так: умирает рабочий ноутбук, точнее диск, вместе с ним ключ к серверу, и зайти на него вы не можете.
Точнее, есть вторая машина с которой можно зайти, вот как раз на этот случай - но ее вы включали последний раз давно, и теперь надо вытащить ее из дальнего угла, сдуть пыль, и надеяться что старый ключ еще работает, и вы не снесли его случайно полгода назад.
Просто пароль надо посложнее чем qwedsa
Перечитывал несколько раз статью, подождал пока настоятся комментарии, и так и не понял (как и в комментариях выше) - где точка взлома (первый вход, сервер или web морда) ?
Подобран легкий пароль или каким-то образом он нашелся в открытых 350 файлах 🙄 документации?
Статья канечно кажется нейрослопом (из разряда "Я варила борщи а потом стала вайбкодером, Как я поднял 20мл а потом ушел в минус на 50мл" и так далее), но и такое может быть, когда заигрался и не хватает предыдущего опыта (например попался вирус в cms, или на компе, зашел на ftp и заразил весь сервер и тд).
Лет 15 назад когда был куплен первый vps (до этого только shared) и размещена cms - я гуглил как настроить сервер и там сразу были рекомендации: настроить fail2ban, поменять порты, использовать ключи и так далее. Здесь не нужно быть системным админом, все мы учились писать html странички и размещали первые скрипты, но это просто база для вебмастера, которая попадалась в каждой первой статье даже у хостеров, и занимала 5 минут на настройку.
А здесь и целая инфраструктура, и физические сервера, и один пароль, плюс записанный в сотнях файлах, короче абсурд.
SECRET = os.environ.get('JWT_SECRET', 'K7x...9fQ')Конструкция настолько привычная, что глаз её вообще не цепляет.
В каком месте она привычная? Она же орет "секрет в коде". Дайте угадаю, вы дали ИИ секрет и сказали "напиши" а она подставила его как значение по умолчанию, и вы решили что и так норм? А потом, когда оно стрельнуло, вы попросили опять же ИИ сделать разбор?
Знаете, в целом, абсолютно заслуженно поймали грабли.
Не знаю, но может кому то пригодится. Все мои пароли это логарифмы из таблицы Брадиса. Во первых хрен подберешь, а во вторых всегда найдешь, и их мно-о-о-го
Другой вариант: берём какую‑нибудь любимую (любимая — следовательно, помним её идеально), выбираем из неё один куплет, берём из неё один из куплетов, пароль — первая буква каждого слова в этом куплете. Выглядит как мусор, но с точки зрения «парольности» — идеально.
Например: CОнсДнноПЛснНкткв(естественно, набираем в английской раскладке).
По конфигурации сервера прям совсем непонятная солянка. И собирала эту солянку cloude. Так как по спекам явный косяк, я прям не знаю, чему ещё из статьи верить
UPD. у меня от этих пост мортем, нагаллюцинированных ИИшками аж глаз дёргается. То есть он расписывается в своей тупости смешивая доступную гипервизору память (не кратную 2N) с потоками процессора вместо реальных ядер. И т.д. Он с абсолютно серьёзной миной несёт чушь, которая может быть правдой, а может и нет, а может на половину... Я уже участвовал в таких разборах полётов, когда заведовал всем обезьяна с гранатой менеджер с клодом, который до пены у рта доказывал мне несуществующие факты и выводы, потому что он это читал это из окна чата, куда скормил пару скриншотов проблемы.
А зачем на каждый сервер свой пароль.
Когда правильным будет отключить вход по паролю в ssh и использовать только ключи
Ну рили
А почему репликация отвалилась? Это помогло или не оказало влияния?
Совет ТС-су: освоить терраформ и анзибл/паппет чтоб все состояния серверов и виртуалок были декларативно описаны в гите. Остается только бекапы, и повторимость окружений быстро восстанавливается до нужного состояния. Это может быть сложно для начала, но это true way в проде и цель куда стремиться, а после и обучать "детей" :)
За ночь у меня удалили все 22 виртуальные машины