Błedy po zaniku zasilania serwera - Etch
: 19 lutego 2010, 20:24
Witam.
Mam następujący problem:
Serwer na Debianie 4.0 działający od ponad roku, dużo dodatków, samba, apache, ftp, php, mysql.
Wszystko działało sobie doskonale do dziś. Nastąpił zanik zasilania i po około godzinie od przywrócenia zasilania zauważyłem, że nie mam internetu w laptopie. Widzę, że nie dostał IP z dhcp więc ustawiłem ręcznie ale putty nie może się dobić do serwera.
Szybkie podłączenie klawiatury i monitora do serwera i widzę czarny ekran. Restart i niestety po nim pasmo błędów, przy każdym wywołaniu grepa w skryptach startowych wyświetla:
Myślę sobie - pewnie błąd na dysku, uruchomiłem system z płyty w trybie awaryjnym, ale fsck nie pokazał żadnych błędów, więc podmieniam uszkodzony plik /bin/grep na rozpakowany z paczki z płyty i grep działa bez problemu.
Zdziwiło mnie tylko trochę że "stary" grep jest o kilka kilobajtów krótszy od tego uszkodzonego.
Niestety kolejny restart systemu i znowu:
Po uruchomieniu trybu awaryjnego, zaskoczenie - grep znowu urósł o kilka kB i ma zmieniony czas modyfikacji na świeży, czyli podczas rozruchu coś w nim "grzebnęło".
Dodatkowo zauważyłem, że uszkodzone są też "rm", "mv", "sleep" i jeszcze kilka innych.
Macie jakieś pomysły albo podpowiedzi?
Nie chce mi się instalować systemu na nowo, a dawno temu robiłem kopię zapasową i trochę się zmieniło od tego czasu. Poza tym wrodzona ciekawość nie pozwala mi iść na łatwiznę.
[ Dodano: |20 Lut 2010|, 2010 12:33 ]
Wiadomości z "frontu", ciąg dalszy ;-)
Poniższe pliki w katalogu /bin mają zmienioną datę i czas modyfikacji na tą z próby ostatniego rozruchuCzęść z nich działa, większość wyrzuca jednak
I teraz ciekawostka: uruchamiam np polecenie cat i wygląda na pozór że wszystko jest ok, zwraca wynik, ale momentalnie zmienia się data modyfikacji wszystkich plików z tej listy...
Czyżby "obcy" na pokładzie?
Rozpakowałem i podmieniłem w trybie rescue wszystkie uszkodzone pliki z paczek deb z płyty instalacyjnej i polecenia zaczęły prawidłowo działać. Jednak po reboocie system nie wystartował, zawiesił się w momencie uruchamiania demona syslog. Ponowny rozruch w trybie rescue i okazuje się że znowu wszystkie pliki z powyższej listy mają zmienioną datę i czas na "świeży" ...
Jeszcze jedno spostrzeżenie, wszystkie te pliki pochodzą z jednej paczki - coreutils, a po "samoczynnej" modyfikacji daty ich długość rośnie równo o 4096B
[ Dodano: |21 Lut 2010|, 2010 13:06 ]
A teraz szczęśliwe zakończenie, czyli serwer "stanął na nogi" ;-)
Widzę że prowadzę monolog, ale wkleję informację o rozwiązaniu problemu, może komuś się kiedyś przyda.
Bardzo prawdopodobny scenariusz wyglądał tak:
- jakiś czas temu złapałem bakcyla o nazwie Vit.4096 i żyłem w błogiej nieświadomości (uważajcie na paczki z niepewnych źródeł!!!)
- vir nie był zbyt groźny, zainfekował tylko pliki w /bin i /sbin
- w piątek nastąpiła awaria zasilania w wyniku której "sypnął" się jeden z zainfekowanych plików w /bin
- ponowny rozruch systemu spowodował uruchomienie zainfekowanego polecenia i vir rozkopiował swój uszkodzony kod do pozostałych poleceń. Nastąpił zgon systemu podczas startu i brak możliwości podniesienia serwera
- skopiowałem uszkodzone komendy z paczek z płyty instalacyjnej, ale przeoczyłem jeden plik, który przy ponownym rozruchu znowu się sklonował z błędem.
- ponowna podmiana plików na świeże, tym razem z większa uwagą i starannością (daty modyfikacji!) przywróciła serwer do życia bez utraty nawet jednego bita danych.
Mam następujący problem:
Serwer na Debianie 4.0 działający od ponad roku, dużo dodatków, samba, apache, ftp, php, mysql.
Wszystko działało sobie doskonale do dziś. Nastąpił zanik zasilania i po około godzinie od przywrócenia zasilania zauważyłem, że nie mam internetu w laptopie. Widzę, że nie dostał IP z dhcp więc ustawiłem ręcznie ale putty nie może się dobić do serwera.
Szybkie podłączenie klawiatury i monitora do serwera i widzę czarny ekran. Restart i niestety po nim pasmo błędów, przy każdym wywołaniu grepa w skryptach startowych wyświetla:
Kod: Zaznacz cały
segmentation fault
Zdziwiło mnie tylko trochę że "stary" grep jest o kilka kilobajtów krótszy od tego uszkodzonego.
Niestety kolejny restart systemu i znowu:
Kod: Zaznacz cały
segmentation fault
Dodatkowo zauważyłem, że uszkodzone są też "rm", "mv", "sleep" i jeszcze kilka innych.
Macie jakieś pomysły albo podpowiedzi?
Nie chce mi się instalować systemu na nowo, a dawno temu robiłem kopię zapasową i trochę się zmieniło od tego czasu. Poza tym wrodzona ciekawość nie pozwala mi iść na łatwiznę.
[ Dodano: |20 Lut 2010|, 2010 12:33 ]
Wiadomości z "frontu", ciąg dalszy ;-)
Poniższe pliki w katalogu /bin mają zmienioną datę i czas modyfikacji na tą z próby ostatniego rozruchu
Kod: Zaznacz cały
cat
chgrp
chmod
chown
cp
dd
df
dir
echo
false
ln
mkdir
mknod
mv
pwd
readlink
rm
rmdir
run-parts
sleep
stty
sync
touch
true
uname
vdir
Kod: Zaznacz cały
segmentation fault
Czyżby "obcy" na pokładzie?
Rozpakowałem i podmieniłem w trybie rescue wszystkie uszkodzone pliki z paczek deb z płyty instalacyjnej i polecenia zaczęły prawidłowo działać. Jednak po reboocie system nie wystartował, zawiesił się w momencie uruchamiania demona syslog. Ponowny rozruch w trybie rescue i okazuje się że znowu wszystkie pliki z powyższej listy mają zmienioną datę i czas na "świeży" ...
Jeszcze jedno spostrzeżenie, wszystkie te pliki pochodzą z jednej paczki - coreutils, a po "samoczynnej" modyfikacji daty ich długość rośnie równo o 4096B
[ Dodano: |21 Lut 2010|, 2010 13:06 ]
A teraz szczęśliwe zakończenie, czyli serwer "stanął na nogi" ;-)
Widzę że prowadzę monolog, ale wkleję informację o rozwiązaniu problemu, może komuś się kiedyś przyda.
Bardzo prawdopodobny scenariusz wyglądał tak:
- jakiś czas temu złapałem bakcyla o nazwie Vit.4096 i żyłem w błogiej nieświadomości (uważajcie na paczki z niepewnych źródeł!!!)
- vir nie był zbyt groźny, zainfekował tylko pliki w /bin i /sbin
- w piątek nastąpiła awaria zasilania w wyniku której "sypnął" się jeden z zainfekowanych plików w /bin
- ponowny rozruch systemu spowodował uruchomienie zainfekowanego polecenia i vir rozkopiował swój uszkodzony kod do pozostałych poleceń. Nastąpił zgon systemu podczas startu i brak możliwości podniesienia serwera
- skopiowałem uszkodzone komendy z paczek z płyty instalacyjnej, ale przeoczyłem jeden plik, który przy ponownym rozruchu znowu się sklonował z błędem.
- ponowna podmiana plików na świeże, tym razem z większa uwagą i starannością (daty modyfikacji!) przywróciła serwer do życia bez utraty nawet jednego bita danych.