Archive for the ‘linux/unix’ Category

Dzisiaj będzie krótko – od pewne czasu, co jakiś czas, wchodząc na ten blog dostawałem jakiś dziwny komunikat z popupem, że moj komputer jest zawirusowany i tym podobne. Zacząłem szukać śladów włamania, ale chkrootkit nic nie wskazał. Później doszedłem do wniosku, że to gdzieś po drodze się coś poprzestawiało, jednak jakoś na innych stronach tego nie widziałem – dość dziwne.

Aż do czasu, gdy przeszukując wyniki wyszukiwania dla pewnego projektu, który prowadziłem znalazłem podobny wynik w rezutlatach gugla (!!), czyli okazało się, że to jednak problem na serwerze.

Ponownie chkrootkit, zrobiłem aktualizację ale dalej nic. W końcu zacząłem podejrzewać apache’a – moj strzał padł na zmiany w konfiguracji, które pozwalają wykonywać jakieś przekierowanie na stronie, ale nic takiego coby na to wkazywało nie znalazłem.

Zrezygnowany zacząłem poszukiwać problemu – może ktoś go już zgłosił, a jedyny ślad jaki miałem to właśnie tytułowa domena (nie chcę jej powtarzać, bo wzrośnie im pagerank).

No i faktycznie trafiłem na jedno forum dyskusyjne gdzie ktoś zgłaszał dokładnie ten sam problem, no i jak się okazało znalazł się jakiś miły admin, który opisał problem i przeszukał troche netu i jego poszukiwania doprowadziły go do buga w apache’u. Ponoć jest już naprawiony, robię upgrade’a, ale zobaczmy jak to bedzie…

To zdecydowanie nie był dobry telefon pliki z pulpitu „poznikały” a komputer po restarcie wypisuje, że „kde cannot start”. Wygldąda niedobrze, system startuje ale kde nie chce sie z jakiejś przyczny odpalić. No cóż akruta z tą  maszyną to nie pierwszy problem, poprzednio pad dysku wywalił system, ale naszczęście katalog /home pozostał nietnięty więc nadpisanie nową instalacją załatwiło sprawę. A jednak gdzieś błądzi ta myśl a co jeżeli ktoś się włamał po ssh np i zrobil rm -rf /, no tak tylko, że wtedy nic by sie nie uruchamiało – c jak czapka… Tydzień minął, komp stał w bezruchu aż w końcu serwis miał chwilę coby się nim zająć. No i tragedia – bo nie dość, że ktoś usunął całego /home‚a, (dlatego ikonki z pulpitu „zniknęły”) to jeszcze wygląda na to, że maszyna przez bóg wie ile chodziła jako zombiak spamujący po necie.

No nic, trzeba sie brać do roboty. Po ostatnim włamie została pamiątka w root’owym .bash_history:

rm -rf .madalin
rm -rf madalin.tgz

Chwila guglania i już wiadomo, że nie jest dobrze, na dodatek wpis poniżej:

cd /home
ls -a
cd .directory
rm -rf *

Informuje, że po /home‚a zostało już tylko wspomnienie, a z pokoju w którym siedze dobiega tylko stek przekleństw…

No nic trzeba szukać dalej. Reinstalacja czeka, ale co można poradzić na przyszłość. Otóż firewall to podstawa nawet na domowym peciecie, jeżeli tylko ma zewnętrzne IP, wiem wiem powiecie, że to oczywiste, ale wspominam o tym, żeby polecić skrypt blockhosts, który świetnie się nadaje do ochrony przed atakami brute-force. Powiem więcej – tak mi się spodobała jego skuteczność (oczywiście sam siebie też blokuje średnio raz na tydzień:)), że zastosowałem go jako narzędzie walki z natrętnymi spamerami w serwisie fajnelinki.

Kolejne narzędzie to zapewnienie, że nikt nam nie podmienił binarek w systemie, do tego nadaje sie chkrootkit,, autorzy chyba nawet podają na stronie konfigurajcę w cronie i emaile raz na dzień ze stanem systemu (pleskowcy nie przejmujcie się jak dostaniecie pewien error).

Zotała jeszcze nabardziej paląca kwestia, co z usuniętym katalogiem domowym? Troche szperania i początkowo sytuacja wyglądała beznadziejnie, bo wszędzie piszą, że plików usuniętych z systemu plików ext3 nie da się odzyskać, ale byłem nieugiety i znalazłem człowieka z takim samym problemem jak ja, który nie poddał się, nauczył się jak działa system plików ext3 i napisał programik do odzyskiwania plików (http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html). Zmniejszyłem FAT’a 32 o połowe, zainstalowałem świeżego linucha skompilowałem ext3grep’a, zapuściłem i po dwóch godzinach caluśki /home (włącznie z 650 megowy avi’kiem) były już na dysku, w katalogach tak jak je ostatnio użytkownik obrabiał, włącznie z koszem a ja moge się w końcu położyć i spać snem sprawiedliwego 🙂

Wiem, wiem o tym jak dodać paczkę debianową oracle 10g xe, jest aż nadto. Instrukcja instalacji rozszerzenia PDO_OCI też nie jest skomplikowana (Ci którzy instalowali mysql’a z paczki repozytoriów musza usunąć PDO mysql’owe i dodac to dostarczane przez pecl’a). Wpisujemy php -m i dostajemy PDO_OCI na liście zainstalowanych modułów, odpalamy skrypcik z wiersza poleceń i wyglada na to, że wszystko jest cacy…

…problem pojawia się jak chcemy ten sam skrypt odpalić za pośrednictwem apache’a

Mnie Xdebug nagrodził błędem:

Unable to open PDO connection [wrapped: SQLSTATE[]: pdo_oci_handle_factory: OCI_INVALID_HANDLE (/tmp/pear/temp/PDO_OCI-1.0/oci_driver.c:463)]

Pierwszy strzał to dodanie zmiennych środowiskowych ORA*, no ale to nie pomogło, później to samo dla użytkownika www-data, też nic, aż w końcu wyguglałem, że trzeba zmienne środowiskowe dopisac do pliku konfiguracyjengo apache’a (ustawianie ich w trakcie działania nic nie daje), no więc poniżej moja konfiguracja:

marek2@marek-laptop:~$ cat /etc/apache2/envvars
# envvars – default environment variables for apache2ctl# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_OWNER=oraclexeexport APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

Zaczniemy od czegos prostego i przyjemnego:)

Otóż mamy dostęp do sieci VPN’owej i łączymy sie przez ssh do zdalnego serwera korzystając z opcji -b, jednakże ta opcja nie jest dostępna dla polecenia scp. Z pomocą przychodzi opcja -o, która pozwala przesłać dodatkowe parametry do ssh, które leci pod spodem, więc wychodzi nam:

scp -oBindAddress=<twój adres ip>