Ok, némileg túlzó a kép, de azért nekem is volt 1-2 komolyabb harcom az elmúlt 1-2 hónapban, munkahely váltás, költözés külföldre, meg ami vele jár.. Szóval nem volt eseménytelen az elmúlt időszak, ami sajna a blog rovására is ment láthatólag.
Na de viszont most megpróbálom azt amit anno a BBC-sek is - folytatni ahol abbamaradt minden, mintha misem történt volna..
Na szóval.. Aktuális problémánk tárgya egy HACMP-s node, ahol a clcomdES daemon fölött elkezdtek körözni a keselyűk, ugyan is ránézésre halottnak nézett ki..
Az AIX kommandó az újraélesztést megkezdte, de a beteg nem reagált a kezelésre:
Az orvosi lapot átnézve kiderült, hogy betegünk valószínű még is él, csak vagy kómába esett, vagy önmagán kívül van:[server:root:/home/root:] lssrc -s clcomdES Subsystem Group PID Status clcomdES clcomdES inoperative [server:root:/home/root:] startsrc -s clcomdES 0513-059 The clcomdES Subsystem has been started. Subsystem PID is 7033284. [server:root:/home/root:] [server:root:/home/root:] lssrc -s clcomdES Subsystem Group PID Status clcomdES clcomdES inoperative
Persze minderről a hatóságok semmit nem tudtak..[server:root:/:] tail -1 /var/hacmp/clcomd/clcomd.log Mon Jan 28 15:03:18 2013: bind (../../../../../../../src/43haes/usr/sbin/cluster/clcomd/clcomd.c:5533): Address already in use
.. csak annyit, hogy a clcomdES által gyakran használt erőforrásokat valami tényleg épp fogja:[server:root:/var/hacmp/clcomd:] ps -ef |grep clcom root 5480538 7143926 0 15:05:31 pts/1 0:00 grep clcom
# Kis magyarázat: a clcomdES által használt default port a 6191
Ilyenkor általában csak odasétál az ember az illetékes besúgóhoz, megkéri hogy mondja már meg ki jár rá a dugi csokira, de szomorúan kell konstatáljuk, hogy halvány lila fogalma nincs:[server:root:/var/hacmp/clcomd:] netstat -Aan |grep 6191 |grep LISTEN f10006000243c398 tcp4 0 0 *.6191 *.* LISTEN
Na jó... Ha a szokványos eszközök nem mennek, akkor tényleg muszáj lesz nekünk is bemocskolnunk a kezünk, és megnézni hogy a Disc-réten mi ROMolhatott el..[server:root:/var/hacmp/clcomd:] rmsock f10006000243c398 tcpcb getprocdata: malloc failed
Kezdjük is a kernellel, ha már a gyanúsítgatásnál tartunk ("Ahol a kormány, ott van a gáz.."). Aki olvasta eddig a blogomat annak ez a fordulat azt hiszem nem lesz komolyabb meglepetés :)
Akinek még is, annak javaslom az itt emlegetett módszerek és parancsok áttanulmányozását a folytatás előtt
Na szóval.. a netstat megsúgta nekünk, hogy a f10006000243c398-es dugi csokira jár rá a kis szellemünk, úgy hogy kezdjünk el az után nyomozni első körben:
Hoppá.. Tehát a socketet még is csak egy clcomd fogja, de akkor miért nem vették észre a nyomozó kollégák??[server:root:/var/hacmp/clcomd:] kdb (0)> ns Symbolic name translation off (0)> si f10006000243c398 tcpcb |grep ACTIVE F100070F01012000 16456*clcomd ACTIVE 004812E 0031166 00000003184E1400 0 0014 (0)> proc F100070F01012000 |head SLOT NAME STATE PID PPID ADSPACE CL #THS F100070F01012000 16456 clcomd ACTIVE 004812E 0031166 00000003184E1400 0 0014
Ja kérem.. Ez itt egy megrendezett öngyilkossággal egybekötött biztosítási csalás.. Na keressük meg a cinkosokat:(0)> hcal 004812E Value hexa: 0004812E Value decimal: 295214 [server:root:/:] ps -fp 295214 UID PID PPID C STIME TTY TIME CMD - 295214 - - - <exiting>
Hoppá.. Nekromancia, vagy mifene? Ki mozgatja a szálakat?(0)> proc F100070F01012000 |grep THREAD THREAD..... threadlist :F100070F10807300THREAD..... threadcount:00000014 ........... active :00000002 (0)> th F100070F10807300 |head SLOT NAME STATE TID PRI RQ CPUID CL WCHAN F100070F10807300 32883 ZOMB 0731E3 03C 0 0 NAME................ WTYPE............... WZOMB .................tid :00000000000731E3 ......tsleep :FFFFFFFFFFFFFFFF ...............flags :00000000 ..............flags2 :00000000 ...........pmcontext :00000000 DATA.........pvprocp :F100070F01012000
Jó.. 1 megvan.. Vannak még?(0)> th F100070F10807300 |grep prev LINKS.....prevthread :F100070F10008C00LINKS.....prevthread :0000000000000000 (0)> th F100070F10008C00 |head F100070F10008C00 140 clcomd SLEEP 08C029 03C 4 0 F100070F010121B8
Aham.. szóval 2 fő process, 1-1 threaddel.. Na és ők épp mit csinálnak?(0)> th -n clcomd SLOT NAME STATE TID PRI RQ CPUID CL WCHAN F100070F10007C00 124 clcomd SLEEP 07C0ED 03C 4 0 F1000110129D9A70 01125380 F100070F10008C00 140 clcomd SLEEP 08C029 03C 4 0 F100070F010121B8
Az egyik épp ki akar lépni, de azért még vár egy kicsit (tapsra talán, meg nem mondom), de a másik már érdekesebb: Ott a jelek szerint épp valami JFS2-es FS alatt volt valami átnevezősdi, ami valahogy még is csak megbicsaklott..(0)> f F100070F10008C00 pvthread+008C00 STACK: [0005EEF4]ep_sleep+000128 (0000000000056DA0, A0000000000090B2 [??]) [0014384C]kexitx+000F6C (??) [0015AAD8]kexit+000080 () [kdb_get_virtual_memory] no real storage @ FFFFFFFF3FFFE40 (0)> f F100070F10007C00 pvthread+007C00 STACK: [002FF8C0]slock+0006A4 (00000000002E0268, 80000000000090B2 [??]) [00009558].simple_lock+000058 () [002CB3D0]j2_rename+000188 (??, ??, ??, ??, ??, ??, ??) [00408C34]vnop_rename+0002B4 (??, ??, ??, ??, ??, ??, ??) [0046A8F4]rename+00030C (??, ??) [0486570C]my_rename+0001C4 (0000000020023728, 00000000200C149C) [00003810].svc_instr+000110 () [kdb_get_virtual_memory] no real storage @ 200C0FD8 [10013190]log_printf+0002FC (00000000, 00000000, 00000000, 00000000, 00000000, 00000000, 00000000, 00000000)
És hiába tűnt ez az elején HACMP hibának, a bizonyítékok alapján ez inkább tűnik AIX issue-nak.. A pénz csak pénz, a stack az meg csak stack na..
Azok alapján meg az ügy erősen hajaz az alábbi hibák egyikére:
- IZ96928
- IZ40258
Na most ha megnézitek, akkor azért ezek a bűnügyi megelőző kezelések nem épp a legfrissebben szabadult bűnözőkre lettek kitalálva (avagy jó régi patchekről van szó).. Úgy hogy ha már itt tartunk nézzük már meg, hogy ezt a drágát melyik korból szalajthatták?
Jah.. Jó.. Ez a TL/SP még anno 2009 Novemberében lett kiadva.. Az se ma volt.. Had ne mondjam azóta mennyi fix kijött, jah meg az 5.3as AIX hivatalos supportja is lejárt 2012 Áprilisában.[server:root:/:] oslevel -s 5300-08-08-0943
Na szóval itt rendesen el vannak egyesek maradva.. És hiába kérdezik meg az SWG-sek (software group) hogy tuti minden patch fent van e, attól még a hülye AIX admin csak abból főzhet amit a konyhában talál (amíg ki nem derül, hogy a Műanyag tálba lévő melegítendő kaját lehet még sem a sütőn kellett volna megpróbálni felmelegíteni).
Tanulság: Ha tetszik, ha nem tessék már azokat a rohadt rendszereket frissíteni (és nem csak a security miatt)
Kenytelen kelletlen be kell szoljak :P
VálaszTörlésoslevel -s, csak akkor ad pontos jelentest, ha minden rendben van a rendszeren. No de ha valaki utolagosan, egy tisztessegesen patch-elt rendszeren foltelepit az alap lemezrol mondjuk egy Nyelvi csomagot hajjajj...
Ajanlatos az instfix -i | egrep "ML|SP" hasznalata, ami kimutatja az effele aberraciokat ;)
Amennyiben azt mutatja a fentebbi parancs, hogy tenylegesen az oslevel altal megjelolt csomagok vannak fent, akkor valoban alulpecseles tipikus esete forog fenn Toth Marival... ellenben konnyen lehetseges, hogy csak az utolagosan telepitett csomag frissitesei hibadznak ;)
Udv
PetEye