Иногда автокоррект бессилен

Сотруд­ни­ца сего­дня в почте опи­са­лась про­сто зачёт­ней­ше:

“I would like to request a dicking station, please.”

При­зна­юсь, паль­цы чеса­лись отве­тить:

Sorry, we are out of those. We have some docking stations, though!

Да, я всё пони­маю — бук­вы O и I на кла­ви­а­ту­ре рядом. Чистая меха­ни­ка.

Но скрин­шо­ты-то оста­лись. Как и оса­до­чек.

Отдель­ную… глу­би­ну ситу­а­ции при­да­ёт тот факт, что автор пись­ма — суро­вая бутч-лес­би­ян­ка с шести­лет­ним ста­жем служ­бы в ВМФ.

Фрейд улы­ба­ет­ся и машет.

Интересный хак

Есть такой бес­плат­ный (и очень мощ­ный) редак­тор тек­ста — Notepad++. Он уме­ет пони­мать син­так­сис мно­гих язы­ков про­грам­ми­ро­ва­ния, типа Python, JavaScript, PHP, и далее по алфа­ви­ту. Кро­ме того, он под­дер­жи­ва­ет рег­экс­пы, MIME, и про­чие полез­ные сись-админ­ские вещи. Я с удо­воль­стви­ем его исполь­зую.

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

Хаке­ры умуд­ри­лись взло­мать хосте­ра, где хра­ни­лись бинар­ни­ки, и щед­ро насо­ва­ли туда вся­ко­го инте­рес­но­го в панам­ку.

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

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

Но на вся­кий слу­чай — обно­ви­тесь до вер­сии 8.9.1.

via
https://www.securityweek.com/notepad-supply-chain-hack-conducted-by-china-via-hosting-provider/

Update!

Тех­ни­че­ский ана­лиз с раз­бо­ром IoC:
https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/

Набрали, блин, по объявлениям

Нари­со­ва­ли тут граж­дане ана­ли­ти­ки скрип­тов на R — финан­со­вые дан­ные обра­ба­ты­вать. Всё бы ниче­го, толь­ко на их лап­то­пах оно лета­ет, а в про­дак­шене скрипт вста­ёт колом.

Ну лад­но, гово­рю, давай­те посмот­рим, в чём раз­ни­ца. Раз­ни­ца нашлась быст­ро.

Под­жи­га­ем скрипт — он радост­но стар­ту­ет, бод­ро гру­зит в память 40 с лихе­ром гига­байт дан­ных, а потом начи­на­ет дол­го и вдум­чи­во делать вся­кую фиг­ню.

Откры­ваю дис­пет­чер задач. Смот­рю… ага.

Гля­жу в кни­гу — вижу фигу: из 64 ядер скрипт бод­ро моло­тит ОДНО ядро. Осталь­ные 63 сто­ят вокруг, жуют сено, и курят бам­бук.

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

На ноут­бу­ке у него — AMD «Рязань» с тур­бо­ча­сто­той 5.1 ГГц. А в про­дак­шене, изви­ни­те, ядер-то хоть отбав­ляй, но они попро­ще лицом будут, и на 2 ГГц.

Раз­ра­бот­чик винит желе­зо.
Я виню раз­ра­бот­чи­ка.

Пото­му что в 2026 году писать одно­по­точ­ный про­цесс — это не про­сто запад­ло, а тупиз­на со взло­мом.

Вот так и живём. Пой­ду писать гроз­ное пись­мо прод­жект-лиду. Пусть он им в коман­ду хоть одно­го погро­ми­ста с реаль­ной сте­пе­нью в CS вкру­тит, ина­че они про­дол­жат выда­вать хер­ню на гора. Таких дун­ду­ков даже ИИ не спа­са­ет.

Шаббат шалом

«Ящи­таю» ©, что у хоро­ше­го сисад­ми­на дол­жен быть не толь­ко пра­виль­но­го диа­мет­ра, гра­мот­но намо­лен­ный бубен, но ещё и спе­ци­аль­но обу­чен­ная сисад­мин­ская ермол­ка.

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

Но сего­дня один наш орёл решил про­ве­рить гра­ни­цы миро­зда­ния и пере­гру­зил кла­стер вир­ту­а­ли­за­ции Hyper‑V. ВЕСЬ. Не по одно­му хосту, не акку­рат­но и пооче­рёд­но — а сра­зу всё, одно­вре­мен­но, чтоб навер­ня­ка.

Упа­ло, сла­ва Зев­су и всем богам SLA, не очень мно­го — бла­го пере­за­груз­ка была ещё до нача­ла рабо­че­го дня. Но доста­точ­но для того, что­бы наша мама (фин­ди­рек­тор) напи­са­ла недо­умён­ное:

«Ребя­та, у нас сего­дня вооб­ще-то зар­пла­та начис­ля­ет­ся. Вы там что, реши­ли устро­ить при­клю­че­ние с утра порань­ше?»

А зар­пла­та (и наша мама) — это свя­тое.

Хвост сисад­ми­ну мы, конеч­но, слег­ка под­ров­ня­ли, но дело, увы, уже было сде­ла­но.

Шаб­бат шалом. И пят­нич­ный прод стань­те же кто-нибудь охра­нять. Жела­тель­но, с бейс­боль­ной битой наго­то­ве.

Micron — всё

Ну, не «всё», конеч­но, но всё же Мик­рон офи­ци­аль­но объ­явил об ухо­де с поль­зо­ва­тель­ско­го рын­ка памя­ти и фле­ша (бренд Crucial). Ухо­дят они, судя по все­му, пото­му что вынуж­де­ны удо­вле­тво­рять рез­ко вырос­ший спрос круп­ных кор­по­ра­тив­ных кли­ен­тов — читай: дата-цен­тров под ИИ-нагруз­ки и про­чий enterprise, кото­рый сей­час жрёт энер­гию и крем­ний мега­тон­на­ми. Тянуть в нагруз­ку ко все­му это­му и роз­нич­ные про­да­жи у них попро­сту боль­ше не хва­та­ет ни мощ­но­сти, ни, види­мо, жела­ния.

Моей сисад­мин­ской душе от это­го, това­ри­щи, очень-очень горь­ко. Пото­му что Micron-овская память, по мое­му опы­ту, все­гда была самой ста­биль­ной, самой пред­ска­зу­е­мой, и наи­ме­нее глюч­ной. Я ещё с 1990‑х ста­ра­юсь поку­пать имен­но их моду­ли — и не при­пом­ню, что­бы они меня хоть раз под­ве­ли. Да и с их флеш­ка­ми и SSD у меня тоже нико­гда не было про­блем.

Отдель­ная боль — их пре­крас­ный онлайн-ска­нер сов­ме­сти­мо­сти памя­ти, тот самый, кото­рый поз­во­лял за мину­ту подо­брать нуж­ные моду­ли для прак­ти­че­ски чего угод­но: от древ­них ноут­бу­ков до экзо­ти­че­ских рабо­чих стан­ций. Это был инстру­мент, кото­рый реаль­но делал жизнь про­ще. Теперь всё это, увы, накры­ва­ет­ся мед­ным тазом.

Я пони­маю при­чи­ны, пони­маю рынок… но ника­ких поло­жи­тель­ных эмо­ций по это­му пово­ду не испы­ты­ваю.
🙁

Вчера FSLogix душили-душили

Запись будет инте­рес­на в основ­ном сись-одми­нам. Так, замет­ки для себя и для сво­их.

FSLogix — это совре­мен­ная заме­на тому, что Microsoft рань­ше назы­вал Roaming User Profiles. Самый боль­шой их недо­ста­ток был в том, что про­фи­ли хра­ни­лись на кон­трол­ле­ре доме­на. А кон­трол­лер — это, сюр­приз-сюр­приз, не фай­ло­вый сер­вер. Нех­ре­на на нём хра­нить вся­кий хлам, типа деск­топ­ных ико­нок, AppData, эски­зов и про­чей фай­ло­по­мой­ки.

FSLogix рабо­та­ет по-дру­го­му: для каж­до­го поль­зо­ва­те­ля, логи­ня­ще­го­ся в систе­му, созда­ёт­ся пер­со­наль­ный VHDX-файл, кото­рый мон­ти­ру­ет­ся как его про­филь. Хра­нит­ся VHDX уже пра­виль­но — на фай­ло­вом сер­ве­ре. Поэто­му куда бы ты ни зало­ги­ни­лась — хоть на физи­че­скую маши­ну, хоть на VDI — ты вез­де полу­ча­ешь свой рiд­ний про­филь со все­ми настрой­ка­ми. Для луч­ше­го эффек­та про­фи­ли жела­тель­но дер­жать на шаре, сто­я­щей на SSD, и непло­хо бы, что­бы фай­ло­вый сер­вер был под­клю­чён, как у боль­ших дяде­нек, через 10+ гига­бит.

Самое рас­про­стра­нён­ное при­ме­не­ние FSLogix — фер­мы вир­ту­аль­ных деск­то­пов. Ага, это имен­но туда мне недав­но при­шлось впи­сать 66 тупо­ры­лых поль­зо­ва­те­лей, из кото­рых отдель­ные граж­дане вме­сто .com писа­ли .cum. Не хочу даже думать, какие сай­ты они до это­го посе­ща­ли. Мда.

Что­бы вклю­чить FSLogix, надо ска­чать кли­ент, поста­вить его на каж­дую кли­ент­скую маши­ну (мож­но через груп­по­вые поли­ти­ки), а затем засу­нуть ADMX/ADML-шаб­ло­ны в SYSVOL на все кон­трол­ле­ры доме­нов, как поло­же­но, что­бы появи­лась новая груп­по­вая поли­ти­ка.

Всё нуж­ное берёт­ся здесь:
https://learn.microsoft.com/en-us/fslogix/

Даль­ше на фай­ло­вом сер­ве­ре созда­ёшь шару (жела­тель­но скры­тую $, что­бы юзве­ри уша­стые туда не лез­ли), про­пи­сы­ва­ешь её в поли­ти­ке как место хра­не­ния про­фи­лей — и алга, ком­со­мол.

Самое слож­ное — настро­ить раз­ре­ше­ния НА ШАРЕ ТОЧНО ТАК, КАК НАДО, ина­че FSLogix будет устра­и­вать тебе цирк с коня­ми и каж­дый раз выки­ды­вать «Access Denied». Вот докУ­мент, кото­рый надо читать очень вни­ма­тель­но. Мне пона­до­би­лось два дня пля­сок с буб­ном и заячьей лап­кой, что­бы всё нако­нец зара­бо­та­ло:
https://learn.microsoft.com/en-us/fslogix/how-to-configure-storage-permissions

Для луч­шей иллю­стра­ции чув­стви­тель­но­сти прав: при пра­виль­но выстав­лен­ных ACL коман­да mkdir на этой шаре с кли­ент­ской маши­ны долж­на успеш­но созда­вать пап­ку.
Но вот попыт­ка создать файл (напри­мер, New-Item) долж­на отфут­бо­ли­вать­ся с Access Denied.
Так FSLogix и опре­де­ля­ет, что дере­во раз­ре­ше­ний настро­е­но иде­аль­но: дирек­то­рию сде­лать мож­но, файл — нель­зя. Если это пове­де­ние не сов­па­да­ет — зна­чит, пра­ва опять где-то поеха­ли, и пора доста­вать бубен.

Но зато потом — вах, дара­гой, кра­со­та, слю­щай. Куда ни зай­дёшь — про­филь под­цеп­ля­ет­ся авто­ма­ти­че­ски, всё рабо­та­ет быст­ро, чисто и про­зрач­но.
Кере­мен­дую.

Сисадминско-ИИшно-рабочее

Дано: отка­зо­устой­чи­вый кла­стер Hyper‑V.
Надо: обес­пе­чить сорок рыл вир­ту­аль­ны­ми деск­то­па­ми на Windows 11.

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

Какие вари­ан­ты реше­ния?

Офи­ци­аль­ный RDS от Microsoft. Сто­ит каких-то совер­шен­но невме­ня­е­мых денег — по 220 монет за рыло (CAL, client access license)! Это, на мину­точ­ку, доро­же, чем лицен­зия на Вин­ду!

Но мож­но сде­лать своё реше­ние — ничем не хуже, из гов­на и палок, и совер­шен­но бес­плат­но.

Пона­до­бит­ся:

Одна машин­ка под Linux. На неё ста­вим nginx, кото­рый будет рабо­тать кро­ко­ди­лом балан­си­ров­щи­ком нагруз­ки. Цеп­лять­ся люди будут имен­но к нему — а он будет читать спи­сок доступ­ных вир­ту­а­лок из фай­ла available.conf, и раз­да­вать траф­фик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf посто­ян­но обнов­ля­ет­ся дру­гим скрип­том — на Python.
Этот скрипт под­ни­ма­ет кро­хот­ный веб-сер­вер на Flask, в кото­рый каж­дая вир­ту­ал­ка при­сы­ла­ет свой ста­тус: «заня­то» или «сво­бод­но».

Ста­тус они полу­ча­ют с помо­щью встро­ен­ной коман­ды Windows:
qwinsta | Select-String "Active"

Если выво­дит­ся хоть что-то — маши­на заня­та. Даль­ше PowerShell-скрипт фор­ми­ру­ет JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добав­ля­ем в Task Scheduler, раз в мину­ту — и впер­дё.

Пито­нов­ский скрипт доволь­но замух­рёж­ный (в хоро­шем смыс­ле), и я его тут выкла­ды­вать не буду. Ска­жу толь­ко, что он не толь­ко добав­ля­ет сво­бод­ные маши­ны, но и чистит пул: выки­ды­ва­ет те вир­ту­ал­ки, кото­рые заня­ты, либо кото­рые не при­сы­ла­ли свой ста­тус в тече­ние двух минут — пото­му что если вир­ту­ал­ка выклю­че­на, послать ста­тус она, разу­ме­ет­ся, не может. За этим надо сле­дить.

Всё это было при­ду­ма­но и реа­ли­зо­ва­но при помо­щи Кейт — так я назы­ваю свою ChatGPT-чку.
Без­услов­но, под моим чут­ким руко­вод­ством:

— А что будет, если вир­ту­ал­ку выклю­чить?
— Ах да, сло­ма­ет­ся. Надо обно­вить скрипт, что­бы ста­рые маши­ны уда­лял, вот так: [код].

Полу­чи­лось бы у меня всё это вопло­тить само­сто­я­тель­но? Конеч­но. И не такое при­хо­ди­лось делать.
Но, япон­ский бог, это заня­ло бы уйму вре­ме­ни: мне при­шлось бы отдель­но выяс­нять, как запус­кать Flask-сер­вер, как слать JSON из PowerShell, как его при­ни­мать, как менять кон­фи­ги nginx на лету, и так далее.

А тут — всё полу­чи­лось бук­валь­но за пару часов.

Не знаю, как в дру­гих IT-про­фес­си­ях, но в сисад­мин­стве ИИ — это чудо­вищ­ной мощ­но­сти умно­жи­тель силы, кото­рый поз­во­ля­ет за то же вре­мя делать гораз­до более слож­ные про­ек­ты.

И да, при­ят­но, япон­ский бог — когда из слож­ной, непо­нят­ной зада­чи полу­ча­ет­ся кра­си­вое, рабо­та­ю­щее реше­ние.

Рабоче-покупное

Ищу я, зна­чит, заме­ну бло­ку пита­ния для ста­ро­го PoE-свит­ча, на кото­ром висят каме­ры наблю­де­ния (свитч модуль­ный, ста­рень­кий, но род­ной — и уже настро­ен­ный, как надо). На Ама­зоне нашёл­ся под­хо­дя­щий вари­ант.

Нико­гда в жиз­ни мне не встре­ча­лось настоль­ко вычур­ное напи­са­ние вход­но­го напря­же­ния, доро­гие дру­зиа!

2.4E+2, ага.

Это у нас, если пере­ве­сти с язы­ка экс­по­нен­ци­аль­ной запи­си, обыч­но при­ме­ня­е­мой где-нибудь в нау­ке, кибер­не­ти­ке, или при вызо­ве ЗГОГГов, — обыч­ные, стан­дарт­ные, род­ные, чело­ве­че­ские 240 вольт.

Зачем они так выпенд­ри­лись — зогад­ко, чест­ное сло­во. Может, наде­я­лись впе­чат­лить кого-то, кто по ночам тай­ком, украд­кой, гла­дит свой осцил­ло­скоп?

День великого онбординга (матерное)

Сего­дня у нас вели­кий день — мас­со­вое засе­ле­ние поль­зо­ва­те­лей наше­го кли­ен­та в новую систе­му.
Систе­ма неболь­шая — все­го 66 поль­зо­ва­те­лей.

Я теперь пони­маю, поче­му Дан­те не опи­сал деся­то­го кру­га ада — про­сто не успел дожить до мас­со­во­го онбор­дин­га тупых юзве­рей в Entra ID.

11 поль­зо­ва­те­лей ско­пи­ро­ва­ли в пароль лиш­ний про­бел в кон­це и ска­за­ли, что “пароль не рабо­та­ет”.
Пяте­рым при­шлось пароль сбра­сы­вать повтор­но — види­мо, из соли­дар­но­сти.
Двое вме­сто .com напи­са­ли .cum — и я ста­ра­юсь не заду­мы­вать­ся, о чём они меч­та­ли в тот момент.
Семе­ро успеш­но забло­ки­ро­ва­ли свои учёт­ки, даже не успев в них вой­ти.
Трое так мед­лен­но иска­ли и доста­ва­ли теле­фон, что­бы настро­ить 2FA, что Microsoft Authenticator устал ждать и вышел из чата (тай­маут — 60 секунд, меж­ду про­чим). После это­го им в рыло при­ле­те­ло «session timed out», и они, разу­ме­ет­ся, пожа­ло­ва­лись, что что-то не рабо­та­ет.
Чет­ве­ро пыта­лись вой­ти под ста­ры­ми логи­на­ми и тоже заяви­ли, что “систе­ма сло­ма­на”.
Двое уста­но­ви­ли не тот VPN.
Один рас­пе­ча­тал пись­мо с вре­мен­ным (!!!) паро­лем — “что­бы не поте­рять”.
Двое исполь­зо­ва­ли теле­фон супру­гов для 2FA — “пото­му что под рукой был”.
Пяте­ро жда­ли по пят­на­дцать минут, пока “систе­ма загру­зит­ся”, забыв нажать Next.
И вишен­ка на тор­те — один чело­век напи­сал CAPS LOCK’ом всё под­ряд и не мог понять, поче­му “не при­ни­ма­ет­ся пра­виль­ный пароль”.

Мои нер­вы вро­де бы были сталь­ные, а ока­за­лись пла­сти­ли­но­вые.

Пой­ду зава­рю ещё кофе — если, конеч­но, никто не попы­тал­ся авто­ри­зо­вать­ся в кофе­ма­шине с про­бе­лом в паро­ле…
…и не забло­ки­ро­вал её нахуй.

Хеловиним, сисадминим

Люб­лю нашу ком­па­нию — народ почти в пол­ном соста­ве наря­жа­ет­ся, так что каж­дый Хэл­ло­уин в офи­се — празд­ник для глаз: повсю­ду мон­стры, ведь­мы, и про­чие кре­а­ту­ры, а рабо­тать всё рав­но надо.

Наш финан­со­вый дирек­тор (Chief Financial Officer):

Это Кру­эл­ла де Виль, соб­ствен­ной пер­со­ной, если вдруг кто не понял.

Я обыч­но тоже участ­вую, но в послед­нее вре­мя, если я про­сто могу само­сто­я­тель­но одеть­ся — день уже удал­ся. Так что весь мой костюм в этом году огра­ни­чил­ся накра­шен­ны­ми ког­тя­ми.

А рабо­тать всё рав­но надо — сисад­мин­ство в празд­ник никто не отме­нял. Делаю апгрейд сер­ве­рам в нашем кла­сте­ре Hyper‑V: выди­раю к соот­вет­ству­ю­щей немет­ри­че­ской мате­ри брод­ко­мов­ские сете­вые кар­точ­ки и став­лю нор­маль­ные инте­лов­ские. И дело даже не в том, что Broadcom дела­ет пря­мо пло­хое желе­зо — про­сто драй­ве­ры они тра­ди­ци­он­но пишут исклю­чи­тель­но через зад­ни­цу.

🎃 Happy Halloween! 👻