Pokaż wyniki 1 do 10 z 10

Temat: Zabezpieczanie PHP

  1. #1

    Domyślnie Zabezpieczanie PHP

    Witam, zastanawiam się co jeszcze wyłączyć w php/ tudzież zabezpieczyć go aby nie dało się nic zrobić w popularnych "shellach php" typu c99 r57 itp etc póki co wygooglowałem aby takie zmiany w php.ini wprowadzić:

    Kod:
    safe_mode = On
    disable_functions =  system, exec, passthru, shell_exec, sockopen, proc_open, popen, set_time_limit, php_uname, phpinfo, symlink
    mysqli.allow_local_infile = Off
    allow_url_fopen = Off
    expose_php = Off
    może macie jeszcze jakieś pomysły ?

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    To powyzej to rozsadny poczatek ale temat mozna ciagnac dalej, poza PHP.

    Jak nie chcesz aby nakombinowali za wiele, to jesli ta maszyna jest serwerem WWW tylko to traktuj ja jako serwer WWW - ustaw firewall aby tylko odpowiadal na zapytania a sam nie mogl nawiazywac polaczen.

    Egress Filtering to sie nazywa, podalem przyklad konfiguracji tutaj - to jest to czego sam uzywam (nieco bardziej rozbudowanego) na swoich serwerach - mialem proby wlamania, mialem shell'e wrzucone przez gowniane aplikacje w PHP itd - wyobraz sobie frustracje atakujacych jak nie mogli nic zrobic bo polaczenia wychodzace sa zablokowane!

    Oczywiscie taki serwer nie moze nawet gadac z innymi hostami w tej samej sieci LAN wiec pole manewru jest minimalne.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3

    Domyślnie

    Hhm w sumie takie coś rozwiązało by sprawę gdyby nie serwer pocztowy który się tam znajduje A poza tym jak to dokładnie działa ? Blokuje wszystkie połączenia z serwera i wpuszcza tylko te do serwera ? Nie blokuje to zatem przeglądania stron, wgrywania plików na ftp itp etc ?

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Nie, nie blokuje...
    Egress blokuje polaczenia wychodzace - jak masz serwer SMTP tam to zezwalasz tez na wychodzace na port 25 i po sprawie.
    Ingress blokuje to co przyjmujesz... tam wiec otwierasz 80 i 25 jesli to potrzebujesz. Jesli ktos wgra jakiegos php-shell'a to i tak za wiele nie zdziala poza dostepem do systemu ale w koncu taki firewall to tylko jedna z warstw zabezpieczen.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5

    Domyślnie

    Dobrze jest systematyzować.
    Wektory ataków kiedy już uda się coś zarzucić na PHP widzę tak:

    Level 1:
    - buffer overflow w jądrze php
    Level 2:
    - niskopoziomowy dostęp do sieci (RAW Packet)
    Level 3:
    - wysokopoziomowy dostęp do sieci (socketLisiner, UDP, SPAM)
    - modyfikowanie dowolnych plików w systemie i plików innych użytkowników
    NeverLevel:
    - zabezpiecznie przed uruchomieniem X ilości procesów (Fork bomb)

    Zostaje też dużo drobnostek, np. wspólny katalog na pliki tymczasowe dla wszystkich użytkowników, co pozwala na odczytanie sesji, lub błąd umożliwiający podgląd listy użytkowników systemu przez zwykłe glob('../../*'), widziałem też wiele failów w samej instalacji panelu zarządzania, np, możesz innemu użytkownikowi skasować domenkę, zmienić DNSY czy zbackupować bazę danych :-}

    Trudno udzielić odpowiedzi 'klucz', która wywoła u słuchacza okrzyk 'eureka!'
    Niby pytasz o 'shelle' typu c99 czy r57, tylko że z tego niewiele wynika, bo skoro moge uruchomić dowonych kod php, to co mi po takim 'shellu'..

    Osobiście nie bawię się w zabezpiecznie czegokolwiek, kupuje względnie zabezpieczony hosting www (h9,hg,e2,itp) tylko backupuje po swojemu bo u nich to nigdy nie wiadomo ^_^.
    Niestety nie jest najłatwiej wybrać taki hosting wśród tańszych i jednocześnie polskich.
    Hack.pl stoi na Home.pl i jakoś nie widać zbyt wielu włamań, home ma wiele promocji, czesto możesz się u nich zaparkować np. na pół roku za 50zł (potem 300/rok), może tędy droga?
    Ostatnio edytowane przez lame : 10-19-2011 - 21:45
    światło mądrości oświetla drogę z nikąd do nikąd

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jesli stawiasz serwer samodzielnie to mozesz o wiele wiecej niz na wspoldzielonym hostingu... stara zasada

    Ok, wiec raw socket i uzycie gniazd na wyzszym poziomie jest zalatwione calkowicie za pomoca firewall'a wyjsciowego (egress) bo co z tego ze masz shell'a albo inny kod skoro nie mozesz nic zrobic?
    Zabezpieczenie PHP - ladnie i pieknie wylaczyc pewne funkcje (ja blokuje duzo wiecej ale nie mam akurat listy pod reka) ale to lubi zepsuc wiele aplikacji ktore sa gowniano napisane, wiec... cos za cos.
    Fork-bomb i spolka - /etc/security/* i podobne...

    BTW. Wlasnie analizuje kawalek kodu PHP ktory odpowiada za drive-by malware... wstawione na serwer ciagnacy wordpress'a, nikt nie wie do tej pory jak i kto to zaladowal bo jeden czlowiek zatarl wszystkie slady 'probujac pomoc' choc mial powiedziane ze ma nie dotykac...
    Kod strasznie zamieszany ale pierwsze co robi to reset zmiennych php wiec zero logowania, zero bledow, ignorowanie sygnalow itd... fajne - bocik jak znalazl!
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7

    Domyślnie

    Cytat Napisał TQM Zobacz post
    Fork-bomb i spolka - /etc/security/* i podobne...
    Hah, ciekawe jakim sposobem chcesz odróżnić 'fork bomb' od 'traffic spikes'? Jestem bardzo ciekaw.

    Na masowych zagranicznych hostingach jest to rozwiązane w taki sposób, że możesz korzystać z wszystkich zasobów serwera, jeśli przesadzisz dostajesz chińskie ostrzeżenie, potem już tylko: 'here is your backup and Goodbye'

    Nastomiast w polsce panuje moda żeby poustawiać limity i modlić się żeby usługi nie kupił ktoś z forum więcej niż 100 odwiedzin dziennie, bo zobaczy Error 500, WSoD albo 30 sekundowy lag.

    Mówie oczywiście o Shared-Hosting, czyli usłudze gdzie nie musisz zadbać by wszystko działało, siedzisz (a właściwie leżysz) i wymagasz.
    Takie rozwiązanie podchodzi mi lepiej niż VPS.

    Nie uruchomie darmowego forum czy czegoś podobnego na dziko konfigurowanym VPSie, to proszenie się o kłopoty...
    Ostatnio edytowane przez lame : 10-19-2011 - 23:16
    światło mądrości oświetla drogę z nikąd do nikąd

  8. #8
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Z tego co wiem to da sie to zrobic ustawiajac limity... Shared hosting uzywaja najczesciej suphp lub podobnego - limity sa na usera. Dobranie wlasciwego hostingu do potrzeb to polowa sukcesu :-)

    BTW - dla mnie takie cos jak shared hosting na VPSie to porazka. Dziwne ze ludzie tak robia zarobkowo :-P rozumiem maly VPS i dla rodziny jakies malenkie stronki czy cos ale nie zarobkowo jako firma. To juz nawet nie proszenie sie o klopoty - to jak gra w rosyjska ruletke uzywajac pistoletu zamiast rewolweru.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  9. #9

    Domyślnie

    Zabezpieczenie PHP - ladnie i pieknie wylaczyc pewne funkcje (ja blokuje duzo wiecej ale nie mam akurat listy pod reka) ale to lubi zepsuc wiele aplikacji ktore sa gowniano napisane, wiec... cos za cos.
    Fork-bomb i spolka - /etc/security/* i podobne...
    Mógłbyś dać tą listę co Ty blokujesz na swoich serwerach w php.ini ?
    i co oznacza "Fork-bomb i spolka - /etc/security/* i podobne"

    Pozdrawiam

  10. #10
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Fork-bomb to jak nazwa mowi bomba... ktora rozwala system. To kawalek kodu ktory sam siebie uruchamia ponownie i ponownie... prosta rekurencja i zjada w ten sposob caly RAM i prawdopodobnie CPU.

    Najprostszy przypadek to pare bajtow w shell'u:
    Kod:
    :(){ :|:&};:
    Teraz o /etc/security/* - w tym katalogu jest pare ciekawych plikow. Na przyklad limits.conf:
    Kod:
    $ cat /etc/security/limits.conf
    # /etc/security/limits.conf
    #
    #Each line describes a limit for a user in the form:
    #
    #<domain>        <type>  <item>  <value>
    #
    #Where:
    #<domain> can be:
    #        - an user name
    #        - a group name, with @group syntax
    #        - the wildcard *, for default entry
    #        - the wildcard %, can be also used with %group syntax,
    #                 for maxlogin limit
    #
    #<type> can have the two values:
    #        - "soft" for enforcing the soft limits
    #        - "hard" for enforcing hard limits
    #
    #<item> can be one of the following:
    #        - core - limits the core file size (KB)
    #        - data - max data size (KB)
    #        - fsize - maximum filesize (KB)
    #        - memlock - max locked-in-memory address space (KB)
    #        - nofile - max number of open files
    #        - rss - max resident set size (KB)
    #        - stack - max stack size (KB)
    #        - cpu - max CPU time (MIN)
    #        - nproc - max number of processes
    #        - as - address space limit (KB)
    #        - maxlogins - max number of logins for this user
    #        - maxsyslogins - max number of logins on the system
    #        - priority - the priority to run user process with
    #        - locks - max number of file locks the user can hold
    #        - sigpending - max number of pending signals
    #        - msgqueue - max memory used by POSIX message queues (bytes)
    #        - nice - max nice priority allowed to raise to values: [-20, 19]
    #        - rtprio - max realtime priority
    #        - chroot - change root to directory (Debian-specific)
    #
    #<domain>      <type>  <item>         <value>
    #
    
    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #ftp             -       chroot          /ftp
    #@student        -       maxlogins       4
    
    # End of file
    Mozna ograniczyc ile procesow user moze otworzyc, ile plikow, ile czasu procesora moze zuzyc itd... calosc opisana w sekcji '<item>' pod koniec...

    Co do php.ini - teraz nie mam jak sie dostac do serwerow, nie mam tu VPNa niestety ale jak nie zapomne to wrzuce jutro.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj