RSS Feed

Marzec, 2012

  1. Upgrade Lenny -> Squeeze i niedziałające PHP

    Marzec 30, 2012 by 0verlord

    Zaatakował mnie w sumie dość debilny, ale i szybko naprawialny problem. . Aktualizowałem jeden serwer z Lennyego na Squeeze, jako że nastąpił koniec wsparcia dla starego stabla.

    Aktualizacja przebiegła bez najmniejszych problemów, bo w sumie na tym hoście tylko wiatr wieje, a i to czasem.
    Po aktualizacji jedyna aplikacja, która tam była zamiast parsować PHP, pozwalała je pobrać. Problem niby znany – brak obsługi php w Apaczu. Ale nie do końca. Moduły były, wszystko dobrze pokonfigurowane, ale zamiast wyświetlać – ściągał. Co ciekawe, phpmyadmin działał bez zarzutów.
    Po wiązance kwiatów polskich w kierunku Boga Nieprzewidzianych Problemów, jeeeeest, znalaaazłem.

    Jest sobie plik ładujący podstawowy konfig do php, konkretnie ten:

    host:~# cat /etc/apache2/mods-available/php5.conf 
    <IfModule mod_php5.c>
        <FilesMatch "\.ph(p3?|tml)$">
    	SetHandler application/x-httpd-php
        </FilesMatch>
        <FilesMatch "\.phps$">
    	SetHandler application/x-httpd-php-source
        </FilesMatch>
        # To re-enable php in user directories comment the following lines
        # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
        # prevents .htaccess files from disabling it.
        <IfModule mod_userdir.c>
            <Directory /home/*/public_html>
                php_admin_value engine Off
            </Directory>
        </IfModule>
    </IfModule>
    

    Co on robi? Ano wyłącza php w katalogach userów, jeżeli moduł userdir jest załadowany. U mnie był. Zmyliło mnie, że ta aplikacja miała swój własny vhost. Ale już DocumentRoot łapie się w ścieżkę z wyłączonym php. Zakomentowałem, zrestartowałem i ruszyło.

    Słowo o bezpieczeństwie takiego podejścia. Ma to sens, jeżeli mamy hosta, w którym są użytkownicy, którzy korzystają z userdir i wrzucają tam różne skrypty, które mogą być dziurawe albo z powodu nadmiaru dobrych chęci mogą przywiesić hosta, jak się zapętlą na śmierć. Jeżeli mamy tylko jedną aplikację i brak innych użytkowników, można sobie wyłączać. Jeżeli mamy userów, warto się zastanowić, zanim zakomentujemy te linijki. Z drugiej strony, skoro pod Lennym działało i nagle przestało to pewnie usernia zacznie protestować.


  2. Windows 7/Vista, Samba, pliki offline i problemy z synchronizacją

    Marzec 15, 2012 by 0verlord

    Problem da się to opanować stosunkowo prosto – jak już się zrozumie OCB i nie namiesza jakoś szczególnie mocno przy instalacji.

    Windows (klient) i Samba (serwer) wymagają włączenia oplocków, a robi się to tak:

    [global]
    oplocks = yes
    level2 oplocks = yes
    kernel oplocks = no
    create mask = 777
    map archive = yes
    map system = yes
    map hidden = yes

    Potem do rejestru Windowsa należy dodać wpisy takie:

    HKLM\Software\Microsoft\Windows\CurrentVersion\NetCache\RoundUpWriteTimeOnSync = 1
    HKLM\SYSTEM\CurrentControlSet\services\mrxsmb\OplocksDisabled = 0
    HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters\EnableOplocks = 1
    HKLM\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters\EnableOplocks = 1

    Zrestartować Sambę, zrestartować Windowsa, włączyć pliki offline i synchronizować, synchronizować. Natomiast może się pojawić kilka problemów.
    Trzeba pamiętać, że wpisy w sekcji [global] mogą być nadpisane w samej definicji udziału – więc jeżeli w globalu damy create mask = 777, a w definicji udziału zapodzieje nam się np. create mask = 0666 – wtedy synchronizacja będzie nam się sypała z dziwnymi problemami, dotyczącymi praw dostępu, zablokowanych plików, naruszeniem zasad współużytkowania plików itp. W krótkim czasie pojawią się wszystkie cztery warianty komunikatów o braku możliwości zapisania do danej lokalizacji. Do tego centrum synchronizacji będzie rzucało informacjami o konfliktach, których nie ma i o tym, że np. nie da się usunąć z lokalizacji pliku, który przed sekundą tam został przez naszego worda dokładnie tam wrzucony. Nie da się także usunąć plików tymczasowych.

    Ale najgłupszym komunikatem i zachowaniem się Office’a jakie widziałem przy okazji tego problemu, to po stworzeniu pliku w katalogu zaznaczonym do offlineowania, brak możliwości zapisania do tegoż właśnie pliku.
    Czyli tworzymy plik, coś w nim piszemy, ctrl+s i info o brak uprawnień do zapisu plików. Ciekawe, że taki problem pojawia się tylko w przypadku Visty/7. XP nie reaguje na permissiony z samby, tylko patrzy, czy może zapisać do udziału, i zapisuje. Vista/7 już patrzą do środka i stosują się do permissionów – w a przypadku create mask = 666 i synchronizacji, uprawnienia do nowo stworzonych plików znikają. Zupełnie. Nie ma żadnych wpisów w zabezpieczeniach. Są 3 wpisy: root (Unix/root), który nie może nic. Grupa users (Unix/users), bo w konfigu mamy force group = users, ale i ta grupa nic nie może, a na koniec kuriozalny user System, który (tak, właśnie tak) także nic nie może.

    Przy okazji poznałem plugin audit do samby. Konfiguruje się go tak:

    [global]
    vfs objects = full_audit
    full_audit:failure = none
    full_audit:success = mkdir rename unlink rmdir open pwrite
    full_audit:prefix = %u|%I|%m|%S

    i działa tak:

    Mar 14 15:37:34 asd smbd[11973]: user|192.168.169.170|komputer|Nazwasharea|open|ok|r|Katalog
    Mar 14 15:37:34 asd smbd[11973]: user|192.168.169.170|komputer|Nazwasharea|open|ok|r|Katalog\plik.doc

    Szybkie wyjaśnienie, pokazuje, że user windowsowy z adresu IP i z komputer wszedł do katalogu Katalog (UNC tutaj to \\Nazwasharea\Katalog), udało mu się to („ok”) i odczytał zawartość („r”). A potem to odczytał plik.doc. Można by tego modułu użyć np. do logowania tego, co się dzieje na udziale. Widać jak na dłoni, kto kasował, kto zapisywał, kto czytał itp. Pełny audyt. Widać także, kto gdzie chodził i jakie pliki oglądał. Pełny zamordyzm {-:

    Jeszcze do co buga, to trafiłem go po długich bojach i z sumie zupełnie przez przypadek. Bo skoro nie można zapisać, to znaczy, że jest problem z uprawnieniami. XP jak już pisałem, nie miał tego problemu, co dodatkowo komplikowało sytuację. Inny komputer z Vistą i bez włączonej synchronizacji także zupełnie nie doświadczał problemu. Masakra… Reinstall kompa na Win 7 był 2 tygodnie wcześniej, więc to na pewno nie było to. Karuzela wrażeń po prostu. Tylko klient coraz bardziej wnerwiony, bo Centrum Synchronizacji nie synchronizuje, ctrl+s nie zapisuje, a szalony admin zajął komputer na pół dnia i nie chce oddać.

    Podsumowując, Windows 7 i pliki offline nie są w sumie takie straszne. Kluczowe są uprawnienia, ustawiane parametrami create mask. Obowiązkowo ma być na całym sharze sieciowym 777 – czyli pliki mają mieć chmod 766 albo -rxw-rw-rw-. Inaczej losowość komunikatów zaprowadzi nas w mroczne zakątki internetu i problemów z Sambą i okolicami.


  3. OpenVPN i WrwrWrwrWrwrWrwr w logu oraz Need IPv6

    Marzec 6, 2012 by 0verlord

    Jeżeli przy konfiguracji OpenVPNa w logu pojawiają się długie linijki jak w temacie przy każdym ruchu sieciowym (najlepiej widać na przykładzie pinga) to należy zmniejszyć poziom debuga w konfigu. Poziom debuga „verb 2” załatwi problem.

    Need IPv6 code in mroute_extract_addr_from_packet – ten komunikat jest trochę głupszy, bo rozwiązaniem jest wyłączenie protokołu ipv6 na interfejsie tun. Problemem jest sterownik tun pod Windowsy, nie obsługuje jeszcze ipv6 wystarczająco stabilnie, żeby chłopaki puścili go do produkcji. Albo zrobi się jak w przypadku innych narzędzi opensourcowych – nowe wersje tylko dla płacących klientów. Taki los.

    Jak na razie nie musiałem pchać ipv6 po tunelach OpenVPNowych, więc nawet ciężko mi się wypowiedzieć.


  4. Router ADSL SLI 5300 z Netii i hackowanie hasła admina

    Marzec 1, 2012 by 0verlord

    Ten jakże zacny router rozdawała kiedyś Netia w zestawie z telefonem i internetem i „swoim” firmwarem. Router domyślnie ma dwa poziomy dostępu – user (hasło na naklejce z tyłu, lub l/p user/user) i ściśle tajny, admin z niejawnym hasłem. Ale już niedługo niejawny 🙂

    Router ogólnie jest zacny (ma np. funkcjonalność bramki VOIP i całkiem sensowny QOS), ale ma też kilka wad. Domyślnie nie da się zmienić hasła administratora (user admin). „Zablokowano” tą możliwość zwykłemu użytkownikowi. To oznacza, że np. nie możemy wyłączyć serwera dhcp ani ustawiać np. tras statycznych (i jeszcze kilku innych pomniejszych rzeczy).
    Metody na dobranie się do admina ogólnie są dwie. Pierwsza jest gdzieś na forach elektroda.pl. Metoda dość ciekawa, bo także wykorzystująca obejście zabezpieczeń. Konto usera pozwala na zrobienie backupu, z którego wyjmuje się zakodowany dość mizernym szyfrem hasło admina i dekoduje na podstawie załączonego arkusza. Metoda skuteczna, ale mało efektywna. Do admina się dobierzemy, ale w dalszym ciągu nie zmienimy mu hasła. Nasza metoda jest jednak lepsza 🙂

    Ta opowieść jest też z cyklu, dlaczego wszystkie aplikacje web powinny filtrować dane wejściowe i wyjściowe po stronie serwera, a nie Javascriptem po stronie klienta. Dlaczego? Filtrowanie JSem można wyłączyć korzystając z Firebuga. Tak to właśnie zrobiliśmy. Jak się okazało, brak możliwości zmiany hasła admina był „pilnowany” przy pomocy Javascriptu. A więc – firebug, odnalezienie odpowiedniego JSu, ustawienie breakpointa, „hack” i zmiana hasła admina bez ograniczeń i limitów.

    Niech no żyje ten, kto wymyślił takie kozackie zabezpieczenie! Niech żyje! I niech się trzyma z daleka od bezpieczeństwa banku, w którym mam konto :->

    Filmik poniżej. Włączcie fullscreen, będzie cokolwiek widać.

    [swfobj src=”http://rst.evilpackets.org/wp-content/uploads/2012/03/sli5300_admin_hacking1.swf” align=”center” allowfullscreen=”true”]SLI 5300 hack hack[/swfobj]